[SCM] libav/experimental: Do not scan for MP3 header after the given buffer and return skipped bytes along with consumed bytes on successful decoding. patch by Zdenek Kabelac, zdenek.kabelac gmail com

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


The following commit has been merged in the experimental branch:
commit e2fa5cf4c96391e82848e078e6a1e40f41c2ea2d
Author: Zdenek Kabelac <zdenek.kabelac at gmail.com>
Date:   Mon May 4 14:23:48 2009 +0000

    Do not scan for MP3 header after the given buffer and return skipped
    bytes along with consumed bytes on successful decoding.
    patch by Zdenek Kabelac, zdenek.kabelac gmail com
    
    Originally committed as revision 18736 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c
index 8584c6b..b4d4699 100644
--- a/libavcodec/mpegaudiodec.c
+++ b/libavcodec/mpegaudiodec.c
@@ -2263,6 +2263,7 @@ static int decode_frame(AVCodecContext * avctx,
     MPADecodeContext *s = avctx->priv_data;
     uint32_t header;
     int out_size;
+    int skipped = 0;
     OUT_INT *out_samples = data;
 
 retry:
@@ -2272,7 +2273,8 @@ retry:
     header = AV_RB32(buf);
     if(ff_mpa_check_header(header) < 0){
         buf++;
-//        buf_size--;
+        buf_size--;
+        skipped++;
         av_log(avctx, AV_LOG_ERROR, "Header missing skipping one byte.\n");
         goto retry;
     }
@@ -2303,7 +2305,7 @@ retry:
     }else
         av_log(avctx, AV_LOG_DEBUG, "Error while decoding MPEG audio frame.\n"); //FIXME return -1 / but also return the number of bytes consumed
     s->frame_size = 0;
-    return buf_size;
+    return buf_size + skipped;
 }
 
 static void flush(AVCodecContext *avctx){

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list