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

tv.amwa.maj.model.impl

## Class PulldownImpl

- java.lang.Object
- - tv.amwa.maj.model.impl.InterchangeObjectImpl
  - - tv.amwa.maj.model.impl.ComponentImpl
    - - tv.amwa.maj.model.impl.SegmentImpl
      - - tv.amwa.maj.model.impl.PulldownImpl

- All Implemented Interfaces:
    Serializable, Cloneable, QComponent, QSegment, MediaEntity, MetadataObject, Component, InterchangeObject, Pulldown, Segment

      @MediaClass(uuid1=218169601,
                  uuid2=257,
                  uuid3=3072,
                  uuid4={6,14,43,52,2,6,1,1},
                  definedName="Pulldown",
                  description="The Pulldown class converts between film frame rates and videotape frame rates.",
                  symbol="Pulldown")
      public class PulldownImpl
      extends SegmentImpl
      implements Pulldown, Serializable, Cloneable

  Implements the representation of a conversion between film frame rates and videotape frame rates. This class provides a mechanism to convert essence to and from video and film rates and describe the mechanism that was used to convert the essence.

  See Also:
    Serialized Form

- - ### Field Summary

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

      `ObjectClassPropertyID`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PulldownImpl()`
    `PulldownImpl(DataDefinition dataDefinition, Segment inputSegment, PulldownKindType pulldownKind, PulldownDirectionType pulldownDirection, int phaseFrame)` Creates and initializes a new pulldown object, which converts between film frame rates and videotape frame rates

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Pulldown` | `clone()` Create a cloned copy of this interchange object.
    `Segment` | `getInputSegment()` Returns the input segment of this pulldown, which is either a source clip or timecode.
    `int` | `getPhaseFrame()` Returns the phase frame property of this pulldown, which specifies the phase within the repeating pulldown pattern of the first frame after the pulldown conversion.
    `PulldownDirectionType` | `getPulldownDirection()` Returns the pulldown direction of this pulldown, which specifies whether the pulldown is converting from tape to film speed or from film to tape speed.
    `PulldownKindType` | `getPulldownKind()` Returns the pulldown kind of this pulldown, which specifies whether the pulldown is converting from nominally 30 Hz or 25 Hz video frame rate and whether frames are dropped or the video is played at another speed.
    `static Segment` | `initializeInputSegment()`
    `static int` | `initializePhaseFrame()`
    `static PulldownDirectionType` | `initializePulldownDirection()`
    `static PulldownKindType` | `initializePulldownKind()`
    `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` | `setInputSegment(Segment inputSegment)` Sets the input segment for this pulldown, which is either a source clip or timecode.
    `void` | `setPhaseFrame(int phaseFrame)` Sets the phase frame property of the pulldown, which specifies the phase within the repeating pulldown pattern of the first frame after the pulldown conversion.
    `void` | `setPulldownDirection(PulldownDirectionType pulldownDirection)` Sets the pulldown direction of the pulldown, which specifies whether the pulldown is converting from tape to film speed or from film to tape speed.
    `void` | `setPulldownKind(PulldownKindType pulldownKind)` Sets the pulldown kind of this pulldown, which specifies whether the pulldown is converting from nominally 30 Hz or 25 Hz video frame rate and whether frames are dropped or the video is played at another speed.

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

      `generateSequence, getCutPoint, getKeyOffset, getPackLayerKeyIndicator, getSegmentBlob, getTrackBlob, getTrackKeyRenderSequence, getTrackName, getTrackRenderSequence, setCutPoint, setKeyOffset, setPackLayerKeyIndicator, setSegmentBlob, setTrackBlob, setTrackKeyRenderSequence, setTrackName, setTrackRenderSequence`

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

      `appendComponentAttribute, appendComponentAttribute, appendComponentKLVData, appendComponentUserComment, appendComponentUserComment, clearComponentAttributes, clearComponentKLVData, clearComponentUserComments, countComponentAttributes, countComponentKLVData, countComponentUserComments, getComment, getComponentAttributes, getComponentDataDefinition, getComponentKLVData, getComponentLength, getComponentUserComments, getEditName, getJupiterClipOffset, getJupiterID, getLengthPresent, initializeComponentDataDefinition, prependComponentAttribute, prependComponentKLVData, prependComponentUserComment, removeComponentAttribute, removeComponentKLVData, removeComponentUserComment, setComponentDataDefinition, setComponentLength, setComponentLengthFromStream, setEditName, setJupiterClipOffset, setJupiterID, setLengthPresent`

    - ### 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.Segment

      `generateSequence`

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

      `appendComponentAttribute, appendComponentAttribute, appendComponentKLVData, appendComponentUserComment, appendComponentUserComment, clearComponentAttributes, clearComponentKLVData, clearComponentUserComments, countComponentAttributes, countComponentKLVData, countComponentUserComments, getComponentAttributes, getComponentDataDefinition, getComponentKLVData, getComponentLength, getComponentUserComments, getLengthPresent, removeComponentAttribute, removeComponentKLVData, removeComponentUserComment, setComponentDataDefinition, setComponentLength, setLengthPresent`

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

    - #### PulldownImpl

          public PulldownImpl()

    - #### PulldownImpl

          public PulldownImpl(DataDefinition dataDefinition,
                              Segment inputSegment,
                              PulldownKindType pulldownKind,
                              PulldownDirectionType pulldownDirection,
                              @PhaseFrameType
                              int phaseFrame)
                       throws NullPointerException

      Creates and initializes a new pulldown object, which converts between film frame rates and videotape frame rates

      Parameters:
        `dataDefinition` - Kind of data represented by this new component.
        `inputSegment` - A segment that is either a `source clip` or `timecode segment`. The length of input segment object is in the edit units determined by the pulldown kind and pulldown direction.
        `pulldownKind` - Specifies whether the new pulldown object is converting from nominally 30 Hz or 25 Hz videoframe rate and whether frames are dropped or the video is played at another speed.
        `pulldownDirection` - Specifies whether the pulldown object is converting from tape to film speed or from film to tape speed.
        `phaseFrame` - The phase within the repeating pulldown pattern of the first frame after the pulldown conversion. A value of `0` specifies that the pulldown object starts at the beginning of the pulldown pattern.
      Throws:
        `NullPointerException` - One or more of the arguments is `null` and all arguments are required.

  - ### Method Detail

    - #### getInputSegment

          @MediaProperty(uuid1=100729092,
                         uuid2=519,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,2},
                         definedName="InputSegment",
                         typeName="SegmentStrongReference",
                         optional=false,
                         uniqueIdentifier=false,
                         pid=3329,
                         symbol="InputSegment")
          public Segment getInputSegment()

      Description copied from interface: `Pulldown`

      Returns the input segment of this pulldown, which is either a source clip or timecode. The length of the source clip or timecode is in the edit units determined by the properties pulldown kind and pulldown direction.

      Specified by:
        `getInputSegment` in interface `Pulldown`
      Returns:
        Input segment of this pulldown.
      See Also:
        `TypeDefinitions.SegmentStrongReference`

    - #### setInputSegment

          @MediaPropertySetter(value="InputSegment")
          public void setInputSegment(Segment inputSegment)
                                                                          throws NullPointerException,
                                                                                 IllegalArgumentException

      Description copied from interface: `Pulldown`

      Sets the input segment for this pulldown, which is either a source clip or timecode.

      The length of the source clip or timecode is in the edit units determined by the properties pulldown kind and pulldown direction.
      Specified by:
        `setInputSegment` in interface `Pulldown`
      Parameters:
        `inputSegment` - Input segment for the pulldown.
      Throws:
        `NullPointerException` - The given input segment is `null`.
        `IllegalArgumentException` - The given input segment must be either a source clip or a timecode.

    - #### getPhaseFrame

          @MediaProperty(uuid1=88084481,
                         uuid2=768,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,2},
                         definedName="PhaseFrame",
                         typeName="PhaseFrameType",
                         optional=false,
                         uniqueIdentifier=false,
                         pid=3332,
                         symbol="PhaseFrame")
          public int getPhaseFrame()

      Description copied from interface: `Pulldown`

      Returns the phase frame property of this pulldown, which specifies the phase within the repeating pulldown pattern of the first frame after the pulldown conversion. A value of zero specifies that the pulldown object starts at the beginning of the pattern.

      Specified by:
        `getPhaseFrame` in interface `Pulldown`
      Returns:
        Phase frame property of this pulldown.

    - #### initializeInputSegment

          public static final Segment initializeInputSegment()

    - #### setPhaseFrame

          @MediaPropertySetter(value="PhaseFrame")
          public void setPhaseFrame(int phaseFrame)

      Description copied from interface: `Pulldown`

      Sets the phase frame property of the pulldown, which specifies the phase within the repeating pulldown pattern of the first frame after the pulldown conversion. A value of zero specifies that the pulldown object starts at the beginning of the pattern.

      Specified by:
        `setPhaseFrame` in interface `Pulldown`
      Parameters:
        `phaseFrame` - Phase frame property for this pulldown.

    - #### initializePhaseFrame

          public static final int initializePhaseFrame()

    - #### getPulldownDirection

          @MediaProperty(uuid1=88084481,
                         uuid2=256,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,2},
                         definedName="PulldownDirection",
                         typeName="PulldownDirectionType",
                         optional=false,
                         uniqueIdentifier=false,
                         pid=3331,
                         symbol="PulldownDirection")
          public PulldownDirectionType getPulldownDirection()

      Description copied from interface: `Pulldown`

      Returns the pulldown direction of this pulldown, which specifies whether the pulldown is converting from tape to film speed or from film to tape speed.

      Specified by:
        `getPulldownDirection` in interface `Pulldown`
      Returns:
        Pulldown direction field of the pulldown.
      See Also:
        `PulldownDirectionType`, `TapeDescriptor`, `FilmDescriptor`

    - #### setPulldownDirection

          @MediaPropertySetter(value="PulldownDirection")
          public void setPulldownDirection(PulldownDirectionType pulldownDirection)
                                                                                    throws NullPointerException

      Description copied from interface: `Pulldown`

      Sets the pulldown direction of the pulldown, which specifies whether the pulldown is converting from tape to film speed or from film to tape speed.

      Specified by:
        `setPulldownDirection` in interface `Pulldown`
      Parameters:
        `pulldownDirection` - Pulldown direction of this pulldown.
      Throws:
        `NullPointerException` - The given pulldown direction is `null`.
      See Also:
        `PulldownDirectionType`, `TapeDescriptor`, `FilmDescriptor`

    - #### initializePulldownDirection

          public static final PulldownDirectionType initializePulldownDirection()

    - #### getPulldownKind

          @MediaProperty(uuid1=88084481,
                         uuid2=512,
                         uuid3=0,
                         uuid4={6,14,43,52,1,1,1,2},
                         definedName="PulldownKind",
                         typeName="PulldownKindType",
                         optional=false,
                         uniqueIdentifier=false,
                         pid=3330,
                         symbol="PulldownKind")
          public PulldownKindType getPulldownKind()

      Description copied from interface: `Pulldown`

      Returns the pulldown kind of this pulldown, which specifies whether the pulldown is converting from nominally 30 Hz or 25 Hz video frame rate and whether frames are dropped or the video is played at another speed.

      Specified by:
        `getPulldownKind` in interface `Pulldown`
      Returns:
        Pulldown kind of this pulldown.
      See Also:
        `PulldownKindType`

    - #### setPulldownKind

          @MediaPropertySetter(value="PulldownKind")
          public void setPulldownKind(PulldownKindType pulldownKind)
                                                                          throws NullPointerException

      Description copied from interface: `Pulldown`

      Sets the pulldown kind of this pulldown, which specifies whether the pulldown is converting from nominally 30 Hz or 25 Hz video frame rate and whether frames are dropped or the video is played at another speed.

      Specified by:
        `setPulldownKind` in interface `Pulldown`
      Parameters:
        `pulldownKind` - Pulldown kind of this pulldown.
      Throws:
        `NullPointerException` - The given pulldown kind is `null`.
      See Also:
        `PulldownKindType`

    - #### initializePulldownKind

          public static final PulldownKindType initializePulldownKind()

    - #### clone

          public Pulldown 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 `Component`
      Specified by:
        `clone` in interface `InterchangeObject`
      Specified by:
        `clone` in interface `Pulldown`
      Specified by:
        `clone` in interface `Segment`
      Overrides:
        `clone` in class `SegmentImpl`
      Returns:
        Cloned copy of this interchange object.

    - #### segmentOffsetToTC

          public TimecodeValue segmentOffsetToTC(long offset)
                                          throws TimecodeNotFoundException

      Description copied from interface: `Segment`

      Converts the given segment offset to a timecode value.

      Specified by:
        `segmentOffsetToTC` in interface `Segment`
      Overrides:
        `segmentOffsetToTC` in class `SegmentImpl`
      Parameters:
        `offset` - Segment offset to be converted to a timecode.
      Returns:
        Converted timecode value.
      Throws:
        `TimecodeNotFoundException` - The given offset is not available as a timecode value in this segment.
      See Also:
        `Segment.segmentTCToOffset(TimecodeValue, Rational)`

    - #### segmentTCToOffset

          public long segmentTCToOffset(TimecodeValue timecode,
                                        Rational editrate)
                                 throws NullPointerException,
                                        TimecodeNotFoundException

      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 `SegmentImpl`
      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.
      See Also:
        `Segment.segmentOffsetToTC(long)`

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