If a frame header decode loses sync, just try again instead of trying to decode a frame (which will automatically decode the next header without allowing us to do some checks on it).

git-svn-id: https://svn.musicpd.org/mpd/trunk@4670 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
J. Alexander Treuman 2006-08-23 13:43:23 +00:00
parent 103dd654f0
commit 30bf8f89f4

View File

@ -629,25 +629,21 @@ static int decodeFirstFrame(mp3DecodeData * data, DecoderControl * dc,
struct mad_bitptr ptr;
int bitlen;
int ret;
int skip;
/* stfu gcc */
memset(&xing, 0, sizeof(struct xing));
xing.flags = 0;
while (1) {
skip = 0;
while ((ret = decodeNextFrameHeader(data, tag, replayGainInfo)) == DECODE_CONT &&
(!dc || !dc->stop));
if (ret == DECODE_SKIP) skip = 1;
else if (ret == DECODE_BREAK || (dc && dc->stop)) return -1;
if (ret == DECODE_BREAK || (dc && dc->stop)) return -1;
if (ret == DECODE_SKIP) continue;
while ((ret = decodeNextFrame(data)) == DECODE_CONT &&
(!dc || !dc->stop));
if (ret == DECODE_BREAK || (dc && dc->stop)) return -1;
if (!skip && ret == DECODE_OK) break;
if (ret == DECODE_OK) break;
}
ptr = data->stream.anc_ptr;