AES3PCMDescriptorImpl (Media Authoring with Java API)
Date: 2016-02-05

tv.amwa.maj.model.impl

## Class AES3PCMDescriptorImpl

- java.lang.Object
- - tv.amwa.maj.model.impl.InterchangeObjectImpl
  - - tv.amwa.maj.model.impl.EssenceDescriptorImpl
    - - tv.amwa.maj.model.impl.AAFFileDescriptorImpl
      - - tv.amwa.maj.model.impl.SoundDescriptorImpl
        - - tv.amwa.maj.model.impl.WAVEPCMDescriptorImpl
          - - tv.amwa.maj.model.impl.AES3PCMDescriptorImpl

- All Implemented Interfaces:
    Serializable, Cloneable, QAAFFileDescriptor, MediaEntity, MetadataObject, XMLSerializable, AAFFileDescriptor, AES3PCMDescriptor, EssenceDescriptor, InterchangeObject, SoundDescriptor, WAVEPCMDescriptor

      @MediaClass(uuid1=218169601,
                  uuid2=257,
                  uuid3=18176,
                  uuid4={6,14,43,52,2,6,1,1},
                  definedName="AES3PCMDescriptor",
                  description="Describes audio essence in the AES3 audio file format.",
                  symbol="AES3PCMDescriptor")
      public class AES3PCMDescriptorImpl
      extends WAVEPCMDescriptorImpl
      implements AES3PCMDescriptor, Serializable, XMLSerializable, Cloneable

  Implements an AES3 PCM descriptor that describes audio essence in the AES/EBU audio file format, as defined in the EBU/AES digital audio interface specification.

  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from class tv.amwa.maj.model.impl.InterchangeObjectImpl

      `ObjectClassPropertyID`

    - ### Fields inherited from interface tv.amwa.maj.model.AES3PCMDescriptor

      `AES3DefaultUserData, AES3Minimum, AUXBITSMODE_DEFAULT, BLOCKSTARTOFFSET_DEFAULT, EMPHASIS_DEFAULT`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AES3PCMDescriptorImpl()`
    `AES3PCMDescriptorImpl(ContainerDefinition containerFormat, Rational audioSamplingRate, int channels, int quantizationBits, short blockAlign, int averageBPS)` Creates and initializes a new PCM sound descriptor, which is associated with audio essence formatted according to the BWF File Format.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `clearChannelStatusMode()`
    `void` | `clearFixedChannelStatusData()`
    `void` | `clearFixedUserData()`
    `void` | `clearUserDataMode()`
    `AES3PCMDescriptor` | `clone()` Create a cloned copy of this interchange object.
    `int` | `countChannelStatusMode()`
    `AuxBitsModeType` | `getAuxBitsMode()` Returns the AES3 use of auxiliary bits in the associated audio essence.
    `short` | `getBlockStartOffset()` Returns the AES3 position of the first Z preamble in the associated sound essence stream.
    `ChannelStatusModeType[]` | `getChannelStatusMode()` Returns the AES3 enumerated mode of carriage of channel status data for all channels of the associated audio essence.
    `ChannelStatusModeType` | `getChannelStatusModeAt(int index)` Returns the AES3 enumerated mode of carriage of channel status data for the associated audio essence for the given channel number.
    `String` | `getComment()` Include a comment when serializing a value to XML.
    `EmphasisType` | `getEmphasis()` Returns the AES3 emphasis of the associated sound essence.
    `byte[]` | `getFixedChannelStatusData()` Returns the AES3 fixed channel status data for all channels in the associated audio essence.
    `byte[]` | `getFixedChannelStatusDataAt(int index)` Returns the AES3 fixed channel status data for the channel referenced by the given index in the associated audio essence.
    `byte[]` | `getFixedUserData()` Returns the AES3 fixed user data for all channels in the associated audio essence.
    `byte[]` | `getFixedUserDataAt(int index)` Returns the AES3 fixed user data for the given channel in the associated audio essence.
    `UserDataModeType[]` | `getUserDataMode()` Returns the user data mode for all the channels in the associated audio essence.
    `UserDataModeType` | `getUserDataModeAt(int index)` Returns the user data mode for the channel of the associated audio essence referenced by the given channel index.
    `void` | `omitChannelStatusData()` Omits the optional fixed channel status data and channel status mode properties from this AES3 PCM descriptor.
    `void` | `omitUserData()` Omit the optional fixed user data and user data mode properties from this AES3 PCM descriptor.
    `void` | `setAuxBitsMode(AuxBitsModeType auxBitsMode)` Sets the AES3 use of auxiliary bits in the associated audio essence.
    `void` | `setBlockStartOffset(Short blockStartOffset)` Sets the AES3 position of the first Z preamble in the associated sound essence stream.
    `void` | `setChannelStatusMode(ChannelStatusModeType[] channelStatusMode)`
    `void` | `setChannelStatusModeAt(int index, ChannelStatusModeType channelStatusMode)` Sets the AES3 enumerated mode of carriage of channel status data for the associated audio essence at the given channel number.
    `void` | `setEmphasis(EmphasisType emphasisType)` Sets the AES3 emphasis property of the associated sound essence.
    `void` | `setFixedChannelStatusData(byte[] fixedChannelStatusData)`
    `void` | `setFixedChannelStatusDataAt(int index, byte[] fixedChannelStatusData)` Sets the AES3 fixed channel status data for the channel referenced by the given index in the associated audio essence.
    `void` | `setFixedUserData(byte[] fixedUserData)`
    `void` | `setFixedUserDataAt(int index, byte[] fixedUserData)` Sets the AES3 fixed user data for the given channel in the associated audio essence.
    `void` | `setUserDataMode(UserDataModeType[] userDataMode)`
    `void` | `setUserDataModeAt(int index, UserDataModeType userDataMode)` Sets the user data mode for the channel of the associated audio essence referenced by the given channel index.

    - ### Methods inherited from class tv.amwa.maj.model.impl.WAVEPCMDescriptorImpl

      `areAllPeakEnvelopePropertiesPresent, getAverageBytesPerSecond, getBlockAlign, getChannelAssignment, getChannelAssignmentString, getDataOffset, getPeakChannelCount, getPeakEnvelopeBlockSize, getPeakEnvelopeData, getPeakEnvelopeDataPosition, getPeakEnvelopeDataSize, getPeakEnvelopeFormat, getPeakEnvelopeTimestamp, getPeakEnvelopeTimestampString, getPeakEnvelopeVersion, getPeakFrameCount, getPeakOfPeaksPosition, getPointsPerPeakValue, getSequenceOffset, initializeAverageBytesPerSecond, initializeBlockAlign, readPeakEnvelopeData, setAverageBytesPerSecond, setBlockAlign, setChannelAssignment, setChannelAssignmentString, setDataOffset, setPeakChannelCount, setPeakEnvelopeBlockSize, setPeakEnvelopeData, setPeakEnvelopeDataPosition, setPeakEnvelopeFormat, setPeakEnvelopeTimestamp, setPeakEnvelopeTimestampString, setPeakEnvelopeVersion, setPeakFrameCount, setPeakOfPeaksPosition, setPointsPerPeakValue, setSequenceOffset, writePeakEnvelopeData`

    - ### Methods inherited from class tv.amwa.maj.model.impl.SoundDescriptorImpl

      `getAudioReferenceLevel, getAudioSampleRate, getAudioSampleRateString, getChannelCount, getDialNorm, getElectrospatialFormulation, getLocked, getQuantizationBits, getSoundCompression, getSoundCompressionString, initializeAudioSampleRate, initializeChannelCount, initializeQuantizationBits, isLocked, setAudioReferenceLevel, setAudioSampleRate, setAudioSampleRateString, setChannelCount, setDialNorm, setElectrospatialFormulation, setIsLocked, setQuantizationBits, setSoundCompression, setSoundCompressionString`

    - ### Methods inherited from class tv.amwa.maj.model.impl.AAFFileDescriptorImpl

      `describesStaticEssence, getCodec, getContainerFormat, getEssenceLength, getLinkedTrackID, getSampleRate, getSampleRateString, getTwentyFourBitAudio, initializeEssenceLength, initializeSampleRate, setCodec, setContainerFormat, setDescribesStaticEssence, setDescribesTimeVaryingEssence, setEssenceLength, setEssenceLengthFromStream, setLinkedTrackID, setSampleRate, setSampleRateFromStream, setSampleRateString, setTwentyFourBitAudio`

    - ### Methods inherited from class tv.amwa.maj.model.impl.EssenceDescriptorImpl

      `appendLocator, appendSubDescriptor, clearLocators, clearSubDescriptors, countLocators, countSubDescriptors, getLocatorAt, getLocators, getSubDescriptorAt, getSubDescriptors, insertLocatorAt, insertSubDescriptorAt, prependLocator, prependSubDescriptor, removeLocatorAt, removeSubDescriptorAt`

    - ### Methods inherited from class tv.amwa.maj.model.impl.InterchangeObjectImpl

      `addApplicationPlugin, appendXMLChildren, clearApplicationPlugins, containsApplicationPlugin, containsApplicationPlugin, countApplicationPlugins, deepEquals, disableGenerationTracking, enableGenerationTracking, equals, getApplicationPlugins, getGeneration, getLinkedGenerationID, getLinkedGenerationIDString, getObjectClass, getPersistentID, getPersistentIndex, hashCode, isGenerationTracked, removeApplicationPlugin, removeApplicationPlugin, setLinkedGenerationID, setLinkedGenerationIDString, setObjectClass, setPersistentID, setPersistentIndex, toString`

    - ### Methods inherited from class java.lang.Object

      `getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface tv.amwa.maj.model.WAVEPCMDescriptor

      `areAllPeakEnvelopePropertiesPresent, getAverageBytesPerSecond, getBlockAlign, getChannelAssignment, getPeakChannelCount, getPeakEnvelopeBlockSize, getPeakEnvelopeData, getPeakEnvelopeDataPosition, getPeakEnvelopeDataSize, getPeakEnvelopeFormat, getPeakEnvelopeTimestamp, getPeakEnvelopeVersion, getPeakFrameCount, getPeakOfPeaksPosition, getPointsPerPeakValue, getSequenceOffset, readPeakEnvelopeData, setAverageBytesPerSecond, setBlockAlign, setChannelAssignment, setPeakChannelCount, setPeakEnvelopeBlockSize, setPeakEnvelopeData, setPeakEnvelopeDataPosition, setPeakEnvelopeFormat, setPeakEnvelopeTimestamp, setPeakEnvelopeVersion, setPeakFrameCount, setPeakOfPeaksPosition, setPointsPerPeakValue, setSequenceOffset, writePeakEnvelopeData`

    - ### Methods inherited from interface tv.amwa.maj.model.SoundDescriptor

      `getAudioReferenceLevel, getAudioSampleRate, getChannelCount, getDialNorm, getElectrospatialFormulation, getLocked, getQuantizationBits, getSoundCompression, isLocked, setAudioReferenceLevel, setAudioSampleRate, setChannelCount, setDialNorm, setElectrospatialFormulation, setIsLocked, setQuantizationBits, setSoundCompression`

    - ### Methods inherited from interface tv.amwa.maj.model.AAFFileDescriptor

      `getCodec, getContainerFormat, getEssenceLength, getLinkedTrackID, getSampleRate, setCodec, setContainerFormat, setEssenceLength, setLinkedTrackID, setSampleRate`

    - ### Methods inherited from interface tv.amwa.maj.model.EssenceDescriptor

      `appendLocator, appendSubDescriptor, clearLocators, countLocators, countSubDescriptors, getLocatorAt, getLocators, getSubDescriptorAt, getSubDescriptors, insertLocatorAt, insertSubDescriptorAt, prependLocator, prependSubDescriptor, removeLocatorAt, removeSubDescriptorAt`

    - ### Methods inherited from interface tv.amwa.maj.model.InterchangeObject

      `addApplicationPlugin, clearApplicationPlugins, containsApplicationPlugin, containsApplicationPlugin, countApplicationPlugins, deepEquals, disableGenerationTracking, enableGenerationTracking, equals, getApplicationPlugins, getGeneration, getLinkedGenerationID, getObjectClass, isGenerationTracked, removeApplicationPlugin, removeApplicationPlugin, setLinkedGenerationID, setObjectClass, toString`

    - ### Methods inherited from interface tv.amwa.maj.industry.MediaEntity

      `getPersistentID, setPersistentIndex`

    - ### Methods inherited from interface tv.amwa.maj.io.xml.XMLSerializable

      `appendXMLChildren`

