From: Julien Moutte Date: Tue, 11 Oct 2005 17:19:36 +0000 (+0000) Subject: ext/ogg/gstoggmux.c: Quick hack to fix build. We need to handle X-Git-Tag: RELEASE-0_9_4~45 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a03a6eebb1abeae63d177c2f540faa22bbb1f717;p=platform%2Fupstream%2Fgst-plugins-base.git ext/ogg/gstoggmux.c: Quick hack to fix build. We need to handle Original commit message from CVS: 2005-10-11 Julien MOUTTE * ext/ogg/gstoggmux.c: (gst_ogg_mux_queue_pads), (gst_ogg_mux_collected): Quick hack to fix build. We need to handle EOS correctly, that needs more work. --- diff --git a/ChangeLog b/ChangeLog index 552881a..b23bd95 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-10-11 Julien MOUTTE + + * ext/ogg/gstoggmux.c: (gst_ogg_mux_queue_pads), + (gst_ogg_mux_collected): Quick hack to fix build. We need to handle + EOS correctly, that needs more work. + 2005-10-11 Wim Taymans * check/generic/states.c: (GST_START_TEST): diff --git a/ext/ogg/gstoggmux.c b/ext/ogg/gstoggmux.c index c6545e8..9d5894b 100644 --- a/ext/ogg/gstoggmux.c +++ b/ext/ogg/gstoggmux.c @@ -567,9 +567,6 @@ gst_ogg_mux_queue_pads (GstOggMux * ogg_mux) walk = g_slist_next (walk); - if (data->eos) - continue; - /* try to get a new buffer for this pad if needed and possible */ if (pad->buffer == NULL) { GstBuffer *buf; @@ -577,20 +574,28 @@ gst_ogg_mux_queue_pads (GstOggMux * ogg_mux) buf = gst_collectpads_pop (ogg_mux->collect, data); - incaps = GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_IN_CAPS); - /* if we need headers */ - if (pad->state == GST_OGG_PAD_STATE_CONTROL) { - /* and we have one */ - if (incaps) { - GST_DEBUG ("muxer: got incaps buffer in control state, ignoring"); - /* just ignore */ - gst_buffer_unref (buf); - buf = NULL; - } else { - GST_DEBUG - ("muxer: got data buffer in control state, switching to data mode"); - /* this is a data buffer so switch to data state */ - pad->state = GST_OGG_PAD_STATE_DATA; + /* On EOS we get a NULL buffer */ + if (buf != NULL) { + incaps = GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_IN_CAPS); + /* if we need headers */ + if (pad->state == GST_OGG_PAD_STATE_CONTROL) { + /* and we have one */ + if (incaps) { + GST_DEBUG ("muxer: got incaps buffer in control state, ignoring"); + /* just ignore */ + gst_buffer_unref (buf); + buf = NULL; + /* We discarded the data of this pad, so it's not EOS. If no bestpad + selected so far then use this one */ + if (!bestpad) { + bestpad = pad; + } + } else { + GST_DEBUG ("muxer: got data buffer in control state, switching " + "to data mode"); + /* this is a data buffer so switch to data state */ + pad->state = GST_OGG_PAD_STATE_DATA; + } } } pad->buffer = buf; @@ -897,11 +902,16 @@ gst_ogg_mux_collected (GstCollectPads * pads, GstOggMux * ogg_mux) GST_DEBUG ("collected"); best = gst_ogg_mux_queue_pads (ogg_mux); - if (best == NULL) + if (best && !best->buffer) return GST_FLOW_OK; GST_DEBUG ("best pad %p", best); + if (!best) { /* EOS : FIXME !! We need to handle EOS correctly */ + gst_pad_push_event (ogg_mux->srcpad, gst_event_new_eos ()); + return GST_FLOW_WRONG_STATE; + } + /* we're pulling a pad and there is a better one, see if we need * to flush the current page */ if (ogg_mux->pulling && best &&