diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c index 01da328d56..512d54b822 100644 --- a/libavcodec/ac3dec.c +++ b/libavcodec/ac3dec.c @@ -1370,7 +1370,7 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data, avctx->audio_service_type = AV_AUDIO_SERVICE_TYPE_KARAOKE; /* get output buffer */ - frame->nb_samples = s->num_blocks * 256; + frame->nb_samples = s->num_blocks * AC3_BLOCK_SIZE; if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) { av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); return ret; @@ -1392,7 +1392,7 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data, } if (err) for (ch = 0; ch < s->out_channels; ch++) - memcpy(s->outptr[channel_map[ch]], output[ch], 1024); + memcpy(s->outptr[channel_map[ch]], output[ch], sizeof(**output) * AC3_BLOCK_SIZE); for (ch = 0; ch < s->out_channels; ch++) output[ch] = s->outptr[channel_map[ch]]; for (ch = 0; ch < s->channels; ch++) @@ -1401,7 +1401,7 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data, /* keep last block for error concealment in next frame */ for (ch = 0; ch < s->out_channels; ch++) - memcpy(s->output[ch], output[ch], 1024); + memcpy(s->output[ch], output[ch], sizeof(**output) * AC3_BLOCK_SIZE); *got_frame_ptr = 1;