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.
This commit is contained in:
Wim Taymans 2008-09-25 15:11:16 +00:00
parent b1dfdc758e
commit 1dcf0755c5
2 changed files with 21 additions and 1 deletions

View file

@ -1,3 +1,9 @@
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):

View file

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