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.
This commit is contained in:
Stefan Kost 2007-05-08 19:24:01 +00:00
parent db624febb8
commit 736a5c082f
3 changed files with 17 additions and 6 deletions

View file

@ -1,3 +1,11 @@
2007-05-08 Stefan Kost <ensonic@users.sf.net>
* 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 <msmith@fluendo.com>
* ext/theora/gsttheoradec.h:

View file

@ -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;

View file

@ -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 {