On 2013-01-08 15:37:34 +0100, Anton Khirnov wrote:
> ---
>  libavcodec/cyuv.c |   36 +++++++++---------------------------
>  1 file changed, 9 insertions(+), 27 deletions(-)
> 
> diff --git a/libavcodec/cyuv.c b/libavcodec/cyuv.c
> index 9c34c75..c46b872 100644
> --- a/libavcodec/cyuv.c
> +++ b/libavcodec/cyuv.c
> @@ -41,7 +41,6 @@
>  typedef struct CyuvDecodeContext {
>      AVCodecContext *avctx;
>      int width, height;
> -    AVFrame frame;
>  } CyuvDecodeContext;
>  
>  static av_cold int cyuv_decode_init(AVCodecContext *avctx)
> @@ -66,6 +65,7 @@ static int cyuv_decode_frame(AVCodecContext *avctx,
>      const uint8_t *buf = avpkt->data;
>      int buf_size = avpkt->size;
>      CyuvDecodeContext *s=avctx->priv_data;
> +    AVFrame *frame = data;
>  
>      unsigned char *y_plane;
>      unsigned char *u_plane;
> @@ -102,26 +102,21 @@ static int cyuv_decode_frame(AVCodecContext *avctx,
>      /* pixel data starts 48 bytes in, after 3x16-byte tables */
>      stream_ptr = 48;
>  
> -    if (s->frame.data[0])
> -        avctx->release_buffer(avctx, &s->frame);
> -
> -    s->frame.buffer_hints = FF_BUFFER_HINTS_VALID;
> -    s->frame.reference = 0;
> -    if ((ret = ff_get_buffer(avctx, &s->frame)) < 0) {
> +    if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) {
>          av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
>          return ret;
>      }
>  
> -    y_plane = s->frame.data[0];
> -    u_plane = s->frame.data[1];
> -    v_plane = s->frame.data[2];
> +    y_plane = frame->data[0];
> +    u_plane = frame->data[1];
> +    v_plane = frame->data[2];
>  
>      /* iterate through each line in the height */
>      for (y_ptr = 0, u_ptr = 0, v_ptr = 0;
> -         y_ptr < (s->height * s->frame.linesize[0]);
> -         y_ptr += s->frame.linesize[0] - s->width,
> -         u_ptr += s->frame.linesize[1] - s->width / 4,
> -         v_ptr += s->frame.linesize[2] - s->width / 4) {
> +         y_ptr < (s->height * frame->linesize[0]);
> +         y_ptr += frame->linesize[0] - s->width,
> +         u_ptr += frame->linesize[1] - s->width / 4,
> +         v_ptr += frame->linesize[2] - s->width / 4) {
>  
>          /* reset predictors */
>          cur_byte = buf[stream_ptr++];
> @@ -165,21 +160,10 @@ static int cyuv_decode_frame(AVCodecContext *avctx,
>      }
>  
>      *got_frame = 1;
> -    *(AVFrame*)data= s->frame;
>  
>      return buf_size;
>  }
>  
> -static av_cold int cyuv_decode_end(AVCodecContext *avctx)
> -{
> -    CyuvDecodeContext *s = avctx->priv_data;
> -
> -    if (s->frame.data[0])
> -        avctx->release_buffer(avctx, &s->frame);
> -
> -    return 0;
> -}
> -
>  #if CONFIG_AURA_DECODER
>  AVCodec ff_aura_decoder = {
>      .name           = "aura",
> @@ -187,7 +171,6 @@ AVCodec ff_aura_decoder = {
>      .id             = AV_CODEC_ID_AURA,
>      .priv_data_size = sizeof(CyuvDecodeContext),
>      .init           = cyuv_decode_init,
> -    .close          = cyuv_decode_end,
>      .decode         = cyuv_decode_frame,
>      .capabilities   = CODEC_CAP_DR1,
>      .long_name      = NULL_IF_CONFIG_SMALL("Auravision AURA"),
> @@ -201,7 +184,6 @@ AVCodec ff_cyuv_decoder = {
>      .id             = AV_CODEC_ID_CYUV,
>      .priv_data_size = sizeof(CyuvDecodeContext),
>      .init           = cyuv_decode_init,
> -    .close          = cyuv_decode_end,
>      .decode         = cyuv_decode_frame,
>      .capabilities   = CODEC_CAP_DR1,
>      .long_name      = NULL_IF_CONFIG_SMALL("Creative YUV (CYUV)"),

ok

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

Reply via email to