On Wed, 9 Jan 2013 12:11:30 -0500, Justin Ruggles <[email protected]> wrote: > --- > libavcodec/apedec.c | 18 +++++++----------- > 1 files changed, 7 insertions(+), 11 deletions(-) > > diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c > index 61eecfe..f363583 100644 > --- a/libavcodec/apedec.c > +++ b/libavcodec/apedec.c > @@ -129,7 +129,6 @@ typedef struct APEPredictor { > typedef struct APEContext { > AVClass *class; ///< class for AVOptions > AVCodecContext *avctx; > - AVFrame frame; > DSPContext dsp; > int channels; > int samples; ///< samples left to decode in > current frame > @@ -235,9 +234,6 @@ static av_cold int ape_decode_init(AVCodecContext *avctx) > ff_dsputil_init(&s->dsp, avctx); > avctx->channel_layout = (avctx->channels==2) ? AV_CH_LAYOUT_STEREO : > AV_CH_LAYOUT_MONO; > > - avcodec_get_frame_defaults(&s->frame); > - avctx->coded_frame = &s->frame; > - > return 0; > filter_alloc_fail: > ape_decode_close(avctx); > @@ -826,6 +822,7 @@ static void ape_unpack_stereo(APEContext *ctx, int count) > static int ape_decode_frame(AVCodecContext *avctx, void *data, > int *got_frame_ptr, AVPacket *avpkt) > { > + AVFrame *frame = data; > const uint8_t *buf = avpkt->data; > APEContext *s = avctx->priv_data; > uint8_t *sample8; > @@ -909,8 +906,8 @@ static int ape_decode_frame(AVCodecContext *avctx, void > *data, > s->decoded[1] = s->decoded_buffer + FFALIGN(blockstodecode, 8); > > /* get output buffer */ > - s->frame.nb_samples = blockstodecode; > - if ((ret = ff_get_buffer(avctx, &s->frame)) < 0) { > + frame->nb_samples = blockstodecode; > + if ((ret = ff_get_buffer(avctx, frame)) < 0) { > av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); > return ret; > } > @@ -932,21 +929,21 @@ static int ape_decode_frame(AVCodecContext *avctx, void > *data, > switch (s->bps) { > case 8: > for (ch = 0; ch < s->channels; ch++) { > - sample8 = (uint8_t *)s->frame.data[ch]; > + sample8 = (uint8_t *)frame->data[ch]; > for (i = 0; i < blockstodecode; i++) > *sample8++ = (s->decoded[ch][i] + 0x80) & 0xff; > } > break; > case 16: > for (ch = 0; ch < s->channels; ch++) { > - sample16 = (int16_t *)s->frame.data[ch]; > + sample16 = (int16_t *)frame->data[ch]; > for (i = 0; i < blockstodecode; i++) > *sample16++ = s->decoded[ch][i]; > } > break; > case 24: > for (ch = 0; ch < s->channels; ch++) { > - sample24 = (int32_t *)s->frame.data[ch]; > + sample24 = (int32_t *)frame->data[ch]; > for (i = 0; i < blockstodecode; i++) > *sample24++ = s->decoded[ch][i] << 8; > } > @@ -955,8 +952,7 @@ static int ape_decode_frame(AVCodecContext *avctx, void > *data, > > s->samples -= blockstodecode; > > - *got_frame_ptr = 1; > - *(AVFrame *)data = s->frame; > + *got_frame_ptr = 1; > > return bytes_used; > } > -- > 1.7.1 >
Ok. -- Anton Khirnov _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
