[Bug 652195] New: Seeking in non-finalized matroska files does not work correctly
GStreamer (bugzilla.gnome.org)
bugzilla at gnome.org
Thu Jun 9 07:24:26 PDT 2011
https://bugzilla.gnome.org/show_bug.cgi?id=652195
GStreamer | gst-plugins-good | git
Summary: Seeking in non-finalized matroska files does not work
correctly
Classification: Platform
Product: GStreamer
Version: git
OS/Version: Linux
Status: UNCONFIRMED
Severity: normal
Priority: Normal
Component: gst-plugins-good
AssignedTo: gstreamer-bugs at lists.freedesktop.org
ReportedBy: branko.subasic at axis.com
QAContact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
Created an attachment (id=189549)
View: https://bugzilla.gnome.org/attachment.cgi?id=189549
Review: https://bugzilla.gnome.org/review?bug=652195&attachment=189549
Patch for improving seeking in not-yet-finalized files
Create the following pipeline.
filesrc ! matroskademux ! queue ! ffdec_h264 ! xvimagesink
Put the pipeline in PAUSED state.
Do a seek a bit into a matroska file and then put the pipeline in playing
state.
This works fine with a matroska file that is finalized, i.e. finished.
But if you try the same with a matroska file that is not finalized, e.g. still
being recorded, then seeking is only possible in the segment defined by the
buffers queued in the queue.
When playing a file that is still being recorded the duration is not yet
written to the matroska file header, and the demuxer will update it's segment's
duration whenever it reads a new frame from the file. In the case of the
pipline above it means that the duration will be what the 'max-size-time'
property of the queue is set to. Because that's how much the demuxer has read
so far.
Then, when creating the seeksegment, gst_segment_set_seek() will CLAMP the
start and stop variables so that they do not exceed the actual duration of the
segment.
I have attached a attached a patch to the demuxer that I think solves the
problem. Could you please take a look at it?
/Branko
--
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list