[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