Media Authoring
with Java API

tv.amwa.maj.entity
Class TimecodeSegment

java.lang.Object
  extended by tv.amwa.maj.entity.InterchangeObject
      extended by tv.amwa.maj.entity.Component
          extended by tv.amwa.maj.entity.Segment
              extended by tv.amwa.maj.entity.TimecodeSegment
All Implemented Interfaces:
Serializable, Cloneable, MAJCommon, Component, InterchangeObject, Segment, TimecodeSegment, XMLSerializable

@AAFClass(uuid1=218169601,
          uuid2=257,
          uuid3=5120,
          uuid4={6,14,43,52,2,6,1,1},
          definedName="Timecode",
          description="The Timecode class stores videotape or audio tape timecode information.")
public class TimecodeSegment
extends Segment
implements TimecodeSegment, Serializable, Cloneable, MAJCommon

Implements the storage of video tape or audio tape timecode information.

THE COMMENTS FOR THIS CLASS ARE INCOMPLETE.

Author:
Richard Cartwright
See Also:
Serialized Form

Nested Class Summary
static class TimecodeSegment.XMLHandler
           
 
Nested classes/interfaces inherited from class tv.amwa.maj.entity.Segment
Segment.SegmentXMLHandler
 
Nested classes/interfaces inherited from class tv.amwa.maj.entity.Component
Component.ComponentAttributesXMLHandler, Component.ComponentUserCommentsXMLHandler, Component.ComponentXMLHandler, Component.KLVDataXMLHandler
 
Nested classes/interfaces inherited from class tv.amwa.maj.entity.InterchangeObject
InterchangeObject.InterchangeObjectXMLHandler
 
Field Summary
static String TIMECODE_TAG
           
 
Fields inherited from class tv.amwa.maj.entity.Component
COMPONENT_ITEM
 
Constructor Summary
TimecodeSegment(long length, TimecodeValue timecode)
          Creates and initializes a new timecode segment class, which stores videotape or audio tape timecode information.
 
Method Summary
 void appendXMLChildren(Node parent)
          Append child elements to the given parent node to serialize the value of an object to an XML fragment.
 TimecodeSegment clone()
          Creates a cloned copy of this entity.
 boolean equals(Object o)
          Tests to see if the given object is equal to this interchange object.
 boolean getDrop()
           
 short getFPS()
           
 long getStart()
           
 TimecodeValue getTimecode()
          Returns the timecode value for this timecode segment, which specifies the start timecode for the segment, the frames per second of the tape and whether the timecode is drop or non-drop.
 int hashCode()
          Returns a hash code value for this interchange object.
 TimecodeValue segmentOffsetToTC(long offset)
          Converts the given segment offset to a timecode value.
 long segmentTCToOffset(TimecodeValue timecode, Rational editrate)
          Converts the given timecode and edit rate to a segment offset value.
 void setPropertiesFromInterface(TimecodeSegment castFrom)
           
 void setTimecode(TimecodeValue timecode)
          Set the timecode value for this timecode segment, which specifies the start timecode for the segment, the frames per second of the tape and whether the timecode is drop or non-drop.
 
Methods inherited from class tv.amwa.maj.entity.Segment
setPropertiesFromInterface
 
Methods inherited from class tv.amwa.maj.entity.Component
appendAttribute, appendAttribute, appendComment, appendComment, appendKLVData, countAttributes, countComments, countKLVData, getAttributes, getComments, getDataDefinition, getKLVData, getLength, getLengthPresent, removeAttribute, removeComment, removeKLVData, setDataDefinition, setLength, setLengthPresent, 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.Component
appendAttribute, appendAttribute, appendComment, appendComment, appendKLVData, countAttributes, countComments, countKLVData, getAttributes, getComments, getDataDefinition, getKLVData, getLength, removeAttribute, removeComment, removeKLVData, setDataDefinition, setLength
 
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

TIMECODE_TAG

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

