PR #23425 opened by James Almer (jamrial)
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23425
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23425.patch


>From 5ba0d8a0a175919a62693a8adf0dc74ff6699722 Mon Sep 17 00:00:00 2001
From: James Almer <[email protected]>
Date: Tue, 9 Jun 2026 20:13:32 -0300
Subject: [PATCH] avformat/matroskaenc: write LCEVC payloads as ITU-T T35 block
 additional

Signed-off-by: James Almer <[email protected]>
---
 libavformat/matroskaenc.c | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index c9386db6a0..5e0c7a1b36 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -2879,7 +2879,7 @@ static int mkv_write_block(void *logctx, 
MatroskaMuxContext *mkv,
     // and BlockAdditions with three elements per BlockMore
     // Don't forget to increment the number of BlockMore when adding
     // support for writing a new blockadditional.
-    EBML_WRITER(5 + (1 + 3 * 3));
+    EBML_WRITER(5 + (1 + 4 * 3));
     int ret;
 
     mkv->cur_block.track  = track;
@@ -2987,6 +2987,26 @@ static int mkv_write_block(void *logctx, 
MatroskaMuxContext *mkv,
             track->max_blockaddid = FFMAX(track->max_blockaddid,
                                           MATROSKA_BLOCK_ADD_ID_ITU_T_T35);
         }
+        side_data = av_packet_get_side_data(pkt, AV_PKT_DATA_LCEVC,
+                                            &side_data_size);
+        if (side_data) {
+            size_t payload_size = side_data_size + 4;
+            uint8_t *payload = av_malloc(payload_size);
+
+            if (!payload)
+                return ret;
+
+            AV_WB8 (payload + 0, ITU_T_T35_COUNTRY_CODE_UK);
+            AV_WB8 (payload + 1, 0); // t35_uk_country_code_second_octet
+            AV_WB16(payload + 2, ITU_T_T35_PROVIDER_CODE_VNOVA);
+            memcpy (payload + 4, side_data, side_data_size);
+
+            mkv_write_blockadditional(&writer, payload, payload_size,
+                                      MATROSKA_BLOCK_ADD_ID_ITU_T_T35);
+            track->max_blockaddid = FFMAX(track->max_blockaddid,
+                                          MATROSKA_BLOCK_ADD_ID_ITU_T_T35);
+            av_free(payload);
+        }
     }
 
     ebml_writer_close_or_discard_master(&writer);
-- 
2.52.0

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

Reply via email to