GESTransition: Make it a base class and add GESTimelineStandardTransition

This is to ensure people can create their own Layer Transition subclass.

API : GESTimelineTransition is now GESTimelineStandardTransition
This commit is contained in:
Edward Hervey 2010-12-09 17:09:11 +01:00
parent 36e165e190
commit ef7eb9efdd
26 changed files with 580 additions and 413 deletions

View file

@ -44,6 +44,7 @@ platform as well as Windows. It is released under the GNU Library General Public
<xi:include href="xml/ges-track-object.xml"/>
<xi:include href="xml/ges-track-source.xml"/>
<xi:include href="xml/ges-track-operation.xml"/>
<xi:include href="xml/ges-timeline-transition.xml"/>
</chapter>
<chapter>
@ -52,7 +53,7 @@ platform as well as Windows. It is released under the GNU Library General Public
<xi:include href="xml/ges-timeline-title-source.xml"/>
<xi:include href="xml/ges-timeline-test-source.xml"/>
<xi:include href="xml/ges-timeline-text-overlay.xml"/>
<xi:include href="xml/ges-timeline-transition.xml"/>
<xi:include href="xml/ges-timeline-standard-transition.xml"/>
</chapter>
<chapter>

View file

@ -17,7 +17,7 @@ GES_PADDING
<SECTION>
<FILE>ges-enums</FILE>
<TITLE>GES Enums</TITLE>
GESVideoTransitionType
GESVideoStandardTransitionType
GESTrackType
GESTextHAlign
DEFAULT_HALIGNMENT
@ -33,8 +33,8 @@ GES_TEXT_VALIGN_TYPE
ges_text_valign_get_type
GES_VIDEO_TEST_PATTERN_TYPE
ges_video_test_pattern_get_type
GES_VIDEO_TRANSITION_TYPE_TYPE
ges_video_transition_type_get_type
GES_VIDEO_STANDARD_TRANSITION_TYPE_TYPE
ges_video_standard_transition_type_get_type
</SECTION>
<SECTION>
@ -265,11 +265,6 @@ GESTimelineObjectClass
CreateTrackObjectFunc
CreateTrackObjectsFunc
FillTrackObjectFunc
GES_TIMELINE_OBJECT_DURATION
GES_TIMELINE_OBJECT_INPOINT
GES_TIMELINE_OBJECT_PRIORITY
GES_TIMELINE_OBJECT_START
GES_TIMELINE_OBJECT_HEIGHT
ges_timeline_object_set_inpoint
ges_timeline_object_set_start
ges_timeline_object_set_duration
@ -277,6 +272,11 @@ ges_timeline_object_get_layer
ges_timeline_object_find_track_object
ges_timeline_object_add_track_object
<SUBSECTION Standard>
GES_TIMELINE_OBJECT_DURATION
GES_TIMELINE_OBJECT_INPOINT
GES_TIMELINE_OBJECT_PRIORITY
GES_TIMELINE_OBJECT_START
GES_TIMELINE_OBJECT_HEIGHT
ges_timeline_object_create_track_objects
ges_timeline_object_create_track_object
ges_timeline_object_fill_track_object
@ -389,18 +389,34 @@ GES_TYPE_TIMELINE_OVERLAY
<FILE>ges-timeline-transition</FILE>
<TITLE>GESTimelineTransition</TITLE>
GESTimelineTransition
GESTimelineTransitionClass
ges_timeline_transition_new
ges_timeline_transition_new_for_nick
<SUBSECTION Standard>
GESTimelineTransitionClass
GESTimelineTransitionPrivate
GES_IS_TIMELINE_TRANSITION
GES_IS_TIMELINE_TRANSITION_CLASS
GES_TIMELINE_TRANSITION
GES_TIMELINE_TRANSITION_CLASS
GES_TIMELINE_TRANSITION_GET_CLASS
GES_IS_TIMELINE_TRANSITION
GES_TYPE_TIMELINE_TRANSITION
ges_timeline_transition_get_type
GES_TIMELINE_TRANSITION_CLASS
GES_IS_TIMELINE_TRANSITION_CLASS
GES_TIMELINE_TRANSITION_GET_CLASS
</SECTION>
<SECTION>
<FILE>ges-timeline-standard-transition</FILE>
<TITLE>GESTimelineStandardTransition</TITLE>
GESTimelineStandardTransition
ges_timeline_standard_transition_new
ges_timeline_standard_transition_new_for_nick
<SUBSECTION Standard>
GESTimelineStandardTransitionClass
GESTimelineStandardTransitionPrivate
GES_IS_TIMELINE_STANDARD_TRANSITION
GES_IS_TIMELINE_STANDARD_TRANSITION_CLASS
GES_TIMELINE_STANDARD_TRANSITION
GES_TIMELINE_STANDARD_TRANSITION_CLASS
GES_TIMELINE_STANDARD_TRANSITION_GET_CLASS
GES_TYPE_TIMELINE_STANDARD_TRANSITION
ges_timeline_standard_transition_get_type
</SECTION>

View file

@ -16,6 +16,7 @@ ges_timeline_pipeline_get_type
ges_timeline_source_get_type
ges_timeline_test_source_get_type
ges_timeline_transition_get_type
ges_timeline_standard_transition_get_type
ges_tl_filesource_get_type
ges_tl_text_overlay_get_type
ges_tl_title_src_get_type
@ -34,4 +35,4 @@ ges_track_type_get_type
ges_track_video_test_source_get_type
ges_track_video_transition_get_type
ges_video_test_pattern_get_type
ges_video_transition_type_get_type
ges_video_standard_transition_type_get_type

View file

@ -21,6 +21,7 @@ libges_@GST_MAJORMINOR@_la_SOURCES = \
ges-timeline-file-source.c \
ges-timeline-operation.c \
ges-timeline-transition.c \
ges-timeline-standard-transition.c \
ges-timeline-test-source.c \
ges-timeline-title-source.c \
ges-timeline-overlay.c \
@ -60,6 +61,7 @@ libges_@GST_MAJORMINOR@include_HEADERS = \
ges-timeline-file-source.h \
ges-timeline-operation.h \
ges-timeline-transition.h \
ges-timeline-standard-transition.h \
ges-timeline-test-source.h \
ges-timeline-title-source.h \
ges-timeline-overlay.h \

View file

