mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-31 03:29:50 +00:00
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:
parent
36e165e190
commit
ef7eb9efdd
26 changed files with 580 additions and 413 deletions
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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;
|
||||
|
|
298
ges/ges-enums.h
298
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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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");
|
||||
|
|
225
ges/ges-timeline-standard-transition.c
Normal file
225
ges/ges-timeline-standard-transition.c
Normal 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;
|
||||
}
|
88
ges/ges-timeline-standard-transition.h
Normal file
88
ges/ges-timeline-standard-transition.h
Normal 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 */
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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? */
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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"))) {
|
||||
|
||||
|
|
Loading…
Reference in a new issue