PR #23453 opened by Marvin Scholz (ePirat) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23453 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23453.patch
# Summary of changes This adds logging of IAMF side-data to the showinfo filter, making debugging per-frame IAMF side-data much easier as it flows through filters. >From cd56e19b40028a04730cd4a2fcbfe07cf1831c04 Mon Sep 17 00:00:00 2001 From: Marvin Scholz <[email protected]> Date: Tue, 2 Jun 2026 14:49:01 +0200 Subject: [PATCH] lavfi: af_showinfo: add support for IAMF side-data --- libavfilter/af_ashowinfo.c | 85 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/libavfilter/af_ashowinfo.c b/libavfilter/af_ashowinfo.c index ebcd5c996f..c0be37cd3d 100644 --- a/libavfilter/af_ashowinfo.c +++ b/libavfilter/af_ashowinfo.c @@ -29,6 +29,7 @@ #include "libavutil/attributes.h" #include "libavutil/channel_layout.h" #include "libavutil/downmix_info.h" +#include "libavutil/iamf.h" #include "libavutil/mem.h" #include "libavutil/replaygain.h" #include "libavutil/timestamp.h" @@ -165,6 +166,85 @@ static void dump_audio_service_type(AVFilterContext *ctx, AVFrameSideData *sd) } } +static void dump_iamf_parameter_definition(AVFilterContext *ctx, const AVFrameSideData *sd) +{ + const AVIAMFParamDefinition *param = (AVIAMFParamDefinition *)sd->data; + + switch (param->type) { + case AV_IAMF_PARAMETER_DEFINITION_MIX_GAIN: + av_log(ctx, AV_LOG_INFO, "iamf mix gain parameters: "); + break; + case AV_IAMF_PARAMETER_DEFINITION_DEMIXING: + av_log(ctx, AV_LOG_INFO, "iamf demixing parameters: "); + break; + case AV_IAMF_PARAMETER_DEFINITION_RECON_GAIN: + av_log(ctx, AV_LOG_INFO, "iamf recon gain parameters: "); + break; + default: + av_log(ctx, AV_LOG_ERROR, "unknown iamf parameter definition type: %d", + param->type); + return; + } + + av_log(ctx, AV_LOG_INFO, + "nb_subblocks=%d, " + "parameter_id=%d, " + "parameter_rate=%d, " + "duration=%d, " + "constant_subblock_duration=%d,", + param->nb_subblocks, + param->parameter_id, + param->parameter_rate, + param->duration, + param->constant_subblock_duration + ); + + for (unsigned i = 0; i < param->nb_subblocks; i++) { + const void *subblock = av_iamf_param_definition_get_subblock(param, i); + + av_log(ctx, AV_LOG_INFO, " subblock[%d]={ ", i); + switch (param->type) { + case AV_IAMF_PARAMETER_DEFINITION_MIX_GAIN: { + const AVIAMFMixGain *mix = subblock; + av_log(ctx, AV_LOG_INFO, + "subblock_duration=%d, " + "animation_type=%d, " + "start_point_value=%d/%d, " + "end_point_value=%d/%d, " + "control_point_value=%d/%d, " + "control_point_relative_time=%d/%d", + mix->subblock_duration, + mix->animation_type, + mix->start_point_value.num, mix->start_point_value.den, + mix->end_point_value.num, mix->end_point_value.den, + mix->control_point_value.num, mix->control_point_value.den, + mix->control_point_relative_time.num, mix->control_point_relative_time.den + ); + break; + } + case AV_IAMF_PARAMETER_DEFINITION_DEMIXING: { + const AVIAMFDemixingInfo *demix = subblock; + av_log(ctx, AV_LOG_INFO, + "subblock_duration=%d, " + "dmixp_mode=%d", + demix->subblock_duration, + demix->dmixp_mode + ); + break; + } + case AV_IAMF_PARAMETER_DEFINITION_RECON_GAIN: { + const AVIAMFReconGain *recon = subblock; + av_log(ctx, AV_LOG_INFO, + "subblock_duration=%d", recon->subblock_duration + ); + break; + } + } + av_log(ctx, AV_LOG_INFO, (i == param->nb_subblocks - 1) ? " }" : " },"); + } + +} + static void dump_unknown(AVFilterContext *ctx, AVFrameSideData *sd) { av_log(ctx, AV_LOG_INFO, "unknown side data type: %d, size " @@ -224,6 +304,11 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf) case AV_FRAME_DATA_DOWNMIX_INFO: dump_downmix (ctx, sd); break; case AV_FRAME_DATA_REPLAYGAIN: dump_replaygain(ctx, sd); break; case AV_FRAME_DATA_AUDIO_SERVICE_TYPE: dump_audio_service_type(ctx, sd); break; + case AV_FRAME_DATA_IAMF_DEMIXING_INFO_PARAM: + case AV_FRAME_DATA_IAMF_MIX_GAIN_PARAM: + case AV_FRAME_DATA_IAMF_RECON_GAIN_INFO_PARAM: + dump_iamf_parameter_definition(ctx, sd); + break; default: dump_unknown (ctx, sd); break; } -- 2.52.0 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
