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

tv.amwa.maj.model.impl

## Class WAVEPCMDescriptorImpl

- 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

- All Implemented Interfaces:
    Serializable, Cloneable, QAAFFileDescriptor, MediaEntity, MetadataObject, AAFFileDescriptor, EssenceDescriptor, InterchangeObject, SoundDescriptor, WAVEPCMDescriptor
  Direct Known Subclasses:
    AES3PCMDescriptorImpl

      @MediaClass(uuid1=218169601,
                  uuid2=257,
                  uuid3=18432,
                  uuid4={6,14,43,52,2,6,1,1},
                  definedName="WAVEPCMDescriptor",
                  aliases="PCMDescritpor",
                  description="The WAVEPCMDescriptor class specifies that a File SourcePackage is associated with audio essence formatted according to the BWF File Format.",
                  symbol="WAVEPCMDescriptor")
      public class WAVEPCMDescriptorImpl
      extends SoundDescriptorImpl
      implements WAVEPCMDescriptor, WAVEPCMDescriptor, Serializable, Cloneable

  Implements the description of a file source package that is associated with audio essence formatted according to the BWF file format.

  See Also:
    `BWFImportDescriptorImpl`, Serialized Form

- - ### Field Summary

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

      `ObjectClassPropertyID`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `WAVEPCMDescriptorImpl()`
    `WAVEPCMDescriptorImpl(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 Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `areAllPeakEnvelopePropertiesPresent()` Returns `true` if all the following optional properties are set for this PCM descriptor:
    `WAVEPCMDescriptor` | `clone()` Create a cloned copy of this interchange object.
    `int` | `getAverageBytesPerSecond()` Returns the average bytes per second of the essence stream described by this PCM descriptor.
    `short` | `getBlockAlign()` Returns the number of bytes used to store one sample of all channels of data associated with this PCM descriptor.
    `AUID` | `getChannelAssignment()` Returns the channel assignment scheme for this PCM descriptor.
    `String` | `getChannelAssignmentString()`
    `int` | `getDataOffset()`
    `int` | `getPeakChannelCount()` Returns the number of peak channels for this PCM descriptor.
    `int` | `getPeakEnvelopeBlockSize()` Returns the number of audio samples used to generate each peak frame for this PCM descriptor.
    `Stream` | `getPeakEnvelopeData()` Returns the stream containing the peak envelope data for this PCM descriptor.
    `long` | `getPeakEnvelopeDataPosition()` Returns the offset from the beginning of the peak envelope data for this PCM descriptor.
    `long` | `getPeakEnvelopeDataSize()` Returns the size of the peak envelope data of this PCM descriptor.
    `int` | `getPeakEnvelopeFormat()` Returns the format of the peak point for this PCM descriptor.
    `TimeStamp` | `getPeakEnvelopeTimestamp()` Returns the time stamp for the date and time of the creation of this peak data for this PCM descriptor.
    `String` | `getPeakEnvelopeTimestampString()`
    `int` | `getPeakEnvelopeVersion()` Returns the version information of the peak envelope data of this PCM descriptor.
    `int` | `getPeakFrameCount()` Returns the number of peak frames for this PCM descriptor.
    `long` | `getPeakOfPeaksPosition()` Returns the offset to the first audio sample whose absolute value is the maximum value of the entire audio file represented by this PCM descriptor.
    `int` | `getPointsPerPeakValue()` Returns the number of peak points per peak value for this PCM descriptor.
    `byte` | `getSequenceOffset()` Returns the frame number of the beginning of the essence data within a five-frame sequence for this PCM descriptor.
    `static int` | `initializeAverageBytesPerSecond()`
    `static short` | `initializeBlockAlign()`
    `ByteBuffer` | `readPeakEnvelopeData(int bytes)` Read the given number of bytes of data from the peak envelope data stream of this PCM descriptor at the `WAVEPCMDescriptor.getPeakEnvelopeDataPosition()` current position.
    `void` | `setAverageBytesPerSecond(int bps)` Sets the average bytes per second of the essence stream described by this PCM descriptor.
    `void` | `setBlockAlign(short blockAlign)` Sets the number of bytes used to store one sample of all channels of data associated with this PCM descriptor.
    `void` | `setChannelAssignment(AUID channelAssignment)` Sets the channel assignment scheme of this PCM descriptor.
    `void` | `setChannelAssignmentString(String channelAssignment)`
    `void` | `setDataOffset(Integer dataOffset)`
    `void` | `setPeakChannelCount(Integer channelCount)` Sets the number of peak channels for this PCM descriptor.
    `void` | `setPeakEnvelopeBlockSize(Integer blockSize)` Sets the number of audio samples used to generate each peak frame for this PCM descriptor.
    `void` | `setPeakEnvelopeData(Stream peakEnvelopeData)` Set the peak envelope data stream of this PCM descriptor.
    `void` | `setPeakEnvelopeDataPosition(long position)` Sets the offset from the beginning of the peak envelope data for this PCM descriptor.
    `void` | `setPeakEnvelopeFormat(Integer format)` Sets the format of the peak point for this PCM descriptor.
    `void` | `setPeakEnvelopeTimestamp(TimeStamp timeStamp)` Sets the time stamp for the date and time of the creation of the peak data for the PCM descriptor.
    `void` | `setPeakEnvelopeTimestampString(String peakEnvelopeTimestampString)`
    `void` | `setPeakEnvelopeVersion(Integer version)` Sets the version information of the peak envelope data of this PCM descriptor.
    `void` | `setPeakFrameCount(Integer frameCount)` Sets the number of peak frames for this PCM descriptor.
    `void` | `setPeakOfPeaksPosition(Long position)` Sets the offset to the first audio sample whose absolute value is the maximum value of the entire audio file described by this PCM descriptor.
    `void` | `setPointsPerPeakValue(Integer pointCount)` Sets the number of peak points per peak value for this PCM descriptor.
    `void` | `setSequenceOffset(Byte offset)` Sets the frame number of the beginning of the essence data within a five-frame sequence for this PCM descriptor.
    `int` | `writePeakEnvelopeData(ByteBuffer bytes)` Write the given bytes to the peak envelope data stream of the PCM descriptor at the current position, as determined by calling `WAVEPCMDescriptor.getPeakEnvelopeDataPosition()`.

    - ### 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, getComment, 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.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`

