On Wed,  9 Jan 2013 12:11:34 -0500, Justin Ruggles <[email protected]> 
wrote:
> ---
>  libavcodec/pcm.c |   20 ++++++++------------
>  1 files changed, 8 insertions(+), 12 deletions(-)
> 
> diff --git a/libavcodec/pcm.c b/libavcodec/pcm.c
> index d6899cf..64a230a 100644
> --- a/libavcodec/pcm.c
> +++ b/libavcodec/pcm.c
> @@ -199,7 +199,6 @@ static int pcm_encode_frame(AVCodecContext *avctx, 
> AVPacket *avpkt,
>  }
>  
>  typedef struct PCMDecode {
> -    AVFrame frame;
>      short   table[256];
>  } PCMDecode;
>  
> @@ -231,9 +230,6 @@ static av_cold int pcm_decode_init(AVCodecContext *avctx)
>      if (avctx->sample_fmt == AV_SAMPLE_FMT_S32)
>          avctx->bits_per_raw_sample = 
> av_get_bits_per_sample(avctx->codec->id);
>  
> -    avcodec_get_frame_defaults(&s->frame);
> -    avctx->coded_frame = &s->frame;
> -
>      return 0;
>  }
>  
> @@ -260,6 +256,7 @@ static int pcm_decode_frame(AVCodecContext *avctx, void 
> *data,
>      const uint8_t *src = avpkt->data;
>      int buf_size       = avpkt->size;
>      PCMDecode *s       = avctx->priv_data;
> +    AVFrame *frame     = data;
>      int sample_size, c, n, ret, samples_per_block;
>      uint8_t *samples;
>      int32_t *dst_int32_t;
> @@ -301,12 +298,12 @@ static int pcm_decode_frame(AVCodecContext *avctx, void 
> *data,
>      n = buf_size / sample_size;
>  
>      /* get output buffer */
> -    s->frame.nb_samples = n * samples_per_block / avctx->channels;
> -    if ((ret = ff_get_buffer(avctx, &s->frame)) < 0) {
> +    frame->nb_samples = n * samples_per_block / avctx->channels;
> +    if ((ret = ff_get_buffer(avctx, frame)) < 0) {
>          av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
>          return ret;
>      }
> -    samples = s->frame.data[0];
> +    samples = frame->data[0];
>  
>      switch (avctx->codec->id) {
>      case AV_CODEC_ID_PCM_U32LE:
> @@ -341,7 +338,7 @@ static int pcm_decode_frame(AVCodecContext *avctx, void 
> *data,
>          int av_unused n2;
>          n /= avctx->channels;
>          for (c = 0; c < avctx->channels; c++) {
> -            samples = s->frame.extended_data[c];
> +            samples = frame->extended_data[c];
>  #if HAVE_BIGENDIAN
>              n2 = n;
>              DECODE(16, le16, src, samples, n2, 0, 0)
> @@ -414,7 +411,7 @@ static int pcm_decode_frame(AVCodecContext *avctx, void 
> *data,
>      case AV_CODEC_ID_PCM_DVD:
>      {
>          const uint8_t *src8;
> -        dst_int32_t = (int32_t *)s->frame.data[0];
> +        dst_int32_t = (int32_t *)frame->data[0];
>          n /= avctx->channels;
>          switch (avctx->bits_per_coded_sample) {
>          case 20:
> @@ -447,7 +444,7 @@ static int pcm_decode_frame(AVCodecContext *avctx, void 
> *data,
>          int i;
>          n /= avctx->channels;
>          for (c = 0; c < avctx->channels; c++) {
> -            dst_int32_t = (int32_t *)s->frame.extended_data[c];
> +            dst_int32_t = (int32_t *)frame->extended_data[c];
>              for (i = 0; i < n; i++) {
>                  // extract low 20 bits and expand to 32 bits
>                  *dst_int32_t++ =  (src[2]         << 28) |
> @@ -470,8 +467,7 @@ static int pcm_decode_frame(AVCodecContext *avctx, void 
> *data,
>          return -1;
>      }
>  
> -    *got_frame_ptr   = 1;
> -    *(AVFrame *)data = s->frame;
> +    *got_frame_ptr = 1;
>  
>      return buf_size;
>  }
> -- 
> 1.7.1
>

Ok.

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

Reply via email to