[FFmpeg-devel] [PATCH 4/6] avcodec/hevc/sei: ensure num_ref_displays is not set unless the SEI message is valid
James Almer
jamrial at gmail.com
Tue Feb 4 00:35:44 EET 2025
This field can be used the same way "present" is used for other message types.
Signed-off-by: James Almer <jamrial at gmail.com>
---
libavcodec/hevc/sei.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/libavcodec/hevc/sei.c b/libavcodec/hevc/sei.c
index e11a33773c..8793d86fdc 100644
--- a/libavcodec/hevc/sei.c
+++ b/libavcodec/hevc/sei.c
@@ -152,6 +152,8 @@ static int decode_nal_sei_timecode(HEVCSEITimeCode *s, GetBitContext *gb)
static int decode_nal_sei_3d_reference_displays_info(HEVCSEITDRDI *s, GetBitContext *gb)
{
+ unsigned int num_ref_displays;
+
s->prec_ref_display_width = get_ue_golomb(gb);
if (s->prec_ref_display_width > 31)
return AVERROR_INVALIDDATA;
@@ -161,12 +163,12 @@ static int decode_nal_sei_3d_reference_displays_info(HEVCSEITDRDI *s, GetBitCont
if (s->prec_ref_viewing_dist > 31)
return AVERROR_INVALIDDATA;
}
- s->num_ref_displays = get_ue_golomb(gb);
- if (s->num_ref_displays > 31)
+ num_ref_displays = get_ue_golomb(gb);
+ if (num_ref_displays > 31)
return AVERROR_INVALIDDATA;
- s->num_ref_displays += 1;
+ num_ref_displays += 1;
- for (int i = 0; i < s->num_ref_displays; i++) {
+ for (int i = 0; i < num_ref_displays; i++) {
int length;
s->left_view_id[i] = get_ue_golomb(gb);
s->right_view_id[i] = get_ue_golomb(gb);
@@ -199,6 +201,7 @@ static int decode_nal_sei_3d_reference_displays_info(HEVCSEITDRDI *s, GetBitCont
}
}
s->three_dimensional_reference_displays_extension_flag = get_bits1(gb);
+ s->num_ref_displays = num_ref_displays;
return 0;
}
--
2.48.1
More information about the ffmpeg-devel
mailing list