@ -403,7 +403,7 @@ static GEnumValue transition_types[] = {
"windshield-h"}
,
{
GES_VIDEO_TRANSITION_TYPE_CROSSFADE,
GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE,
"Crossfade between two clips",
"crossfade"}
,
@ -411,7 +411,7 @@ static GEnumValue transition_types[] = {
};
GType
ges_video_transition_type_get_type (void)
ges_video_standard_transition_type_get_type (void)
{
static GType the_type = 0;
static gsize once = 0;

View file

@ -53,161 +53,161 @@ typedef enum {
} GESTrackType;
/**
* GESVideoTransitionType:
* @GES_VIDEO_TRANSITION_TYPE_NONE: Transition type has not been set,
* @GES_VIDEO_TRANSITION_TYPE_BAR_WIPE_LR: A bar moves from left to right,
* @GES_VIDEO_TRANSITION_TYPE_BAR_WIPE_TB: A bar moves from top to bottom,
* @GES_VIDEO_TRANSITION_TYPE_BOX_WIPE_TL: A box expands from the upper-left corner to the lower-right corner,
* @GES_VIDEO_TRANSITION_TYPE_BOX_WIPE_TR: A box expands from the upper-right corner to the lower-left corner,
* @GES_VIDEO_TRANSITION_TYPE_BOX_WIPE_BR: A box expands from the lower-right corner to the upper-left corner,
* @GES_VIDEO_TRANSITION_TYPE_BOX_WIPE_BL: A box expands from the lower-left corner to the upper-right corner,
* @GES_VIDEO_TRANSITION_TYPE_FOUR_BOX_WIPE_CI: A box shape expands from each of the four corners toward the center,
* @GES_VIDEO_TRANSITION_TYPE_FOUR_BOX_WIPE_CO: A box shape expands from the center of each quadrant toward the corners of each quadrant,
* @GES_VIDEO_TRANSITION_TYPE_BARNDOOR_V: A central, vertical line splits and expands toward the left and right edges,
* @GES_VIDEO_TRANSITION_TYPE_BARNDOOR_H: A central, horizontal line splits and expands toward the top and bottom edges,
* @GES_VIDEO_TRANSITION_TYPE_BOX_WIPE_TC: A box expands from the top edge's midpoint to the bottom corners,
* @GES_VIDEO_TRANSITION_TYPE_BOX_WIPE_RC: A box expands from the right edge's midpoint to the left corners,
* @GES_VIDEO_TRANSITION_TYPE_BOX_WIPE_BC: A box expands from the bottom edge's midpoint to the top corners,
* @GES_VIDEO_TRANSITION_TYPE_BOX_WIPE_LC: A box expands from the left edge's midpoint to the right corners,
* @GES_VIDEO_TRANSITION_TYPE_DIAGONAL_TL: A diagonal line moves from the upper-left corner to the lower-right corner,
* @GES_VIDEO_TRANSITION_TYPE_DIAGONAL_TR: A diagonal line moves from the upper right corner to the lower-left corner,
* @GES_VIDEO_TRANSITION_TYPE_BOWTIE_V: Two wedge shapes slide in from the top and bottom edges toward the center,
* @GES_VIDEO_TRANSITION_TYPE_BOWTIE_H: Two wedge shapes slide in from the left and right edges toward the center,
* @GES_VIDEO_TRANSITION_TYPE_BARNDOOR_DBL: A diagonal line from the lower-left to upper-right corners splits and expands toward the opposite corners,
* @GES_VIDEO_TRANSITION_TYPE_BARNDOOR_DTL: A diagonal line from upper-left to lower-right corners splits and expands toward the opposite corners,
* @GES_VIDEO_TRANSITION_TYPE_MISC_DIAGONAL_DBD: Four wedge shapes split from the center and retract toward the four edges,
* @GES_VIDEO_TRANSITION_TYPE_MISC_DIAGONAL_DD: A diamond connecting the four edge midpoints simultaneously contracts toward the center and expands toward the edges,
* @GES_VIDEO_TRANSITION_TYPE_VEE_D: A wedge shape moves from top to bottom,
* @GES_VIDEO_TRANSITION_TYPE_VEE_L: A wedge shape moves from right to left,
* @GES_VIDEO_TRANSITION_TYPE_VEE_U: A wedge shape moves from bottom to top,
* @GES_VIDEO_TRANSITION_TYPE_VEE_R: A wedge shape moves from left to right,
* @GES_VIDEO_TRANSITION_TYPE_BARNVEE_D: A 'V' shape extending from the bottom edge's midpoint to the opposite corners contracts toward the center and expands toward the edges,
* @GES_VIDEO_TRANSITION_TYPE_BARNVEE_L: A 'V' shape extending from the left edge's midpoint to the opposite corners contracts toward the center and expands toward the edges,
* @GES_VIDEO_TRANSITION_TYPE_BARNVEE_U: A 'V' shape extending from the top edge's midpoint to the opposite corners contracts toward the center and expands toward the edges,
* @GES_VIDEO_TRANSITION_TYPE_BARNVEE_R: A 'V' shape extending from the right edge's midpoint to the opposite corners contracts toward the center and expands toward the edges,
* @GES_VIDEO_TRANSITION_TYPE_IRIS_RECT: A rectangle expands from the center.,
* @GES_VIDEO_TRANSITION_TYPE_CLOCK_CW12: A radial hand sweeps clockwise from the twelve o'clock position,
* @GES_VIDEO_TRANSITION_TYPE_CLOCK_CW3: A radial hand sweeps clockwise from the three o'clock position,
* @GES_VIDEO_TRANSITION_TYPE_CLOCK_CW6: A radial hand sweeps clockwise from the six o'clock position,
* @GES_VIDEO_TRANSITION_TYPE_CLOCK_CW9: A radial hand sweeps clockwise from the nine o'clock position,
* @GES_VIDEO_TRANSITION_TYPE_PINWHEEL_TBV: Two radial hands sweep clockwise from the twelve and six o'clock positions,
* @GES_VIDEO_TRANSITION_TYPE_PINWHEEL_TBH: Two radial hands sweep clockwise from the nine and three o'clock positions,
* @GES_VIDEO_TRANSITION_TYPE_PINWHEEL_FB: Four radial hands sweep clockwise,
* @GES_VIDEO_TRANSITION_TYPE_FAN_CT: A fan unfolds from the top edge, the fan axis at the center,
* @GES_VIDEO_TRANSITION_TYPE_FAN_CR: A fan unfolds from the right edge, the fan axis at the center,
* @GES_VIDEO_TRANSITION_TYPE_DOUBLEFAN_FOV: Two fans, their axes at the center, unfold from the top and bottom,
* @GES_VIDEO_TRANSITION_TYPE_DOUBLEFAN_FOH: Two fans, their axes at the center, unfold from the left and right,
* @GES_VIDEO_TRANSITION_TYPE_SINGLESWEEP_CWT: A radial hand sweeps clockwise from the top edge's midpoint,
* @GES_VIDEO_TRANSITION_TYPE_SINGLESWEEP_CWR: A radial hand sweeps clockwise from the right edge's midpoint,
* @GES_VIDEO_TRANSITION_TYPE_SINGLESWEEP_CWB: A radial hand sweeps clockwise from the bottom edge's midpoint,
* @GES_VIDEO_TRANSITION_TYPE_SINGLESWEEP_CWL: A radial hand sweeps clockwise from the left edge's midpoint,
* @GES_VIDEO_TRANSITION_TYPE_DOUBLESWEEP_PV: Two radial hands sweep clockwise and counter-clockwise from the top and bottom edges' midpoints,
* @GES_VIDEO_TRANSITION_TYPE_DOUBLESWEEP_PD: Two radial hands sweep clockwise and counter-clockwise from the left and right edges' midpoints,
* @GES_VIDEO_TRANSITION_TYPE_DOUBLESWEEP_OV: Two radial hands attached at the top and bottom edges' midpoints sweep from right to left,
* @GES_VIDEO_TRANSITION_TYPE_DOUBLESWEEP_OH: Two radial hands attached at the left and right edges' midpoints sweep from top to bottom,
* @GES_VIDEO_TRANSITION_TYPE_FAN_T: A fan unfolds from the bottom, the fan axis at the top edge's midpoint,
* @GES_VIDEO_TRANSITION_TYPE_FAN_R: A fan unfolds from the left, the fan axis at the right edge's midpoint,
* @GES_VIDEO_TRANSITION_TYPE_FAN_B: A fan unfolds from the top, the fan axis at the bottom edge's midpoint,
* @GES_VIDEO_TRANSITION_TYPE_FAN_L: A fan unfolds from the right, the fan axis at the left edge's midpoint,
* @GES_VIDEO_TRANSITION_TYPE_DOUBLEFAN_FIV: Two fans, their axes at the top and bottom, unfold from the center,
* @GES_VIDEO_TRANSITION_TYPE_DOUBLEFAN_FIH: Two fans, their axes at the left and right, unfold from the center,
* @GES_VIDEO_TRANSITION_TYPE_SINGLESWEEP_CWTL: A radial hand sweeps clockwise from the upper-left corner,
* @GES_VIDEO_TRANSITION_TYPE_SINGLESWEEP_CWBL: A radial hand sweeps counter-clockwise from the lower-left corner.,
* @GES_VIDEO_TRANSITION_TYPE_SINGLESWEEP_CWBR: A radial hand sweeps clockwise from the lower-right corner,
* @GES_VIDEO_TRANSITION_TYPE_SINGLESWEEP_CWTR: A radial hand sweeps counter-clockwise from the upper-right corner,
* @GES_VIDEO_TRANSITION_TYPE_DOUBLESWEEP_PDTL: Two radial hands attached at the upper-left and lower-right corners sweep down and up,
* @GES_VIDEO_TRANSITION_TYPE_DOUBLESWEEP_PDBL: Two radial hands attached at the lower-left and upper-right corners sweep down and up,
* @GES_VIDEO_TRANSITION_TYPE_SALOONDOOR_T: Two radial hands attached at the upper-left and upper-right corners sweep down,
* @GES_VIDEO_TRANSITION_TYPE_SALOONDOOR_L: Two radial hands attached at the upper-left and lower-left corners sweep to the right,
* @GES_VIDEO_TRANSITION_TYPE_SALOONDOOR_B: Two radial hands attached at the lower-left and lower-right corners sweep up,
* @GES_VIDEO_TRANSITION_TYPE_SALOONDOOR_R: Two radial hands attached at the upper-right and lower-right corners sweep to the left,
* @GES_VIDEO_TRANSITION_TYPE_WINDSHIELD_R: Two radial hands attached at the midpoints of the top and bottom halves sweep from right to left,
* @GES_VIDEO_TRANSITION_TYPE_WINDSHIELD_U: Two radial hands attached at the midpoints of the left and right halves sweep from top to bottom,
* @GES_VIDEO_TRANSITION_TYPE_WINDSHIELD_V: Two sets of radial hands attached at the midpoints of the top and bottom halves sweep from top to bottom and bottom to top,
* @GES_VIDEO_TRANSITION_TYPE_WINDSHIELD_H: Two sets of radial hands attached at the midpoints of the left and right halves sweep from left to right and right to left,
* @GES_VIDEO_TRANSITION_TYPE_CROSSFADE: Crossfade
* GESVideoStandardTransitionType:
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_NONE: Transition type has not been set,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BAR_WIPE_LR: A bar moves from left to right,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BAR_WIPE_TB: A bar moves from top to bottom,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_TL: A box expands from the upper-left corner to the lower-right corner,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_TR: A box expands from the upper-right corner to the lower-left corner,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_BR: A box expands from the lower-right corner to the upper-left corner,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_BL: A box expands from the lower-left corner to the upper-right corner,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_FOUR_BOX_WIPE_CI: A box shape expands from each of the four corners toward the center,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_FOUR_BOX_WIPE_CO: A box shape expands from the center of each quadrant toward the corners of each quadrant,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNDOOR_V: A central, vertical line splits and expands toward the left and right edges,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNDOOR_H: A central, horizontal line splits and expands toward the top and bottom edges,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_TC: A box expands from the top edge's midpoint to the bottom corners,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_RC: A box expands from the right edge's midpoint to the left corners,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_BC: A box expands from the bottom edge's midpoint to the top corners,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_LC: A box expands from the left edge's midpoint to the right corners,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_DIAGONAL_TL: A diagonal line moves from the upper-left corner to the lower-right corner,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_DIAGONAL_TR: A diagonal line moves from the upper right corner to the lower-left corner,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BOWTIE_V: Two wedge shapes slide in from the top and bottom edges toward the center,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BOWTIE_H: Two wedge shapes slide in from the left and right edges toward the center,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNDOOR_DBL: A diagonal line from the lower-left to upper-right corners splits and expands toward the opposite corners,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNDOOR_DTL: A diagonal line from upper-left to lower-right corners splits and expands toward the opposite corners,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_MISC_DIAGONAL_DBD: Four wedge shapes split from the center and retract toward the four edges,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_MISC_DIAGONAL_DD: A diamond connecting the four edge midpoints simultaneously contracts toward the center and expands toward the edges,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_VEE_D: A wedge shape moves from top to bottom,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_VEE_L: A wedge shape moves from right to left,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_VEE_U: A wedge shape moves from bottom to top,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_VEE_R: A wedge shape moves from left to right,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNVEE_D: A 'V' shape extending from the bottom edge's midpoint to the opposite corners contracts toward the center and expands toward the edges,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNVEE_L: A 'V' shape extending from the left edge's midpoint to the opposite corners contracts toward the center and expands toward the edges,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNVEE_U: A 'V' shape extending from the top edge's midpoint to the opposite corners contracts toward the center and expands toward the edges,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNVEE_R: A 'V' shape extending from the right edge's midpoint to the opposite corners contracts toward the center and expands toward the edges,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_IRIS_RECT: A rectangle expands from the center.,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_CLOCK_CW12: A radial hand sweeps clockwise from the twelve o'clock position,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_CLOCK_CW3: A radial hand sweeps clockwise from the three o'clock position,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_CLOCK_CW6: A radial hand sweeps clockwise from the six o'clock position,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_CLOCK_CW9: A radial hand sweeps clockwise from the nine o'clock position,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_PINWHEEL_TBV: Two radial hands sweep clockwise from the twelve and six o'clock positions,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_PINWHEEL_TBH: Two radial hands sweep clockwise from the nine and three o'clock positions,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_PINWHEEL_FB: Four radial hands sweep clockwise,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_CT: A fan unfolds from the top edge, the fan axis at the center,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_CR: A fan unfolds from the right edge, the fan axis at the center,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLEFAN_FOV: Two fans, their axes at the center, unfold from the top and bottom,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLEFAN_FOH: Two fans, their axes at the center, unfold from the left and right,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWT: A radial hand sweeps clockwise from the top edge's midpoint,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWR: A radial hand sweeps clockwise from the right edge's midpoint,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWB: A radial hand sweeps clockwise from the bottom edge's midpoint,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWL: A radial hand sweeps clockwise from the left edge's midpoint,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PV: Two radial hands sweep clockwise and counter-clockwise from the top and bottom edges' midpoints,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PD: Two radial hands sweep clockwise and counter-clockwise from the left and right edges' midpoints,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_OV: Two radial hands attached at the top and bottom edges' midpoints sweep from right to left,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_OH: Two radial hands attached at the left and right edges' midpoints sweep from top to bottom,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_T: A fan unfolds from the bottom, the fan axis at the top edge's midpoint,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_R: A fan unfolds from the left, the fan axis at the right edge's midpoint,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_B: A fan unfolds from the top, the fan axis at the bottom edge's midpoint,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_L: A fan unfolds from the right, the fan axis at the left edge's midpoint,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLEFAN_FIV: Two fans, their axes at the top and bottom, unfold from the center,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLEFAN_FIH: Two fans, their axes at the left and right, unfold from the center,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWTL: A radial hand sweeps clockwise from the upper-left corner,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWBL: A radial hand sweeps counter-clockwise from the lower-left corner.,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWBR: A radial hand sweeps clockwise from the lower-right corner,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWTR: A radial hand sweeps counter-clockwise from the upper-right corner,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PDTL: Two radial hands attached at the upper-left and lower-right corners sweep down and up,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PDBL: Two radial hands attached at the lower-left and upper-right corners sweep down and up,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_SALOONDOOR_T: Two radial hands attached at the upper-left and upper-right corners sweep down,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_SALOONDOOR_L: Two radial hands attached at the upper-left and lower-left corners sweep to the right,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_SALOONDOOR_B: Two radial hands attached at the lower-left and lower-right corners sweep up,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_SALOONDOOR_R: Two radial hands attached at the upper-right and lower-right corners sweep to the left,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_WINDSHIELD_R: Two radial hands attached at the midpoints of the top and bottom halves sweep from right to left,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_WINDSHIELD_U: Two radial hands attached at the midpoints of the left and right halves sweep from top to bottom,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_WINDSHIELD_V: Two sets of radial hands attached at the midpoints of the top and bottom halves sweep from top to bottom and bottom to top,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_WINDSHIELD_H: Two sets of radial hands attached at the midpoints of the left and right halves sweep from left to right and right to left,
* @GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE: Crossfade
*
*/
typedef enum {
GES_VIDEO_TRANSITION_TYPE_NONE = 0,
GES_VIDEO_TRANSITION_TYPE_BAR_WIPE_LR = 1,
GES_VIDEO_TRANSITION_TYPE_BAR_WIPE_TB = 2,
GES_VIDEO_TRANSITION_TYPE_BOX_WIPE_TL = 3,
GES_VIDEO_TRANSITION_TYPE_BOX_WIPE_TR = 4,
GES_VIDEO_TRANSITION_TYPE_BOX_WIPE_BR = 5,
GES_VIDEO_TRANSITION_TYPE_BOX_WIPE_BL = 6,
GES_VIDEO_TRANSITION_TYPE_FOUR_BOX_WIPE_CI = 7,
GES_VIDEO_TRANSITION_TYPE_FOUR_BOX_WIPE_CO = 8,
GES_VIDEO_TRANSITION_TYPE_BARNDOOR_V = 21,
GES_VIDEO_TRANSITION_TYPE_BARNDOOR_H = 22,
GES_VIDEO_TRANSITION_TYPE_BOX_WIPE_TC = 23,
GES_VIDEO_TRANSITION_TYPE_BOX_WIPE_RC = 24,
GES_VIDEO_TRANSITION_TYPE_BOX_WIPE_BC = 25,
GES_VIDEO_TRANSITION_TYPE_BOX_WIPE_LC = 26,
GES_VIDEO_TRANSITION_TYPE_DIAGONAL_TL = 41,
GES_VIDEO_TRANSITION_TYPE_DIAGONAL_TR = 42,
GES_VIDEO_TRANSITION_TYPE_BOWTIE_V = 43,
GES_VIDEO_TRANSITION_TYPE_BOWTIE_H = 44,
GES_VIDEO_TRANSITION_TYPE_BARNDOOR_DBL = 45,
GES_VIDEO_TRANSITION_TYPE_BARNDOOR_DTL = 46,
GES_VIDEO_TRANSITION_TYPE_MISC_DIAGONAL_DBD = 47,
GES_VIDEO_TRANSITION_TYPE_MISC_DIAGONAL_DD = 48,
GES_VIDEO_TRANSITION_TYPE_VEE_D = 61,
GES_VIDEO_TRANSITION_TYPE_VEE_L = 62,
GES_VIDEO_TRANSITION_TYPE_VEE_U = 63,
GES_VIDEO_TRANSITION_TYPE_VEE_R = 64,
GES_VIDEO_TRANSITION_TYPE_BARNVEE_D = 65,
GES_VIDEO_TRANSITION_TYPE_BARNVEE_L = 66,
GES_VIDEO_TRANSITION_TYPE_BARNVEE_U = 67,
GES_VIDEO_TRANSITION_TYPE_BARNVEE_R = 68,
GES_VIDEO_TRANSITION_TYPE_IRIS_RECT = 101,
GES_VIDEO_TRANSITION_TYPE_CLOCK_CW12 = 201,
GES_VIDEO_TRANSITION_TYPE_CLOCK_CW3 = 202,
GES_VIDEO_TRANSITION_TYPE_CLOCK_CW6 = 203,
GES_VIDEO_TRANSITION_TYPE_CLOCK_CW9 = 204,
GES_VIDEO_TRANSITION_TYPE_PINWHEEL_TBV = 205,
GES_VIDEO_TRANSITION_TYPE_PINWHEEL_TBH = 206,
GES_VIDEO_TRANSITION_TYPE_PINWHEEL_FB = 207,
GES_VIDEO_TRANSITION_TYPE_FAN_CT = 211,
GES_VIDEO_TRANSITION_TYPE_FAN_CR = 212,
GES_VIDEO_TRANSITION_TYPE_DOUBLEFAN_FOV = 213,
GES_VIDEO_TRANSITION_TYPE_DOUBLEFAN_FOH = 214,
GES_VIDEO_TRANSITION_TYPE_SINGLESWEEP_CWT = 221,
GES_VIDEO_TRANSITION_TYPE_SINGLESWEEP_CWR = 222,
GES_VIDEO_TRANSITION_TYPE_SINGLESWEEP_CWB = 223,
GES_VIDEO_TRANSITION_TYPE_SINGLESWEEP_CWL = 224,
GES_VIDEO_TRANSITION_TYPE_DOUBLESWEEP_PV = 225,
GES_VIDEO_TRANSITION_TYPE_DOUBLESWEEP_PD = 226,
GES_VIDEO_TRANSITION_TYPE_DOUBLESWEEP_OV = 227,
GES_VIDEO_TRANSITION_TYPE_DOUBLESWEEP_OH = 228,
GES_VIDEO_TRANSITION_TYPE_FAN_T = 231,
GES_VIDEO_TRANSITION_TYPE_FAN_R = 232,
GES_VIDEO_TRANSITION_TYPE_FAN_B = 233,
GES_VIDEO_TRANSITION_TYPE_FAN_L = 234,
GES_VIDEO_TRANSITION_TYPE_DOUBLEFAN_FIV = 235,
GES_VIDEO_TRANSITION_TYPE_DOUBLEFAN_FIH = 236,
GES_VIDEO_TRANSITION_TYPE_SINGLESWEEP_CWTL = 241,
GES_VIDEO_TRANSITION_TYPE_SINGLESWEEP_CWBL = 242,
GES_VIDEO_TRANSITION_TYPE_SINGLESWEEP_CWBR = 243,
GES_VIDEO_TRANSITION_TYPE_SINGLESWEEP_CWTR = 244,
GES_VIDEO_TRANSITION_TYPE_DOUBLESWEEP_PDTL = 245,
GES_VIDEO_TRANSITION_TYPE_DOUBLESWEEP_PDBL = 246,
GES_VIDEO_TRANSITION_TYPE_SALOONDOOR_T = 251,
GES_VIDEO_TRANSITION_TYPE_SALOONDOOR_L = 252,
GES_VIDEO_TRANSITION_TYPE_SALOONDOOR_B = 253,
GES_VIDEO_TRANSITION_TYPE_SALOONDOOR_R = 254,
GES_VIDEO_TRANSITION_TYPE_WINDSHIELD_R = 261,
GES_VIDEO_TRANSITION_TYPE_WINDSHIELD_U = 262,
GES_VIDEO_TRANSITION_TYPE_WINDSHIELD_V = 263,
GES_VIDEO_TRANSITION_TYPE_WINDSHIELD_H = 264,
GES_VIDEO_TRANSITION_TYPE_CROSSFADE = 512
} GESVideoTransitionType;
GES_VIDEO_STANDARD_TRANSITION_TYPE_NONE = 0,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BAR_WIPE_LR = 1,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BAR_WIPE_TB = 2,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_TL = 3,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_TR = 4,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_BR = 5,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_BL = 6,
GES_VIDEO_STANDARD_TRANSITION_TYPE_FOUR_BOX_WIPE_CI = 7,
GES_VIDEO_STANDARD_TRANSITION_TYPE_FOUR_BOX_WIPE_CO = 8,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNDOOR_V = 21,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNDOOR_H = 22,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_TC = 23,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_RC = 24,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_BC = 25,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_LC = 26,
GES_VIDEO_STANDARD_TRANSITION_TYPE_DIAGONAL_TL = 41,
GES_VIDEO_STANDARD_TRANSITION_TYPE_DIAGONAL_TR = 42,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BOWTIE_V = 43,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BOWTIE_H = 44,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNDOOR_DBL = 45,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNDOOR_DTL = 46,
GES_VIDEO_STANDARD_TRANSITION_TYPE_MISC_DIAGONAL_DBD = 47,
GES_VIDEO_STANDARD_TRANSITION_TYPE_MISC_DIAGONAL_DD = 48,
GES_VIDEO_STANDARD_TRANSITION_TYPE_VEE_D = 61,
GES_VIDEO_STANDARD_TRANSITION_TYPE_VEE_L = 62,
GES_VIDEO_STANDARD_TRANSITION_TYPE_VEE_U = 63,
GES_VIDEO_STANDARD_TRANSITION_TYPE_VEE_R = 64,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNVEE_D = 65,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNVEE_L = 66,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNVEE_U = 67,
GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNVEE_R = 68,
GES_VIDEO_STANDARD_TRANSITION_TYPE_IRIS_RECT = 101,
GES_VIDEO_STANDARD_TRANSITION_TYPE_CLOCK_CW12 = 201,
GES_VIDEO_STANDARD_TRANSITION_TYPE_CLOCK_CW3 = 202,
GES_VIDEO_STANDARD_TRANSITION_TYPE_CLOCK_CW6 = 203,
GES_VIDEO_STANDARD_TRANSITION_TYPE_CLOCK_CW9 = 204,
GES_VIDEO_STANDARD_TRANSITION_TYPE_PINWHEEL_TBV = 205,
GES_VIDEO_STANDARD_TRANSITION_TYPE_PINWHEEL_TBH = 206,
GES_VIDEO_STANDARD_TRANSITION_TYPE_PINWHEEL_FB = 207,
GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_CT = 211,
GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_CR = 212,
GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLEFAN_FOV = 213,
GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLEFAN_FOH = 214,
GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWT = 221,
GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWR = 222,
GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWB = 223,
GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWL = 224,
GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PV = 225,
GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PD = 226,
GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_OV = 227,
GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_OH = 228,
GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_T = 231,
GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_R = 232,
GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_B = 233,
GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_L = 234,
GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLEFAN_FIV = 235,
GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLEFAN_FIH = 236,
GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWTL = 241,
GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWBL = 242,
GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWBR = 243,
GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWTR = 244,
GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PDTL = 245,
GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PDBL = 246,
GES_VIDEO_STANDARD_TRANSITION_TYPE_SALOONDOOR_T = 251,
GES_VIDEO_STANDARD_TRANSITION_TYPE_SALOONDOOR_L = 252,
GES_VIDEO_STANDARD_TRANSITION_TYPE_SALOONDOOR_B = 253,
GES_VIDEO_STANDARD_TRANSITION_TYPE_SALOONDOOR_R = 254,
GES_VIDEO_STANDARD_TRANSITION_TYPE_WINDSHIELD_R = 261,
GES_VIDEO_STANDARD_TRANSITION_TYPE_WINDSHIELD_U = 262,
GES_VIDEO_STANDARD_TRANSITION_TYPE_WINDSHIELD_V = 263,
GES_VIDEO_STANDARD_TRANSITION_TYPE_WINDSHIELD_H = 264,
GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE = 512
} GESVideoStandardTransitionType;
#define GES_VIDEO_TRANSITION_TYPE_TYPE \
(ges_video_transition_type_get_type())
#define GES_VIDEO_STANDARD_TRANSITION_TYPE_TYPE \
(ges_video_standard_transition_type_get_type())
GType ges_video_transition_type_get_type (void);
GType ges_video_standard_transition_type_get_type (void);
/**
* GESTextVAlign:

View file

@ -33,11 +33,8 @@
* the two adjacent sources.
*/
#include <ges/ges.h>
#include "ges-internal.h"
#include "ges-simple-timeline-layer.h"
#include "ges-timeline-object.h"
#include "ges-timeline-source.h"
#include "ges-timeline-transition.h"
#include "gesmarshal.h"
static void

