Media Authoring
with Java API

tv.amwa.maj.entity
Class MultipleDescriptor

java.lang.Object
  extended by tv.amwa.maj.entity.InterchangeObject
      extended by tv.amwa.maj.entity.EssenceDescriptor
          extended by tv.amwa.maj.entity.AAFFileDescriptor
              extended by tv.amwa.maj.entity.MultipleDescriptor
All Implemented Interfaces:
Serializable, Cloneable, MAJCommon, AAFFileDescriptor, EssenceDescriptor, InterchangeObject, MultipleDescriptor, XMLSerializable

@AAFClass(uuid1=218169601,
          uuid2=257,
          uuid3=17408,
          uuid4={6,14,43,52,2,6,1,1},
          definedName="MultipleDescriptor",
          description="Describes the format of the content data associated with a file source mob containing multiple tracks of essence.")
public class MultipleDescriptor
extends AAFFileDescriptor
implements MultipleDescriptor, Serializable, Cloneable, MAJCommon

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

THE COMMENTS FOR THIS CLASS ARE INCOMPLETE.

Author:
Richard Cartwright
See Also:
Serialized Form

Nested Class Summary
static class MultipleDescriptor.FileDescriptorsXMLHandler
           
static class MultipleDescriptor.XMLHandler
           
 
Nested classes/interfaces inherited from class tv.amwa.maj.entity.AAFFileDescriptor
AAFFileDescriptor.FileDescriptorXMLHandler
 
Nested classes/interfaces inherited from class tv.amwa.maj.entity.EssenceDescriptor
EssenceDescriptor.EssenceDescriptorXMLHandler, EssenceDescriptor.LocatorXMLHandler, EssenceDescriptor.SubDescriptorXMLHandler
 
Nested classes/interfaces inherited from class tv.amwa.maj.entity.InterchangeObject
InterchangeObject.InterchangeObjectXMLHandler
 
Field Summary
static String MULTIPLEDESCRIPTOR_TAG
           
 
Fields inherited from class tv.amwa.maj.entity.AAFFileDescriptor
FILEDESCRIPTOR_ITEM
 
Fields inherited from class tv.amwa.maj.entity.EssenceDescriptor
ESSENCEDESCRIPTOR_ITEM
 
Constructor Summary
MultipleDescriptor()
          Creates and initializes a new multiple descriptor for static essence, which describes the format of the content data associated with a file source mob containing multiple tracks of essence.
MultipleDescriptor(Rational sampleRate, long length)
          Creates and initializes a new multiple descriptor for time varying essence, which describes the format of the content data associated with a file source mob containing multiple tracks of essence.
 
Method Summary
 void appendFileDescriptor(AAFFileDescriptor fileDescriptor)
          Appends a file descriptor to the list of file descriptors of this multiple descriptor.
 void appendXMLChildren(Node parent)
          Append child elements to the given parent node to serialize the value of an object to an XML fragment.
 MultipleDescriptor clone()
          Creates a cloned copy of this entity.
 int countFileDescriptors()
          Returns the number of file descriptors of this multiple descriptor.
 boolean equals(Object o)
          Tests to see if the given object is equal to this interchange object.
 AAFFileDescriptor getFileDescriptorAt(int index)
          Returns the file descriptor at the given index through the list of file descriptors of this multiple descriptor.
 List<AAFFileDescriptor> getFileDescriptors()
          Returns a copy of the list of file descriptors of this multiple descriptor.
 int hashCode()
          Returns a hash code value for this interchange object.
 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.
 void setPropertiesFromInterface(MultipleDescriptor castFrom)
           
 
Methods inherited from class tv.amwa.maj.entity.AAFFileDescriptor
describesStaticEssence, getCodecDefinition, getContainerFormat, getLength, getLinkedSlotID, getSampleRate, setCodecDefinition, setContainerFormat, setDescribesStaticEssence, setDescribesTimeVaryingEssence, setLength, setLinkedSlotID, setPropertiesFromInterface, setSampleRate
 
