[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