mirror of https://git.ffmpeg.org/ffmpeg.git
correctly set avctx->frame_size for mp3on4 and mp3adu
Originally committed as revision 12508 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
10cac9f9c2
commit
d0ed455f19
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue