Message ID | tencent_CC5E9A8C40BB9A5E9F2BAB4C4EDD70312D08@qq.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,1/9] libavutil/hdr_dynamic_vivid_metadata: fix three spline params | expand |
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 |
On 2/24/2023 6:08 PM, Zhao Zhili wrote: > 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 --git a/libavcodec/dynamic_hdr_vivid.c b/libavcodec/dynamic_hdr_vivid.c > index d689669dec..35be6f5e2b 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; Preferably do: 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; Also here: three_spline = &tm_params->three_spline[0]; Same in every other case in this patchset. > + AV_NOWARN_DEPRECATED( This is an internal file, so use the FF_DISABLE_DEPRECATION_WARNINGS and FF_ENABLE_DEPRECATION_WARNINGS wrappers instead of the public one. > + 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; > + ) > +#endif > } > - > } > } > }
diff --git a/libavcodec/dynamic_hdr_vivid.c b/libavcodec/dynamic_hdr_vivid.c index d689669dec..35be6f5e2b 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; + AV_NOWARN_DEPRECATED( + 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; + ) +#endif } - } } }