diff options
Diffstat (limited to 'libavcodec/metasound.c')
-rw-r--r-- | libavcodec/metasound.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libavcodec/metasound.c b/libavcodec/metasound.c index 3bbd791838..677e959d48 100644 --- a/libavcodec/metasound.c +++ b/libavcodec/metasound.c @@ -187,7 +187,7 @@ static int metasound_read_bitstream(AVCodecContext *avctx, TwinVQContext *tctx, sub = mtab->fmode[bits->ftype].sub; - if (bits->ftype != TWINVQ_FT_SHORT) + if (bits->ftype != TWINVQ_FT_SHORT && !tctx->is_6kbps) get_bits(&gb, 2); read_cb_data(tctx, &gb, bits->main_coeffs, bits->ftype); @@ -307,6 +307,12 @@ static av_cold int metasound_decode_init(AVCodecContext *avctx) ibps = avctx->bit_rate / (1000 * avctx->channels); switch ((avctx->channels << 16) + (isampf << 8) + ibps) { + case (1 << 16) + ( 8 << 8) + 6: + tctx->mtab = &ff_metasound_mode0806; + break; + case (2 << 16) + ( 8 << 8) + 6: + tctx->mtab = &ff_metasound_mode0806s; + break; case (1 << 16) + ( 8 << 8) + 8: tctx->mtab = &ff_metasound_mode0808; break; @@ -362,6 +368,7 @@ static av_cold int metasound_decode_init(AVCodecContext *avctx) tctx->decode_ppc = decode_ppc; tctx->frame_size = avctx->bit_rate * tctx->mtab->size / avctx->sample_rate; + tctx->is_6kbps = ibps == 6; return ff_twinvq_decode_init(avctx); } |