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 781121 - qtmux "seek" error when in streaming mode
qtmux "seek" error when in streaming mode
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
1.8.3
Other Linux
: Normal major
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2017-04-10 09:51 UTC by yisong
Modified: 2018-11-03 15:17 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
attachment showing a potential fix (in function gst_qt_mux_start_file(...) under .../gst/isomp4/gstqtmux.c (70.26 KB, image/png)
2017-04-10 09:51 UTC, yisong
Details

Description yisong 2017-04-10 09:51:08 UTC
Created attachment 349593 [details]
attachment showing a potential fix (in function gst_qt_mux_start_file(...) under .../gst/isomp4/gstqtmux.c

There should be no seek in the mux when we set property of "fragment-duration" to non-zero and "streamable" to TRUE. However I found the qtmux still did "seek" under the function gst_qt_mux_stop_file(...) for updating the qtmux->moov->mvex.mehd.fragment_duration in our case.

Basically the "streamable" config got ignored because the qtmux_klass->format != GST_QT_MUX_FORMAT_ISML in our case. The streamable was set in a later stage  by the following piece of code under function gst_qt_mux_start_file (GstQTMux * qtmux) when the code found that the downstream is not seekable:
======
    case GST_QT_MUX_MODE_FRAGMENTED:
      if (!gst_qt_mux_downstream_is_seekable (qtmux)) {
        GST_WARNING_OBJECT (qtmux, "downstream is not seekable, but "
            "streamable=false. Will ignore that and create streamable output "
            "instead");
        qtmux->streamable = TRUE;
        g_object_notify (G_OBJECT (qtmux), "streamable");
======

However it missed to update the qtmux->mux_mode to GST_QT_MUX_MODE_FRAGMENTED_STREAMABLE from GST_QT_MUX_MODE_FRAGMENTED after setting qtmux->streamable = TRUE

As we are not in GST_QT_MUX_MODE_FRAGMENTED_STREAMABLE which is needed to prevent the "seek" described above, we hit the issue.

A potential fix tested in our case is attached (screenshot of the change).

Please let us know if you need any more information regarding this bug.

Thanks,

Song
Comment 1 yisong 2017-04-10 09:54:58 UTC
It is not convenient to test the latest gst-plugins-good under our environment, but I don't think the issue if fixed looking from the latest code.
Comment 2 GStreamer system administrator 2018-11-03 15:17:59 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/362.