GST_LOG_OBJECT (ogg_mux, "best pad %" GST_PTR_FORMAT
", currently pulling from %" GST_PTR_FORMAT, best->collect.pad,
- ogg_mux->pulling);
+ ogg_mux->pulling ? ogg_mux->pulling->collect.pad : NULL);
+
+ if (ogg_mux->pulling) {
+ next_buf = gst_collect_pads_peek (ogg_mux->collect,
+ &ogg_mux->pulling->collect);
+ if (next_buf) {
+ ogg_mux->pulling->eos = FALSE;
+ gst_buffer_unref (next_buf);
+ } else {
+ GST_DEBUG_OBJECT (ogg_mux->pulling->collect.pad, "setting eos to true");
+ ogg_mux->pulling->eos = TRUE;
+ }
+ }
- next_buf = gst_collect_pads_peek (ogg_mux->collect, &best->collect);
- if (next_buf) {
- best->eos = FALSE;
- gst_buffer_unref (next_buf);
- } else {
- best->eos = TRUE;
+ /* We could end up pushing from the best pad instead, so check that
+ * as well */
+ if (best && best != ogg_mux->pulling) {
+ next_buf = gst_collect_pads_peek (ogg_mux->collect, &best->collect);
+ if (next_buf) {
+ best->eos = FALSE;
+ gst_buffer_unref (next_buf);
+ } else {
+ GST_DEBUG_OBJECT (best->collect.pad, "setting eos to true");
+ best->eos = TRUE;
+ }
}
/* if we were already pulling from one pad, but the new "best" buffer is
GST_GP_CAST (packet.granulepos), (gint64) packet.packetno,
packet.bytes);
- packet.e_o_s = best->eos ? 1 : 0;
+ packet.e_o_s = ogg_mux->pulling->eos ? 1 : 0;
tmpbuf = NULL;
/* we flush when we see a new keyframe */
while (walk) {
GstOggPadData *oggpad = (GstOggPadData *) walk->data;
- GST_DEBUG ("oggpad %p eos %d", oggpad, oggpad->eos);
+ GST_DEBUG_OBJECT (oggpad->collect.pad,
+ "oggpad %p eos %d", oggpad, oggpad->eos);
if (oggpad->eos == FALSE)
return FALSE;
TYPE_FIND_REGISTER_START_WITH (plugin, "audio/x-vgm",
GST_RANK_SECONDARY, vgm_exts, "Vgm\x20", 4, GST_TYPE_FIND_MAXIMUM);
TYPE_FIND_REGISTER_START_WITH (plugin, "audio/x-sap",
- GST_RANK_SECONDARY, sap_exts, "SAP\x0d\x0aAUTHOR\x20", 12,
+ GST_RANK_SECONDARY, sap_exts, "SAP\x0d\x0a" "AUTHOR\x20", 12,
GST_TYPE_FIND_MAXIMUM);
TYPE_FIND_REGISTER_START_WITH (plugin, "video/x-ivf", GST_RANK_SECONDARY,
ivf_exts, "DKIF", 4, GST_TYPE_FIND_NEARLY_CERTAIN);