diff mbox series

[FFmpeg-devel,5/5] lavc/hevcdec: improve check for PPS changing between slices

Message ID 20240626124337.14478-5-anton@khirnov.net
State New
Headers show
Series [FFmpeg-devel,1/5] lavc/hevcdec: call export_stream_params_from_sei() before ff_get_buffer() | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Anton Khirnov June 26, 2024, 12:43 p.m. UTC
Compare actual PPS objects rather than just PPS ID, as the former might
change while the latter stays the same.

Reported-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/hevc/hevcdec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Frank Plowman June 26, 2024, 3:45 p.m. UTC | #1
On 26/06/2024 13:43, Anton Khirnov wrote:
> Compare actual PPS objects rather than just PPS ID, as the former might
> change while the latter stays the same.
> 
> Reported-by: Michael Niedermayer <michael@niedermayer.cc>
> ---
>  libavcodec/hevc/hevcdec.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/libavcodec/hevc/hevcdec.c b/libavcodec/hevc/hevcdec.c
> index 01d32086f2..fd143cddab 100644
> --- a/libavcodec/hevc/hevcdec.c
> +++ b/libavcodec/hevc/hevcdec.c
> @@ -603,7 +603,7 @@ static int hls_slice_header(SliceHeader *sh, const HEVCContext *s, GetBitContext
>          av_log(s->avctx, AV_LOG_ERROR, "PPS id out of range: %d\n", pps_id);
>          return AVERROR_INVALIDDATA;
>      }
> -    if (!sh->first_slice_in_pic_flag && pps_id != sh->pps_id) {
> +    if (!sh->first_slice_in_pic_flag && s->ps.pps_list[pps_id] != s->pps) {
>          av_log(s->avctx, AV_LOG_ERROR, "PPS changed between slices.\n");
>          return AVERROR_INVALIDDATA;
>      }

LGTM.
diff mbox series

Patch

diff --git a/libavcodec/hevc/hevcdec.c b/libavcodec/hevc/hevcdec.c
index 01d32086f2..fd143cddab 100644
--- a/libavcodec/hevc/hevcdec.c
+++ b/libavcodec/hevc/hevcdec.c
@@ -603,7 +603,7 @@  static int hls_slice_header(SliceHeader *sh, const HEVCContext *s, GetBitContext
         av_log(s->avctx, AV_LOG_ERROR, "PPS id out of range: %d\n", pps_id);
         return AVERROR_INVALIDDATA;
     }
-    if (!sh->first_slice_in_pic_flag && pps_id != sh->pps_id) {
+    if (!sh->first_slice_in_pic_flag && s->ps.pps_list[pps_id] != s->pps) {
         av_log(s->avctx, AV_LOG_ERROR, "PPS changed between slices.\n");
         return AVERROR_INVALIDDATA;
     }