diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2008-09-25 15:11:16 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2008-09-25 15:11:16 +0000 |
commit | 1dcf0755c5abab7ea9e7ffedb0b64ff24e7a28f5 (patch) | |
tree | 0a2c8e389bdae32c68590c4257e883e073e34c51 | |
parent | b1dfdc758e04ea8aa70379bbcc9ea9103516d0af (diff) |
gst/videomixer/videomixer.c: Handle segments a little better. Fixes #537361.
Original commit message from CVS:
* gst/videomixer/videomixer.c: (gst_videomixer_fill_queues),
(gst_videomixer_sink_event):
Handle segments a little better. Fixes #537361.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | gst/videomixer/videomixer.c | 16 |
2 files changed, 21 insertions, 1 deletions
@@ -1,5 +1,11 @@ 2008-09-25 Wim Taymans <wim.taymans@collabora.co.uk> + * gst/videomixer/videomixer.c: (gst_videomixer_fill_queues), + (gst_videomixer_sink_event): + Handle segments a little better. Fixes #537361. + +2008-09-25 Wim Taymans <wim.taymans@collabora.co.uk> + * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_parse_methods): Don't assume the server supports PAUSE by default. Fixes #551048. diff --git a/gst/videomixer/videomixer.c b/gst/videomixer/videomixer.c index 0d9e70f7..46dc5829 100644 --- a/gst/videomixer/videomixer.c +++ b/gst/videomixer/videomixer.c @@ -1277,6 +1277,7 @@ gst_videomixer_fill_queues (GstVideoMixer * mix) } if (mix->sendseg && (mixpad == mix->master)) { GstEvent *event; + gint64 stop, start; GstSegment *segment = &data->segment; @@ -1294,8 +1295,18 @@ gst_videomixer_fill_queues (GstVideoMixer * mix) * match. */ GST_INFO ("_sending play segment"); + + start = segment->accum; + + /* get the duration of the segment if we can and add it to the accumulated + * time on the segment. */ + if (segment->stop != -1 && segment->start != -1) + stop = start + (segment->stop - segment->start); + else + stop = -1; + event = gst_event_new_new_segment_full (FALSE, segment->rate, 1.0, - segment->format, 0, -1, mix->segment_position); + segment->format, start, stop, start + mix->segment_position); gst_pad_push_event (mix->srcpad, event); mix->sendseg = FALSE; } @@ -1627,6 +1638,9 @@ gst_videomixer_sink_event (GstPad * pad, GstEvent * event) */ videomixer->sendseg = TRUE; break; + case GST_EVENT_NEWSEGMENT: + videomixer->sendseg = TRUE; + break; default: break; } |