GNOME Bugzilla – Bug 696692
matroskademux: should be able to just change rate when streaming
Last modified: 2018-11-03 14:48:43 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
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.
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
Created attachment 239974 [details] more simple test app test app that does not require qt
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?
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
-- 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.