[FFmpeg-devel] [PATCH 04/42] avcodec/h264_ps: Use RefStruct API for SPS/PPS
Anton Khirnov
anton at khirnov.net
Thu Sep 28 16:03:20 EEST 2023
Quoting Andreas Rheinhardt (2023-09-19 21:56:56)
> diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
> index 5657327f0c..632f5b23b2 100644
> --- a/libavcodec/h264_slice.c
> +++ b/libavcodec/h264_slice.c
> @@ -363,25 +361,16 @@ int ff_h264_update_thread_context(AVCodecContext *dst,
>
> // SPS/PPS
> for (i = 0; i < FF_ARRAY_ELEMS(h->ps.sps_list); i++) {
> - ret = av_buffer_replace(&h->ps.sps_list[i], h1->ps.sps_list[i]);
> - if (ret < 0)
> - return ret;
> + ff_refstruct_replace(&h->ps.sps_list[i], h1->ps.sps_list[i]);
> }
> for (i = 0; i < FF_ARRAY_ELEMS(h->ps.pps_list); i++) {
> - ret = av_buffer_replace(&h->ps.pps_list[i], h1->ps.pps_list[i]);
> - if (ret < 0)
> - return ret;
> + ff_refstruct_replace(&h->ps.pps_list[i], h1->ps.pps_list[i]);
> }
>
> - ret = av_buffer_replace(&h->ps.pps_ref, h1->ps.pps_ref);
> - if (ret < 0)
> - return ret;
> - h->ps.pps = NULL;
> + ff_refstruct_replace(&h->ps.pps, h1->ps.pps);
> h->ps.sps = NULL;
> - if (h1->ps.pps_ref) {
> - h->ps.pps = (const PPS*)h->ps.pps_ref->data;
> + if (h1->ps.pps)
> h->ps.sps = h->ps.pps->sps;
nit: this would look better as
h->ps.sps = h->ps.pps ? h->ps.pps->sps : NULL
Otherwise LGTM
--
Anton Khirnov
More information about the ffmpeg-devel
mailing list