diff --git a/libavcodec/hevc/hevcdec.c b/libavcodec/hevc/hevcdec.c index f44bda8a92..8a845f54f3 100644 --- a/libavcodec/hevc/hevcdec.c +++ b/libavcodec/hevc/hevcdec.c @@ -4106,7 +4106,7 @@ static int hevc_sei_to_context(AVCodecContext *avctx, HEVCSEI *sei) { int ret; - if (sei->tdrdi.num_ref_displays) { + if (sei->tdrdi.present) { AVBufferRef *buf; size_t size; AV3DReferenceDisplaysInfo *tdrdi = av_tdrdi_alloc(sei->tdrdi.num_ref_displays, &size); diff --git a/libavcodec/hevc/sei.c b/libavcodec/hevc/sei.c index e81dfcbff9..5fd4e763b3 100644 --- a/libavcodec/hevc/sei.c +++ b/libavcodec/hevc/sei.c @@ -217,6 +217,8 @@ static int decode_nal_sei_3d_reference_displays_info(HEVCSEITDRDI *s, GetBitCont } s->three_dimensional_reference_displays_extension_flag = get_bits1(gb); + s->present = 1; + return 0; } diff --git a/libavcodec/hevc/sei.h b/libavcodec/hevc/sei.h index c4714bb7c5..d6891d60a6 100644 --- a/libavcodec/hevc/sei.h +++ b/libavcodec/hevc/sei.h @@ -93,6 +93,7 @@ typedef struct HEVCSEITDRDI { uint8_t additional_shift_present_flag[32]; int16_t num_sample_shift[32]; uint8_t three_dimensional_reference_displays_extension_flag; + int present; } HEVCSEITDRDI; typedef struct HEVCSEIRecoveryPoint { @@ -126,6 +127,7 @@ int ff_hevc_decode_nal_sei(GetBitContext *gb, void *logctx, HEVCSEI *s, */ static inline void ff_hevc_reset_sei(HEVCSEI *sei) { + sei->tdrdi.present = 0; ff_h2645_sei_reset(&sei->common); }