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

Git pushed a commit to branch master
in repository ffmpeg.

The following commit(s) were added to refs/heads/master by this push:
     new f69aa0cc64 avcodec/aomenc: Handle Smpte2094App5 metadata
f69aa0cc64 is described below

commit f69aa0cc64980956d6a66e23c6a1003e7dc47653
Author:     Vignesh Venkat <[email protected]>
AuthorDate: Fri Feb 13 10:48:41 2026 -0800
Commit:     James Zern <[email protected]>
CommitDate: Wed May 13 19:13:23 2026 +0000

    avcodec/aomenc: Handle Smpte2094App5 metadata
    
    If packets contain Smpte2094App5 metadata, pass it to
    the libaom encoder.
    
    Signed-off-by: Vignesh Venkat <[email protected]>
---
 libavcodec/libaomenc.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
 libavcodec/version.h   |  2 +-
 2 files changed, 50 insertions(+), 1 deletion(-)

diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
index 48ba4e1a9d..b6877401f0 100644
--- a/libavcodec/libaomenc.c
+++ b/libavcodec/libaomenc.c
@@ -372,6 +372,51 @@ static int add_hdr_plus(AVCodecContext *avctx, struct 
aom_image *img, const AVFr
     return 0;
 }
 
+static int add_hdr_smpte2094_app5(AVCodecContext *avctx, struct aom_image *img,
+                                  const AVFrame *frame)
+{
+    AVFrameSideData *side_data =
+        av_frame_get_side_data(frame, 
AV_FRAME_DATA_DYNAMIC_HDR_SMPTE_2094_APP5);
+    if (!side_data)
+        return 0;
+
+    size_t payload_size;
+    AVDynamicHDRSmpte2094App5 *hdr = (AVDynamicHDRSmpte2094App5 
*)side_data->buf->data;
+    int res = av_dynamic_hdr_smpte2094_app5_to_t35(hdr, NULL, &payload_size);
+    if (res < 0) {
+        log_encoder_error(avctx, "Error finding the size of HDR 
SMPTE-2094-50");
+        return res;
+    }
+
+    uint8_t *hdr_buf;
+    // Extra bytes for the country code, provider code, provider oriented code.
+    const size_t hdr_buf_size = payload_size + 5;
+    hdr_buf = av_malloc(hdr_buf_size);
+    if (!hdr_buf)
+        return AVERROR(ENOMEM);
+
+    uint8_t *payload = hdr_buf;
+    bytestream_put_byte(&payload, ITU_T_T35_COUNTRY_CODE_US);
+    bytestream_put_be16(&payload, ITU_T_T35_PROVIDER_CODE_SMPTE);
+    bytestream_put_be16(&payload, 0x0001); // provider_oriented_code
+
+    res = av_dynamic_hdr_smpte2094_app5_to_t35(hdr, &payload, &payload_size);
+    if (res < 0) {
+        av_free(hdr_buf);
+        log_encoder_error(avctx, "Error encoding HDR SMPTE-2094-50 from side 
data");
+        return res;
+    }
+
+    res = aom_img_add_metadata(img, OBU_METADATA_TYPE_ITUT_T35,
+                               hdr_buf, hdr_buf_size, AOM_MIF_ANY_FRAME);
+    av_free(hdr_buf);
+    if (res < 0) {
+        log_encoder_error(avctx, "Error adding HDR SMPTE-2094-50 to aom_img");
+        return res;
+    }
+    return 0;
+}
+
 #if defined(AOM_CTRL_AV1E_GET_NUM_OPERATING_POINTS) && \
     defined(AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX) && \
     defined(AOM_CTRL_AV1E_GET_TARGET_SEQ_LEVEL_IDX)
@@ -1324,6 +1369,10 @@ static int aom_encode(AVCodecContext *avctx, AVPacket 
*pkt,
         res = add_hdr_plus(avctx, rawimg, frame);
         if (res < 0)
             return res;
+
+        res = add_hdr_smpte2094_app5(avctx, rawimg, frame);
+        if (res < 0)
+            return res;
     }
 
     res = aom_codec_encode(&ctx->encoder, rawimg, timestamp, duration, flags);
diff --git a/libavcodec/version.h b/libavcodec/version.h
index 497389d3f3..56dbb9238d 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -29,7 +29,7 @@
 
 #include "version_major.h"
 
-#define LIBAVCODEC_VERSION_MINOR  31
+#define LIBAVCODEC_VERSION_MINOR  32
 #define LIBAVCODEC_VERSION_MICRO 100
 
 #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \

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

Reply via email to