On Wed,  9 Jan 2013 12:11:26 -0500, Justin Ruggles <[email protected]> 
wrote:
> ---
>  libavcodec/alac.c |   20 ++++++++------------
>  1 files changed, 8 insertions(+), 12 deletions(-)
> 
> diff --git a/libavcodec/alac.c b/libavcodec/alac.c
> index 1a3f769..0c5bdd3 100644
> --- a/libavcodec/alac.c
> +++ b/libavcodec/alac.c
> @@ -58,7 +58,6 @@
>  
>  typedef struct {
>      AVCodecContext *avctx;
> -    AVFrame frame;
>      GetBitContext gb;
>      int channels;
>  
> @@ -248,7 +247,7 @@ static void append_extra_bits(int32_t *buffer[2], int32_t 
> *extra_bits_buffer[2],
>              buffer[ch][i] = (buffer[ch][i] << extra_bits) | 
> extra_bits_buffer[ch][i];
>  }
>  
> -static int decode_element(AVCodecContext *avctx, void *data, int ch_index,
> +static int decode_element(AVCodecContext *avctx, AVFrame *frame, int 
> ch_index,
>                            int channels)
>  {
>      ALACContext *alac = avctx->priv_data;
> @@ -283,8 +282,8 @@ static int decode_element(AVCodecContext *avctx, void 
> *data, int ch_index,
>      }
>      if (!alac->nb_samples) {
>          /* get output buffer */
> -        alac->frame.nb_samples = output_samples;
> -        if ((ret = ff_get_buffer(avctx, &alac->frame)) < 0) {
> +        frame->nb_samples = output_samples;
> +        if ((ret = ff_get_buffer(avctx, frame)) < 0) {
>              av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
>              return ret;
>          }
> @@ -296,7 +295,7 @@ static int decode_element(AVCodecContext *avctx, void 
> *data, int ch_index,
>      alac->nb_samples = output_samples;
>      if (alac->sample_size > 16) {
>          for (ch = 0; ch < channels; ch++)
> -            alac->output_samples_buffer[ch] = (int32_t 
> *)alac->frame.extended_data[ch_index + ch];
> +            alac->output_samples_buffer[ch] = (int32_t 
> *)frame->extended_data[ch_index + ch];
>      }
>  
>      if (is_compressed) {
> @@ -377,7 +376,7 @@ static int decode_element(AVCodecContext *avctx, void 
> *data, int ch_index,
>      switch(alac->sample_size) {
>      case 16: {
>          for (ch = 0; ch < channels; ch++) {
> -            int16_t *outbuffer = (int16_t 
> *)alac->frame.extended_data[ch_index + ch];
> +            int16_t *outbuffer = (int16_t *)frame->extended_data[ch_index + 
> ch];
>              for (i = 0; i < alac->nb_samples; i++)
>                  *outbuffer++ = alac->output_samples_buffer[ch][i];
>          }}
> @@ -397,6 +396,7 @@ static int alac_decode_frame(AVCodecContext *avctx, void 
> *data,
>                               int *got_frame_ptr, AVPacket *avpkt)
>  {
>      ALACContext *alac = avctx->priv_data;
> +    AVFrame *frame    = data;
>      enum AlacRawDataBlockType element;
>      int channels;
>      int ch, ret, got_end;
> @@ -423,7 +423,7 @@ static int alac_decode_frame(AVCodecContext *avctx, void 
> *data,
>              return AVERROR_INVALIDDATA;
>          }
>  
> -        ret = decode_element(avctx, data,
> +        ret = decode_element(avctx, frame,
>                               ff_alac_channel_layout_offsets[alac->channels - 
> 1][ch],
>                               channels);
>          if (ret < 0 && get_bits_left(&alac->gb))
> @@ -441,8 +441,7 @@ static int alac_decode_frame(AVCodecContext *avctx, void 
> *data,
>                 avpkt->size * 8 - get_bits_count(&alac->gb));
>      }
>  
> -    *got_frame_ptr   = 1;
> -    *(AVFrame *)data = alac->frame;
> +    *got_frame_ptr = 1;
>  
>      return avpkt->size;
>  }
> @@ -563,9 +562,6 @@ static av_cold int alac_decode_init(AVCodecContext * 
> avctx)
>          return ret;
>      }
>  
> -    avcodec_get_frame_defaults(&alac->frame);
> -    avctx->coded_frame = &alac->frame;
> -
>      return 0;
>  }
>  
> -- 
> 1.7.1
> 

Ok.

-- 
Anton Khirnov
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to