mirror of
https://git.videolan.org/git/ffmpeg.git
synced 2024-09-12 10:25:32 +02:00
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
This commit is contained in:
parent
c7279693ae
commit
e2fa5cf4c9
@ -2263,6 +2263,7 @@ static int decode_frame(AVCodecContext * avctx,
|
|||||||
MPADecodeContext *s = avctx->priv_data;
|
MPADecodeContext *s = avctx->priv_data;
|
||||||
uint32_t header;
|
uint32_t header;
|
||||||
int out_size;
|
int out_size;
|
||||||
|
int skipped = 0;
|
||||||
OUT_INT *out_samples = data;
|
OUT_INT *out_samples = data;
|
||||||
|
|
||||||
retry:
|
retry:
|
||||||
@ -2272,7 +2273,8 @@ retry:
|
|||||||
header = AV_RB32(buf);
|
header = AV_RB32(buf);
|
||||||
if(ff_mpa_check_header(header) < 0){
|
if(ff_mpa_check_header(header) < 0){
|
||||||
buf++;
|
buf++;
|
||||||
// buf_size--;
|
buf_size--;
|
||||||
|
skipped++;
|
||||||
av_log(avctx, AV_LOG_ERROR, "Header missing skipping one byte.\n");
|
av_log(avctx, AV_LOG_ERROR, "Header missing skipping one byte.\n");
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
@ -2303,7 +2305,7 @@ retry:
|
|||||||
}else
|
}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
|
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;
|
s->frame_size = 0;
|
||||||
return buf_size;
|
return buf_size + skipped;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void flush(AVCodecContext *avctx){
|
static void flush(AVCodecContext *avctx){
|
||||||
|
Loading…
Reference in New Issue
Block a user