View file

@ -152,7 +152,7 @@ typedef gboolean (*CreateTrackObjectsFunc) (GESTimelineObject * object,
/**
* GESTimelineObject:
*
* The GESTimelineObject subclass. Subclasses can access these fields.
* The #GESTimelineObject base class.
*/
struct _GESTimelineObject {
/*< private >*/
@ -177,7 +177,7 @@ struct _GESTimelineObject {
/**
* GESTimelineObjectClass:
* @create_track_object: method to create a single #GESTrackObject for a given #GESTrack.
* @create_track_objects: method to crate multiple #GESTrackObjects for a
* @create_track_objects: method to create multiple #GESTrackObjects for a
* #GESTrack.
* @fill_track_object: method to fill an associated #GESTrackObject.
* @need_fill_track: Set to TRUE if @fill_track_object needs to be called.

View file

@ -251,8 +251,8 @@ ges_timeline_pipeline_change_state (GstElement * element,
ret = GST_STATE_CHANGE_FAILURE;
goto done;
}
if (self->
priv->mode & (TIMELINE_MODE_RENDER | TIMELINE_MODE_SMART_RENDER))
if (self->priv->
mode & (TIMELINE_MODE_RENDER | TIMELINE_MODE_SMART_RENDER))
GST_DEBUG ("rendering => Updating pipeline caps");
if (!ges_timeline_pipeline_update_caps (self)) {
GST_ERROR_OBJECT (element, "Error setting the caps for rendering");

View file

@ -0,0 +1,225 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <edward.hervey@collabora.co.uk>
* 2009 Nokia Corporation
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
/**
* SECTION: ges-timeline-standard-transition
* @short_description: Transition from one clip to another in a
* #GESTimelineLayer
*
* Creates an object that mixes together the two underlying objects, A and B.
* The A object is assumed to have a higher prioirity (lower number) than the
* B object. At the transition in point, only A will be visible, and by the
* end only B will be visible.
*
* The shape of the video transition depends on the value of the "vtype"
* property. The default value is "crossfade". For audio, only "crossfade" is
* supported.
*
* #GESSimpleTimelineLayer will automatically manage the priorities of sources
* and transitions. If you use #GESTimelineStandardTransitions in another type of
* #GESTimelineLayer, you will need to manage priorities yourself.
*/
#include <ges/ges.h>
#include "ges-internal.h"
struct _GESTimelineStandardTransitionPrivate
{
/* Dummy variable */
void *nothing;
};
enum
{
PROP_VTYPE = 5,
};
G_DEFINE_TYPE (GESTimelineStandardTransition, ges_timeline_standard_transition,
GES_TYPE_TIMELINE_TRANSITION);
static GESTrackObject *ges_tl_transition_create_track_object (GESTimelineObject
* self, GESTrack * track);
static void
ges_timeline_standard_transition_update_vtype_internal (GESTimelineObject *
self, GESVideoStandardTransitionType value)
{
GList *tmp, *trackobjects;
GESTimelineStandardTransition *trself =
(GESTimelineStandardTransition *) self;
/* FIXME : We need a much less crack way to find the trackobject to change */
trackobjects = ges_timeline_object_get_track_objects (self);
for (tmp = trackobjects; tmp; tmp = tmp->next) {
GESTrackVideoTransition *obj;
if (GES_IS_TRACK_VIDEO_TRANSITION (tmp->data)) {
obj = (GESTrackVideoTransition *) tmp->data;
if (!ges_track_video_transition_set_type (obj, value))
goto beach;
}
}
trself->vtype = value;
beach:
g_list_foreach (trackobjects, (GFunc) g_object_unref, NULL);
g_list_free (trackobjects);
return;
}
static void
ges_timeline_standard_transition_get_property (GObject * object,
guint property_id, GValue * value, GParamSpec * pspec)
{
GESTimelineStandardTransition *self =
GES_TIMELINE_STANDARD_TRANSITION (object);
switch (property_id) {
case PROP_VTYPE:
g_value_set_enum (value, self->vtype);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_timeline_standard_transition_set_property (GObject * object,
guint property_id, const GValue * value, GParamSpec * pspec)
{
GESTimelineObject *self = GES_TIMELINE_OBJECT (object);
switch (property_id) {
case PROP_VTYPE:
ges_timeline_standard_transition_update_vtype_internal (self,
g_value_get_enum (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_timeline_standard_transition_class_init (GESTimelineStandardTransitionClass
* klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GESTimelineObjectClass *timobj_class = GES_TIMELINE_OBJECT_CLASS (klass);
g_type_class_add_private (klass,
sizeof (GESTimelineStandardTransitionPrivate));
object_class->get_property = ges_timeline_standard_transition_get_property;
object_class->set_property = ges_timeline_standard_transition_set_property;
/**
* GESTimelineStandardTransition:vtype
*
* a #GESVideoTransitionType representing the wipe to use
*/
g_object_class_install_property (object_class, PROP_VTYPE,
g_param_spec_enum ("vtype", "VType",
"The SMPTE video wipe to use, or 0 for crossfade",
GES_VIDEO_STANDARD_TRANSITION_TYPE_TYPE,
GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
timobj_class->create_track_object = ges_tl_transition_create_track_object;
timobj_class->need_fill_track = FALSE;
}
static void
ges_timeline_standard_transition_init (GESTimelineStandardTransition * self)
{
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
GES_TYPE_TIMELINE_STANDARD_TRANSITION,
GESTimelineStandardTransitionPrivate);
self->vtype = GES_VIDEO_STANDARD_TRANSITION_TYPE_NONE;
}
static GESTrackObject *
ges_tl_transition_create_track_object (GESTimelineObject * obj,
GESTrack * track)
{
GESTimelineStandardTransition *transition =
(GESTimelineStandardTransition *) obj;
GESTrackObject *res;
GST_DEBUG ("Creating a GESTrackTransition");
if (track->type == GES_TRACK_TYPE_VIDEO) {
res = GES_TRACK_OBJECT (ges_track_video_transition_new ());
ges_track_video_transition_set_type ((GESTrackVideoTransition *) res,
transition->vtype);
}
else if (track->type == GES_TRACK_TYPE_AUDIO) {
res = GES_TRACK_OBJECT (ges_track_audio_transition_new ());
}
else {
GST_WARNING ("Transitions don't handle this track type");
return NULL;
}
return res;
}
/**
* ges_timeline_standard_transition_new:
* @vtype: the type of transition to create
*
*/
GESTimelineStandardTransition *
ges_timeline_standard_transition_new (GESVideoStandardTransitionType vtype)
{
return g_object_new (GES_TYPE_TIMELINE_STANDARD_TRANSITION, "vtype",
(gint) vtype, NULL);
}
/**
* ges_timeline_standard_transition_new_for_nick:
* @nick: a string representing the type of transition to create
*/
GESTimelineStandardTransition *
ges_timeline_standard_transition_new_for_nick (gchar * nick)
{
GEnumValue *value;
GEnumClass *klass;
GESTimelineStandardTransition *ret = NULL;
klass =
G_ENUM_CLASS (g_type_class_ref (GES_VIDEO_STANDARD_TRANSITION_TYPE_TYPE));
if (!klass)
return NULL;
value = g_enum_get_value_by_nick (klass, nick);
if (value) {
ret = g_object_new (GES_TYPE_TIMELINE_STANDARD_TRANSITION, "vtype",
(gint) value->value, NULL);
}
g_type_class_unref (klass);
return ret;
}

View file

@ -0,0 +1,88 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <edward.hervey@collabora.co.uk>
* 2009 Nokia Corporation
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef _GES_TIMELINE_STANDARD_TRANSITION
#define _GES_TIMELINE_STANDARD_TRANSITION
#include <glib-object.h>
#include <ges/ges.h>
#include <ges/ges-timeline-transition.h>
G_BEGIN_DECLS
#define GES_TYPE_TIMELINE_STANDARD_TRANSITION ges_timeline_standard_transition_get_type()
#define GES_TIMELINE_STANDARD_TRANSITION(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GES_TYPE_TIMELINE_STANDARD_TRANSITION, GESTimelineStandardTransition))
#define GES_TIMELINE_STANDARD_TRANSITION_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), GES_TYPE_TIMELINE_STANDARD_TRANSITION, GESTimelineStandardTransitionClass))
#define GES_IS_TIMELINE_STANDARD_TRANSITION(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GES_TYPE_TIMELINE_STANDARD_TRANSITION))
#define GES_IS_TIMELINE_STANDARD_TRANSITION_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GES_TYPE_TIMELINE_STANDARD_TRANSITION))
#define GES_TIMELINE_STANDARD_TRANSITION_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), GES_TYPE_TIMELINE_STANDARD_TRANSITION, GESTimelineStandardTransitionClass))
typedef struct _GESTimelineStandardTransitionPrivate GESTimelineStandardTransitionPrivate;
/**
* GESTimelineStandardTransition:
* @vtype: a #GESVideoStandardTransitionType indicating the type of video transition
* to apply.
*/
struct _GESTimelineStandardTransition {
/*< private >*/
GESTimelineTransition parent;
/*< public >*/
GESVideoStandardTransitionType vtype;
/*< private >*/
GESTimelineStandardTransitionPrivate *priv;
/* Padding for API extension */
gpointer _ges_reserved[GES_PADDING];
};
/**
* GESTimelineStandardTransitionClass:
*
*/
struct _GESTimelineStandardTransitionClass {
/*< private >*/
GESTimelineTransitionClass parent_class;
/* Padding for API extension */
gpointer _ges_reserved[GES_PADDING];
};
GType ges_timeline_standard_transition_get_type (void);
GESTimelineStandardTransition *ges_timeline_standard_transition_new (GESVideoStandardTransitionType vtype);
GESTimelineStandardTransition *ges_timeline_standard_transition_new_for_nick (char *nick);
G_END_DECLS
#endif /* _GES_TIMELINE_STANDARD_TRANSITION */

View file

@ -20,27 +20,11 @@
/**
* SECTION: ges-timeline-transition
* @short_description: Transition from one clip to another in a
* #GESTimelineLayer
*
* Creates an object that mixes together the two underlying objects, A and B.
* The A object is assumed to have a higher prioirity (lower number) than the
* B object. At the transition in point, only A will be visible, and by the
* end only B will be visible.
*
* The shape of the video transition depends on the value of the "vtype"
* property. The default value is "crossfade". For audio, only "crossfade" is
* supported.
*
* #GESSimpleTimelineLayer will automatically manage the priorities of sources
* and transitions. If you use #GESTimelineTransitions in another type of
* #GESTimelineLayer, you will need to manage priorities yourself.
* @short_description: Base classes for transitions
*/
#include <ges/ges.h>
#include "ges-internal.h"
#include "ges-timeline-transition.h"
#include "ges-track-video-transition.h"
#include "ges-track-audio-transition.h"
struct _GESTimelineTransitionPrivate
{
@ -48,172 +32,18 @@ struct _GESTimelineTransitionPrivate
void *nothing;
};
enum
{
PROP_VTYPE = 5,
};
G_DEFINE_TYPE (GESTimelineTransition, ges_timeline_transition,
G_DEFINE_ABSTRACT_TYPE (GESTimelineTransition, ges_timeline_transition,
GES_TYPE_TIMELINE_OPERATION);
static GESTrackObject *ges_tl_transition_create_track_object (GESTimelineObject
* self, GESTrack * track);
static void
ges_timeline_transition_update_vtype_internal (GESTimelineObject * self,
GESVideoTransitionType value)
{
GList *tmp, *trackobjects;
GESTimelineTransition *trself = (GESTimelineTransition *) self;
/* FIXME : We need a much less crack way to find the trackobject to change */
trackobjects = ges_timeline_object_get_track_objects (self);
for (tmp = trackobjects; tmp; tmp = tmp->next) {
GESTrackVideoTransition *obj;
if (GES_IS_TRACK_VIDEO_TRANSITION (tmp->data)) {
obj = (GESTrackVideoTransition *) tmp->data;
if (!ges_track_video_transition_set_type (obj, value))
goto beach;
}
}
trself->vtype = value;
beach:
g_list_foreach (trackobjects, (GFunc) g_object_unref, NULL);
g_list_free (trackobjects);
return;
}
static void
ges_timeline_transition_get_property (GObject * object,
guint property_id, GValue * value, GParamSpec * pspec)
{
GESTimelineTransition *self = GES_TIMELINE_TRANSITION (object);
switch (property_id) {
case PROP_VTYPE:
g_value_set_enum (value, self->vtype);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_timeline_transition_set_property (GObject * object, guint property_id,
const GValue * value, GParamSpec * pspec)
{
GESTimelineObject *self = GES_TIMELINE_OBJECT (object);
switch (property_id) {
case PROP_VTYPE:
ges_timeline_transition_update_vtype_internal (self,
g_value_get_enum (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_timeline_transition_class_init (GESTimelineTransitionClass * klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GESTimelineObjectClass *timobj_class = GES_TIMELINE_OBJECT_CLASS (klass);
g_type_class_add_private (klass, sizeof (GESTimelineTransitionPrivate));
object_class->get_property = ges_timeline_transition_get_property;
object_class->set_property = ges_timeline_transition_set_property;
/**
* GESTimelineTransition:vtype
*
* a #GESVideoTransitionType representing the wipe to use
*/
g_object_class_install_property (object_class, PROP_VTYPE,
g_param_spec_enum ("vtype", "VType",
"The SMPTE video wipe to use, or 0 for crossfade",
GES_VIDEO_TRANSITION_TYPE_TYPE, GES_VIDEO_TRANSITION_TYPE_CROSSFADE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
timobj_class->create_track_object = ges_tl_transition_create_track_object;
timobj_class->need_fill_track = FALSE;
}
static void
ges_timeline_transition_init (GESTimelineTransition * self)
{
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
GES_TYPE_TIMELINE_TRANSITION, GESTimelineTransitionPrivate);
self->vtype = GES_VIDEO_TRANSITION_TYPE_NONE;
}
static GESTrackObject *
ges_tl_transition_create_track_object (GESTimelineObject * obj,
GESTrack * track)
{
GESTimelineTransition *transition = (GESTimelineTransition *) obj;
GESTrackObject *res;
GST_DEBUG ("Creating a GESTrackTransition");
if (track->type == GES_TRACK_TYPE_VIDEO) {
res = GES_TRACK_OBJECT (ges_track_video_transition_new ());
ges_track_video_transition_set_type ((GESTrackVideoTransition *) res,
transition->vtype);
}
else if (track->type == GES_TRACK_TYPE_AUDIO) {
res = GES_TRACK_OBJECT (ges_track_audio_transition_new ());
}
else {
GST_WARNING ("Transitions don't handle this track type");
return NULL;
}
return res;
}
/**
* ges_timeline_transition_new:
* @vtype: the type of transition to create
*
*/
GESTimelineTransition *
ges_timeline_transition_new (GESVideoTransitionType vtype)
{
return g_object_new (GES_TYPE_TIMELINE_TRANSITION, "vtype", (gint) vtype,
NULL);
}
/**
* ges_timeline_transition_new_for_nick:
* @nick: a string representing the type of transition to create
*/
GESTimelineTransition *
ges_timeline_transition_new_for_nick (gchar * nick)
{
GEnumValue *value;
GEnumClass *klass;
GESTimelineTransition *ret = NULL;
klass = G_ENUM_CLASS (g_type_class_ref (GES_VIDEO_TRANSITION_TYPE_TYPE));
if (!klass)
return NULL;
value = g_enum_get_value_by_nick (klass, nick);
if (value) {
ret = g_object_new (GES_TYPE_TIMELINE_TRANSITION, "vtype",
(gint) value->value, NULL);
}
g_type_class_unref (klass);
return ret;
}

View file

@ -47,16 +47,11 @@ typedef struct _GESTimelineTransitionPrivate GESTimelineTransitionPrivate;
/**
* GESTimelineTransition:
* @vtype: a #GESVideoTransitionType indicating the type of video transition
* to apply.
*/
struct _GESTimelineTransition {
/*< private >*/
GESTimelineOperation parent;
/*< public >*/
GESVideoTransitionType vtype;
/*< private >*/
GESTimelineTransitionPrivate *priv;
@ -79,9 +74,6 @@ struct _GESTimelineTransitionClass {
GType ges_timeline_transition_get_type (void);
GESTimelineTransition *ges_timeline_transition_new (GESVideoTransitionType vtype);
GESTimelineTransition *ges_timeline_transition_new_for_nick (char *nick);
G_END_DECLS
#endif /* _GES_TIMELINE_TRANSITION */

View file

@ -27,7 +27,8 @@
#include "ges-track-object.h"
#include "ges-track-operation.h"
G_DEFINE_TYPE (GESTrackOperation, ges_track_operation, GES_TYPE_TRACK_OBJECT);
G_DEFINE_ABSTRACT_TYPE (GESTrackOperation, ges_track_operation,
GES_TYPE_TRACK_OBJECT);
struct _GESTrackOperationPrivate
{

View file

@ -24,12 +24,11 @@
*
*/
#include <ges/ges.h>
#include "ges-internal.h"
#include "ges-track-object.h"
#include "ges-track-transition.h"
#include "ges-timeline-transition.h"
G_DEFINE_TYPE (GESTrackTransition, ges_track_transition, GES_TYPE_TRACK_OBJECT);
G_DEFINE_ABSTRACT_TYPE (GESTrackTransition, ges_track_transition,
GES_TYPE_TRACK_OBJECT);
struct _GESTrackTransitionPrivate
{

View file

@ -23,10 +23,8 @@
* @short_description: implements video crossfade transition
*/
#include <ges/ges.h>
#include "ges-internal.h"
#include "ges-track-object.h"
#include "ges-timeline-transition.h"
#include "ges-track-video-transition.h"
G_DEFINE_TYPE (GESTrackVideoTransition, ges_track_video_transition,
GES_TYPE_TRACK_TRANSITION);
@ -103,7 +101,7 @@ ges_track_video_transition_init (GESTrackVideoTransition * self)
self->mixer = NULL;
self->sinka = NULL;
self->sinkb = NULL;
self->type = GES_VIDEO_TRANSITION_TYPE_NONE;
self->type = GES_VIDEO_STANDARD_TRANSITION_TYPE_NONE;
self->start_value = 0.0;
self->end_value = 0.0;
}
@ -199,7 +197,7 @@ ges_track_video_transition_create_element (GESTrackTransition * object)
g_object_set (G_OBJECT (mixer), "background", 1, NULL);
gst_bin_add (GST_BIN (topbin), mixer);
if (self->type != GES_VIDEO_TRANSITION_TYPE_CROSSFADE) {
if (self->type != GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE) {
self->sinka =
(GstPad *) link_element_to_mixer_with_smpte (GST_BIN (topbin), iconva,
mixer, self->type, NULL);
@ -327,20 +325,20 @@ ges_track_video_transition_duration_changed (GESTrackObject * object,
gboolean
ges_track_video_transition_set_type (GESTrackVideoTransition * self,
GESVideoTransitionType type)
GESVideoStandardTransitionType type)
{
GST_DEBUG ("%p %d => %d", self, self->type, type);
if (self->type && (self->type != type) &&
((type == GES_VIDEO_TRANSITION_TYPE_CROSSFADE) ||
(self->type == GES_VIDEO_TRANSITION_TYPE_CROSSFADE))) {
((type == GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE) ||
(self->type == GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE))) {
GST_WARNING
("Changing between 'crossfade' and other types is not supported");
return FALSE;
}
self->type = type;
if (self->smpte && (type != GES_VIDEO_TRANSITION_TYPE_CROSSFADE))
if (self->smpte && (type != GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE))
g_object_set (self->smpte, "type", (gint) type, NULL);
return TRUE;
}

View file

@ -54,7 +54,7 @@ struct _GESTrackVideoTransition {
GESTrackTransition parent;
/*< private >*/
GESVideoTransitionType type;
GESVideoStandardTransitionType type;
/* these enable video interpolation */
GstController *controller;
@ -95,7 +95,7 @@ GType ges_track_video_transition_get_type (void);
gboolean
ges_track_video_transition_set_type (GESTrackVideoTransition * self,
GESVideoTransitionType type);
GESVideoStandardTransitionType type);
;
GESTrackVideoTransition* ges_track_video_transition_new (void);

View file

@ -56,6 +56,9 @@ typedef struct _GESTimelineFileSourceClass GESTimelineFileSourceClass;
typedef struct _GESTimelineTransition GESTimelineTransition;
typedef struct _GESTimelineTransitionClass GESTimelineTransitionClass;
typedef struct _GESTimelineStandardTransition GESTimelineStandardTransition;
typedef struct _GESTimelineStandardTransitionClass GESTimelineStandardTransitionClass;
typedef struct _GESTimelineTestSource GESTimelineTestSource;
typedef struct _GESTimelineTestSourceClass GESTimelineTestSourceClass;

View file

@ -49,7 +49,7 @@ ges_init (void)
GES_TYPE_TIMELINE_TEST_SOURCE;
GES_TYPE_TIMELINE_FILE_SOURCE;
GES_TYPE_TIMELINE_TITLE_SOURCE;
GES_TYPE_TIMELINE_TRANSITION;
GES_TYPE_TIMELINE_STANDARD_TRANSITION;
GES_TYPE_TIMELINE_OVERLAY;
/* TODO: user-defined types? */

View file

@ -39,6 +39,7 @@
#include <ges/ges-timeline-overlay.h>
#include <ges/ges-timeline-text-overlay.h>
#include <ges/ges-timeline-transition.h>
#include <ges/ges-timeline-standard-transition.h>
#include <ges/ges-track.h>
#include <ges/ges-track-object.h>
#include <ges/ges-track-source.h>

View file

@ -130,13 +130,13 @@ GST_START_TEST (test_keyfile_save)
GST_DEBUG ("Adding transition");
source = (GESTimelineObject *)
ges_timeline_transition_new_for_nick ((gchar *) "bar-wipe-lr");
ges_timeline_standard_transition_new_for_nick ((gchar *) "bar-wipe-lr");
g_object_set (G_OBJECT (source), "duration", (guint64) GST_SECOND / 2, NULL);
ges_simple_timeline_layer_add_object (GES_SIMPLE_TIMELINE_LAYER (layer),
source, -1);
KEY ("Object1", "type", "GESTimelineTransition");
KEY ("Object1", "type", "GESTimelineStandardTransition");
KEY ("Object1", "start", "1500000000");
KEY ("Object1", "in-point", "0");
KEY ("Object1", "duration", "500000000");
@ -537,7 +537,7 @@ static const gchar *data = "\n[General]\n"
"volume=0\n"
"\n"
"[Object1]\n"
"type=GESTimelineTransition\n"
"type=GESTimelineStandardTransition\n"
"start=1500000000\n"
"in-point=0\n"
"duration=500000000\n"
@ -604,9 +604,9 @@ GST_START_TEST (test_keyfile_load)
SIMPLE_LAYER_OBJECT ((GES_TYPE_TIMELINE_TEST_SOURCE), -1,
"duration", (guint64) 2 * GST_SECOND);
SIMPLE_LAYER_OBJECT ((GES_TYPE_TIMELINE_TRANSITION), -1,
SIMPLE_LAYER_OBJECT ((GES_TYPE_TIMELINE_STANDARD_TRANSITION), -1,
"duration", (guint64) GST_SECOND / 2,
"vtype", GES_VIDEO_TRANSITION_TYPE_BAR_WIPE_LR);
"vtype", GES_VIDEO_STANDARD_TRANSITION_TYPE_BAR_WIPE_LR);
SIMPLE_LAYER_OBJECT ((GES_TYPE_TIMELINE_TEST_SOURCE), -1,
"duration", (guint64) 2 * GST_SECOND);

View file

@ -216,7 +216,7 @@ GST_START_TEST (test_gsl_with_transitions)
GESTimelineLayer *layer;
GESTrack *track;
GESCustomTimelineSource *source1, *source2, *source3, *source4;
GESTimelineTransition *tr1, *tr2, *tr3, *tr4, *tr5;
GESTimelineStandardTransition *tr1, *tr2, *tr3, *tr4, *tr5;
GESSimpleTimelineLayer *gstl;
gboolean valid;
gint count = 0;
@ -276,23 +276,33 @@ GST_START_TEST (test_gsl_with_transitions)
#define HALF_SECOND ((guint64) (0.5 * GST_SECOND))
#define SECOND(a) ((guint64) (a * GST_SECOND))
tr1 = ges_timeline_transition_new (GES_VIDEO_TRANSITION_TYPE_CROSSFADE);
tr1 =
ges_timeline_standard_transition_new
(GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE);
g_object_set (tr1, "duration", HALF_SECOND, "start", (guint64) 42, NULL);
fail_unless_equals_uint64 (GES_TIMELINE_OBJECT_DURATION (tr1), HALF_SECOND);
tr2 = ges_timeline_transition_new (GES_VIDEO_TRANSITION_TYPE_CROSSFADE);
tr2 =
ges_timeline_standard_transition_new
(GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE);
g_object_set (tr2, "duration", HALF_SECOND, "start", (guint64) 42, NULL);
fail_unless_equals_uint64 (GES_TIMELINE_OBJECT_DURATION (tr2), HALF_SECOND);
tr3 = ges_timeline_transition_new (GES_VIDEO_TRANSITION_TYPE_CROSSFADE);
tr3 =
ges_timeline_standard_transition_new
(GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE);
g_object_set (tr3, "duration", HALF_SECOND, "start", (guint64) 42, NULL);
fail_unless_equals_uint64 (GES_TIMELINE_OBJECT_DURATION (tr3), HALF_SECOND);
tr4 = ges_timeline_transition_new (GES_VIDEO_TRANSITION_TYPE_CROSSFADE);
tr4 =
ges_timeline_standard_transition_new
(GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE);
g_object_set (tr4, "duration", HALF_SECOND, "start", (guint64) 42, NULL);
fail_unless_equals_uint64 (GES_TIMELINE_OBJECT_DURATION (tr4), HALF_SECOND);
tr5 = ges_timeline_transition_new (GES_VIDEO_TRANSITION_TYPE_CROSSFADE);
tr5 =
ges_timeline_standard_transition_new
(GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE);
g_object_set (tr5, "duration", HALF_SECOND, "start", (guint64) 42, NULL);
fail_unless_equals_uint64 (GES_TIMELINE_OBJECT_DURATION (tr5), HALF_SECOND);

View file

@ -20,16 +20,13 @@
#include <ges/ges.h>
#include <gst/check/gstcheck.h>
#include <ges/ges-timeline-transition.h>
#include <ges/ges-track-video-transition.h>
#include <ges/ges-track-audio-transition.h>
/* This test uri will eventually have to be fixed */
#define TEST_URI "blahblahblah"
GST_START_TEST (test_transition_basic)
{
GESTimelineTransition *tr1, *tr2;
GESTimelineStandardTransition *tr1, *tr2;
GESTrackObject *trackobject;
GESTrack *track;
@ -38,11 +35,13 @@ GST_START_TEST (test_transition_basic)
track = ges_track_video_raw_new ();
fail_unless (track != 0);
tr1 = ges_timeline_transition_new (GES_VIDEO_TRANSITION_TYPE_CROSSFADE);
tr1 =
ges_timeline_standard_transition_new
(GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE);
fail_unless (tr1 != 0);
fail_unless (tr1->vtype == GES_VIDEO_TRANSITION_TYPE_CROSSFADE);
fail_unless (tr1->vtype == GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE);
tr2 = ges_timeline_transition_new_for_nick ((gchar *) "bar-wipe-lr");
tr2 = ges_timeline_standard_transition_new_for_nick ((gchar *) "bar-wipe-lr");
fail_unless (tr2 != 0);
fail_unless (tr2->vtype == 1);
@ -88,8 +87,8 @@ GST_START_TEST (test_transition_properties)
ges_init ();
object =
GES_TIMELINE_OBJECT (ges_timeline_transition_new
(GES_VIDEO_TRANSITION_TYPE_CROSSFADE));
GES_TIMELINE_OBJECT (ges_timeline_standard_transition_new
(GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE));
track = ges_track_video_raw_new ();
fail_unless (track != NULL);
@ -129,21 +128,22 @@ GST_START_TEST (test_transition_properties)
/* test changing vtype */
GST_DEBUG ("Setting to crossfade");
g_object_set (object, "vtype", GES_VIDEO_TRANSITION_TYPE_CROSSFADE, NULL);
assert_equals_int (GES_TIMELINE_TRANSITION (object)->vtype,
GES_VIDEO_TRANSITION_TYPE_CROSSFADE);
g_object_set (object, "vtype", GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE,
NULL);
assert_equals_int (GES_TIMELINE_STANDARD_TRANSITION (object)->vtype,
GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE);
assert_equals_int (GES_TRACK_VIDEO_TRANSITION (trackobject)->type,
GES_VIDEO_TRANSITION_TYPE_CROSSFADE);
GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE);
/* Check that changing from crossfade to anything else fails (it should
* still be using crossfade */
GST_DEBUG ("Setting back to 1 (should fail)");
g_object_set (object, "vtype", 1, NULL);
/* FIXME : This should succeed */
assert_equals_int (GES_TIMELINE_TRANSITION (object)->vtype,
GES_VIDEO_TRANSITION_TYPE_CROSSFADE);
assert_equals_int (GES_TIMELINE_STANDARD_TRANSITION (object)->vtype,
GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE);
assert_equals_int (GES_TRACK_VIDEO_TRANSITION (trackobject)->type,
GES_VIDEO_TRANSITION_TYPE_CROSSFADE);
GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE);
GST_DEBUG ("Releasing track object");
ges_timeline_object_release_track_object (object, trackobject);
@ -159,7 +159,7 @@ GST_START_TEST (test_transition_properties)
* type (in this case 1) */
GST_DEBUG ("Setting to vtype:1");
assert_equals_int (GES_TRACK_VIDEO_TRANSITION (trackobject)->type, 1);
assert_equals_int (GES_TIMELINE_TRANSITION (object)->vtype, 1);
assert_equals_int (GES_TIMELINE_STANDARD_TRANSITION (object)->vtype, 1);
ges_timeline_object_release_track_object (object, trackobject);
g_object_unref (object);

View file

@ -1011,7 +1011,7 @@ app_move_selected_up (App * app)
pos = g_list_index (objects, app->selected_objects->data);
ges_simple_timeline_layer_move_object (GES_SIMPLE_TIMELINE_LAYER (app->layer),
GES_TIMELINE_OBJECT (app->selected_objects->data), pos - 1);
GES_TIMELINE_OBJECT (app->selected_objects->data), pos - 1);
for (tmp = objects; tmp; tmp = tmp->next) {
g_object_unref (tmp->data);
@ -1028,7 +1028,7 @@ app_move_selected_down (App * app)
pos = g_list_index (objects, app->selected_objects->data);
ges_simple_timeline_layer_move_object (GES_SIMPLE_TIMELINE_LAYER (app->layer),
GES_TIMELINE_OBJECT (app->selected_objects->data), pos - 1);
GES_TIMELINE_OBJECT (app->selected_objects->data), pos - 1);
for (tmp = objects; tmp; tmp = tmp->next) {
g_object_unref (tmp->data);
@ -1083,8 +1083,8 @@ app_add_transition (App * app)
GST_DEBUG ("adding transition");
obj = GES_TIMELINE_OBJECT (ges_timeline_transition_new
(GES_VIDEO_TRANSITION_TYPE_CROSSFADE));
obj = GES_TIMELINE_OBJECT (ges_timeline_standard_transition_new
(GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE));
g_object_set (G_OBJECT (obj), "duration", GST_SECOND, NULL);
ges_simple_timeline_layer_add_object (GES_SIMPLE_TIMELINE_LAYER

View file

@ -96,7 +96,7 @@ make_timeline (char *nick, double tdur, char *patha, float adur,
GESTimelineObject *srca, *srcb;
GESTimelinePipeline *pipeline;
guint64 aduration, bduration, tduration, tstart;
GESTimelineTransition *tr = NULL;
GESTimelineStandardTransition *tr = NULL;
pipeline = ges_timeline_pipeline_new ();
@ -132,7 +132,7 @@ make_timeline (char *nick, double tdur, char *patha, float adur,
g_print ("creating transition at %" GST_TIME_FORMAT " of %f duration (%"
GST_TIME_FORMAT ")\n", GST_TIME_ARGS (tstart), tdur,
GST_TIME_ARGS (tduration));
if (!(tr = ges_timeline_transition_new_for_nick (nick)))
if (!(tr = ges_timeline_standard_transition_new_for_nick (nick)))
g_error ("invalid transition type %s\n", nick);
g_object_set (tr,

View file

@ -234,7 +234,9 @@ create_timeline (int nbargs, gchar ** argv)
}
else if (!g_strcmp0 ("+transition", source)) {
obj = GES_TIMELINE_OBJECT (ges_timeline_transition_new_for_nick (arg0));
obj =
GES_TIMELINE_OBJECT (ges_timeline_standard_transition_new_for_nick
(arg0));
if (!obj)
g_error ("invalid transition type\n");
@ -382,13 +384,14 @@ void
print_transition_list (void)
{
GEnumClass *smpte_class;
GESTimelineTransition *tr;
GESTimelineTransitionClass *klass;
GESTimelineStandardTransition *tr;
GESTimelineStandardTransitionClass *klass;
GParamSpec *pspec;
GEnumValue *v;
tr = ges_timeline_transition_new (GES_VIDEO_TRANSITION_TYPE_CROSSFADE);
klass = GES_TIMELINE_TRANSITION_GET_CLASS (tr);
tr = ges_timeline_standard_transition_new
(GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE);
klass = GES_TIMELINE_STANDARD_TRANSITION_GET_CLASS (tr);
if ((pspec = g_object_class_find_property (G_OBJECT_CLASS (klass), "vtype"))) {