From 85a88a0a6499ebc9049c47aed55d24a8358bed50 Mon Sep 17 00:00:00 2001 From: Jan Schmidt Date: Wed, 6 May 2009 15:27:01 +0100 Subject: [PATCH] mp3parse: Allow more bits to change in headers during resynch Be more lenient about what we accept as changing bits in a header - basically, only require that the mp3 sync marker is present, for the mpeg version, layer and samplerate. Fixes: #581464 --- gst/mpegaudioparse/gstmpegaudioparse.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gst/mpegaudioparse/gstmpegaudioparse.c b/gst/mpegaudioparse/gstmpegaudioparse.c index 7ed4649dce..bcdd1e8b64 100644 --- a/gst/mpegaudioparse/gstmpegaudioparse.c +++ b/gst/mpegaudioparse/gstmpegaudioparse.c @@ -1273,13 +1273,15 @@ gst_mp3parse_chain (GstPad * pad, GstBuffer * buf) /* mask the bits which are allowed to differ between frames */ #define HDRMASK ~((0xF << 12) /* bitrate */ | \ (0x1 << 9) /* padding */ | \ - (0x3 << 4)) /* mode extension */ + (0xf << 4) /* mode|mode extension */ | \ + (0xf)) /* copyright|emphasis */ /* require 2 matching headers in a row */ if ((header2 & HDRMASK) != (header & HDRMASK)) { GST_DEBUG_OBJECT (mp3parse, "next header doesn't match " - "(header=%08X, header2=%08X, bpf=%d)", - (unsigned int) header, (unsigned int) header2, bpf); + "(header=%08X (%08X), header2=%08X (%08X), bpf=%d)", + (guint) header, (guint) header & HDRMASK, (guint) header2, + (guint) header2 & HDRMASK, bpf); /* This frame is invalid. Start looking for a valid frame at the * next position in the stream */ mp3parse->resyncing = TRUE;