On Wed, 9 Jan 2013 12:12:07 -0500, Justin Ruggles <[email protected]> wrote: > --- > libavcodec/takdec.c | 19 ++++++++----------- > 1 files changed, 8 insertions(+), 11 deletions(-) > > diff --git a/libavcodec/takdec.c b/libavcodec/takdec.c > index d47db48..7c488f8 100644 > --- a/libavcodec/takdec.c > +++ b/libavcodec/takdec.c > @@ -44,7 +44,6 @@ typedef struct MCDParam { > > typedef struct TAKDecContext { > AVCodecContext *avctx; // parent AVCodecContext > - AVFrame frame; // AVFrame for decoded > output > DSPContext dsp; > TAKStreamInfo ti; > GetBitContext gb; // bitstream reader > initialized to start at the current frame > @@ -175,8 +174,6 @@ static av_cold int tak_decode_init(AVCodecContext *avctx) > ff_dsputil_init(&s->dsp, avctx); > > s->avctx = avctx; > - avcodec_get_frame_defaults(&s->frame); > - avctx->coded_frame = &s->frame; > > set_sample_rate_params(avctx); > > @@ -674,6 +671,7 @@ static int tak_decode_frame(AVCodecContext *avctx, void > *data, > int *got_frame_ptr, AVPacket *pkt) > { > TAKDecContext *s = avctx->priv_data; > + AVFrame *frame = data; > GetBitContext *gb = &s->gb; > int chan, i, ret, hsize; > > @@ -740,8 +738,8 @@ static int tak_decode_frame(AVCodecContext *avctx, void > *data, > s->nb_samples = s->ti.last_frame_samples ? s->ti.last_frame_samples > : s->ti.frame_samples; > > - s->frame.nb_samples = s->nb_samples; > - if ((ret = ff_get_buffer(avctx, &s->frame)) < 0) > + frame->nb_samples = s->nb_samples; > + if ((ret = ff_get_buffer(avctx, frame)) < 0) > return ret; > > if (avctx->bits_per_coded_sample <= 16) { > @@ -758,7 +756,7 @@ static int tak_decode_frame(AVCodecContext *avctx, void > *data, > return ret; > } else { > for (chan = 0; chan < avctx->channels; chan++) > - s->decoded[chan] = (int32_t *)s->frame.extended_data[chan]; > + s->decoded[chan] = (int32_t *)frame->extended_data[chan]; > } > > if (s->nb_samples < 16) { > @@ -876,7 +874,7 @@ static int tak_decode_frame(AVCodecContext *avctx, void > *data, > switch (avctx->sample_fmt) { > case AV_SAMPLE_FMT_U8P: > for (chan = 0; chan < avctx->channels; chan++) { > - uint8_t *samples = (uint8_t *)s->frame.extended_data[chan]; > + uint8_t *samples = (uint8_t *)frame->extended_data[chan]; > int32_t *decoded = s->decoded[chan]; > for (i = 0; i < s->nb_samples; i++) > samples[i] = decoded[i] + 0x80; > @@ -884,7 +882,7 @@ static int tak_decode_frame(AVCodecContext *avctx, void > *data, > break; > case AV_SAMPLE_FMT_S16P: > for (chan = 0; chan < avctx->channels; chan++) { > - int16_t *samples = (int16_t *)s->frame.extended_data[chan]; > + int16_t *samples = (int16_t *)frame->extended_data[chan]; > int32_t *decoded = s->decoded[chan]; > for (i = 0; i < s->nb_samples; i++) > samples[i] = decoded[i]; > @@ -892,15 +890,14 @@ static int tak_decode_frame(AVCodecContext *avctx, void > *data, > break; > case AV_SAMPLE_FMT_S32P: > for (chan = 0; chan < avctx->channels; chan++) { > - int32_t *samples = (int32_t *)s->frame.extended_data[chan]; > + int32_t *samples = (int32_t *)frame->extended_data[chan]; > for (i = 0; i < s->nb_samples; i++) > samples[i] <<= 8; > } > break; > } > > - *got_frame_ptr = 1; > - *(AVFrame *)data = s->frame; > + *got_frame_ptr = 1; > > return pkt->size; > } > -- > 1.7.1
Ok. -- Anton Khirnov _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
