This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

commit 7e045dfbfcb20111296897583bda74eefbf55595
Author:     Marvin Scholz <[email protected]>
AuthorDate: Tue Apr 21 20:43:32 2026 +0200
Commit:     Marvin Scholz <[email protected]>
CommitDate: Wed May 13 15:19:11 2026 +0200

    ffprobe: implement printing IAMF frame side data
---
 fftools/ffprobe.c | 29 ++++++++++++++++++++++++-----
 1 file changed, 24 insertions(+), 5 deletions(-)

diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c
index e7c0b0d4e6..b231d6ba71 100644
--- a/fftools/ffprobe.c
+++ b/fftools/ffprobe.c
@@ -1402,6 +1402,9 @@ static void show_subtitle(AVTextFormatContext *tfc, 
AVSubtitle *sub, AVStream *s
     fflush(stdout);
 }
 
+static void print_iamf_param_definition(AVTextFormatContext *tfc, const char 
*name,
+                                        const AVIAMFParamDefinition *param, 
SectionID section_id);
+
 static void print_frame_side_data(AVTextFormatContext *tfc,
                                   const AVFrame *frame,
                                   const AVStream *stream)
@@ -1464,6 +1467,11 @@ static void print_frame_side_data(AVTextFormatContext 
*tfc,
             print_int("view_id", *(int*)sd->data);
         } else if (sd->type == AV_FRAME_DATA_EXIF) {
             print_int("size", sd->size);
+        } else if (sd->type == AV_FRAME_DATA_IAMF_MIX_GAIN_PARAM ||
+            sd->type == AV_FRAME_DATA_IAMF_DEMIXING_INFO_PARAM ||
+            sd->type == AV_FRAME_DATA_IAMF_RECON_GAIN_INFO_PARAM) {
+            const AVIAMFParamDefinition *param = (AVIAMFParamDefinition 
*)sd->data;
+            print_iamf_param_definition(tfc, NULL, param, 
SECTION_ID_FRAME_SIDE_DATA);
         }
         avtext_print_section_footer(tfc);
     }
@@ -2155,12 +2163,21 @@ static void 
print_iamf_param_definition(AVTextFormatContext *tfc, const char *na
                                         const AVIAMFParamDefinition *param, 
SectionID section_id)
 {
     SectionID subsection_id, parameter_section_id;
-    av_assert0(sections[section_id].children_ids[0] != -1);
-    subsection_id = sections[section_id].children_ids[0];
+    if (section_id == SECTION_ID_FRAME_SIDE_DATA)
+        subsection_id = SECTION_ID_FRAME_SIDE_DATA_COMPONENT_LIST;
+    else {
+        av_assert0(sections[section_id].children_ids[0] != -1);
+        subsection_id = sections[section_id].children_ids[0];
+    }
     av_assert0(sections[subsection_id].children_ids[0] != -1);
     parameter_section_id = sections[subsection_id].children_ids[0];
-    avtext_print_section_header(tfc, "IAMF Param Definition", section_id);
-    print_str("name",           name);
+
+    // When printing as part of side-data, skip opening a section
+    if (section_id != SECTION_ID_FRAME_SIDE_DATA)
+        avtext_print_section_header(tfc, "IAMF Param Definition", section_id);
+
+    if (name)
+        print_str("name",           name);
     print_int("nb_subblocks",   param->nb_subblocks);
     print_int("type",           param->type);
     print_int("parameter_id",   param->parameter_id);
@@ -2203,7 +2220,9 @@ static void 
print_iamf_param_definition(AVTextFormatContext *tfc, const char *na
     }
     if (param->nb_subblocks > 0)
         avtext_print_section_footer(tfc); // subsection_id
-    avtext_print_section_footer(tfc); // section_id
+
+    if (section_id != SECTION_ID_FRAME_SIDE_DATA)
+        avtext_print_section_footer(tfc); // section_id
 }
 
 static void print_iamf_audio_element_params(AVTextFormatContext *tfc, const 
AVStreamGroup *stg,

_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to