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 696692 - matroskademux: should be able to just change rate when streaming
matroskademux: should be able to just change rate when streaming
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other All
: Normal enhancement
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-03-27 13:51 UTC by Nicola
Modified: 2018-11-03 14:48 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
simple test app (4.04 KB, application/x-gzip)
2013-03-27 15:41 UTC, Nicola
Details
more simple test app (1.94 KB, text/x-csrc)
2013-03-27 16:53 UTC, Nicola
Details

Description Nicola 2013-03-27 13:51:59 UTC
Actually a streamable file, produced for example with mastroskamux streamable=true, cannot be played at rate different from 1x (setting sync=false on videosink play at max speed but not 2x, 4x ecc.), I understand that seek cannot work for such files, but fast forward could be implemented, I'm using a quick workaround in my app that use appsink/appsrc, maybe sometime in future I'll try to implement this inside some demuxer (for example matroskademux). This bug report is for keep track of this feature and for share implementation hints
Comment 1 Tim-Philipp Müller 2013-03-27 13:56:57 UTC
Yes, it should be possible to send a seek event with a different rate and GST_SEEK_TYPE_NONE for both start and stop, to just change the rate.
Comment 2 Nicola 2013-03-27 15:41:11 UTC
Created attachment 239959 [details]
simple test app

This simple test app compiled against today git master show that the rate change does not work at all with network file served by an http server, if the network file is downloaded and the pipe is adjusted in testseek.cpp line 10-11, changing rate almost works, however there are errors such these when rate is changed (grey frame displayed):

0:00:05.114979122  3542      0x179ee30 ERROR                  libav :0:: get_buffer() failed (-1 2 (nil))
0:00:05.115122507  3542      0x179ee30 ERROR                  libav :0:: decode_slice_header error
0:00:05.128825601  3542      0x179ee30 ERROR                  libav :0:: mmco: unref short failure
0:00:05.131027134  3542      0x179ee30 ERROR                  libav :0:: mmco: unref short failure
Comment 3 Nicola 2013-03-27 16:53:20 UTC
Created attachment 239974 [details]
more simple test app

test app that does not require qt
Comment 4 Nicola 2013-03-27 17:23:44 UTC
problem is here:

http://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/gst/matroska/matroska-demux.c#n2245

is there a demuxer that support seek in push mode?
Comment 5 Nicola 2013-03-27 21:44:57 UTC
this partially work in qtdemux with something like this:

gst_element_seek (pipe, rate, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH,
          GST_SEEK_TYPE_SET, pos, GST_SEEK_TYPE_NONE,
          GST_CLOCK_TIME_NONE)

however a new http request is done, 

the expected behaviour should be that something like this:

gst_element_seek (pipe, rate, GST_FORMAT_TIME, GST_SEEK_FLAG_NONE,
          GST_SEEK_TYPE_NONE, pos, GST_SEEK_TYPE_NONE,
          GST_CLOCK_TIME_NONE)

change only the rate without doing any new network request, this does not work at all in both qtdemux and matroskademux

the pipeline used is:

souphttpsrc ! matroska/qtdemux ! avdec_h264 ! xvimagesink
Comment 6 GStreamer system administrator 2018-11-03 14:48:43 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/84.