flacdec: factor out code setting avctx->sample_fmt

This commit is contained in:
Mans Rullgard 2012-07-03 00:28:32 +01:00
parent d155b60fc8
commit 87466f8124
1 changed files with 15 additions and 13 deletions

View File

@ -100,6 +100,19 @@ int avpriv_flac_is_extradata_valid(AVCodecContext *avctx,
return 1;
}
static void flac_set_bps(FLACContext *s)
{
if (s->bps > 16) {
s->avctx->sample_fmt = AV_SAMPLE_FMT_S32;
s->sample_shift = 32 - s->bps;
s->is32 = 1;
} else {
s->avctx->sample_fmt = AV_SAMPLE_FMT_S16;
s->sample_shift = 16 - s->bps;
s->is32 = 0;
}
}
static av_cold int flac_decode_init(AVCodecContext *avctx)
{
enum FLACExtradataFormat format;
@ -117,11 +130,8 @@ static av_cold int flac_decode_init(AVCodecContext *avctx)
/* initialize based on the demuxer-supplied streamdata header */
avpriv_flac_parse_streaminfo(avctx, (FLACStreaminfo *)s, streaminfo);
if (s->bps > 16)
avctx->sample_fmt = AV_SAMPLE_FMT_S32;
else
avctx->sample_fmt = AV_SAMPLE_FMT_S16;
allocate_buffers(s);
flac_set_bps(s);
s->got_streaminfo = 1;
avcodec_get_frame_defaults(&s->frame);
@ -512,15 +522,7 @@ static int decode_frame(FLACContext *s)
}
s->bps = s->avctx->bits_per_raw_sample = fi.bps;
if (s->bps > 16) {
s->avctx->sample_fmt = AV_SAMPLE_FMT_S32;
s->sample_shift = 32 - s->bps;
s->is32 = 1;
} else {
s->avctx->sample_fmt = AV_SAMPLE_FMT_S16;
s->sample_shift = 16 - s->bps;
s->is32 = 0;
}
flac_set_bps(s);
if (!s->max_blocksize)
s->max_blocksize = FLAC_MAX_BLOCKSIZE;