mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-09-02 02:03:54 +00:00
test1: Expand example to also use an audio track.
This commit is contained in:
parent
29751a7d27
commit
c879e77c16
1 changed files with 20 additions and 15 deletions
|
@ -22,25 +22,30 @@
|
||||||
/* A simple timeline with 3 video-only sources */
|
/* A simple timeline with 3 video-only sources */
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
fill_videotestsrc (GESTimelineObject * object, GESTrackObject * trobject,
|
fill_customsrc (GESTimelineObject * object, GESTrackObject * trobject,
|
||||||
GstElement * gnlobj, gpointer user_data)
|
GstElement * gnlobj, gpointer user_data)
|
||||||
{
|
{
|
||||||
GstElement *vsrc;
|
GstElement *src;
|
||||||
guint var = GPOINTER_TO_UINT (user_data);
|
guint var = GPOINTER_TO_UINT (user_data);
|
||||||
|
|
||||||
vsrc = gst_element_factory_make ("videotestsrc", NULL);
|
if (trobject->track->type == GES_TRACK_TYPE_VIDEO) {
|
||||||
g_object_set (vsrc, "pattern", var, NULL);
|
src = gst_element_factory_make ("videotestsrc", NULL);
|
||||||
|
g_object_set (src, "pattern", var, NULL);
|
||||||
|
} else if (trobject->track->type == GES_TRACK_TYPE_AUDIO) {
|
||||||
|
src = gst_element_factory_make ("audiotestsrc", NULL);
|
||||||
|
g_object_set (src, "freq", 440.0 * (var + 1), NULL);
|
||||||
|
} else
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
return gst_bin_add (GST_BIN (gnlobj), vsrc);
|
return gst_bin_add (GST_BIN (gnlobj), src);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc, gchar ** argv)
|
main (int argc, gchar ** argv)
|
||||||
{
|
{
|
||||||
GESTimelinePipeline *pipeline;
|
GESTimelinePipeline *pipeline;
|
||||||
GESTimeline *timeline;
|
GESTimeline *timeline;
|
||||||
GESTrack *track;
|
GESTrack *trackv, *tracka;
|
||||||
GESTimelineLayer *layer;
|
GESTimelineLayer *layer;
|
||||||
GESCustomTimelineSource *src1, *src2, *src3;
|
GESCustomTimelineSource *src1, *src2, *src3;
|
||||||
GMainLoop *mainloop;
|
GMainLoop *mainloop;
|
||||||
|
@ -51,23 +56,23 @@ main (int argc, gchar ** argv)
|
||||||
|
|
||||||
pipeline = ges_timeline_pipeline_new ();
|
pipeline = ges_timeline_pipeline_new ();
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
track = ges_track_video_raw_new ();
|
trackv = ges_track_video_raw_new ();
|
||||||
|
tracka = ges_track_audio_raw_new ();
|
||||||
layer = ges_timeline_layer_new ();
|
layer = ges_timeline_layer_new ();
|
||||||
|
|
||||||
if (!ges_timeline_add_layer (timeline, layer))
|
if (!ges_timeline_add_layer (timeline, layer))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (!ges_timeline_add_track (timeline, track))
|
if (!ges_timeline_add_track (timeline, trackv))
|
||||||
|
return -1;
|
||||||
|
if (!ges_timeline_add_track (timeline, tracka))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
src1 =
|
src1 = ges_custom_timeline_source_new (fill_customsrc, GUINT_TO_POINTER (0));
|
||||||
ges_custom_timeline_source_new (fill_videotestsrc, GUINT_TO_POINTER (0));
|
|
||||||
g_object_set (src1, "start", 0, "duration", GST_SECOND, NULL);
|
g_object_set (src1, "start", 0, "duration", GST_SECOND, NULL);
|
||||||
src2 =
|
src2 = ges_custom_timeline_source_new (fill_customsrc, GUINT_TO_POINTER (1));
|
||||||
ges_custom_timeline_source_new (fill_videotestsrc, GUINT_TO_POINTER (1));
|
|
||||||
g_object_set (src2, "start", GST_SECOND, "duration", GST_SECOND, NULL);
|
g_object_set (src2, "start", GST_SECOND, "duration", GST_SECOND, NULL);
|
||||||
src3 =
|
src3 = ges_custom_timeline_source_new (fill_customsrc, GUINT_TO_POINTER (0));
|
||||||
ges_custom_timeline_source_new (fill_videotestsrc, GUINT_TO_POINTER (0));
|
|
||||||
g_object_set (src3, "start", 2 * GST_SECOND, "duration", GST_SECOND, NULL);
|
g_object_set (src3, "start", 2 * GST_SECOND, "duration", GST_SECOND, NULL);
|
||||||
|
|
||||||
ges_timeline_layer_add_object (layer, (GESTimelineObject *) src1);
|
ges_timeline_layer_add_object (layer, (GESTimelineObject *) src1);
|
||||||
|
|
Loading…
Reference in a new issue