From 736a5c082f69375c8c7d3efc685f0e39cfc9c74f Mon Sep 17 00:00:00 2001 From: Stefan Kost Date: Tue, 8 May 2007 19:24:01 +0000 Subject: [PATCH] gst/adder/gstadder.c (gst_adder_src_event, gst_adder_collected, gst_adder_change_state): gst/adder/gstadder.h (bps, o... Original commit message from CVS: * gst/adder/gstadder.c (gst_adder_src_event, gst_adder_collected, gst_adder_change_state): * gst/adder/gstadder.h (bps, offset, collect_event, segment, segment_pending, segment_position, segment_rate): Handle playback-rate on adder. --- ChangeLog | 8 ++++++++ gst/adder/gstadder.c | 10 ++++++---- gst/adder/gstadder.h | 5 +++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index bb57bcf..f6fb585 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-05-08 Stefan Kost + + * gst/adder/gstadder.c (gst_adder_src_event, gst_adder_collected, + gst_adder_change_state): + * gst/adder/gstadder.h (bps, offset, collect_event, segment, + segment_pending, segment_position, segment_rate): + Handle playback-rate on adder. + 2007-05-07 Michael Smith * ext/theora/gsttheoradec.h: diff --git a/gst/adder/gstadder.c b/gst/adder/gstadder.c index fd582f2..23ced05 100644 --- a/gst/adder/gstadder.c +++ b/gst/adder/gstadder.c @@ -443,9 +443,9 @@ gst_adder_src_event (GstPad * pad, GstEvent * event) GstSeekType curtype; gint64 cur; - /* parse the flushing flag */ - gst_event_parse_seek (event, NULL, NULL, &flags, &curtype, &cur, NULL, - NULL); + /* parse the seek parameters */ + gst_event_parse_seek (event, &adder->segment_rate, NULL, &flags, &curtype, + &cur, NULL, NULL); /* check if we are flushing */ if (flags & GST_SEEK_FLAG_FLUSH) { @@ -741,6 +741,7 @@ gst_adder_collected (GstCollectPads * pads, gpointer user_data) GstEvent *event; /* FIXME, use rate/applied_rate as set on all sinkpads. + * - currently we just set rate as received from last seek-event * We could potentially figure out the duration as well using * the current segment positions and the stated stop positions. * Also we just start from stream time 0 which is rather @@ -752,7 +753,7 @@ gst_adder_collected (GstCollectPads * pads, gpointer user_data) * the later streams would be delayed until the stream times * match. */ - event = gst_event_new_new_segment_full (FALSE, 1.0, + event = gst_event_new_new_segment_full (FALSE, adder->segment_rate, 1.0, GST_FORMAT_TIME, adder->timestamp, -1, adder->segment_position); gst_pad_push_event (adder->srcpad, event); @@ -812,6 +813,7 @@ gst_adder_change_state (GstElement * element, GstStateChange transition) adder->offset = 0; adder->segment_pending = TRUE; adder->segment_position = 0; + adder->segment_rate = 1.0; gst_segment_init (&adder->segment, GST_FORMAT_UNDEFINED); gst_collect_pads_start (adder->collect); break; diff --git a/gst/adder/gstadder.h b/gst/adder/gstadder.h index 62c990a..62075c0 100644 --- a/gst/adder/gstadder.h +++ b/gst/adder/gstadder.h @@ -72,7 +72,7 @@ struct _GstAdder { gboolean is_signed; /* number of bytes per sample, actually width/8 * channels */ - gint bps; + gint bps; /* function to add samples */ GstAdderFunction func; @@ -80,12 +80,13 @@ struct _GstAdder { /* counters to keep track of timestamps */ gint64 timestamp; gint64 offset; - + /* sink event handling */ GstPadEventFunction collect_event; GstSegment segment; gboolean segment_pending; guint64 segment_position; + gdouble segment_rate; }; struct _GstAdderClass { -- 2.7.4