From 2087d23365a33443a13364a4dab2460654b7e310 Mon Sep 17 00:00:00 2001 From: Marcus Overhagen Date: Sun, 17 Jun 2007 15:54:08 +0000 Subject: [PATCH] always sync to frame begin after a seek git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21439 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../media/plugins/mp3_decoder/mp3DecoderPlugin.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/add-ons/media/plugins/mp3_decoder/mp3DecoderPlugin.cpp b/src/add-ons/media/plugins/mp3_decoder/mp3DecoderPlugin.cpp index 882f9a901a..868ac1a230 100644 --- a/src/add-ons/media/plugins/mp3_decoder/mp3DecoderPlugin.cpp +++ b/src/add-ons/media/plugins/mp3_decoder/mp3DecoderPlugin.cpp @@ -260,10 +260,14 @@ mp3Decoder::DecodeNextChunk() // resync after a seek if (fNeedSync) { - if (chunkSize > 4 && GetFrameLength(chunkBuffer) > 0) { - } else - if (chunkSize > 5200) { // mp3 reader always delivers synced frames smaller than 5200 bytes - // wav reader and others don't do that + if (chunkSize < 4) { + TRACE("mp3Decoder::Decode: Sync failed, frame too small\n"); + return B_ERROR; + } + int len = GetFrameLength(chunkBuffer); + // len = -1 when not at frame start + // len == chunkSize for mp3 reader (delivers single frames) + if (len < chunkSize) { while (chunkSize > 100) { if (IsValidStream((uint8 *)chunkBuffer, chunkSize)) break;