metasound: add last missing modes (8kHz @ 6kbps per channel)
[ffmpeg.git] / libavcodec / metasound.c
index 39af418..ae16ad0 100644 (file)
@@ -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);
 }