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:
parent
103dd654f0
commit
30bf8f89f4
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user