diff mbox series

[FFmpeg-devel,v2,2/9] avcodec/dynamic_hdr_vivid: fix three spline params

Message ID tencent_4A4F2D469A9A40389A189F30AB144E457008@qq.com
State Accepted
Commit 0f2bef268408c83bb236c398ce42eafa7ec328c7
Headers show
Series [FFmpeg-devel,v2,1/9] libavutil/hdr_dynamic_vivid_metadata: fix three spline params | 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

Zhao Zhili Feb. 24, 2023, 3:52 p.m. UTC
From: Zhao Zhili <zhilizhao@tencent.com>

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
---
 libavcodec/dynamic_hdr_vivid.c | 34 +++++++++++++++++++++++-----------
 1 file changed, 23 insertions(+), 11 deletions(-)
diff mbox series

Patch

diff --git a/libavcodec/dynamic_hdr_vivid.c b/libavcodec/dynamic_hdr_vivid.c
index d689669dec..f2bc0c9059 100644
--- a/libavcodec/dynamic_hdr_vivid.c
+++ b/libavcodec/dynamic_hdr_vivid.c
@@ -98,26 +98,38 @@  int ff_parse_itu_t_t35_to_dynamic_hdr_vivid(AVDynamicHDRVivid *s, const uint8_t
                             return AVERROR_INVALIDDATA;
                         tm_params->three_Spline_enable_flag = get_bits(gb, 1);
                         if (tm_params->three_Spline_enable_flag) {
+                            AVHDRVivid3SplineParams *three_spline;
+
                             if (get_bits_left(gb) < 1 + tm_params->three_Spline_num * (2 + 12 + 28 + 1))
                                 return AVERROR_INVALIDDATA;
                             tm_params->three_Spline_num = get_bits(gb, 1) + 1;
+                            if (tm_params->three_Spline_num > FF_ARRAY_ELEMS(tm_params->three_spline))
+                                return AVERROR_INVALIDDATA;
                             for (int j = 0; j < tm_params->three_Spline_num; j++) {
-                                tm_params->three_Spline_TH_mode = get_bits(gb, 2);
-                                if (tm_params->three_Spline_TH_mode == 0 || tm_params->three_Spline_TH_mode == 2) {
+                                three_spline = &tm_params->three_spline[j];
+                                three_spline->th_mode = get_bits(gb, 2);
+                                if (three_spline->th_mode == 0 || three_spline->th_mode == 2) {
                                     if (get_bits_left(gb) < 8)
                                         return AVERROR_INVALIDDATA;
-                                    tm_params->three_Spline_TH_enable_MB = (AVRational){get_bits(gb, 8),  255};
+                                    three_spline->th_enable_mb = (AVRational){get_bits(gb, 8),  255};
                                 }
-                                tm_params->three_Spline_TH_enable = (AVRational){get_bits(gb, 12),  4095};
-                                tm_params->three_Spline_TH_Delta1 = (AVRational){get_bits(gb, 10),  1023};
-                                tm_params->three_Spline_TH_Delta2 = (AVRational){get_bits(gb, 10),  1023};
-                                tm_params->three_Spline_enable_Strength = (AVRational){get_bits(gb,  8),  255};
+                                three_spline->th_enable = (AVRational){get_bits(gb, 12),  4095};
+                                three_spline->th_delta1 = (AVRational){get_bits(gb, 10),  1023};
+                                three_spline->th_delta2 = (AVRational){get_bits(gb, 10),  1023};
+                                three_spline->enable_strength = (AVRational){get_bits(gb,  8),  255};
                             }
-                        } else {
-                            tm_params->three_Spline_num     = 1;
-                            tm_params->three_Spline_TH_mode = 0;
+#if FF_API_HDR_VIVID_THREE_SPLINE
+                            three_spline = &tm_params->three_spline[0];
+FF_DISABLE_DEPRECATION_WARNINGS
+                            tm_params->three_Spline_TH_mode = three_spline->th_mode;
+                            tm_params->three_Spline_TH_enable_MB = three_spline->th_enable_mb;
+                            tm_params->three_Spline_TH_enable = three_spline->th_enable;
+                            tm_params->three_Spline_TH_Delta1 = three_spline->th_delta1;
+                            tm_params->three_Spline_TH_Delta2 = three_spline->th_delta2;
+                            tm_params->three_Spline_enable_Strength = three_spline->enable_strength;
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
                         }
-
                     }
                 }
             }