[prev in list] [next in list] [prev in thread] [next in thread]
List: gstreamer-cvs
Subject: gst-plugins-base: adder: Simplify segment event handling
From: slomo () kemper ! freedesktop ! org (Sebastian Dröge)
Date: 2013-05-30 21:56:56
Message-ID: 20130530215656.AC44976AB0 () kemper ! freedesktop ! org
[Download RAW message or body]
Module: gst-plugins-base
Branch: master
Commit: dde8d8919d5ff8626625d3751e59b5f2758c1d96
URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=dde8d8919d5ff8626625d3751e59b5f2758c1d96
Author: Sebastian Dröge <slomo@circular-chaos.org>
Date: Thu May 30 14:57:04 2013 +0200
adder: Simplify segment event handling
We don't care about upstream segments but generate our own. This
makes the code more similar to videomixer again.
---
gst/adder/gstadder.c | 14 +++-----------
gst/adder/gstadder.h | 1 -
2 files changed, 3 insertions(+), 12 deletions(-)
diff --git a/gst/adder/gstadder.c b/gst/adder/gstadder.c
index ff97cf8..5f144b0 100644
--- a/gst/adder/gstadder.c
+++ b/gst/adder/gstadder.c
@@ -768,7 +768,7 @@ gst_adder_src_event (GstPad * pad, GstObject * parent, GstEvent * \
event)
/* we're forwarding seek to all upstream peers and wait for one to reply
* with a newsegment-event before we send a newsegment-event downstream */
- g_atomic_int_set (&adder->wait_for_new_segment, TRUE);
+ g_atomic_int_set (&adder->new_segment_pending, TRUE);
result = forward_event (adder, event, flush);
if (!result) {
/* seek failed. maybe source is a live source. */
@@ -840,6 +840,7 @@ gst_adder_sink_event (GstCollectPads * pads, GstCollectData * \
pad, /* we received a flush-stop. We will only forward it when
* flush_stop_pending is set, and we will unset it then.
*/
+ g_atomic_int_set (&adder->new_segment_pending, TRUE);
GST_COLLECT_PADS_STREAM_LOCK (adder->collect);
if (adder->flush_stop_pending) {
GST_DEBUG_OBJECT (pad->pad, "forwarding flush stop");
@@ -864,12 +865,6 @@ gst_adder_sink_event (GstCollectPads * pads, GstCollectData * \
pad, event = NULL;
break;
case GST_EVENT_SEGMENT:
- if (g_atomic_int_compare_and_exchange (&adder->wait_for_new_segment,
- TRUE, FALSE)) {
- /* make sure we push a new segment, to inform about new basetime
- * see FIXME in gst_adder_collected() */
- g_atomic_int_set (&adder->new_segment_pending, TRUE);
- }
discard = TRUE;
break;
default:
@@ -1422,9 +1417,7 @@ gst_adder_collected (GstCollectPads * pads, gpointer user_data)
FALSE)) {
GstEvent *event;
- /* FIXME, use rate/applied_rate as set on all sinkpads.
- * - currently we just set rate as received from last seek-event
- *
+ /*
* When seeking we set the start and stop positions as given in the seek
* event. We also adjust offset & timestamp accordingly.
* This basically ignores all newsegments sent by upstream.
@@ -1531,7 +1524,6 @@ gst_adder_change_state (GstElement * element, GstStateChange \
transition) adder->offset = 0;
adder->flush_stop_pending = FALSE;
adder->new_segment_pending = TRUE;
- adder->wait_for_new_segment = FALSE;
adder->send_stream_start = TRUE;
adder->send_caps = TRUE;
gst_caps_replace (&adder->current_caps, NULL);
diff --git a/gst/adder/gstadder.h b/gst/adder/gstadder.h
index 5be38e6..c21a5e3 100644
--- a/gst/adder/gstadder.h
+++ b/gst/adder/gstadder.h
@@ -64,7 +64,6 @@ struct _GstAdder {
/* sink event handling */
GstSegment segment;
volatile gboolean new_segment_pending;
- volatile gboolean wait_for_new_segment;
volatile gboolean flush_stop_pending;
/* current caps */
_______________________________________________
gstreamer-commits mailing list
gstreamer-commits@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/gstreamer-commits
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic