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

Git pushed a commit to branch master
in repository ffmpeg.

commit 523b9faa945bf8a69295548389c3c0151cb09251
Author:     Romain Beauxis <[email protected]>
AuthorDate: Wed Apr 22 10:03:48 2026 -0500
Commit:     toots <[email protected]>
CommitDate: Sat May 30 17:37:28 2026 +0000

    avformat/matroskadec: parse hvcE block addition mapping as 
AV_PKT_DATA_HEVC_CONF
    
    Handle MATROSKA_BLOCK_ADD_ID_TYPE_HVCE in mkv_parse_block_addition_mappings
    and store the raw HEVCDecoderConfigurationRecord as
    AV_PKT_DATA_HEVC_CONF on the stream's coded side data, mirroring
    the existing dvcC/dvvC handling.
---
 libavformat/matroskadec.c                  | 25 +++++++++++++++++++++++++
 tests/ref/fate/matroska-dovi-hvce-mkv-read |  3 +++
 tests/ref/fate/mov-dovi-hvce-mkv-to-mp4    |  7 +++++--
 3 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index bc584abc75..7e125bf61a 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -2503,6 +2503,26 @@ static int mkv_parse_dvcc_dvvc(AVFormatContext *s, 
AVStream *st, const MatroskaT
     return ff_isom_parse_dvcc_dvvc(s, st, bin->data, bin->size);
 }
 
+static int mkv_parse_hvce(AVFormatContext *s, AVStream *st, EbmlBin *bin)
+{
+    AVPacketSideData *sd;
+
+    if (bin->size < 23) {
+        av_log(s, AV_LOG_ERROR, "Invalid hvcE size %d\n", bin->size);
+        return AVERROR_INVALIDDATA;
+    }
+
+    sd = av_packet_side_data_new(&st->codecpar->coded_side_data,
+                                 &st->codecpar->nb_coded_side_data,
+                                 AV_PKT_DATA_HEVC_CONF,
+                                 bin->size, 0);
+    if (!sd)
+        return AVERROR(ENOMEM);
+
+    memcpy(sd->data, bin->data, bin->size);
+    return 0;
+}
+
 static int mkv_parse_block_addition_mappings(AVFormatContext *s, AVStream *st, 
MatroskaTrack *track)
 {
     const EbmlList *mappings_list = &track->block_addition_mappings;
@@ -2537,6 +2557,11 @@ static int 
mkv_parse_block_addition_mappings(AVFormatContext *s, AVStream *st, M
             if ((ret = mkv_parse_dvcc_dvvc(s, st, track, &mapping->extradata)) 
< 0)
                 return ret;
 
+            break;
+        case MATROSKA_BLOCK_ADD_ID_TYPE_HVCE:
+            if ((ret = mkv_parse_hvce(s, st, &mapping->extradata)) < 0)
+                return ret;
+
             break;
         default:
             av_log(s, AV_LOG_DEBUG,
diff --git a/tests/ref/fate/matroska-dovi-hvce-mkv-read 
b/tests/ref/fate/matroska-dovi-hvce-mkv-read
index cc826b8f81..0bf9adffbf 100644
--- a/tests/ref/fate/matroska-dovi-hvce-mkv-read
+++ b/tests/ref/fate/matroska-dovi-hvce-mkv-read
@@ -11,4 +11,7 @@ bl_present_flag=1
 dv_bl_signal_compatibility_id=6
 dv_md_compression=none
 [/SIDE_DATA]
+[SIDE_DATA]
+side_data_type=HEVC enhancement-layer decoder configuration
+[/SIDE_DATA]
 [/STREAM]
diff --git a/tests/ref/fate/mov-dovi-hvce-mkv-to-mp4 
b/tests/ref/fate/mov-dovi-hvce-mkv-to-mp4
index 7189621216..080b01cd88 100644
--- a/tests/ref/fate/mov-dovi-hvce-mkv-to-mp4
+++ b/tests/ref/fate/mov-dovi-hvce-mkv-to-mp4
@@ -1,5 +1,5 @@
-cf2732a0d8f93e0a8695c1a1c7979b01 *tests/data/fate/mov-dovi-hvce-mkv-to-mp4.mp4
-667954 tests/data/fate/mov-dovi-hvce-mkv-to-mp4.mp4
+1d9ac9b893ed7e990b06fa13ebd97901 *tests/data/fate/mov-dovi-hvce-mkv-to-mp4.mp4
+668149 tests/data/fate/mov-dovi-hvce-mkv-to-mp4.mp4
 #extradata 0:      187, 0x34a930cb
 #tb 0: 1/16000
 #media_type 0: video
@@ -20,4 +20,7 @@ bl_present_flag=1
 dv_bl_signal_compatibility_id=6
 dv_md_compression=none
 [/SIDE_DATA]
+[SIDE_DATA]
+side_data_type=HEVC enhancement-layer decoder configuration
+[/SIDE_DATA]
 [/STREAM]

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

Reply via email to