From 0d22988e5c84bed1d0d45ea8747501a7f3b51f60 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Sun, 29 Jul 2012 14:25:34 +0200 Subject: [PATCH] event: Update for stream-start event API changes --- libs/gst/base/gstbaseparse.c | 9 ++++++++- libs/gst/base/gstbasesrc.c | 17 ++++++++++++++--- tests/check/elements/queue.c | 10 +++++----- tests/check/gst/gstbin.c | 2 +- tests/check/gst/gstpad.c | 2 +- 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c index 349a202..102ca72 100644 --- a/libs/gst/base/gstbaseparse.c +++ b/libs/gst/base/gstbaseparse.c @@ -2850,9 +2850,16 @@ gst_base_parse_loop (GstPad * pad) GST_DEBUG_OBJECT (parse, "hello"); if (G_UNLIKELY (parse->priv->push_stream_start)) { + gchar *stream_id; + + stream_id = + gst_pad_create_stream_id (parse->srcpad, GST_ELEMENT_CAST (parse), + NULL); + GST_DEBUG_OBJECT (parse, "Pushing STREAM_START"); - gst_pad_push_event (parse->srcpad, gst_event_new_stream_start ()); + gst_pad_push_event (parse->srcpad, gst_event_new_stream_start (stream_id)); parse->priv->push_stream_start = FALSE; + g_free (stream_id); } /* reverse playback: diff --git a/libs/gst/base/gstbasesrc.c b/libs/gst/base/gstbasesrc.c index d53eda3..1358321 100644 --- a/libs/gst/base/gstbasesrc.c +++ b/libs/gst/base/gstbasesrc.c @@ -823,8 +823,17 @@ gst_base_src_send_stream_start (GstBaseSrc * src) gboolean ret = TRUE; if (src->priv->stream_start_pending) { - ret = gst_pad_push_event (src->srcpad, gst_event_new_stream_start ()); + gchar *stream_id; + + stream_id = + gst_pad_create_stream_id (src->srcpad, GST_ELEMENT_CAST (src), NULL); + + GST_DEBUG_OBJECT (src, "Pushing STREAM_START"); + ret = + gst_pad_push_event (src->srcpad, + gst_event_new_stream_start (stream_id)); src->priv->stream_start_pending = FALSE; + g_free (stream_id); } return ret; @@ -3519,12 +3528,16 @@ gst_base_src_activate_mode (GstPad * pad, GstObject * parent, GstPadMode mode, gboolean active) { gboolean res; + GstBaseSrc *src = GST_BASE_SRC (parent); + + src->priv->stream_start_pending = FALSE; switch (mode) { case GST_PAD_MODE_PULL: res = gst_base_src_activate_pull (pad, parent, active); break; case GST_PAD_MODE_PUSH: + src->priv->stream_start_pending = active; res = gst_base_src_activate_push (pad, parent, active); break; default: @@ -3549,7 +3562,6 @@ gst_base_src_change_state (GstElement * element, GstStateChange transition) case GST_STATE_CHANGE_NULL_TO_READY: break; case GST_STATE_CHANGE_READY_TO_PAUSED: - basesrc->priv->stream_start_pending = TRUE; no_preroll = gst_base_src_is_live (basesrc); break; case GST_STATE_CHANGE_PAUSED_TO_PLAYING: @@ -3583,7 +3595,6 @@ gst_base_src_change_state (GstElement * element, GstStateChange transition) * already did this */ g_atomic_int_set (&basesrc->priv->pending_eos, FALSE); gst_event_replace (&basesrc->pending_seek, NULL); - basesrc->priv->stream_start_pending = FALSE; break; } case GST_STATE_CHANGE_READY_TO_NULL: diff --git a/tests/check/elements/queue.c b/tests/check/elements/queue.c index 59f4981..16ea8ec 100644 --- a/tests/check/elements/queue.c +++ b/tests/check/elements/queue.c @@ -246,7 +246,7 @@ GST_START_TEST (test_non_leaky_overrun) UNDERRUN_WAIT (); UNDERRUN_UNLOCK (); - gst_pad_push_event (mysrcpad, gst_event_new_stream_start ()); + gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test")); fail_unless (underrun_count == 1); fail_unless (overrun_count == 0); @@ -338,7 +338,7 @@ GST_START_TEST (test_leaky_upstream) UNDERRUN_WAIT (); UNDERRUN_UNLOCK (); - gst_pad_push_event (mysrcpad, gst_event_new_stream_start ()); + gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test")); fail_unless (overrun_count == 0); fail_unless (underrun_count == 1); @@ -424,7 +424,7 @@ GST_START_TEST (test_leaky_downstream) UNDERRUN_WAIT (); UNDERRUN_UNLOCK (); - gst_pad_push_event (mysrcpad, gst_event_new_stream_start ()); + gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test")); fail_unless (overrun_count == 0); fail_unless (underrun_count == 1); @@ -507,7 +507,7 @@ GST_START_TEST (test_time_level) UNDERRUN_WAIT (); UNDERRUN_UNLOCK (); - gst_pad_push_event (mysrcpad, gst_event_new_stream_start ()); + gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test")); /* push buffer without duration */ buffer = gst_buffer_new_and_alloc (4); @@ -606,7 +606,7 @@ GST_START_TEST (test_time_level_task_not_started) UNDERRUN_WAIT (); UNDERRUN_UNLOCK (); - gst_pad_push_event (mysrcpad, gst_event_new_stream_start ()); + gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test")); gst_segment_init (&segment, GST_FORMAT_TIME); segment.start = 1 * GST_SECOND; diff --git a/tests/check/gst/gstbin.c b/tests/check/gst/gstbin.c index 801550c..67aec7e 100644 --- a/tests/check/gst/gstbin.c +++ b/tests/check/gst/gstbin.c @@ -75,7 +75,7 @@ static gpointer push_one_stream_start (GstPad * pad) { GST_DEBUG_OBJECT (pad, "Pushing STREAM_START event"); - gst_pad_push_event (pad, gst_event_new_stream_start ()); + gst_pad_push_event (pad, gst_event_new_stream_start ("test")); return NULL; } diff --git a/tests/check/gst/gstpad.c b/tests/check/gst/gstpad.c index 8c2c1de..16f3e51 100644 --- a/tests/check/gst/gstpad.c +++ b/tests/check/gst/gstpad.c @@ -1438,7 +1438,7 @@ GST_START_TEST (test_sticky_events) gst_pad_set_active (srcpad, TRUE); /* push an event, it should be sticky on the srcpad */ - gst_pad_push_event (srcpad, gst_event_new_stream_start ()); + gst_pad_push_event (srcpad, gst_event_new_stream_start ("test")); /* make a caps event */ caps = gst_caps_new_empty_simple ("foo/bar"); -- 2.7.4