Commit 409351e5eb for ffmpeg
commit 409351e5ebff92ffc93b31159805d0e908788b95
Author: James Almer <jamrial@gmail.com>
Date: Mon Oct 5 17:57:27 2026 -0300
avformat/dump: print Gain Map Parameters side data
Signed-off-by: James Almer <jamrial@gmail.com>
diff --git a/libavformat/dump.c b/libavformat/dump.c
index 0f2eef33c9..c2f9fc6f7b 100644
--- a/libavformat/dump.c
+++ b/libavformat/dump.c
@@ -25,6 +25,7 @@
#include "libavutil/avstring.h"
#include "libavutil/channel_layout.h"
#include "libavutil/display.h"
+#include "libavutil/gain_map.h"
#include "libavutil/iamf.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/log.h"
@@ -468,6 +469,33 @@ static void dump_tdrdi(void *ctx, const AVPacketSideData *sd, int log_level)
av_log(ctx, log_level, "number of reference displays: %u", tdrdi->num_ref_displays);
}
+static void dump_gain_map_params(void *ctx, const AVPacketSideData *sd, int log_level)
+{
+ const AVGainMapParams *p = (const AVGainMapParams *) sd->data;
+
+ av_log(ctx, log_level, "version=%d, nb_channels=%d, use_base_color_space=%d, "
+ "base_hdr_headroom=%f, alternate_hdr_headroom=%f, channels={ ",
+ p->version, p->nb_channels, p->use_base_color_space,
+ av_q2d(p->base_hdr_headroom), av_q2d(p->alternate_hdr_headroom));
+
+ if (!(p->nb_channels == 1 || p->nb_channels == 3)) {
+ av_log(ctx, AV_LOG_ERROR, "invalid data }\n");
+ return;
+ }
+
+ for (int c = 0; c < p->nb_channels; c++) {
+ const struct AVGainMapChannel *ch = &p->channels[c];
+ av_log(ctx, log_level,
+ "{ gain_map_min=%f, gain_map_max=%f, gamma=%f, "
+ "base_offset=%f, alternate_offset=%f } ",
+ av_q2d(ch->gain_map_min), av_q2d(ch->gain_map_max),
+ av_q2d(ch->gamma), av_q2d(ch->base_offset),
+ av_q2d(ch->alternate_offset));
+ }
+
+ av_log(ctx, log_level, "}");
+}
+
static void dump_sidedata(void *ctx, const AVPacketSideData *side_data, int nb_side_data,
int w, int h, AVRational avg_frame_rate,
const char *indent, int log_level)
@@ -532,6 +560,9 @@ static void dump_sidedata(void *ctx, const AVPacketSideData *side_data, int nb_s
case AV_PKT_DATA_3D_REFERENCE_DISPLAYS:
dump_tdrdi(ctx, sd, log_level);
break;
+ case AV_PKT_DATA_GAIN_MAP_PARAMS:
+ dump_gain_map_params(ctx, sd, log_level);
+ break;
default:
if (name)
av_log(ctx, log_level, "(%zu bytes)", sd->size);