summaryrefslogtreecommitdiff
path: root/libavcodec/flacdec.c
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2009-03-22 23:19:49 +0000
committerJustin Ruggles <justin.ruggles@gmail.com>2009-03-22 23:19:49 +0000
commitfbc4d9c9641287df573e906aa048f134a7ee5eeb (patch)
tree8b96ed94a6a1d27283d62e461ad5691e87d32289 /libavcodec/flacdec.c
parent9e12268c578ea142c76c55a5b35268051291ccd4 (diff)
flacdec: cosmetics: separate the pure frame header parsing code from
other frame header decoding code Originally committed as revision 18166 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/flacdec.c')
-rw-r--r--libavcodec/flacdec.c66
1 files changed, 34 insertions, 32 deletions
diff --git a/libavcodec/flacdec.c b/libavcodec/flacdec.c
index bcccec5f11..8b730d0b51 100644
--- a/libavcodec/flacdec.c
+++ b/libavcodec/flacdec.c
@@ -504,11 +504,6 @@ static int decode_frame(FLACContext *s)
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 @@ static int decode_frame(FLACContext *s)
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 @@ static int decode_frame(FLACContext *s)
} 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 @@ static int decode_frame(FLACContext *s)
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 @@ static int decode_frame(FLACContext *s)
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);