# HG changeset patch # User jbr # Date 1237763989 0 # Node ID f8973e93809ac3fbe5fa4d13f9dbd3723e1bb40b # Parent ef4444d8b2fc5a97db99f6e19dba25e0aaac92f1 flacdec: cosmetics: separate the pure frame header parsing code from other frame header decoding code diff -r ef4444d8b2fc -r f8973e93809a flacdec.c --- a/flacdec.c Sun Mar 22 23:13:21 2009 +0000 +++ b/flacdec.c Sun Mar 22 23:19:49 2009 +0000 @@ -504,11 +504,6 @@ av_log(s->avctx, AV_LOG_ERROR, "invalid channel mode: %d\n", ch_mode); return -1; } - if (channels != s->channels) { - av_log(s->avctx, AV_LOG_ERROR, "switching channel layout mid-stream " - "is not supported\n"); - return -1; - } /* bits per sample */ bps_code = get_bits(gb, 3); @@ -518,20 +513,6 @@ return -1; } bps = sample_size_table[bps_code]; - if (bps && bps != s->bps) { - av_log(s->avctx, AV_LOG_ERROR, "switching bps mid-stream is not " - "supported\n"); - return -1; - } - if (s->bps > 16) { - s->avctx->sample_fmt = SAMPLE_FMT_S32; - s->sample_shift = 32 - s->bps; - s->is32 = 1; - } else { - s->avctx->sample_fmt = SAMPLE_FMT_S16; - s->sample_shift = 16 - s->bps; - s->is32 = 0; - } /* reserved bit */ if (get_bits1(gb)) { @@ -556,11 +537,6 @@ } else { blocksize = ff_flac_blocksize_table[bs_code]; } - if (blocksize > s->max_blocksize) { - av_log(s->avctx, AV_LOG_ERROR, "blocksize %d > %d\n", blocksize, - s->max_blocksize); - return -1; - } /* sample rate */ if (sr_code < 12) { @@ -576,12 +552,6 @@ sr_code); return -1; } - if (samplerate == 0) { - samplerate = s->samplerate; - } else if (samplerate != s->samplerate) { - av_log(s->avctx, AV_LOG_WARNING, "sample rate changed from %d to %d\n", - s->samplerate, samplerate); - } /* header CRC-8 check */ skip_bits(gb, 8); @@ -591,10 +561,42 @@ return -1; } + if (channels != s->channels) { + av_log(s->avctx, AV_LOG_ERROR, "switching channel layout mid-stream " + "is not supported\n"); + return -1; + } + s->ch_mode = ch_mode; + + if (bps && bps != s->bps) { + av_log(s->avctx, AV_LOG_ERROR, "switching bps mid-stream is not " + "supported\n"); + return -1; + } + if (s->bps > 16) { + s->avctx->sample_fmt = SAMPLE_FMT_S32; + s->sample_shift = 32 - s->bps; + s->is32 = 1; + } else { + s->avctx->sample_fmt = SAMPLE_FMT_S16; + s->sample_shift = 16 - s->bps; + s->is32 = 0; + } + + if (blocksize > s->max_blocksize) { + av_log(s->avctx, AV_LOG_ERROR, "blocksize %d > %d\n", blocksize, + s->max_blocksize); + return -1; + } s->blocksize = blocksize; + + if (samplerate == 0) { + samplerate = s->samplerate; + } else if (samplerate != s->samplerate) { + av_log(s->avctx, AV_LOG_WARNING, "sample rate changed from %d to %d\n", + s->samplerate, samplerate); + } s->samplerate = s->avctx->sample_rate = samplerate; - s->bps = bps; - s->ch_mode = ch_mode; // dump_headers(s->avctx, (FLACStreaminfo *)s);