[Bug 680427] New: [matroskademux] Error handling when seek to broken section.

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Sun Jul 22 21:43:55 PDT 2012


https://bugzilla.gnome.org/show_bug.cgi?id=680427
  GStreamer | gst-plugins-good | 0.10.31

           Summary: [matroskademux] Error handling when seek to broken
                    section.
    Classification: Platform
           Product: GStreamer
           Version: 0.10.31
        OS/Version: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-good
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: tux04j at gmail.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Let's see below simplified file.
cluster ( #1, offset: 100, next_cluster_offset: 200 )
cluster ( #2, offset: 200, next_cluster_offset: 300 )
cluster ( #3, offset: 300, next_cluster_offset: 400 )
    ............

cluster ( #100, offset: 10000, next_cluster_offset: 10100 )
  Unknown ID ( 0x00 )
  Unknown ID ( 0x00 )
  Unknown ID ( 0x00 )
    ............

Demux is parsing currently #1 cluster, assuming seek to #100 cluster.
After handling seek event, demux->common.offset is 10000 and
demux->next_cluster_offset is still 200.
Becasue the data is broken at 10000 offset, demux->common.offset will be
changed to 200 in gst_matroska_demux_check_parse_error() function.
Demux will parse next cluster from 200 offset, but demux should search next
cluster from 10000 offset.
demux->next_cluster_offset should be reset to 0 before the end of handling seek
event.
So, I think it is a kind of solution to add below 2 lines in
gst_matroska_demux_move_to_entry() function.

  demux->common.offset = entry->pos + demux->common.ebml_segment_start;
  /* reset next_cluster_offset */
  if( reset )
    demux->next_cluster_offset = 0;

-- 
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