[FFmpeg-devel] [PATCH 4/6] avcodec/h264_slice: use av_buffer_replace() to simplify code

Anton Khirnov anton at khirnov.net
Thu Nov 19 09:51:19 EET 2020


Quoting Gil Pedersen (2020-11-18 14:05:15)
> Signed-off-by: Gil Pedersen <git at gpost.dk>
> ---
>  libavcodec/h264_slice.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
> index fa7a639053..b937ebebcf 100644
> --- a/libavcodec/h264_slice.c
> +++ b/libavcodec/h264_slice.c
> @@ -1018,11 +1018,11 @@ static int h264_init_ps(H264Context *h, const H264SliceContext *sl, int first_sl
>      int needs_reinit = 0, must_reinit, ret;
>  
>      if (first_slice) {
> -        av_buffer_unref(&h->ps.pps_ref);
> -        h->ps.pps = NULL;
> -        h->ps.pps_ref = av_buffer_ref(h->ps.pps_list[sl->pps_id]);
> -        if (!h->ps.pps_ref)
> -            return AVERROR(ENOMEM);
> +        ret = av_buffer_replace(&h->ps.pps_ref, h->ps.pps_list[sl->pps_id]);
> +        if (ret < 0) {
> +            h->ps.pps = NULL;

You should probably unref pps_ref on failure too, av_buffer_replace()
leaves the original on failure.

-- 
Anton Khirnov


More information about the ffmpeg-devel mailing list