From 7955c01f19e9dd0aa0f4bbeb1a0cd856a4b4ae6c Mon Sep 17 00:00:00 2001 From: Mark Nauwelaerts Date: Wed, 7 Jul 2010 14:16:59 +0200 Subject: [PATCH] avidemux: additional verification heuristics for VBR audio stream Check for and override some header field(s) for reasonable values, according to later expected use in calculations. --- gst/avi/gstavidemux.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c index b73e87f..a62afb9 100644 --- a/gst/avi/gstavidemux.c +++ b/gst/avi/gstavidemux.c @@ -2005,6 +2005,19 @@ gst_avi_demux_parse_stream (GstAviDemux * avi, GstBuffer * buf) "invalid audio header, ignoring stream"); goto fail; } + /* some more sanity checks */ + if (stream->is_vbr) { + if (stream->strf.auds->blockalign <= 4) { + /* that would mean (too) many frames per chunk, + * so not likely set as expected */ + GST_DEBUG_OBJECT (element, + "suspicious blockalign %d for VBR audio; " + "overriding to 1 frame per chunk", + stream->strf.auds->blockalign); + /* this should top any likely value */ + stream->strf.auds->blockalign = (1 << 12); + } + } break; case GST_RIFF_FCC_iavs: stream->is_vbr = TRUE; -- 2.7.4