Commit 3633db7232 for ffmpeg
commit 3633db723294adc5ca8e88fe44c3df14c9300d52
Author: Niklas Haas <git@haasn.dev>
Date: Fri Oct 2 16:34:04 2026 +0200
fftools/ffprobe: print gain map parameters
Signed-off-by: Niklas Haas <git@haasn.dev>
diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c
index a4130b6d60..0f71c3e6a7 100644
--- a/fftools/ffprobe.c
+++ b/fftools/ffprobe.c
@@ -1003,6 +1003,35 @@ static void print_ambient_viewing_environment(AVTextFormatContext *tfc,
print_q("ambient_light_y", env->ambient_light_y, '/');
}
+static void print_gain_map_params(AVTextFormatContext *tfc,
+ const AVGainMapParams *p)
+{
+ const char *const channel_names[] = { "R", "G", "B" };
+
+ print_int("version", p->version);
+ print_int("use_base_color_space", p->use_base_color_space);
+ print_q("base_hdr_headroom", p->base_hdr_headroom, '/');
+ print_q("alternate_hdr_headroom", p->alternate_hdr_headroom, '/');
+ if (!(p->nb_channels == 1 || p->nb_channels == 3))
+ return;
+
+ avtext_print_section_header(tfc, NULL, SECTION_ID_FRAME_SIDE_DATA_COMPONENT_LIST);
+ for (int c = 0; c < p->nb_channels; c++) {
+ const struct AVGainMapChannel *ch = &p->channels[c];
+ const char *comp_name = p->nb_channels == 1 ? "RGB" : channel_names[c];
+ avtext_print_section_header(tfc, comp_name, SECTION_ID_FRAME_SIDE_DATA_COMPONENT);
+ print_q("gain_map_min", ch->gain_map_min, '/');
+ print_q("gain_map_max", ch->gain_map_max, '/');
+ print_q("gamma", ch->gamma, '/');
+ print_q("base_offset", ch->base_offset, '/');
+ print_q("alternate_offset", ch->alternate_offset, '/');
+ // SECTION_ID_FRAME_SIDE_DATA_COMPONENT
+ avtext_print_section_footer(tfc);
+ }
+ // SECTION_ID_FRAME_SIDE_DATA_COMPONENT_LIST
+ avtext_print_section_footer(tfc);
+}
+
static void print_film_grain_params(AVTextFormatContext *tfc,
const AVFilmGrainParams *fgp)
{
@@ -1576,6 +1605,9 @@ static void print_frame_side_data(AVTextFormatContext *tfc,
} else if (sd->type == AV_FRAME_DATA_FILM_GRAIN_PARAMS) {
AVFilmGrainParams *fgp = (AVFilmGrainParams *)sd->data;
print_film_grain_params(tfc, fgp);
+ } else if (sd->type == AV_FRAME_DATA_GAIN_MAP_PARAMS &&
+ sd->size >= sizeof(AVGainMapParams)) {
+ print_gain_map_params(tfc, (const AVGainMapParams *)sd->data);
} else if (sd->type == AV_FRAME_DATA_VIEW_ID) {
print_int("view_id", *(int*)sd->data);
} else if (sd->type == AV_FRAME_DATA_EXIF) {