
package org.teleal.cling.support.contentdirectory.descriptor.didl;

import java.math.BigInteger;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlValue;


/**
 * 
 *                     A 'res' element indentifies a resource. A resource is typically some type of a
 *                     binary asset, such as photo, song, video, etc. A 'res' element contains a uri
 *                     that identifies the resource.
 *                     <p/>
 *                     Attributes:
 *                     <p/>
 *                     'importUri' type: anyURI use: optional<br/>
 *                     The 'importUri' attribute is the optional uri locator for resource update.
 *                     <p/>
 *                     'protocolInfo' type: string use: required<br/>
 *                     The 'protocolInfo' attribute is a string that identifies the streaming or
 *                     transport protocol for transmitting the resource. If not present then the
 *                     content has not yet been fully imported by the ContentDirectory and is not yet
 *                     accesible for playback purposes.
 *                     <p/>
 *                     'size' type: unsignedLong use: optional<br/>
 *                     The size, in bytes, of the resource.
 *                     <p/>
 *                     'duration' type: string use: optional<br/>
 *                     The 'duration' attribute identifies the duration of the playback of the resource, at normal speed.
 *                     The form of the duration string is: H*:MM:SS.F*, or H*:MM:SS.F0/F1 where :
 *                     H* means any number of digits (including no digits) to indicate elapsed hours
 *                     MM means exactly 2 digits to indicate minutes (00 to 59)
 *                     SS means exactly 2 digits to indicate seconds (00 to 59)
 *                     F* means any number of digits (including no digits) to indicate fractions of seconds
 *                     F0/F1 means a fraction, with F0 and F1 at least one digit long, and F0 < F1
 *                     The string may be preceded by an optional + or - sign, and the decimal point itself may
 *                     be omitted if there are no fractional second digits.
 *                     <p/>
 *                     'bitrate' type: unsignedInt use: optional<br/>
 *                     The bitrate in bytes/second of the resource.
 *                     <p/>
 *                     'sampleFrequency' type: unsignedInt use: optional<br/>
 *                     The sample frequency of the resource in Hz
 *                     <p/>
 *                     'bitsPerSample' type: unsignedInt use: optional<br/>
 *                     The bits per sample of the resource.
 *                     <p/>
 *                     'nrAudioChannels' type: unsignedInt use: optional<br/>
 *                     Number of audio channels of the resource, e.g. 1 for mono, 2 for stereo, 6 for Dolby surround, etc.
 *                     <p/>
 *                     'resolution' type: pattern-string use: optional<br/>
 *                     X*Y resolution of the resource (image or video). The string pattern is restricted to strings of the
 *                     form: [0-9]+x[0-9]+ (one or more digits,'x', followed by one or more digits).
 *                     <p/>
 *                     'colorDepth' type: unsignedInt use: optional<br/>
 *                     The color depth in bits of the resource (image or video).
 *                     <p/>
 *                     'protection' type: string use: optional<br/>
 *                     Some statement of the protection type of the resource (not standardized).
 *                     <p/>
 *                     The equivalent MPEG21 DIDL element is 'RESOURCE'.
 *                 
 * 
 * <p>Java class for anonymous complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType>
 *   &lt;simpleContent>
 *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
 *       &lt;attribute name="importUri" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
 *       &lt;attribute name="protocolInfo" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       &lt;attribute name="size" type="{http://www.w3.org/2001/XMLSchema}unsignedLong" />
 *       &lt;attribute name="duration" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       &lt;attribute name="bitrate" type="{http://www.w3.org/2001/XMLSchema}unsignedInt" />
 *       &lt;attribute name="sampleFrequency" type="{http://www.w3.org/2001/XMLSchema}unsignedInt" />
 *       &lt;attribute name="bitsPerSample" type="{http://www.w3.org/2001/XMLSchema}unsignedInt" />
 *       &lt;attribute name="nrAudioChannels" type="{http://www.w3.org/2001/XMLSchema}unsignedInt" />
 *       &lt;attribute name="colorDepth" type="{http://www.w3.org/2001/XMLSchema}unsignedInt" />
 *       &lt;attribute name="protection" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       &lt;attribute name="resolution">
 *         &lt;simpleType>
 *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *             &lt;pattern value="[0-9]+x[0-9]+"/>
 *           &lt;/restriction>
 *         &lt;/simpleType>
 *       &lt;/attribute>
 *     &lt;/extension>
 *   &lt;/simpleContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "value"
})
@XmlRootElement(name = "res")
public class Res {

    @XmlValue
    protected String value;
    @XmlAttribute
    @XmlSchemaType(name = "anyURI")
    protected String importUri;
    @XmlAttribute(required = true)
    protected String protocolInfo;
    @XmlAttribute
    @XmlSchemaType(name = "unsignedLong")
    protected BigInteger size;
    @XmlAttribute
    protected String duration;
    @XmlAttribute
    @XmlSchemaType(name = "unsignedInt")
    protected Long bitrate;
    @XmlAttribute
    @XmlSchemaType(name = "unsignedInt")
    protected Long sampleFrequency;
    @XmlAttribute
    @XmlSchemaType(name = "unsignedInt")
    protected Long bitsPerSample;
    @XmlAttribute
    @XmlSchemaType(name = "unsignedInt")
    protected Long nrAudioChannels;
    @XmlAttribute
    @XmlSchemaType(name = "unsignedInt")
    protected Long colorDepth;
    @XmlAttribute
    protected String protection;
    @XmlAttribute
    protected String resolution;

    /**
     * Gets the value of the value property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getValue() {
        return value;
    }

    /**
     * Sets the value of the value property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setValue(String value) {
        this.value = value;
    }

    /**
     * Gets the value of the importUri property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getImportUri() {
        return importUri;
    }

    /**
     * Sets the value of the importUri property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setImportUri(String value) {
        this.importUri = value;
    }

    /**
     * Gets the value of the protocolInfo property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getProtocolInfo() {
        return protocolInfo;
    }

    /**
     * Sets the value of the protocolInfo property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setProtocolInfo(String value) {
        this.protocolInfo = value;
    }

    /**
     * Gets the value of the size property.
     * 
     * @return
     *     possible object is
     *     {@link BigInteger }
     *     
     */
    public BigInteger getSize() {
        return size;
    }

    /**
     * Sets the value of the size property.
     * 
     * @param value
     *     allowed object is
     *     {@link BigInteger }
     *     
     */
    public void setSize(BigInteger value) {
        this.size = value;
    }

    /**
     * Gets the value of the duration property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getDuration() {
        return duration;
    }

    /**
     * Sets the value of the duration property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setDuration(String value) {
        this.duration = value;
    }

    /**
     * Gets the value of the bitrate property.
     * 
     * @return
     *     possible object is
     *     {@link Long }
     *     
     */
    public Long getBitrate() {
        return bitrate;
    }

    /**
     * Sets the value of the bitrate property.
     * 
     * @param value
     *     allowed object is
     *     {@link Long }
     *     
     */
    public void setBitrate(Long value) {
        this.bitrate = value;
    }

    /**
     * Gets the value of the sampleFrequency property.
     * 
     * @return
     *     possible object is
     *     {@link Long }
     *     
     */
    public Long getSampleFrequency() {
        return sampleFrequency;
    }

    /**
     * Sets the value of the sampleFrequency property.
     * 
     * @param value
     *     allowed object is
     *     {@link Long }
     *     
     */
    public void setSampleFrequency(Long value) {
        this.sampleFrequency = value;
    }

    /**
     * Gets the value of the bitsPerSample property.
     * 
     * @return
     *     possible object is
     *     {@link Long }
     *     
     */
    public Long getBitsPerSample() {
        return bitsPerSample;
    }

    /**
     * Sets the value of the bitsPerSample property.
     * 
     * @param value
     *     allowed object is
     *     {@link Long }
     *     
     */
    public void setBitsPerSample(Long value) {
        this.bitsPerSample = value;
    }

    /**
     * Gets the value of the nrAudioChannels property.
     * 
     * @return
     *     possible object is
     *     {@link Long }
     *     
     */
    public Long getNrAudioChannels() {
        return nrAudioChannels;
    }

    /**
     * Sets the value of the nrAudioChannels property.
     * 
     * @param value
     *     allowed object is
     *     {@link Long }
     *     
     */
    public void setNrAudioChannels(Long value) {
        this.nrAudioChannels = value;
    }

    /**
     * Gets the value of the colorDepth property.
     * 
     * @return
     *     possible object is
     *     {@link Long }
     *     
     */
    public Long getColorDepth() {
        return colorDepth;
    }

    /**
     * Sets the value of the colorDepth property.
     * 
     * @param value
     *     allowed object is
     *     {@link Long }
     *     
     */
    public void setColorDepth(Long value) {
        this.colorDepth = value;
    }

    /**
     * Gets the value of the protection property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getProtection() {
        return protection;
    }

    /**
     * Sets the value of the protection property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setProtection(String value) {
        this.protection = value;
    }

    /**
     * Gets the value of the resolution property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getResolution() {
        return resolution;
    }

    /**
     * Sets the value of the resolution property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setResolution(String value) {
        this.resolution = value;
    }

}
