diff --git a/docs/libs/ges-docs.sgml b/docs/libs/ges-docs.sgml index 530daa5098..7edbd0ebc5 100644 --- a/docs/libs/ges-docs.sgml +++ b/docs/libs/ges-docs.sgml @@ -44,6 +44,7 @@ platform as well as Windows. It is released under the GNU Library General Public + @@ -52,7 +53,7 @@ platform as well as Windows. It is released under the GNU Library General Public - + diff --git a/docs/libs/ges-sections.txt b/docs/libs/ges-sections.txt index 07ef695ae5..3c672d14ea 100644 --- a/docs/libs/ges-sections.txt +++ b/docs/libs/ges-sections.txt @@ -17,7 +17,7 @@ GES_PADDING
ges-enums GES Enums -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
@@ -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 +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 ges-timeline-transition GESTimelineTransition GESTimelineTransition -GESTimelineTransitionClass -ges_timeline_transition_new -ges_timeline_transition_new_for_nick +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 +
+ +
+ges-timeline-standard-transition +GESTimelineStandardTransition +GESTimelineStandardTransition +ges_timeline_standard_transition_new +ges_timeline_standard_transition_new_for_nick + +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
diff --git a/docs/libs/ges.types b/docs/libs/ges.types index ad02ea7195..15e0152e04 100644 --- a/docs/libs/ges.types +++ b/docs/libs/ges.types @@ -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 diff --git a/ges/Makefile.am b/ges/Makefile.am index 4894192ef6..01855d299b 100644 --- a/ges/Makefile.am +++ b/ges/Makefile.am @@ -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 \ diff --git a/ges/ges-enums.c b/ges/ges-enums.c index 3439feb7ee..faa9e484f5 100644 --- a/ges/ges-enums.c +++ b/ges/ges-enums.c @@ -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; diff --git a/ges/ges-enums.h b/ges/ges-enums.h index e307fa42ea..9b1af25173 100644 --- a/ges/ges-enums.h +++ b/ges/ges-enums.h @@ -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: diff --git a/ges/ges-simple-timeline-layer.c b/ges/ges-simple-timeline-layer.c index d7283d2dea..9be317a9c1 100644 --- a/ges/ges-simple-timeline-layer.c +++ b/ges/ges-simple-timeline-layer.c @@ -33,11 +33,8 @@ * the two adjacent sources. */ +#include #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 diff --git a/ges/ges-timeline-object.h b/ges/ges-timeline-object.h index a6e2c83a78..0c92a37a35 100644 --- a/ges/ges-timeline-object.h +++ b/ges/ges-timeline-object.h @@ -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. diff --git a/ges/ges-timeline-pipeline.c b/ges/ges-timeline-pipeline.c index d2e6032f52..b310e9d6e4 100644 --- a/ges/ges-timeline-pipeline.c +++ b/ges/ges-timeline-pipeline.c @@ -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"); diff --git a/ges/ges-timeline-standard-transition.c b/ges/ges-timeline-standard-transition.c new file mode 100644 index 0000000000..a8c0fa4375 --- /dev/null +++ b/ges/ges-timeline-standard-transition.c @@ -0,0 +1,225 @@ +/* GStreamer Editing Services + * Copyright (C) 2009 Edward Hervey + * 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 +#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; +} diff --git a/ges/ges-timeline-standard-transition.h b/ges/ges-timeline-standard-transition.h new file mode 100644 index 0000000000..90988e5d5b --- /dev/null +++ b/ges/ges-timeline-standard-transition.h @@ -0,0 +1,88 @@ +/* GStreamer Editing Services + * Copyright (C) 2009 Edward Hervey + * 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 +#include +#include + +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 */ diff --git a/ges/ges-timeline-transition.c b/ges/ges-timeline-transition.c index 1b752bc2f0..20fd9507a4 100644 --- a/ges/ges-timeline-transition.c +++ b/ges/ges-timeline-transition.c @@ -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 #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; } diff --git a/ges/ges-timeline-transition.h b/ges/ges-timeline-transition.h index 97843de76e..c7c8507eb0 100644 --- a/ges/ges-timeline-transition.h +++ b/ges/ges-timeline-transition.h @@ -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 */ diff --git a/ges/ges-track-operation.c b/ges/ges-track-operation.c index ca2c963515..bba0ddf9d2 100644 --- a/ges/ges-track-operation.c +++ b/ges/ges-track-operation.c @@ -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 { diff --git a/ges/ges-track-transition.c b/ges/ges-track-transition.c index 84eaa0e526..d43c5f9987 100644 --- a/ges/ges-track-transition.c +++ b/ges/ges-track-transition.c @@ -24,12 +24,11 @@ * */ +#include #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 { diff --git a/ges/ges-track-video-transition.c b/ges/ges-track-video-transition.c index 12d4096dac..90265b75e3 100644 --- a/ges/ges-track-video-transition.c +++ b/ges/ges-track-video-transition.c @@ -23,10 +23,8 @@ * @short_description: implements video crossfade transition */ +#include #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; } diff --git a/ges/ges-track-video-transition.h b/ges/ges-track-video-transition.h index ec67d9bf23..6128c5c3cf 100644 --- a/ges/ges-track-video-transition.h +++ b/ges/ges-track-video-transition.h @@ -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); diff --git a/ges/ges-types.h b/ges/ges-types.h index 479129b2be..84f2547e96 100644 --- a/ges/ges-types.h +++ b/ges/ges-types.h @@ -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; diff --git a/ges/ges.c b/ges/ges.c index 6d3d15a23e..931b88a6a1 100644 --- a/ges/ges.c +++ b/ges/ges.c @@ -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? */ diff --git a/ges/ges.h b/ges/ges.h index 6a17ca1111..fdfc59b3e2 100644 --- a/ges/ges.h +++ b/ges/ges.h @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include diff --git a/tests/check/ges/save_and_load.c b/tests/check/ges/save_and_load.c index 1ec3973bcc..b6cd912fd1 100644 --- a/tests/check/ges/save_and_load.c +++ b/tests/check/ges/save_and_load.c @@ -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); diff --git a/tests/check/ges/simplelayer.c b/tests/check/ges/simplelayer.c index 1ec42099c5..fd44af3462 100644 --- a/tests/check/ges/simplelayer.c +++ b/tests/check/ges/simplelayer.c @@ -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); diff --git a/tests/check/ges/transition.c b/tests/check/ges/transition.c index fa4d943793..4c184b1916 100644 --- a/tests/check/ges/transition.c +++ b/tests/check/ges/transition.c @@ -20,16 +20,13 @@ #include #include -#include -#include -#include /* 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); diff --git a/tests/examples/ges-ui.c b/tests/examples/ges-ui.c index 28d9ca0215..ef26274557 100644 --- a/tests/examples/ges-ui.c +++ b/tests/examples/ges-ui.c @@ -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 diff --git a/tests/examples/transition.c b/tests/examples/transition.c index f4eda41b77..c7184f86a2 100644 --- a/tests/examples/transition.c +++ b/tests/examples/transition.c @@ -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, diff --git a/tools/ges-launch.c b/tools/ges-launch.c index f00bf9d61d..4bc99cd881 100644 --- a/tools/ges-launch.c +++ b/tools/ges-launch.c @@ -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"))) {