- - ### Constructor Detail

    - #### WAVEPCMDescriptorImpl

          public WAVEPCMDescriptorImpl()

    - #### WAVEPCMDescriptorImpl

          public WAVEPCMDescriptorImpl(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

    - #### areAllPeakEnvelopePropertiesPresent

          public boolean areAllPeakEnvelopePropertiesPresent()

      Description copied from interface: `WAVEPCMDescriptor`

      Returns `true` if all the following optional properties are set for this PCM descriptor:

      - PeakEnvelopeVersion - see `WAVEPCMDescriptor.setPeakEnvelopeVersion(Integer)`
      - PeakEnvelopeFormat - see `WAVEPCMDescriptor.setPeakEnvelopeFormat(Integer)`
      - PointsPerPeakValue - see `WAVEPCMDescriptor.setPointsPerPeakValue(Integer)`
      - PeakEnvelopeBlockSize - see `WAVEPCMDescriptor.setPeakEnvelopeBlockSize(Integer)`
      - PeakChannels - see `WAVEPCMDescriptor.setPeakChannelCount(Integer)`
      - PeakFrames - see `WAVEPCMDescriptor.setPeakChannelCount(Integer)`
      - PeakOfPeaksPosition - see `WAVEPCMDescriptor.setPeakOfPeaksPosition(Long)`
      - PeakEnvelopeTimestamp - see `WAVEPCMDescriptor.setPeakEnvelopeTimestamp(TimeStamp)`
      - PeakEnvelopeData - see `WAVEPCMDescriptor.setPeakEnvelopeDataPosition(long)`, `WAVEPCMDescriptor.getPeakEnvelopeDataSize()`, `WAVEPCMDescriptor.writePeakEnvelopeData(ByteBuffer)` and `WAVEPCMDescriptor.readPeakEnvelopeData(int)`.
      Specified by:
        `areAllPeakEnvelopePropertiesPresent` in interface `WAVEPCMDescriptor`
      Returns:
        Are all the optional peak envelope properties present in this PCM descriptor?

    - #### getAverageBytesPerSecond

          @MediaProperty(uuid1=67240707,
                         uuid2=1280,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,5},
                         definedName="AverageBytesPerSecond",
                         aliases="AverageBPS",
                         typeName="UInt32",
                         optional=false,
                         uniqueIdentifier=false,
                         pid=15625,
                         symbol="AverageBytesPerSecond")
          public int getAverageBytesPerSecond()

      Description copied from interface: `WAVEPCMDescriptor`

      Returns the average bytes per second of the essence stream described by this PCM descriptor.

      Specified by:
        `getAverageBytesPerSecond` in interface `WAVEPCMDescriptor`
      Returns:
        Average bytes per second of the essence stream described by this PCM descriptor.

    - #### setAverageBytesPerSecond

          @MediaPropertySetter(value="AverageBytesPerSecond")
          public void setAverageBytesPerSecond(int bps)
                                                                                            throws IllegalArgumentException

      Description copied from interface: `WAVEPCMDescriptor`

      Sets the average bytes per second of the essence stream described by this PCM descriptor. This property is required.

      Specified by:
        `setAverageBytesPerSecond` in interface `WAVEPCMDescriptor`
      Parameters:
        `bps` - Average bytes per second of the essence stream.
      Throws:
        `IllegalArgumentException` - The given average bytes per second value is negative.

    - #### initializeAverageBytesPerSecond

          public static final int initializeAverageBytesPerSecond()

    - #### getBlockAlign

          @MediaProperty(uuid1=67240706,
                         uuid2=256,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,5},
                         definedName="BlockAlign",
                         typeName="UInt16",
                         optional=false,
                         uniqueIdentifier=false,
                         pid=15626,
                         symbol="BlockAlign")
          public short getBlockAlign()

      Description copied from interface: `WAVEPCMDescriptor`

      Returns the number of bytes used to store one sample of all channels of data associated with this PCM descriptor. This property is required.

      Specified by:
        `getBlockAlign` in interface `WAVEPCMDescriptor`
      Returns:
        Number of bytes used to store one sample of all channels.

    - #### setBlockAlign

          @MediaPropertySetter(value="BlockAlign")
          public void setBlockAlign(short blockAlign)
                                                                      throws IllegalArgumentException

      Description copied from interface: `WAVEPCMDescriptor`

      Sets the number of bytes used to store one sample of all channels of data associated with this PCM descriptor. This property is required.

      Specified by:
        `setBlockAlign` in interface `WAVEPCMDescriptor`
      Parameters:
        `blockAlign` - The number of bytes used to store one sample of all channels.
      Throws:
        `IllegalArgumentException` - The given block align value is negative.

    - #### initializeBlockAlign

          public static final short initializeBlockAlign()

    - #### getChannelAssignment

          @MediaProperty(uuid1=67240193,
                         uuid2=1280,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,7},
                         definedName="ChannelAssignment",
                         typeName="AUID",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15666,
                         symbol="ChannelAssignment")
          public AUID getChannelAssignment()
                                                                                                                                                                                                                                                                                                                                                                                           throws PropertyNotPresentException

      Description copied from interface: `WAVEPCMDescriptor`

      Returns the channel assignment scheme for this PCM descriptor. An example of this would be an AUID representing "SMPTE 320M-B". This property is optional and has a default value of "SMPTE 320M-B".

      Specified by:
        `getChannelAssignment` in interface `WAVEPCMDescriptor`
      Returns:
        Channel assignment scheme for the PCM descriptor.
      Throws:
        `PropertyNotPresentException`

    - #### setChannelAssignment

          @MediaPropertySetter(value="ChannelAssignment")
          public void setChannelAssignment(AUID channelAssignment)

      Description copied from interface: `WAVEPCMDescriptor`

      Sets the channel assignment scheme of this PCM descriptor. An example of this would be an AUID representing "SMPTE 320M-B". This property is optional and set by default to the identifier for "SMPTE 320M-B". Calling this method with `null` will restore the default value.

      Specified by:
        `setChannelAssignment` in interface `WAVEPCMDescriptor`
      Parameters:
        `channelAssignment` - Channel assignment to use for this PCM descriptor.

    - #### getPeakChannelCount

          @MediaProperty(uuid1=67240705,
                         uuid2=2560,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,8},
                         definedName="PeakChannels",
                         typeName="UInt32",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15661,
                         symbol="PeakChannels")
          public int getPeakChannelCount()
                                                                                                                                                                                                                                                                                                                                                                                 throws PropertyNotPresentException

      Description copied from interface: `WAVEPCMDescriptor`

      Returns the number of peak channels for this PCM descriptor. This property is optional.

      Specified by:
        `getPeakChannelCount` in interface `WAVEPCMDescriptor`
      Returns:
        Number of peak channels for this PCM descriptor.
      Throws:
        `PropertyNotPresentException` - The optional peak channels property is not present in this PCM descriptor.

    - #### setPeakChannelCount

          @MediaPropertySetter(value="PeakChannels")
          public void setPeakChannelCount(Integer channelCount)
                                                                              throws IllegalArgumentException

      Description copied from interface: `WAVEPCMDescriptor`

      Sets the number of peak channels for this PCM descriptor. Set this optional property of `null` to omit it.

      Specified by:
        `setPeakChannelCount` in interface `WAVEPCMDescriptor`
      Parameters:
        `channelCount` - Number of peak channels for this PCM descriptor.
      Throws:
        `IllegalArgumentException` - Cannot set the peak channels property of this PCM descriptor to a negative value.

    - #### getPeakEnvelopeBlockSize

          @MediaProperty(uuid1=67240705,
                         uuid2=2304,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,8},
                         definedName="PeakEnvelopeBlockSize",
                         typeName="UInt32",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15660,
                         symbol="PeakEnvelopeBlockSize")
          public int getPeakEnvelopeBlockSize()
                                                                                                                                                                                                                                                                                                                                                                                                        throws PropertyNotPresentException

      Description copied from interface: `WAVEPCMDescriptor`

      Returns the number of audio samples used to generate each peak frame for this PCM descriptor. This property is optional.

      Specified by:
        `getPeakEnvelopeBlockSize` in interface `WAVEPCMDescriptor`
      Returns:
        Number of audio samples used to generate each peak frame for this PCM descriptor.
      Throws:
        `PropertyNotPresentException` - The optional peak envelope block size property is not present in this PCM descriptor.

    - #### setPeakEnvelopeBlockSize

          @MediaPropertySetter(value="PeakEnvelopeBlockSize")
          public void setPeakEnvelopeBlockSize(Integer blockSize)
                                                                                            throws IllegalArgumentException

      Description copied from interface: `WAVEPCMDescriptor`

      Sets the number of audio samples used to generate each peak frame for this PCM descriptor. Set this optional property to `null` to omit it.

      Specified by:
        `setPeakEnvelopeBlockSize` in interface `WAVEPCMDescriptor`
      Parameters:
        `blockSize` - Number of audio samples used to generate each peak frame for this PCM descriptor.
      Throws:
        `IllegalArgumentException` - The given peak envelope block size is negative.

    - #### getPeakEnvelopeDataPosition

          public long getPeakEnvelopeDataPosition()
                                           throws PropertyNotPresentException,
                                                  IOException

      Description copied from interface: `WAVEPCMDescriptor`

      Returns the offset from the beginning of the peak envelope data for this PCM descriptor. This transient property is used to define the point at which peak envelope data is `read` or `written`.

      Specified by:
        `getPeakEnvelopeDataPosition` in interface `WAVEPCMDescriptor`
      Returns:
        Offset from the beginning of the peak envelope data for this PCM descriptor.
      Throws:
        `PropertyNotPresentException` - The optional peak envelope data property is not present for this WAVE PCM descriptor.
        `IOException` - Error occurred when trying to get the position from the underlying stream.
      See Also:
        `WAVEPCMDescriptor.getPeakEnvelopeData()`, `WAVEPCMDescriptor.setPeakEnvelopeDataPosition(long)`, `WAVEPCMDescriptor.readPeakEnvelopeData(int)`, `WAVEPCMDescriptor.writePeakEnvelopeData(ByteBuffer)`

    - #### setPeakEnvelopeDataPosition

          public void setPeakEnvelopeDataPosition(long position)
                                           throws PropertyNotPresentException,
                                                  IllegalArgumentException,
                                                  IOException

      Description copied from interface: `WAVEPCMDescriptor`

      Sets the offset from the beginning of the peak envelope data for this PCM descriptor. This property is optional and is used to define the point at which peak envelope data is read or written.

      Specified by:
        `setPeakEnvelopeDataPosition` in interface `WAVEPCMDescriptor`
      Parameters:
        `position` - Offset from the beginning of the peak envelope data for this PCM descriptor.
      Throws:
        `PropertyNotPresentException` - The optional peak envelope data property is not present for this WAVE PCM descriptor.
        `IllegalArgumentException` - The given position is outside the acceptable range for the current stream.
        `IOException` - Error occurred when trying to set the position for the underlying stream.
      See Also:
        `WAVEPCMDescriptor.getPeakEnvelopeData()`, `WAVEPCMDescriptor.getPeakEnvelopeDataPosition()`, `WAVEPCMDescriptor.readPeakEnvelopeData(int)`, `WAVEPCMDescriptor.writePeakEnvelopeData(ByteBuffer)`

    - #### getPeakEnvelopeDataSize

          public long getPeakEnvelopeDataSize()
                                       throws PropertyNotPresentException,
                                              IOException

      Description copied from interface: `WAVEPCMDescriptor`

      Returns the size of the peak envelope data of this PCM descriptor. This peak envelope data property is optional. The value returned can be useful when working out how many bytes to `read` from the stream of peak envelope data.

      Specified by:
        `getPeakEnvelopeDataSize` in interface `WAVEPCMDescriptor`
      Returns:
        Size of the peak envelope data of this PCM descriptor.
      Throws:
        `PropertyNotPresentException` - The optional peak envelope data property is not present in this PCM descriptor.
        `IOException` - Cannot access the underlying stream to determine the size.
      See Also:
        `WAVEPCMDescriptor.getPeakEnvelopeData()`

    - #### getPeakEnvelopeFormat

          @MediaProperty(uuid1=67240705,
                         uuid2=1792,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,8},
                         definedName="PeakEnvelopeFormat",
                         typeName="UInt32",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15658,
                         symbol="PeakEnvelopeFormat")
          public int getPeakEnvelopeFormat()
                                                                                                                                                                                                                                                                                                                                                                                               throws PropertyNotPresentException

      Description copied from interface: `WAVEPCMDescriptor`

      Returns the format of the peak point for this PCM descriptor. This property is optional.

      Specified by:
        `getPeakEnvelopeFormat` in interface `WAVEPCMDescriptor`
      Returns:
        Format of the peak point for this PCM descriptor.
      Throws:
        `PropertyNotPresentException` - The optional peak envelope format property is not present in this PCM descriptor.

    - #### setPeakEnvelopeFormat

          @MediaPropertySetter(value="PeakEnvelopeFormat")
          public void setPeakEnvelopeFormat(Integer format)
                                                                                      throws IllegalArgumentException

      Description copied from interface: `WAVEPCMDescriptor`

      Sets the format of the peak point for this PCM descriptor. Set this optional property to `null` to omit it.

      Specified by:
        `setPeakEnvelopeFormat` in interface `WAVEPCMDescriptor`
      Parameters:
        `format` - Format of the peak point for this PCM descriptor.
      Throws:
        `IllegalArgumentException` - The given peak envelope format is negative.

    - #### getPeakEnvelopeTimestamp

          @MediaProperty(uuid1=67240705,
                         uuid2=3328,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,8},
                         definedName="PeakEnvelopeTimestamp",
                         typeName="TimeStamp",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15664,
                         symbol="PeakEnvelopeTimestamp")
          public TimeStamp getPeakEnvelopeTimestamp()
                                                                                                                                                                                                                                                                                                                                                                                                                 throws PropertyNotPresentException

      Description copied from interface: `WAVEPCMDescriptor`

      Returns the time stamp for the date and time of the creation of this peak data for this PCM descriptor. This property is optional.

      Specified by:
        `getPeakEnvelopeTimestamp` in interface `WAVEPCMDescriptor`
      Returns:
        Time stamp of the creation of the peak data for this PCM descriptor.
      Throws:
        `PropertyNotPresentException` - This optional property is not present in this PCM descriptor.
      See Also:
        `WAVEPCMDescriptor.areAllPeakEnvelopePropertiesPresent()`, `TimeStamp.getTimeStamp()`

    - #### setPeakEnvelopeTimestamp

          @MediaPropertySetter(value="PeakEnvelopeTimestamp")
          public void setPeakEnvelopeTimestamp(TimeStamp timeStamp)

      Description copied from interface: `WAVEPCMDescriptor`

      Sets the time stamp for the date and time of the creation of the peak data for the PCM descriptor. Set this optional property to `null` to omit it.

      Specified by:
        `setPeakEnvelopeTimestamp` in interface `WAVEPCMDescriptor`
      Parameters:
        `timeStamp` - Time stamp of the creation of the peak data for the PCM descriptor.
      See Also:
        `Forge.makeTimeStamp(java.util.Calendar)`, `Forge.parseTimeStamp(String)`, `WAVEPCMDescriptor.areAllPeakEnvelopePropertiesPresent()`

    - #### getPeakEnvelopeVersion

          @MediaProperty(uuid1=67240705,
                         uuid2=1536,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,8},
                         definedName="PeakEnvelopeVersion",
                         typeName="UInt32",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15657,
                         symbol="PeakEnvelopeVersion")
          public int getPeakEnvelopeVersion()
                                                                                                                                                                                                                                                                                                                                                                                                  throws PropertyNotPresentException

      Description copied from interface: `WAVEPCMDescriptor`

      Returns the version information of the peak envelope data of this PCM descriptor. This property is optional.

      Specified by:
        `getPeakEnvelopeVersion` in interface `WAVEPCMDescriptor`
      Returns:
        Version information of the peak envelope data of this PCM descriptor.
      Throws:
        `PropertyNotPresentException` - The optional peak envelope version property is not present in this PCM descriptor.

    - #### setPeakEnvelopeVersion

          @MediaPropertySetter(value="PeakEnvelopeVersion")
          public void setPeakEnvelopeVersion(Integer version)
                                                                                        throws IllegalArgumentException

      Description copied from interface: `WAVEPCMDescriptor`

      Sets the version information of the peak envelope data of this PCM descriptor. Set this optional property to `null` to omit it.

      Specified by:
        `setPeakEnvelopeVersion` in interface `WAVEPCMDescriptor`
      Parameters:
        `version` - Version information of the peak envelope data of this PCM descriptor.
      Throws:
        `IllegalArgumentException` - Cannot set the peak envelope version property of this PCM descriptor to a negative value.

    - #### getPeakFrameCount

          @MediaProperty(uuid1=67240705,
                         uuid2=2816,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,8},
                         definedName="PeakFrames",
                         typeName="UInt32",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15662,
                         symbol="PeakFrames")
          public int getPeakFrameCount()
                                                                                                                                                                                                                                                                                                                                                                           throws PropertyNotPresentException

      Description copied from interface: `WAVEPCMDescriptor`

      Returns the number of peak frames for this PCM descriptor. This property is optional.

      Specified by:
        `getPeakFrameCount` in interface `WAVEPCMDescriptor`
      Returns:
        Number of peak frames for this PCM descriptor.
      Throws:
        `PropertyNotPresentException` - This optional peak of peaks property is not present in this PCM descriptor.

    - #### setPeakFrameCount

          @MediaPropertySetter(value="PeakFrames")
          public void setPeakFrameCount(Integer frameCount)
                                                                          throws IllegalArgumentException

      Description copied from interface: `WAVEPCMDescriptor`

      Sets the number of peak frames for this PCM descriptor. Set this optional property to `null` to omit it.

      Specified by:
        `setPeakFrameCount` in interface `WAVEPCMDescriptor`
      Parameters:
        `frameCount` - Number of peak frames for this PCM descriptor.
      Throws:
        `IllegalArgumentException` - The given peak frames count is negative.

    - #### getPeakOfPeaksPosition

          @MediaProperty(uuid1=67240705,
                         uuid2=3072,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,8},
                         definedName="PeakOfPeaksPosition",
                         typeName="PositionType",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15663,
                         symbol="PeakOfPeaksPosition")
          public long getPeakOfPeaksPosition()
                                                                                                                                                                                                                                                                                                                                                                                                         throws PropertyNotPresentException

      Description copied from interface: `WAVEPCMDescriptor`

      Returns the offset to the first audio sample whose absolute value is the maximum value of the entire audio file represented by this PCM descriptor. This property is optional.

      Specified by:
        `getPeakOfPeaksPosition` in interface `WAVEPCMDescriptor`
      Returns:
        Peak of peaks position in the described audio essence.
      Throws:
        `PropertyNotPresentException` - The optional peak of peaks position property is not present in this PCM descriptor.

    - #### setPeakOfPeaksPosition

          @MediaPropertySetter(value="PeakOfPeaksPosition")
          public void setPeakOfPeaksPosition(Long position)

      Description copied from interface: `WAVEPCMDescriptor`

      Sets the offset to the first audio sample whose absolute value is the maximum value of the entire audio file described by this PCM descriptor. Set this optional property to `null` to omit it.

      Specified by:
        `setPeakOfPeaksPosition` in interface `WAVEPCMDescriptor`
      Parameters:
        `position` - Peak of peaks position in the described audio essence.

    - #### getPointsPerPeakValue

          @MediaProperty(uuid1=67240705,
                         uuid2=2048,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,8},
                         definedName="PointsPerPeakValue",
                         typeName="UInt32",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15659,
                         symbol="PointsPerPeakValue")
          public int getPointsPerPeakValue()
                                                                                                                                                                                                                                                                                                                                                                                               throws PropertyNotPresentException

      Description copied from interface: `WAVEPCMDescriptor`

      Returns the number of peak points per peak value for this PCM descriptor. This value is optional.

      Specified by:
        `getPointsPerPeakValue` in interface `WAVEPCMDescriptor`
      Returns:
        Number of peak points per peak value for this PCM descriptor.
      Throws:
        `PropertyNotPresentException` - The optional points per peak value property is not present in this PCM descriptor.

    - #### setPointsPerPeakValue

          @MediaPropertySetter(value="PointsPerPeakValue")
          public void setPointsPerPeakValue(Integer pointCount)
                                                                                      throws IllegalArgumentException

      Description copied from interface: `WAVEPCMDescriptor`

      Sets the number of peak points per peak value for this PCM descriptor. Set this optional property to `null` to omit it.

      Specified by:
        `setPointsPerPeakValue` in interface `WAVEPCMDescriptor`
      Parameters:
        `pointCount` - Number of peak points per peak value for this PCM descriptor.
      Throws:
        `IllegalArgumentException` - The given number of peak points per peak value is negative.

    - #### getSequenceOffset

          @MediaProperty(uuid1=67240706,
                         uuid2=512,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,5},
                         definedName="SequenceOffset",
                         typeName="UInt8",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15627,
                         symbol="SequenceOffset")
          public byte getSequenceOffset()
                                                                                                                                                                                                                                                                                                                                                                                  throws PropertyNotPresentException

      Description copied from interface: `WAVEPCMDescriptor`

      Returns the frame number of the beginning of the essence data within a five-frame sequence for this PCM descriptor. This property is optional and zero-based.

      Specified by:
        `getSequenceOffset` in interface `WAVEPCMDescriptor`
      Returns:
        Frame number of the beginning of the essence data within a five-frame sequence.
      Throws:
        `PropertyNotPresentException` - This optional property is not present in this PCM descriptor.

    - #### setSequenceOffset

          @MediaPropertySetter(value="SequenceOffset")
          public void setSequenceOffset(Byte offset)
                                                                              throws IllegalArgumentException

      Description copied from interface: `WAVEPCMDescriptor`

      Sets the frame number of the beginning of the essence data within a five-frame sequence for this PCM descriptor. This property is optional and zero-based. Set to `null` omit it.

      Specified by:
        `setSequenceOffset` in interface `WAVEPCMDescriptor`
      Parameters:
        `offset` - Frame number of the beginning of the essence data within a five-frame sequence.
      Throws:
        `IllegalArgumentException` - The given sequence offset value is negative.

    - #### getPeakEnvelopeData

          @MediaProperty(uuid1=67240705,
                         uuid2=3584,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,8},
                         definedName="PeakEnvelopeData",
                         typeName="Stream",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=15665,
                         symbol="PeakEnvelopeData")
          public Stream getPeakEnvelopeData()
                                                                                                                                                                                                                                                                                                                                                                                            throws PropertyNotPresentException

      Description copied from interface: `WAVEPCMDescriptor`

      Returns the stream containing the peak envelope data for this PCM descriptor. This is an optional property.

      Specified by:
        `getPeakEnvelopeData` in interface `WAVEPCMDescriptor`
      Returns:
        Stream containing the peak envelope data.
      Throws:
        `PropertyNotPresentException` - The optional peak envelope data property is not present for this WAVE PCM descriptor.
      See Also:
        `WAVEPCMDescriptor.getPeakEnvelopeDataPosition()`, `WAVEPCMDescriptor.readPeakEnvelopeData(int)`, `WAVEPCMDescriptor.writePeakEnvelopeData(ByteBuffer)`, `WAVEPCMDescriptor.setPeakEnvelopeDataPosition(long)`

    - #### setPeakEnvelopeData

          @MediaPropertySetter(value="PeakEnvelopeData")
          public void setPeakEnvelopeData(Stream peakEnvelopeData)

      Description copied from interface: `WAVEPCMDescriptor`

      Set the peak envelope data stream of this PCM descriptor. Set this optional property to `null` to omit it.

      Specified by:
        `setPeakEnvelopeData` in interface `WAVEPCMDescriptor`
      Parameters:
        `peakEnvelopeData` - Peak envelope data stream of this PCM descriptor.
      See Also:
        `WAVEPCMDescriptor.readPeakEnvelopeData(int)`, `WAVEPCMDescriptor.writePeakEnvelopeData(ByteBuffer)`, `WAVEPCMDescriptor.getPeakEnvelopeDataPosition()`, `WAVEPCMDescriptor.getPeakEnvelopeDataSize()`, `WAVEPCMDescriptor.setPeakEnvelopeDataPosition(long)`

    - #### readPeakEnvelopeData

          public ByteBuffer readPeakEnvelopeData(int bytes)
                                          throws EndOfDataException,
                                                 PropertyNotPresentException,
                                                 IOException

      Description copied from interface: `WAVEPCMDescriptor`

      Read the given number of bytes of data from the peak envelope data stream of this PCM descriptor at the `WAVEPCMDescriptor.getPeakEnvelopeDataPosition()` current position.

      Specified by:
        `readPeakEnvelopeData` in interface `WAVEPCMDescriptor`
      Parameters:
        `bytes` - Number of bytes to read.
      Returns:
        The given number of bytes of data from the peak envelope data stream of this PCM descriptor.
      Throws:
        `EndOfDataException` - Attempt to read beyond the end of the peak envelope data.
        `PropertyNotPresentException` - The optional peak envelope data property is not present in this PCM descriptor.
        `IOException` - Error occurred when trying to read data from the underlying stream.

    - #### writePeakEnvelopeData

          public int writePeakEnvelopeData(ByteBuffer bytes)
                                    throws PropertyNotPresentException,
                                           EndOfDataException,
                                           IOException

      Description copied from interface: `WAVEPCMDescriptor`

      Write the given bytes to the peak envelope data stream of the PCM descriptor at the current position, as determined by calling `WAVEPCMDescriptor.getPeakEnvelopeDataPosition()`.

      Specified by:
        `writePeakEnvelopeData` in interface `WAVEPCMDescriptor`
      Parameters:
        `bytes` - Data to write to the peak envelope data stream of this PCM descriptor.
      Returns:
        Number of bytes written.
      Throws:
        `PropertyNotPresentException` - The optional peak envelope data property is not present in this PCM descriptor and so cannot be written to.
        `EndOfDataException` - Cannot write beyond the end of the stream.
        `IOException` - Error occurred when trying to write to the underlying stream.
      See Also:
        `WAVEPCMDescriptor.getPeakEnvelopeData()`

    - #### clone

          public WAVEPCMDescriptor 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 `EssenceDescriptor`
      Specified by:
        `clone` in interface `InterchangeObject`
      Specified by:
        `clone` in interface `SoundDescriptor`
      Specified by:
        `clone` in interface `WAVEPCMDescriptor`
      Overrides:
        `clone` in class `SoundDescriptorImpl`
      Returns:
        Cloned copy of this interchange object.

    - #### getDataOffset

          @MediaProperty(uuid1=-1153455139,
                         uuid2=-832,
                         uuid3=17320,
                         uuid4={-105,89,-57,39,119,31,-52,74},
                         definedName="DataOffset",
                         typeName="Int32",
                         optional=true,
                         uniqueIdentifier=false,
                         pid=0,
                         symbol="DataOffset2",
                         namespace="http://www.amwa.tv/is03/extensions/avid",
                         prefix="avid")
           @Int32
          public int getDataOffset()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              throws PropertyNotPresentException

      Throws:
        `PropertyNotPresentException`

    - #### setDataOffset

          @MediaPropertySetter(value="DataOffset")
          public void setDataOffset(@Int32
                                                                             Integer dataOffset)

    - #### getChannelAssignmentString

          public String getChannelAssignmentString()

    - #### setChannelAssignmentString

          public void setChannelAssignmentString(String channelAssignment)

    - #### getPeakEnvelopeTimestampString

          public String getPeakEnvelopeTimestampString()

    - #### setPeakEnvelopeTimestampString

          public void setPeakEnvelopeTimestampString(String peakEnvelopeTimestampString)

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