After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 699792 - oggmux: Never emitting EOS in GES
oggmux: Never emitting EOS in GES
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal normal
: 1.1.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-05-07 00:13 UTC by Mathieu Duponchelle
Modified: 2013-05-18 10:09 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Don't designate an eos pad a sthe best pad. (917 bytes, patch)
2013-05-07 00:14 UTC, Mathieu Duponchelle
none Details | Review
Don't designate an eos pad a sthe best pad. (934 bytes, patch)
2013-05-07 00:18 UTC, Mathieu Duponchelle
committed Details | Review

Description Mathieu Duponchelle 2013-05-07 00:13:33 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.
Comment 1 Mathieu Duponchelle 2013-05-07 00:14:39 UTC
Created attachment 243446 [details] [review]
Don't designate an eos pad a sthe best pad.
Comment 2 Mathieu Duponchelle 2013-05-07 00:18:17 UTC
Created attachment 243447 [details] [review]
Don't designate an eos pad a sthe best pad.

Changed the commit comment
Comment 3 Sebastian Dröge (slomo) 2013-05-07 07:14:35 UTC
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.
Comment 4 Mathieu Duponchelle 2013-05-07 13:12:28 UTC
I'll check that
Comment 5 Mathieu Duponchelle 2013-05-07 23:21:30 UTC
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 ?
Comment 6 Sebastian Dröge (slomo) 2013-05-08 12:27:29 UTC
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
Comment 7 Tim-Philipp Müller 2013-05-18 10:09:18 UTC
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?