[gst-cvs] gst-plugins-ugly: mp3parse: Don't reject valid Xing tables of contents
Jan Schmidt
thaytan at kemper.freedesktop.org
Wed May 6 07:47:46 PDT 2009
Module: gst-plugins-ugly
Branch: master
Commit: b18371c1ca480bbf1df17d3cf01bc0139137daf6
URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-ugly/commit/?id=b18371c1ca480bbf1df17d3cf01bc0139137daf6
Author: Jan Schmidt <thaytan at noraisin.net>
Date: Wed May 6 15:37:44 2009 +0100
mp3parse: Don't reject valid Xing tables of contents
Some Xing headers apparently start the TOC at byte 1 instead of 0. Don't
reject them because of it, just subtract the initial offset when reading
the table.
---
gst/mpegaudioparse/gstmpegaudioparse.c | 16 ++++++++--------
1 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/gst/mpegaudioparse/gstmpegaudioparse.c b/gst/mpegaudioparse/gstmpegaudioparse.c
index bcdd1e8..7b86fee 100644
--- a/gst/mpegaudioparse/gstmpegaudioparse.c
+++ b/gst/mpegaudioparse/gstmpegaudioparse.c
@@ -978,22 +978,22 @@ gst_mp3parse_handle_first_frame (GstMPEGAudioParse * mp3parse)
if (xing_flags & XING_TOC_FLAG) {
int i, percent = 0;
guchar *table = mp3parse->xing_seek_table;
- guchar old = 0;
+ guchar old = 0, new;
+ guint first;
- if (data[0] != 0) {
- GST_WARNING_OBJECT (mp3parse, "Skipping broken Xing TOC");
- mp3parse->xing_flags &= ~XING_TOC_FLAG;
- goto skip_toc;
- }
+ first = data[0];
+ GST_DEBUG_OBJECT (mp3parse,
+ "Subtracting initial offset of %d bytes from Xing TOC", first);
/* xing seek table: percent time -> 1/256 bytepos */
for (i = 0; i < 100; i++) {
- mp3parse->xing_seek_table[i] = data[i];
- if (old > data[i]) {
+ new = data[i] - first;
+ if (old > new) {
GST_WARNING_OBJECT (mp3parse, "Skipping broken Xing TOC");
mp3parse->xing_flags &= ~XING_TOC_FLAG;
goto skip_toc;
}
+ mp3parse->xing_seek_table[i] = old = new;
}
/* build inverse table: 1/256 bytepos -> 1/100 percent time */
More information about the Gstreamer-commits
mailing list