On 29/11/13 20:52, Anton Khirnov wrote:
> Not just on failure. This is the same thing that is done in the audio
> path and should prevent leaks in decoders that allocate a frame, but
> then end up not writing into it.


Maybe the subject should be:

lavc: always unref the frame if there is no input in decode_video

> ---
>  libavcodec/utils.c |    6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/libavcodec/utils.c b/libavcodec/utils.c
> index e9d6734..899b6e1 100644
> --- a/libavcodec/utils.c
> +++ b/libavcodec/utils.c
> @@ -1416,9 +1416,6 @@ int attribute_align_arg 
> avcodec_decode_video2(AVCodecContext *avctx, AVFrame *pi
>  
>          emms_c(); //needed to avoid an emms_c() call before every return;
>  
> -        if (ret < 0 && picture->buf[0])
> -            av_frame_unref(picture);
> -
>          if (*got_picture_ptr) {
>              if (!avctx->refcounted_frames) {
>                  avci->to_free = *picture;
> @@ -1427,7 +1424,8 @@ int attribute_align_arg 
> avcodec_decode_video2(AVCodecContext *avctx, AVFrame *pi
>              }
>  
>              avctx->frame_number++;
> -        }
> +        } else
> +            av_frame_unref(picture);
>      } else
>          ret = 0;
>  
> 


Looks fine to me.

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

Reply via email to