[FFmpeg-devel] [PATCH major bump 1/6] libavutil/hdr_dynamic_vivid_metadata: fix AVHDRVividColorToneMappingParams
Zhao Zhili
quinkblack at foxmail.com
Thu Feb 2 09:02:03 EET 2023
From: Zhao Zhili <zhilizhao at tencent.com>
There are two group of three_Spline params. Fix the struct
definition and usecases inside libavcodec, libavfilter and ffprobe.
Co-Author: Houxiang ZHU <zhuhouxiang at theuwa.com>
Signed-off-by: Zhao Zhili <zhilizhao at tencent.com>
---
fftools/ffprobe.c | 14 ++++++++------
libavcodec/dynamic_hdr_vivid.c | 20 +++++++++-----------
libavfilter/vf_showinfo.c | 17 +++++++++--------
libavutil/hdr_dynamic_vivid_metadata.h | 12 ++++++------
4 files changed, 32 insertions(+), 31 deletions(-)
diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c
index dfa7ff1b24..a853c70f56 100644
--- a/fftools/ffprobe.c
+++ b/fftools/ffprobe.c
@@ -2246,14 +2246,16 @@ static void print_dynamic_hdr_vivid(WriterContext *w, const AVDynamicHDRVivid *m
print_int("3Spline_enable_flag", tm_params->three_Spline_enable_flag);
if (tm_params->three_Spline_enable_flag) {
print_int("3Spline_num", tm_params->three_Spline_num);
- print_int("3Spline_TH_mode", tm_params->three_Spline_TH_mode);
for (int j = 0; j < tm_params->three_Spline_num; j++) {
- print_q("3Spline_TH_enable_MB", tm_params->three_Spline_TH_enable_MB, '/');
- print_q("3Spline_TH_enable", tm_params->three_Spline_TH_enable, '/');
- print_q("3Spline_TH_Delta1", tm_params->three_Spline_TH_Delta1, '/');
- print_q("3Spline_TH_Delta2", tm_params->three_Spline_TH_Delta2, '/');
- print_q("3Spline_enable_Strength", tm_params->three_Spline_enable_Strength, '/');
+ print_int("3Spline_TH_mode", tm_params->three_Spline_TH_mode[j]);
+ if (tm_params->three_Spline_TH_mode[j] == 0 || tm_params->three_Spline_TH_mode[j] == 2) {
+ print_q("3Spline_TH_enable_MB", tm_params->three_Spline_TH_enable_MB[j], '/');
+ }
+ print_q("3Spline_TH_enable", tm_params->three_Spline_TH_enable[j], '/');
+ print_q("3Spline_TH_Delta1", tm_params->three_Spline_TH_Delta1[j], '/');
+ print_q("3Spline_TH_Delta2", tm_params->three_Spline_TH_Delta2[j], '/');
+ print_q("3Spline_enable_Strength", tm_params->three_Spline_enable_Strength[j], '/');
}
}
}
diff --git a/libavcodec/dynamic_hdr_vivid.c b/libavcodec/dynamic_hdr_vivid.c
index d689669dec..f7a41ed2d5 100644
--- a/libavcodec/dynamic_hdr_vivid.c
+++ b/libavcodec/dynamic_hdr_vivid.c
@@ -101,23 +101,21 @@ int ff_parse_itu_t_t35_to_dynamic_hdr_vivid(AVDynamicHDRVivid *s, const uint8_t
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_TH_mode))
+ 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) {
+ tm_params->three_Spline_TH_mode[j] = get_bits(gb, 2);
+ if (tm_params->three_Spline_TH_mode[j] == 0 || tm_params->three_Spline_TH_mode[j] == 2) {
if (get_bits_left(gb) < 8)
return AVERROR_INVALIDDATA;
- tm_params->three_Spline_TH_enable_MB = (AVRational){get_bits(gb, 8), 255};
+ tm_params->three_Spline_TH_enable_MB[j] = (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};
+ tm_params->three_Spline_TH_enable[j] = (AVRational){get_bits(gb, 12), 4095};
+ tm_params->three_Spline_TH_Delta1[j] = (AVRational){get_bits(gb, 10), 1023};
+ tm_params->three_Spline_TH_Delta2[j] = (AVRational){get_bits(gb, 10), 1023};
+ tm_params->three_Spline_enable_Strength[j] = (AVRational){get_bits(gb, 8), 255};
}
- } else {
- tm_params->three_Spline_num = 1;
- tm_params->three_Spline_TH_mode = 0;
}
-
}
}
}
diff --git a/libavfilter/vf_showinfo.c b/libavfilter/vf_showinfo.c
index e55625b338..05829289a5 100644
--- a/libavfilter/vf_showinfo.c
+++ b/libavfilter/vf_showinfo.c
@@ -354,19 +354,20 @@ static void dump_dynamic_hdr_vivid(AVFilterContext *ctx, AVFrameSideData *sd)
av_log(ctx, AV_LOG_INFO, "3Spline_enable_flag[%d][%d]: %d, ",
w, i, tm_params->three_Spline_enable_flag);
if (tm_params->three_Spline_enable_flag) {
- av_log(ctx, AV_LOG_INFO, "3Spline_TH_mode[%d][%d]: %d, ", w, i, tm_params->three_Spline_TH_mode);
-
for (int j = 0; j < tm_params->three_Spline_num; j++) {
- av_log(ctx, AV_LOG_INFO, "3Spline_TH_enable_MB[%d][%d][%d]: %.4f, ",
- w, i, j, av_q2d(tm_params->three_Spline_TH_enable_MB));
+ av_log(ctx, AV_LOG_INFO, "3Spline_TH_mode[%d][%d]: %d, ", w, i, tm_params->three_Spline_TH_mode[j]);
+ if (tm_params->three_Spline_TH_mode[j] == 0 || tm_params->three_Spline_TH_mode[j] == 2) {
+ av_log(ctx, AV_LOG_INFO, "3Spline_TH_enable_MB[%d][%d][%d]: %.4f, ",
+ w, i, j, av_q2d(tm_params->three_Spline_TH_enable_MB[j]));
+ }
av_log(ctx, AV_LOG_INFO, "3Spline_TH_enable[%d][%d][%d]: %.4f, ",
- w, i, j, av_q2d(tm_params->three_Spline_TH_enable));
+ w, i, j, av_q2d(tm_params->three_Spline_TH_enable[j]));
av_log(ctx, AV_LOG_INFO, "3Spline_TH_Delta1[%d][%d][%d]: %.4f, ",
- w, i, j, av_q2d(tm_params->three_Spline_TH_Delta1));
+ w, i, j, av_q2d(tm_params->three_Spline_TH_Delta1[j]));
av_log(ctx, AV_LOG_INFO, "3Spline_TH_Delta2[%d][%d][%d]: %.4f, ",
- w, i, j, av_q2d(tm_params->three_Spline_TH_Delta2));
+ w, i, j, av_q2d(tm_params->three_Spline_TH_Delta2[j]));
av_log(ctx, AV_LOG_INFO, "3Spline_enable_Strength[%d][%d][%d]: %.4f, ",
- w, i, j, av_q2d(tm_params->three_Spline_enable_Strength));
+ w, i, j, av_q2d(tm_params->three_Spline_enable_Strength[j]));
}
}
}
diff --git a/libavutil/hdr_dynamic_vivid_metadata.h b/libavutil/hdr_dynamic_vivid_metadata.h
index a34f83072c..4ceddc539d 100644
--- a/libavutil/hdr_dynamic_vivid_metadata.h
+++ b/libavutil/hdr_dynamic_vivid_metadata.h
@@ -126,42 +126,42 @@ typedef struct AVHDRVividColorToneMappingParams {
* The mode of three Spline. the value shall be in the range
* of 0 to 3, inclusive.
*/
- int three_Spline_TH_mode;
+ int three_Spline_TH_mode[2];
/**
* three_Spline_TH_enable_MB is in the range of 0.0 to 1.0, inclusive
* and in multiples of 1.0/255.
*
*/
- AVRational three_Spline_TH_enable_MB;
+ AVRational three_Spline_TH_enable_MB[2];
/**
* 3Spline_TH_enable of three Spline.
* The value shall be in the range of 0.0 to 1.0, inclusive.
* and in multiples of 1.0/4095.
*/
- AVRational three_Spline_TH_enable;
+ AVRational three_Spline_TH_enable[2];
/**
* 3Spline_TH_Delta1 of three Spline.
* The value shall be in the range of 0.0 to 0.25, inclusive,
* and in multiples of 0.25/1023.
*/
- AVRational three_Spline_TH_Delta1;
+ AVRational three_Spline_TH_Delta1[2];
/**
* 3Spline_TH_Delta2 of three Spline.
* The value shall be in the range of 0.0 to 0.25, inclusive,
* and in multiples of 0.25/1023.
*/
- AVRational three_Spline_TH_Delta2;
+ AVRational three_Spline_TH_Delta2[2];
/**
* 3Spline_enable_Strength of three Spline.
* The value shall be in the range of 0.0 to 1.0, inclusive,
* and in multiples of 1.0/255.
*/
- AVRational three_Spline_enable_Strength;
+ AVRational three_Spline_enable_Strength[2];
} AVHDRVividColorToneMappingParams;
--
2.25.1
More information about the ffmpeg-devel
mailing list