[SCM] libav/experimental: correctly set avctx->frame_size for mp3on4 and mp3adu

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:17:20 UTC 2013


The following commit has been merged in the experimental branch:
commit d0ed455f19f5402c7ee2ff3392861fc40f945a85
Author: Baptiste Coudurier <baptiste.coudurier at gmail.com>
Date:   Thu Mar 20 09:36:04 2008 +0000

    correctly set avctx->frame_size for mp3on4 and mp3adu
    
    Originally committed as revision 12508 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c
index 98f7f3b..a90eb92 100644
--- a/libavcodec/mpegaudiodec.c
+++ b/libavcodec/mpegaudiodec.c
@@ -2301,12 +2301,15 @@ static int mp_decode_frame(MPADecodeContext *s,
     dprintf(s->avctx, "frame %d:\n", s->frame_count);
     switch(s->layer) {
     case 1:
+        avctx->frame_size = 384;
         nb_frames = mp_decode_layer1(s);
         break;
     case 2:
+        avctx->frame_size = 1152;
         nb_frames = mp_decode_layer2(s);
         break;
     case 3:
+        avctx->frame_size = s->lsf ? 576 : 1152;
     default:
         nb_frames = mp_decode_layer3(s);
 
@@ -2395,20 +2398,6 @@ retry:
     avctx->channels = s->nb_channels;
     avctx->bit_rate = s->bit_rate;
     avctx->sub_id = s->layer;
-    switch(s->layer) {
-    case 1:
-        avctx->frame_size = 384;
-        break;
-    case 2:
-        avctx->frame_size = 1152;
-        break;
-    case 3:
-        if (s->lsf)
-            avctx->frame_size = 576;
-        else
-            avctx->frame_size = 1152;
-        break;
-    }
 
     if(s->frame_size<=0 || s->frame_size > buf_size){
         av_log(avctx, AV_LOG_ERROR, "incomplete frame\n");
@@ -2472,7 +2461,7 @@ static int decode_frame_adu(AVCodecContext * avctx,
     avctx->bit_rate = s->bit_rate;
     avctx->sub_id = s->layer;
 
-    avctx->frame_size=s->frame_size = len;
+    s->frame_size = len;
 
     if (avctx->parse_only) {
         out_size = buf_size;
@@ -2635,7 +2624,6 @@ static int decode_frame_mp3on4(AVCodecContext * avctx,
 
     /* update codec info */
     avctx->sample_rate = s->mp3decctx[0]->sample_rate;
-    avctx->frame_size= buf_size;
     avctx->bit_rate = 0;
     for (i = 0; i < s->frames; i++)
         avctx->bit_rate += s->mp3decctx[i]->bit_rate;

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list