[FFmpeg-devel] [PATCH] hevc/sei: return INVALIDDATA when a referenced SPS is not available

Jan Ekström jeebjp at gmail.com
Sat Aug 31 00:09:46 EEST 2024


On Fri, Aug 30, 2024 at 8:40 PM Hendrik Leppkes <h.leppkes at gmail.com> wrote:
>
> The code previously returned ENOMEM, despite this not being an
> allocation problem, but rather a bitstream problem referring to data not
> currently available.
>
> Fixes playback of such streams, as it allows further processing of NAL
> units after skipping the broken SEI NAL.
> ---
>  libavcodec/hevc/sei.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavcodec/hevc/sei.c b/libavcodec/hevc/sei.c
> index e39ac0c38a..b55ba71a8d 100644
> --- a/libavcodec/hevc/sei.c
> +++ b/libavcodec/hevc/sei.c
> @@ -56,7 +56,7 @@ static int decode_nal_sei_pic_timing(HEVCSEI *s, GetBitContext *gb,
>      const HEVCSPS *sps = ps->sps_list[s->active_seq_parameter_set_id];
>
>      if (!sps)
> -        return(AVERROR(ENOMEM));
> +        return AVERROR_INVALIDDATA;
>
>      if (sps->vui.frame_field_info_present_flag) {
>          int pic_struct = get_bits(gb, 4);
> --
> 2.42.0.windows.2

LGTM.

Verified that FATE still passes and that the sample linked in
https://github.com/mpv-player/mpv/issues/14764 once again decodes.

after 90fc331b0fc6f7d9c31f9e6d543102ba7fe02daf in master:
Stream #0:0: Video: hevc, 1 reference frame, none, 3840x1920
after applying this patch:
Stream #0:0: Video: hevc (Main 10), 1 reference frame, yuv420p10le(tv,
left), 3840x1920

(in addition to various additional NAL units getting parsed and much
less warnings being logged)

Jan


More information about the ffmpeg-devel mailing list