- - ### Constructor Detail

    - #### AES3PCMDescriptorImpl

          public AES3PCMDescriptorImpl()

    - #### AES3PCMDescriptorImpl

          public AES3PCMDescriptorImpl(ContainerDefinition containerFormat,
                                       Rational audioSamplingRate,
                                       @UInt32
                                       int channels,
                                       @UInt32
                                       int quantizationBits,
                                       @UInt16
                                       short blockAlign,
                                       @UInt32
                                       int averageBPS)
                                throws NullPointerException,
                                       IllegalArgumentException

      Creates and initializes a new PCM sound descriptor, which is associated with audio essence formatted according to the BWF File Format.

      Parameters:
        `containerFormat` - Identifies the container mechanism used to store the essence.
        `audioSamplingRate` - Sampling rate of the audio essence.
        `channels` - Number of audio channels.
        `quantizationBits` - Number of quantization bits.
        `blockAlign` - Sample block alignment.
        `averageBPS` - Average bytes per second.
      Throws:
        `NullPointerException` - The container format or sampling rate properties are `null`.
        `IllegalArgumentException` - Cannot set the channels, quantization bits, block align or average bits per second values to negative values.

  - ### Method Detail

    - #### getAuxBitsMode

          @MediaProperty(uuid1=67241217,
                         uuid2=256,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,5},
                         definedName="AuxBitsMode",
                         typeName="AuxBitsModeType",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15624,
                         symbol="AuxBitsMode")
          public AuxBitsModeType getAuxBitsMode()

      Description copied from interface: `AES3PCMDescriptor`

      Returns the AES3 use of auxiliary bits in the associated audio essence. If this optional property is not present, the default value of `AuxBitsModeType.NotDefined` is returned.

      Specified by:
        `getAuxBitsMode` in interface `AES3PCMDescriptor`
      Returns:
        AES3 use of auxiliary bits in the associated audio essence.
      See Also:
        `AES3PCMDescriptor.AUXBITSMODE_DEFAULT`

    - #### setAuxBitsMode

          @MediaPropertySetter(value="AuxBitsMode")
          public void setAuxBitsMode(AuxBitsModeType auxBitsMode)

      Description copied from interface: `AES3PCMDescriptor`

      Sets the AES3 use of auxiliary bits in the associated audio essence. To omit this optional property, call this method with `null`.

      Specified by:
        `setAuxBitsMode` in interface `AES3PCMDescriptor`
      Parameters:
        `auxBitsMode` - AES3 use of auxiliary bits in the associated audio essence.
      See Also:
        `AES3PCMDescriptor.AUXBITSMODE_DEFAULT`

    - #### getBlockStartOffset

          @MediaProperty(uuid1=67240706,
                         uuid2=768,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,5},
                         definedName="BlockStartOffset",
                         typeName="UInt16",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15631,
                         symbol="BlockStartOffset")
          public short getBlockStartOffset()

      Description copied from interface: `AES3PCMDescriptor`

      Returns the AES3 position of the first Z preamble in the associated sound essence stream. If this optional property is not present, the default value of 0 is returned.

      Specified by:
        `getBlockStartOffset` in interface `AES3PCMDescriptor`
      Returns:
        AES3 position of the first Z preamble is the associated sound essence stream.
      See Also:
        `AES3PCMDescriptor.BLOCKSTARTOFFSET_DEFAULT`

    - #### setBlockStartOffset

          @MediaPropertySetter(value="BlockStartOffset")
          public void setBlockStartOffset(Short blockStartOffset)
                                                                                  throws IllegalArgumentException

      Description copied from interface: `AES3PCMDescriptor`

      Sets the AES3 position of the first Z preamble in the associated sound essence stream. The default value of this optional property is 0. To omit this optional property, call this method with `null`.

      Specified by:
        `setBlockStartOffset` in interface `AES3PCMDescriptor`
      Parameters:
        `blockStartOffset` - AES3 position of the first Z preamble in the associated sound essence stream.
      Throws:
        `IllegalArgumentException` - The block start offset is negative.
      See Also:
        `AES3PCMDescriptor.BLOCKSTARTOFFSET_DEFAULT`

    - #### getChannelStatusMode

          @MediaProperty(uuid1=67241217,
                         uuid2=512,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,5},
                         definedName="ChannelStatusMode",
                         typeName="ChannelStatusModeArray",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15632,
                         symbol="ChannelStatusMode")
          public ChannelStatusModeType[] getChannelStatusMode()

      Description copied from interface: `AES3PCMDescriptor`

      Returns the AES3 enumerated mode of carriage of channel status data for all channels of the associated audio essence.

      Specified by:
        `getChannelStatusMode` in interface `AES3PCMDescriptor`
      Returns:
        AES3 enumerated mode of carriage of channel status data for all channels of the associated audio essence.
      See Also:
        `AES3PCMDescriptor.getChannelStatusModeAt(int)`

    - #### setChannelStatusMode

          @MediaPropertySetter(value="ChannelStatusMode")
          public void setChannelStatusMode(ChannelStatusModeType[] channelStatusMode)
                                                                                    throws NullPointerException,
                                                                                           BadSizeException

      Throws:
        `NullPointerException`
        `BadSizeException`

    - #### getChannelStatusModeAt

          @MediaListGetAt(value="ChannelStatusMode")
          public ChannelStatusModeType getChannelStatusModeAt(int index)
                                                                                                  throws IndexOutOfBoundsException

      Description copied from interface: `AES3PCMDescriptor`

      Returns the AES3 enumerated mode of carriage of channel status data for the associated audio essence for the given channel number. If the channel status mode property is not present, the default value of `ChannelStatusModeType.None` is returned.

      Specified by:
        `getChannelStatusModeAt` in interface `AES3PCMDescriptor`
      Parameters:
        `index` - Index into the AES3 channel status mode array.
      Returns:
        Element of the AES3 channel status mode at the given index.
      Throws:
        `IndexOutOfBoundsException` - The given index is outside the acceptable range for the current channel status mode array.
      See Also:
        `AES3PCMDescriptor.getChannelStatusMode()`, `SoundDescriptor.getChannelCount()`

    - #### setChannelStatusModeAt

          public void setChannelStatusModeAt(int index,
                                             ChannelStatusModeType channelStatusMode)
                                      throws IndexOutOfBoundsException

      Description copied from interface: `AES3PCMDescriptor`

      Sets the AES3 enumerated mode of carriage of channel status data for the associated audio essence at the given channel number.

      If the channel status mode property is not present at the time of calling the method, after completion of the method the property becomes present and properties at other indexes are initialized to `ChannelStatusModeType.None`.

      Specified by:
        `setChannelStatusModeAt` in interface `AES3PCMDescriptor`
      Parameters:
        `index` - Index of the channel status mode array to set the channel status for.
        `channelStatusMode` - Channel status for the given index.
      Throws:
        `IndexOutOfBoundsException` - The given index is outside the acceptable range for the current channel status mode array.
      See Also:
        `SoundDescriptor.getChannelCount()`

    - #### countChannelStatusMode

          @MediaPropertyCount(value="ChannelStatusMode")
          public int countChannelStatusMode()

    - #### clearChannelStatusMode

          @MediaPropertyClear(value="ChannelStatusMode")
          public void clearChannelStatusMode()

    - #### getEmphasis

          @MediaProperty(uuid1=67241217,
                         uuid2=1536,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,5},
                         definedName="Emphasis",
                         typeName="EmphasisType",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15629,
                         symbol="Emphasis")
          public EmphasisType getEmphasis()

      Description copied from interface: `AES3PCMDescriptor`

      Returns the AES3 emphasis of the associated sound essence. If this optional property is not present, the default value of this property is returned.

      Specified by:
        `getEmphasis` in interface `AES3PCMDescriptor`
      Returns:
        AES3 emphasis of the associated sound essence.
      See Also:
        `AES3PCMDescriptor.EMPHASIS_DEFAULT`

    - #### setEmphasis

          @MediaPropertySetter(value="Emphasis")
          public void setEmphasis(EmphasisType emphasisType)

      Description copied from interface: `AES3PCMDescriptor`

      Sets the AES3 emphasis property of the associated sound essence. Calling this method with `null` will omit this optional property.

      Specified by:
        `setEmphasis` in interface `AES3PCMDescriptor`
      Parameters:
        `emphasisType` - AES3 emphasis property of the associated sound essence.
      See Also:
        `AES3PCMDescriptor.EMPHASIS_DEFAULT`

    - #### getFixedChannelStatusData

          @MediaProperty(uuid1=67241217,
                         uuid2=768,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,5},
                         definedName="FixedChannelStatusData",
                         typeName="UInt8Array",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15633,
                         symbol="FixedChannelStatusData")
          public byte[] getFixedChannelStatusData()

      Description copied from interface: `AES3PCMDescriptor`

      Returns the AES3 fixed channel status data for all channels in the associated audio essence.

      Specified by:
        `getFixedChannelStatusData` in interface `AES3PCMDescriptor`
      Returns:
        AES3 fixed channel status data for all channels in the associated audio essence.
      See Also:
        `AES3PCMDescriptor.getFixedChannelStatusDataAt(int)`

    - #### setFixedChannelStatusData

          @MediaPropertySetter(value="FixedChannelStatusData")
          public void setFixedChannelStatusData(byte[] fixedChannelStatusData)
                                                                                              throws BadSizeException

      Throws:
        `BadSizeException`

    - #### clearFixedChannelStatusData

          @MediaPropertyClear(value="FixedChannelStatusData")
          public void clearFixedChannelStatusData()

    - #### getFixedChannelStatusDataAt

          public byte[] getFixedChannelStatusDataAt(int index)
                                             throws IndexOutOfBoundsException

      Description copied from interface: `AES3PCMDescriptor`

      Returns the AES3 fixed channel status data for the channel referenced by the given index in the associated audio essence. The value returned is a 24-byte array.

      The default value is the AES3 minimum, which codes the most significant bit of the first byte as `1` and all other bits as `0`. If this optional property is omitted, the default value will be returned.

      Specified by:
        `getFixedChannelStatusDataAt` in interface `AES3PCMDescriptor`
      Parameters:
        `index` - Channel index to retrieve the fixed channel status data for.
      Returns:
        Fixed channel status data for the given channel in the associated audio essence.
      Throws:
        `IndexOutOfBoundsException` - The given index is outside the acceptable range for the current range of channels for which fixed status data is represented.
      See Also:
        `AES3PCMDescriptor.getFixedChannelStatusData()`, `SoundDescriptor.getChannelCount()`

    - #### setFixedChannelStatusDataAt

          public void setFixedChannelStatusDataAt(int index,
                                                  byte[] fixedChannelStatusData)
                                           throws NullPointerException,
                                                  IndexOutOfBoundsException,
                                                  BadSizeException

      Description copied from interface: `AES3PCMDescriptor`

      Sets the AES3 fixed channel status data for the channel referenced by the given index in the associated audio essence. The data must take the form of a 24-byte array.

      Specified by:
        `setFixedChannelStatusDataAt` in interface `AES3PCMDescriptor`
      Parameters:
        `index` - Channel number to set the AES3 fixed channel status data for.
        `fixedChannelStatusData` - Fixed channel status array.
      Throws:
        `NullPointerException` - The fixed channel status data argument is `null`.
        `IndexOutOfBoundsException` - The given channel index is outside the acceptable range for the associated audio essence.
        `BadSizeException` - The fixed channel status data must be an array of 24-bytes exactly.
      See Also:
        `SoundDescriptor.getChannelCount()`

    - #### omitChannelStatusData

          public void omitChannelStatusData()

      Description copied from interface: `AES3PCMDescriptor`

      Omits the optional fixed channel status data and channel status mode properties from this AES3 PCM descriptor. To make them present again, call `AES3PCMDescriptor.setFixedChannelStatusDataAt(int, byte[])` and `AES3PCMDescriptor.setChannelStatusModeAt(int, ChannelStatusModeType)`.

      Specified by:
        `omitChannelStatusData` in interface `AES3PCMDescriptor`

    - #### getFixedUserData

          @MediaProperty(uuid1=67241217,
                         uuid2=1280,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,5},
                         definedName="FixedUserData",
                         typeName="UInt8Array",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15635,
                         symbol="FixedUserData")
          public byte[] getFixedUserData()

      Description copied from interface: `AES3PCMDescriptor`

      Returns the AES3 fixed user data for all channels in the associated audio essence. The value is always the number of channels multiplied by 24.

      Specified by:
        `getFixedUserData` in interface `AES3PCMDescriptor`
      Returns:
        AES3 fixed user data for all channels.
      See Also:
        `AES3PCMDescriptor.getFixedUserDataAt(int)`

    - #### setFixedUserData

          @MediaPropertySetter(value="FixedUserData")
          public void setFixedUserData(byte[] fixedUserData)
                                                                            throws BadSizeException

      Throws:
        `BadSizeException`

    - #### clearFixedUserData

          @MediaPropertyClear(value="FixedUserData")
          public void clearFixedUserData()

    - #### getFixedUserDataAt

          public byte[] getFixedUserDataAt(int index)
                                    throws IndexOutOfBoundsException

      Description copied from interface: `AES3PCMDescriptor`

      Returns the AES3 fixed user data for the given channel in the associated audio essence. The value is always a 24-byte array.

      The default value for fixed user data on a channel is all zero values, as represented by `AES3PCMDescriptor.AES3DefaultUserData`. If this optional property is not present, the default value will be returned.

      Specified by:
        `getFixedUserDataAt` in interface `AES3PCMDescriptor`
      Parameters:
        `index` - Channel index of the fixed user data to retrieve.
      Returns:
        Retrieved fixed user data for the given channel number from the associated audio essence.
      Throws:
        `IndexOutOfBoundsException` - The channel number is outside the acceptable range for the associated audio essence.
      See Also:
        `AES3PCMDescriptor.getFixedUserData()`, `SoundDescriptor.getChannelCount()`

    - #### setFixedUserDataAt

          public void setFixedUserDataAt(int index,
                                         byte[] fixedUserData)
                                  throws NullPointerException,
                                         IndexOutOfBoundsException,
                                         BadSizeException

      Description copied from interface: `AES3PCMDescriptor`

      Sets the AES3 fixed user data for the given channel in the associated audio essence. The value is always a 24-byte array.

      Specified by:
        `setFixedUserDataAt` in interface `AES3PCMDescriptor`
      Parameters:
        `index` - Channel index of the fixed user data to set.
        `fixedUserData` - Fixed user data for the given channel number of the associated audio essence.
      Throws:
        `NullPointerException` - Cannot set fixed user data to `null`.
        `IndexOutOfBoundsException` - The channel number is outside the acceptable range for the associated audio essence.
        `BadSizeException` - The fixed user data value must by a 24-byte array.
      See Also:
        `SoundDescriptor.getChannelCount()`

    - #### getUserDataMode

          @MediaProperty(uuid1=67241217,
                         uuid2=1024,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,5},
                         definedName="UserDataMode",
                         typeName="UserDataModeArray",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15634,
                         symbol="UserDataMode")
          public UserDataModeType[] getUserDataMode()

      Description copied from interface: `AES3PCMDescriptor`

      Returns the user data mode for all the channels in the associated audio essence.

      Specified by:
        `getUserDataMode` in interface `AES3PCMDescriptor`
      Returns:
        User data modes for all channels in the associated essence.
      See Also:
        `AES3PCMDescriptor.getUserDataModeAt(int)`

    - #### setUserDataMode

          @MediaPropertySetter(value="UserDataMode")
          public void setUserDataMode(UserDataModeType[] userDataMode)
                                                                          throws NullPointerException,
                                                                                 BadSizeException

      Throws:
        `NullPointerException`
        `BadSizeException`

    - #### clearUserDataMode

          @MediaPropertyClear(value="UserDataMode")
          public void clearUserDataMode()

    - #### getUserDataModeAt

          public UserDataModeType getUserDataModeAt(int index)
                                             throws IndexOutOfBoundsException

      Description copied from interface: `AES3PCMDescriptor`

      Returns the user data mode for the channel of the associated audio essence referenced by the given channel index.

      The default value for each element of this property is `UserDataModeType.NotDefined`. If this optional property is omitted, the default value will be returned.

      Specified by:
        `getUserDataModeAt` in interface `AES3PCMDescriptor`
      Parameters:
        `index` - Channel index to identify the channel to retrieve the user data mode for.
      Returns:
        Type of user data for the given channel number in the associated audio essence.
      Throws:
        `IndexOutOfBoundsException` - The given channel index is outside the acceptable range for the associated audio essence.
      See Also:
        `AES3PCMDescriptor.getUserDataMode()`, `SoundDescriptor.getChannelCount()`

    - #### setUserDataModeAt

          public void setUserDataModeAt(int index,
                                        UserDataModeType userDataMode)
                                 throws NullPointerException,
                                        IndexOutOfBoundsException

      Description copied from interface: `AES3PCMDescriptor`

      Sets the user data mode for the channel of the associated audio essence referenced by the given channel index.

      Specified by:
        `setUserDataModeAt` in interface `AES3PCMDescriptor`
      Parameters:
        `index` - Channel index to identify the channel to set the user data mode for.
        `userDataMode` - Type of user data for the given channel.
      Throws:
        `NullPointerException` - Cannot set the user data mode for a channel to `null`.
        `IndexOutOfBoundsException` - The given channel index is outside the acceptable range for the associated audio essence.
      See Also:
        `SoundDescriptor.getChannelCount()`

    - #### omitUserData

          public void omitUserData()

      Description copied from interface: `AES3PCMDescriptor`

      Omit the optional fixed user data and user data mode properties from this AES3 PCM descriptor. To make them present again, call `AES3PCMDescriptor.setFixedUserDataAt(int, byte[])` and `AES3PCMDescriptor.setUserDataModeAt(int, UserDataModeType)`.

      Specified by:
        `omitUserData` in interface `AES3PCMDescriptor`

    - #### clone

          public AES3PCMDescriptor clone()

      Description copied from interface: `InterchangeObject`

      Create a cloned copy of this interchange object.

      Specified by:
        `clone` in interface `MediaEntity`
      Specified by:
        `clone` in interface `AAFFileDescriptor`
      Specified by:
        `clone` in interface `AES3PCMDescriptor`
      Specified by:
        `clone` in interface `EssenceDescriptor`
      Specified by:
        `clone` in interface `InterchangeObject`
      Specified by:
        `clone` in interface `SoundDescriptor`
      Specified by:
        `clone` in interface `WAVEPCMDescriptor`
      Overrides:
        `clone` in class `WAVEPCMDescriptorImpl`
      Returns:
        Cloned copy of this interchange object.

    - #### getComment

          public String getComment()

      Description copied from interface: `XMLSerializable`

      Include a comment when serializing a value to XML. The comment will be inserted as the first child node of the element representing the class.

      Specified by:
        `getComment` in interface `XMLSerializable`
      Overrides:
        `getComment` in class `EssenceDescriptorImpl`
      Returns:
        Comment to add as the first child node of the element representing this class.

(c)2007-2016 Richard Cartwright, all rights reserved. Licensed under Apache 2 license and subject to the AMWA IPR policy.