Methods inherited from class tv.amwa.maj.entity.EssenceDescriptor
appendLocator, appendSubDescriptor, countLocators, countSubDescriptors, getLocatorAt, getLocators, getSubDescriptorAt, getSubDescriptors, insertLocatorAt, insertSubDescriptorAt, prependLocator, prependSubDescriptor, removeLocatorAt, removeSubDescriptorAt, setPropertiesFromInterface
 
Methods inherited from class tv.amwa.maj.entity.InterchangeObject
castFromInterface, countProperties, createOptionalPropertyValue, disableGenerationTracking, enableGenerationTracking, getDefinition, getGeneration, getGenerationAUID, getProperties, getPropertyValue, isGenerationTracked, isPropertyPresent, omitOpionalProperty, registerImplementation, setPropertiesFromInterface, setPropertyValue, toString
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface tv.amwa.maj.iface.AAFFileDescriptor
getCodecDefinition, getContainerFormat, getLength, getLinkedSlotID, getSampleRate, setCodecDefinition, setContainerFormat, setLength, setLinkedSlotID, setSampleRate
 
Methods inherited from interface tv.amwa.maj.iface.EssenceDescriptor
appendLocator, appendSubDescriptor, countLocators, countSubDescriptors, getLocatorAt, getLocators, getSubDescriptorAt, getSubDescriptors, insertLocatorAt, insertSubDescriptorAt, prependLocator, prependSubDescriptor, removeLocatorAt, removeSubDescriptorAt
 
Methods inherited from interface tv.amwa.maj.iface.InterchangeObject
countProperties, createOptionalPropertyValue, disableGenerationTracking, enableGenerationTracking, getDefinition, getGeneration, getGenerationAUID, getProperties, getPropertyValue, isGenerationTracked, isPropertyPresent, omitOpionalProperty, setPropertyValue
 
Methods inherited from interface tv.amwa.maj.entity.MAJCommon
toString
 

Field Detail

MULTIPLEDESCRIPTOR_TAG

public static final String MULTIPLEDESCRIPTOR_TAG
See Also:
Constant Field Values
Constructor Detail

MultipleDescriptor

public MultipleDescriptor()

Creates and initializes a new multiple descriptor for static essence, which describes the format of the content data associated with a file source mob containing multiple tracks of essence. File descriptors for each of the tracks of data can then be added using the append, insert and prepend methods.


MultipleDescriptor

public MultipleDescriptor(Rational sampleRate,
                          @LengthType
                          long length)
                   throws NullPointerException,
                          IllegalArgumentException

Creates and initializes a new multiple descriptor for time varying essence, which describes the format of the content data associated with a file source mob containing multiple tracks of essence. File descriptors for each of the tracks of data can then be added using the append, insert and prepend methods.

Parameters:
sampleRate - Sample rate for the content represented by this multiple descriptor.
length - Length of content represented by this multiple descriptor.
Throws:
NullPointerException - The sample rate argument is null.
IllegalArgumentException - The length of the multiple descriptor cannot be a negative value.
Method Detail

setPropertiesFromInterface

public final void setPropertiesFromInterface(MultipleDescriptor castFrom)
See Also:
InterchangeObject.setPropertiesFromInterface(tv.amwa.maj.iface.InterchangeObject)

getFileDescriptors

@AAFProperty(uuid1=100729092,
             uuid2=1547,
             uuid3=0,
             uuid4={6,14,43,52,1,1,1,4},
             definedName="FileDescriptors",
             typeName="StrongReferenceVector of FileDescriptor",
             optional=false,
             uniqueIdentifier=false,
             pid=16129)
public List<AAFFileDescriptor> getFileDescriptors()
Description copied from interface: MultipleDescriptor

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

Specified by:
getFileDescriptors in interface MultipleDescriptor
Returns:
Copy of the list of file descriptors of this multiple descriptor.

