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

tv.amwa.maj.model

## Interface MultipleDescriptor

- All Superinterfaces:
    AAFFileDescriptor, EssenceDescriptor, InterchangeObject, MediaEntity, MetadataObject
  All Known Implementing Classes:
    MultipleDescriptorImpl

      public interface MultipleDescriptor
      extends AAFFileDescriptor

  Specifies the description of content data associated with a single file source package that contains multiple tracks of essence. Each file descriptor within a multiple descriptor should set the linked track property that links it to the source track that it describes.

  See Also:
    `AAFFileDescriptor.getLinkedTrackID()`, `AAFFileDescriptor.setLinkedTrackID(Integer)`, `SourcePackage.getEssenceDescriptor()`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `appendFileDescriptor(AAFFileDescriptor fileDescriptor)` Appends a file descriptor to the list of file descriptors of this multiple descriptor.
    `MultipleDescriptor` | `clone()` Create a cloned copy of this multiple descriptor.
    `int` | `countFileDescriptors()` Returns the number of file descriptors of this multiple descriptor.
    `AAFFileDescriptor` | `getFileDescriptorAt(int index)` Returns the file descriptor at the given index through the list of file descriptors of this multiple descriptor.
    `List<? extends AAFFileDescriptor>` | `getFileDescriptors()` Returns a copy of the list of file descriptors of this multiple descriptor.
    `void` | `insertFileDescriptorAt(int index, AAFFileDescriptor fileDescriptor)` Insert a file descriptor into the list of file descriptors of this multiple descriptor at the given index.
    `void` | `prependFileDescriptor(AAFFileDescriptor fileDescriptor)` Prepends a file descriptor to the list of file descriptors of this multiple essence descriptor.
    `void` | `removeFileDescriptorAt(int index)` Removes the file descriptor at the given index from the list of file descriptors of this multiple descriptor.

    - ### 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`

- - ### Method Detail

    - #### countFileDescriptors

          int countFileDescriptors()

      Returns the number of file descriptors of this multiple descriptor.

      Returns:
        Number of file descriptors of this multiple descriptor.

    - #### appendFileDescriptor

          void appendFileDescriptor(AAFFileDescriptor fileDescriptor)
                             throws NullPointerException

      Appends a file descriptor to the list of file descriptors of this multiple descriptor. Use this function to add a `file descriptor` to the end of the interleave pattern.

      Parameters:
        `fileDescriptor` - File descriptor to append to this multiple descriptor.
      Throws:
        `NullPointerException` - The given file descriptor is `null`.

    - #### prependFileDescriptor

          void prependFileDescriptor(AAFFileDescriptor fileDescriptor)
                              throws NullPointerException

      Prepends a file descriptor to the list of file descriptors of this multiple essence descriptor. Use this method to add a `file descriptor` to to the beginning of the interleave pattern.

      Parameters:
        `fileDescriptor` - File descriptor to prepend to this multiple descriptor.
      Throws:
        `NullPointerException` - The file descriptor argument is `null`.

    - #### insertFileDescriptorAt

          void insertFileDescriptorAt(@UInt32
                                      int index,
                                      AAFFileDescriptor fileDescriptor)
                               throws NullPointerException,
                                      IndexOutOfBoundsException

      Insert a file descriptor into the list of file descriptors of this multiple descriptor at the given index. Other indices will be adjusted upwards to accommodate the new item.

      Parameters:
        `index` - Index at which the given file descriptor is to be inserted.
        `fileDescriptor` - File descriptor to insert.
      Throws:
        `NullPointerException` - The file descriptor argument is `null`.
        `IndexOutOfBoundsException` - The given index is outside the acceptable range for the current list of file descriptors.

    - #### getFileDescriptorAt

          AAFFileDescriptor getFileDescriptorAt(@UInt32
                                                int index)
                                         throws IndexOutOfBoundsException

      Returns the file descriptor at the given index through the list of file descriptors of this multiple descriptor.

      Parameters:
        `index` - Index of the file descriptor to retrieve.
      Returns:
        File descriptor at the given index.
      Throws:
        `IndexOutOfBoundsException` - The given index is outside the acceptable range for the current list of file descriptors.

    - #### removeFileDescriptorAt

          void removeFileDescriptorAt(@UInt32
                                      int index)
                               throws IndexOutOfBoundsException

      Removes the file descriptor at the given index from the list of file descriptors of this multiple descriptor. Indices of other items in the list will be adjusted to a lower value to fill the gap left after the removal.

      Parameters:
        `index` - Index of the file descriptor to remove.
      Throws:
        `IndexOutOfBoundsException` - The given index is outside the acceptable range for the current list of file descriptors.
      See Also:
        `TypeDefinitions.FileDescriptorStrongReferenceVector`

    - #### getFileDescriptors

          List<? extends AAFFileDescriptor> getFileDescriptors()

      Returns a copy of the list of file descriptors of this multiple descriptor.

      Returns:
        Copy of the list of file descriptors of this multiple descriptor.

    - #### clone

          MultipleDescriptor clone()

      Create a cloned copy of this multiple descriptor.

      Specified by:
        `clone` in interface `AAFFileDescriptor`
      Specified by:
        `clone` in interface `EssenceDescriptor`
      Specified by:
        `clone` in interface `InterchangeObject`
      Specified by:
        `clone` in interface `MediaEntity`
      Returns:
        Cloned copy of this multiple descriptor.

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