diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c index c4cf266b80..bfc81db26f 100644 --- a/libavcodec/ac3dec.c +++ b/libavcodec/ac3dec.c @@ -1374,7 +1374,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) return ret; @@ -1395,7 +1395,7 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data, } if (err) for (ch = 0; ch < s->out_channels; ch++) - memcpy(((float*)frame->data[ch]) + AC3_BLOCK_SIZE*blk, output[ch], 1024); + memcpy(((float*)frame->data[ch]) + AC3_BLOCK_SIZE*blk, 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->out_channels; ch++) { @@ -1408,7 +1408,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;