appendFileDescriptor

public void appendFileDescriptor(AAFFileDescriptor fileDescriptor)
                          throws NullPointerException
Description copied from interface: MultipleDescriptor

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.

Specified by:
appendFileDescriptor in interface MultipleDescriptor
Parameters:
fileDescriptor - File descriptor to append to this multiple descriptor.
Throws:
NullPointerException - The given file descriptor is null.

countFileDescriptors

public int countFileDescriptors()
Description copied from interface: MultipleDescriptor

Returns the number of file descriptors of this multiple descriptor.

Specified by:
countFileDescriptors in interface MultipleDescriptor
Returns:
Number of file descriptors of this multiple descriptor.

getFileDescriptorAt

public AAFFileDescriptor getFileDescriptorAt(int index)
                                      throws IndexOutOfBoundsException
Description copied from interface: MultipleDescriptor

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

Specified by:
getFileDescriptorAt in interface MultipleDescriptor
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.

insertFileDescriptorAt

public void insertFileDescriptorAt(int index,
                                   AAFFileDescriptor fileDescriptor)
                            throws NullPointerException,
                                   IndexOutOfBoundsException
Description copied from interface: MultipleDescriptor

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.

Specified by:
insertFileDescriptorAt in interface MultipleDescriptor
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.

prependFileDescriptor

public void prependFileDescriptor(AAFFileDescriptor fileDescriptor)
                           throws NullPointerException
Description copied from interface: MultipleDescriptor

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.

Specified by:
prependFileDescriptor in interface MultipleDescriptor
Parameters:
fileDescriptor - File descriptor to prepend to this multiple descriptor.
Throws:
NullPointerException - The file descriptor argument is null.

removeFileDescriptorAt

public void removeFileDescriptorAt(int index)
                            throws IndexOutOfBoundsException
Description copied from interface: MultipleDescriptor

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.

Specified by:
removeFileDescriptorAt in interface MultipleDescriptor
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.

equals

public boolean equals(Object o)
Description copied from interface: MAJCommon

Tests to see if the given object is equal to this interchange object. To be equal, the given value must be not null, share the same interface to its value and each of the properties of the value must each be equal.

Specified by:
equals in interface MAJCommon
Overrides:
equals in class AAFFileDescriptor
Parameters:
o - Object to test for equality with.
Returns:
Is the given object equals to this value?
See Also:
Object.equals(Object)

hashCode

public int hashCode()
Description copied from interface: MAJCommon

Returns a hash code value for this interchange object.

Specified by:
hashCode in interface MAJCommon
Overrides:
hashCode in class AAFFileDescriptor
Returns:
Hash code value for this interchange object.
See Also:
Object.hashCode()

clone

public MultipleDescriptor clone()
Description copied from interface: MAJCommon

Creates a cloned copy of this entity. The clone will be initialized to have the same value as this value but exists independently from then on. Changes to this value will not effect the clone and changes to the clone will not effect this. MAJ API clones are true deep clones with no shared references to areas of memory within the original.

This method does not throw a CloneNotSupportedException as all entity values must implement the Cloneable interface. If a cloning error does occur, a null value will be returned but this is very unlikely to happen.

Specified by:
clone in interface MAJCommon
Overrides:
clone in class EssenceDescriptor
Returns:
Independent clone of this value, which is a deep copy.
See Also:
Object.clone()

appendXMLChildren

public void appendXMLChildren(Node parent)
Description copied from interface: XMLSerializable

Append child elements to the given parent node to serialize the value of an object to an XML fragment. Methods of the XMLBuilder class are provided to help with this process.

Specified by:
appendXMLChildren in interface XMLSerializable
Overrides:
appendXMLChildren in class AAFFileDescriptor
Parameters:
parent - XML parent element to append child nodes to.

Media Authoring
with Java API

(c) 2007-2008 Richard Cartwright, all rights reserved. Subject to the terms of the AAF SDK Public Source License.