TimecodeSegment

public TimecodeSegment(long length,
                       TimecodeValue timecode)
                throws NullPointerException,
                       BadLengthException

Creates and initializes a new timecode segment class, which stores videotape or audio tape timecode information.

Parameters:
length - The length of this component.
timecode - Timecode value of the new timecode segment.
Throws:
NullPointerException - The timecode value is null.
BadLengthException - Cannot set the length of a component to a negative value.
Method Detail

setPropertiesFromInterface

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

getTimecode

public TimecodeValue getTimecode()
Description copied from interface: TimecodeSegment

Returns the timecode value for this timecode segment, which specifies the start timecode for the segment, the frames per second of the tape and whether the timecode is drop or non-drop.

Specified by:
getTimecode in interface TimecodeSegment
Returns:
Timecode value for the timecode segment.
See Also:
TimecodeValue.getStartOffset(), TimecodeValue.getFps(), TimecodeValue.getDrop()

setTimecode

public void setTimecode(TimecodeValue timecode)
                 throws NullPointerException
Description copied from interface: TimecodeSegment

Set the timecode value for this timecode segment, which specifies the start timecode for the segment, the frames per second of the tape and whether the timecode is drop or non-drop.

Specified by:
setTimecode in interface TimecodeSegment
Parameters:
timecode - Timecode value for this timecode segment.
Throws:
NullPointerException - The given value for the timecode is null.
See Also:
AAFFactory.makeTimecodeValue(long, short, boolean)

getStart

@AAFProperty(uuid1=117571843,
             uuid2=261,
             uuid3=0,
             uuid4={6,14,43,52,1,1,1,2},
             definedName="Start",
             typeName="PositionType",
             optional=false,
             uniqueIdentifier=false,
             pid=5377)
public long getStart()

getFPS

@AAFProperty(uuid1=67371265,
             uuid2=518,
             uuid3=0,
             uuid4={6,14,43,52,1,1,1,2},
             definedName="FPS",
             typeName="UInt16",
             optional=false,
             uniqueIdentifier=false,
             pid=5378)
public short getFPS()

getDrop

@AAFProperty(uuid1=67371265,
             uuid2=1280,
             uuid3=0,
             uuid4={6,14,43,52,1,1,1,1},
             definedName="Drop",
             typeName="Boolean",
             optional=false,
             uniqueIdentifier=false,
             pid=5379)
public boolean getDrop()

segmentOffsetToTC

public TimecodeValue segmentOffsetToTC(long offset)
Description copied from interface: Segment

Converts the given segment offset to a timecode value.

Specified by:
segmentOffsetToTC in interface Segment
Overrides:
segmentOffsetToTC in class Segment
Parameters:
offset - Segment offset to be converted to a timecode.
Returns:
Converted timecode value.
See Also:
Segment.segmentTCToOffset(TimecodeValue, Rational)

segmentTCToOffset

public long segmentTCToOffset(TimecodeValue timecode,
                              Rational editrate)
                       throws NullPointerException,
                              TimecodeNotFoundException,
                              BadSampleOffsetException
Description copied from interface: Segment

Converts the given timecode and edit rate to a segment offset value.

Specified by:
segmentTCToOffset in interface Segment
Overrides:
segmentTCToOffset in class Segment
Parameters:
timecode - Timecode to be converted to an offset.
editrate - Edit rate of the given timecode.
Returns:
Frame offset into the segment.
Throws:
NullPointerException - One or both of the given timecode and/or edit rate is/are null.
TimecodeNotFoundException - The given timecode is not available in this segment.
BadSampleOffsetException - The given timecode is outside the bounds of the timecode values represented by this segment.
See Also:
Segment.segmentOffsetToTC(long)

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 Component
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 Component
Returns:
Hash code value for this interchange object.
See Also:
Object.hashCode()

clone

public TimecodeSegment 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 Segment
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 Component
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.