ext/ogg/gstoggdemux.c: Don't use GST_CLOCK_TIME_NONE as start of NEWSEGMENT events.

Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_chain_peer),
(gst_ogg_demux_perform_seek), (gst_ogg_demux_handle_page):
Don't use GST_CLOCK_TIME_NONE as start of NEWSEGMENT events.
This fixes a critical warning.
This commit is contained in:
Sebastian Dröge 2008-07-28 15:34:13 +00:00
parent 6bccd1fcfe
commit f9749dea39
2 changed files with 27 additions and 7 deletions

View file

@ -1,3 +1,10 @@
2008-07-28 Sebastian Dröge <sebastian.droege@collabora.co.uk>
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_chain_peer),
(gst_ogg_demux_perform_seek), (gst_ogg_demux_handle_page):
Don't use GST_CLOCK_TIME_NONE as start of NEWSEGMENT events.
This fixes a critical warning.
2008-07-28 Sebastian Dröge <sebastian.droege@collabora.co.uk> 2008-07-28 Sebastian Dröge <sebastian.droege@collabora.co.uk>
* ext/ogg/gstoggmux.c: * ext/ogg/gstoggmux.c:

View file

@ -924,8 +924,14 @@ gst_ogg_demux_chain_peer (GstOggPad * pad, ogg_packet * packet)
goto convert_failed; goto convert_failed;
/* convert to stream time */ /* convert to stream time */
if ((chain = pad->chain)) if ((chain = pad->chain)) {
current_time = current_time - chain->segment_start + chain->begin_time; gint64 chain_start = 0;
if (chain->segment_start != GST_CLOCK_TIME_NONE)
chain_start = chain->segment_start;
current_time = current_time - chain_start + chain->begin_time;
}
/* and store as the current position */ /* and store as the current position */
gst_segment_set_last_stop (&ogg->segment, GST_FORMAT_TIME, current_time); gst_segment_set_last_stop (&ogg->segment, GST_FORMAT_TIME, current_time);
@ -2085,10 +2091,14 @@ gst_ogg_demux_perform_seek (GstOggDemux * ogg, GstEvent * event)
/* create the segment event to close the current segment */ /* create the segment event to close the current segment */
if ((chain = ogg->current_chain)) { if ((chain = ogg->current_chain)) {
GstEvent *newseg; GstEvent *newseg;
gint64 chain_start = 0;
if (chain->segment_start != GST_CLOCK_TIME_NONE)
chain_start = chain->segment_start;
newseg = gst_event_new_new_segment (TRUE, ogg->segment.rate, newseg = gst_event_new_new_segment (TRUE, ogg->segment.rate,
GST_FORMAT_TIME, ogg->segment.start + chain->segment_start, GST_FORMAT_TIME, ogg->segment.start + chain_start,
ogg->segment.last_stop + chain->segment_start, ogg->segment.time); ogg->segment.last_stop + chain_start, ogg->segment.time);
/* send segment on old chain, FIXME, must be sent from streaming thread. */ /* send segment on old chain, FIXME, must be sent from streaming thread. */
gst_ogg_demux_send_event (ogg, newseg); gst_ogg_demux_send_event (ogg, newseg);
@ -2756,15 +2766,18 @@ gst_ogg_demux_handle_page (GstOggDemux * ogg, ogg_page * page)
chain = gst_ogg_demux_find_chain (ogg, serialno); chain = gst_ogg_demux_find_chain (ogg, serialno);
if (chain) { if (chain) {
GstEvent *event; GstEvent *event;
gint64 start = 0;
if (chain->segment_start != GST_CLOCK_TIME_NONE)
start = chain->segment_start;
/* create the newsegment event we are going to send out */ /* create the newsegment event we are going to send out */
event = gst_event_new_new_segment (FALSE, ogg->segment.rate, event = gst_event_new_new_segment (FALSE, ogg->segment.rate,
GST_FORMAT_TIME, chain->segment_start, chain->segment_stop, GST_FORMAT_TIME, start, chain->segment_stop, chain->begin_time);
chain->begin_time);
GST_DEBUG_OBJECT (ogg, GST_DEBUG_OBJECT (ogg,
"segment: start %" GST_TIME_FORMAT ", stop %" GST_TIME_FORMAT "segment: start %" GST_TIME_FORMAT ", stop %" GST_TIME_FORMAT
", time %" GST_TIME_FORMAT, GST_TIME_ARGS (chain->segment_start), ", time %" GST_TIME_FORMAT, GST_TIME_ARGS (start),
GST_TIME_ARGS (chain->segment_stop), GST_TIME_ARGS (chain->segment_stop),
GST_TIME_ARGS (chain->begin_time)); GST_TIME_ARGS (chain->begin_time));