GNOME Bugzilla – Bug 699792
oggmux: Never emitting EOS in GES
Last modified: 2013-05-18 10:09:18 UTC
The problem experienced is that the EOS was never emitted by oggmux during a rendering with GES. The proposed patch checks if the pad is EOS before deciding it's the "best pad". I'm not certain it's the best fix but it fixes the problem on my side, and doesn't break the test suite.
Created attachment 243446 [details] [review] Don't designate an eos pad a sthe best pad.
Created attachment 243447 [details] [review] Don't designate an eos pad a sthe best pad. Changed the commit comment
Wouldn't this cause NULL to be returned from that function if all pads are EOS, and then this code in _collected() happens: > if (best == NULL || best->buffer == NULL) { > /* This is not supposed to happen */ > return GST_FLOW_ERROR; > } gst_ogg_mux_queue_pads() should probably return any of the pads if all of them are EOS, and in _collected() there should be a check for EOS and no buffer before the lines I quoted above.
I'll check that
In fact, best can never be NULL with this patch, as a pad can only be set to eos = TRUE in the process_best_pad function, which comes right after that check, and if all_pads_eos() then _collected will return GST_FLOW_EOS, which means as far as I understand that _collected won't get called again ?
commit 4c362768fce258e03a383661f185d93931176ee8 Author: Mathieu Duponchelle <mathieu.duponchelle@epitech.eu> Date: Mon May 6 22:05:04 2013 +0200 oggmux: The best pad can't be EOS The problem experienced is that the EOS was never emitted by oggmux during a rendering with GES. The proposed patch checks if the pad is EOS before deciding it's the "best pad". https://bugzilla.gnome.org/show_bug.cgi?id=699792
What I don't understand about this change - if (pad->buffer) { + if (pad->buffer && !pad->eos) { is: why would a pad that's EOS have a buffer queued/set on it?