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

The specification for H.26{4,5,6} states that start codes are 3 bytes long 
except for the first NALU in an AU, and for NALUs of parameter set types, as 
checked by ff_cbs_h2645_unit_requires_zero_byte(), which is made available 
outside of CBS for this change.


>From a3b102f171c3c293f7f9fd5c5446bf3274d7a208 Mon Sep 17 00:00:00 2001
From: James Almer <[email protected]>
Date: Fri, 13 Mar 2026 11:47:44 -0300
Subject: [PATCH] avcodec/bsf/extract_extradata: write correct length start
 codes for h26x

The specification for H.26{4,5,6} states that start codes are 3 bytes long 
except
for the first NALU in an AU, and for NALUs of parameter set types, as checked by
ff_cbs_h2645_unit_requires_zero_byte(), which is made available outside of CBS
for this change.

Signed-off-by: James Almer <[email protected]>
---
 libavcodec/bsf/extract_extradata.c           | 12 ++++++++++--
 libavcodec/cbs_h2645.c                       | 20 +-------------------
 libavcodec/cbs_h2645.h                       |  4 ----
 libavcodec/h2645_parse.c                     | 18 ++++++++++++++++++
 libavcodec/h2645_parse.h                     |  4 ++++
 tests/fate/hevc.mak                          |  2 +-
 tests/ref/fate/copy-trac2211-avi             |  4 ++--
 tests/ref/fate/enhanced-flv-hevc-hdr10       |  4 ++--
 tests/ref/fate/enhanced-flv-vvc              |  6 +++---
 tests/ref/fate/h264-bsf-dts2pts              |  6 +++---
 tests/ref/fate/h264_mp4toannexb_ticket2991   |  2 +-
 tests/ref/fate/h264_mp4toannexb_ticket5927   |  2 +-
 tests/ref/fate/h264_mp4toannexb_ticket5927_2 |  2 +-
 tests/ref/fate/hevc-bsf-dts2pts-idr          |  6 +++---
 tests/ref/fate/hevc-bsf-dts2pts-idr-cra      |  6 +++---
 tests/ref/fate/hxvs-demux                    |  2 +-
 tests/ref/fate/matroska-h264-remux           |  4 ++--
 tests/ref/fate/segment-mp4-to-ts             |  2 +-
 tests/ref/fate/ts-small-demux                |  2 +-
 tests/ref/lavf-fate/h264.mp4                 |  4 ++--
 tests/ref/lavf-fate/hevc.mp4                 |  4 ++--
 tests/ref/lavf-fate/vvc.mkv                  |  4 ++--
 tests/ref/lavf-fate/vvc.mp4                  |  4 ++--
 23 files changed, 66 insertions(+), 58 deletions(-)

diff --git a/libavcodec/bsf/extract_extradata.c 
b/libavcodec/bsf/extract_extradata.c
index 1532eb6a7d..e2626f4315 100644
--- a/libavcodec/bsf/extract_extradata.c
+++ b/libavcodec/bsf/extract_extradata.c
@@ -181,6 +181,7 @@ static int extract_extradata_h2645(AVBSFContext *ctx, 
AVPacket *pkt,
     int extradata_size = 0, filtered_size = 0;
     const int *extradata_nal_types;
     size_t nb_extradata_nal_types;
+    int extradata_nb_nals = 0, filtered_nb_nals = 0;
     int i, has_sps = 0, has_vps = 0, ret = 0;
 
     if (ctx->par_in->codec_id == AV_CODEC_ID_VVC) {
@@ -202,7 +203,8 @@ static int extract_extradata_h2645(AVBSFContext *ctx, 
AVPacket *pkt,
     for (i = 0; i < s->h2645_pkt.nb_nals; i++) {
         H2645NAL *nal = &s->h2645_pkt.nals[i];
         if (val_in_array(extradata_nal_types, nb_extradata_nal_types, 
nal->type)) {
-            extradata_size += nal->raw_size + 3;
+            extradata_size += nal->raw_size + 3 +
+                              
ff_h2645_unit_requires_zero_byte(ctx->par_in->codec_id, nal->type, 
extradata_nb_nals++);
             if (ctx->par_in->codec_id == AV_CODEC_ID_VVC) {
                 if (nal->type == VVC_SPS_NUT) has_sps = 1;
                 if (nal->type == VVC_VPS_NUT) has_vps = 1;
@@ -213,7 +215,8 @@ static int extract_extradata_h2645(AVBSFContext *ctx, 
AVPacket *pkt,
                 if (nal->type == H264_NAL_SPS) has_sps = 1;
             }
         } else if (s->remove) {
-            filtered_size += nal->raw_size + 3;
+            filtered_size += nal->raw_size + 3 +
+                             
ff_h2645_unit_requires_zero_byte(ctx->par_in->codec_id, nal->type, 
filtered_nb_nals++);
         }
     }
 
@@ -246,13 +249,18 @@ static int extract_extradata_h2645(AVBSFContext *ctx, 
AVPacket *pkt,
         if (s->remove)
             bytestream2_init_writer(&pb_filtered_data, filtered_buf->data, 
filtered_size);
 
+        extradata_nb_nals = filtered_nb_nals = 0;
         for (i = 0; i < s->h2645_pkt.nb_nals; i++) {
             H2645NAL *nal = &s->h2645_pkt.nals[i];
             if (val_in_array(extradata_nal_types, nb_extradata_nal_types,
                              nal->type)) {
+                if (ff_h2645_unit_requires_zero_byte(ctx->par_in->codec_id, 
nal->type, extradata_nb_nals++))
+                    bytestream2_put_byteu(&pb_extradata, 0); // zero_byte
                 bytestream2_put_be24u(&pb_extradata, 1); //startcode
                 bytestream2_put_bufferu(&pb_extradata, nal->raw_data, 
nal->raw_size);
             } else if (s->remove) {
+                if (ff_h2645_unit_requires_zero_byte(ctx->par_in->codec_id, 
nal->type, filtered_nb_nals++))
+                    bytestream2_put_byteu(&pb_filtered_data, 0); // zero_byte
                 bytestream2_put_be24u(&pb_filtered_data, 1); // startcode
                 bytestream2_put_bufferu(&pb_filtered_data, nal->raw_data, 
nal->raw_size);
             }
diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c
index bcf6144046..61b70f4118 100644
--- a/libavcodec/cbs_h2645.c
+++ b/libavcodec/cbs_h2645.c
@@ -320,24 +320,6 @@ int ff_cbs_h2645_write_slice_data(CodedBitstreamContext 
*ctx,
     return 0;
 }
 
-int ff_cbs_h2645_unit_requires_zero_byte(enum AVCodecID codec_id,
-                                             CodedBitstreamUnitType type,
-                                             int nal_unit_index)
-{
-    // Section B.1.2 in H.264, section B.2.2 in H.265, H.266.
-    if (nal_unit_index == 0) {
-        // Assume that this is the first NAL unit in an access unit.
-        return 1;
-    }
-    if (codec_id == AV_CODEC_ID_H264)
-        return type == H264_NAL_SPS || type == H264_NAL_PPS;
-    if (codec_id == AV_CODEC_ID_HEVC)
-        return type == HEVC_NAL_VPS || type == HEVC_NAL_SPS || type == 
HEVC_NAL_PPS;
-    if (codec_id == AV_CODEC_ID_VVC)
-        return type >= VVC_OPI_NUT && type <= VVC_SUFFIX_APS_NUT;
-    return 0;
-}
-
 int ff_cbs_h2645_assemble_fragment(CodedBitstreamContext *ctx,
                                        CodedBitstreamFragment *frag)
 {
@@ -372,7 +354,7 @@ int ff_cbs_h2645_assemble_fragment(CodedBitstreamContext 
*ctx,
                 frag->data_bit_padding = unit->data_bit_padding;
         }
 
-        if (ff_cbs_h2645_unit_requires_zero_byte(ctx->codec->codec_id, 
unit->type, i)) {
+        if (ff_h2645_unit_requires_zero_byte(ctx->codec->codec_id, unit->type, 
i)) {
             // zero_byte
             data[dp++] = 0;
         }
diff --git a/libavcodec/cbs_h2645.h b/libavcodec/cbs_h2645.h
index 2d117ae3e7..4b11845644 100644
--- a/libavcodec/cbs_h2645.h
+++ b/libavcodec/cbs_h2645.h
@@ -63,10 +63,6 @@ int ff_cbs_h2645_write_slice_data(CodedBitstreamContext *ctx,
                                   struct PutBitContext *pbc, const uint8_t 
*data,
                                   size_t data_size, int data_bit_start);
 
-int ff_cbs_h2645_unit_requires_zero_byte(enum AVCodecID codec_id,
-                                         CodedBitstreamUnitType type,
-                                         int nal_unit_index);
-
 int ff_cbs_h2645_assemble_fragment(CodedBitstreamContext *ctx,
                                    CodedBitstreamFragment *frag);
 
diff --git a/libavcodec/h2645_parse.c b/libavcodec/h2645_parse.c
index 659e818393..3c2b3aa889 100644
--- a/libavcodec/h2645_parse.c
+++ b/libavcodec/h2645_parse.c
@@ -664,6 +664,24 @@ int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t 
*buf, int length,
     return 0;
 }
 
+int ff_h2645_unit_requires_zero_byte(enum AVCodecID codec_id,
+                                     unsigned int type,
+                                     int nal_unit_index)
+{
+    // Section B.1.2 in H.264, section B.2.2 in H.265, H.266.
+    if (nal_unit_index == 0) {
+        // Assume that this is the first NAL unit in an access unit.
+        return 1;
+    }
+    if (codec_id == AV_CODEC_ID_H264)
+        return type == H264_NAL_SPS || type == H264_NAL_PPS;
+    if (codec_id == AV_CODEC_ID_HEVC)
+        return type == HEVC_NAL_VPS || type == HEVC_NAL_SPS || type == 
HEVC_NAL_PPS;
+    if (codec_id == AV_CODEC_ID_VVC)
+        return type >= VVC_OPI_NUT && type <= VVC_SUFFIX_APS_NUT;
+    return 0;
+}
+
 void ff_h2645_packet_uninit(H2645Packet *pkt)
 {
     int i;
diff --git a/libavcodec/h2645_parse.h b/libavcodec/h2645_parse.h
index e27ccf7523..0e1e950294 100644
--- a/libavcodec/h2645_parse.h
+++ b/libavcodec/h2645_parse.h
@@ -123,6 +123,10 @@ int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t 
*buf, int length,
  */
 void ff_h2645_packet_uninit(H2645Packet *pkt);
 
+int ff_h2645_unit_requires_zero_byte(enum AVCodecID codec_id,
+                                     unsigned int type,
+                                     int nal_unit_index);
+
 static inline int get_nalsize(int nal_length_size, const uint8_t *buf,
                               int buf_size, int *buf_index, void *logctx)
 {
diff --git a/tests/fate/hevc.mak b/tests/fate/hevc.mak
index 351f188968..bfad2d6419 100644
--- a/tests/fate/hevc.mak
+++ b/tests/fate/hevc.mak
@@ -233,7 +233,7 @@ FATE_HEVC-$(call DEMMUX, HEVC MOV, MOV HEVC, HEVC_PARSER 
HEVC_MP4TOANNEXB_BSF EX
 fate-hevc-bsf-mp4toannexb: tests/data/hevc-mp4.mov
 fate-hevc-bsf-mp4toannexb: CMD = md5 -i $(TARGET_PATH)/tests/data/hevc-mp4.mov 
-c:v copy -fflags +bitexact -f hevc
 fate-hevc-bsf-mp4toannexb: CMP = oneline
-fate-hevc-bsf-mp4toannexb: REF = 73019329ed7f81c24f9af67c34c640c0
+fate-hevc-bsf-mp4toannexb: REF = 02ed1cee38615f6fa3b7b10d15fca5b4
 
 # Start with IDR, POC < 0 after the second IDR
 FATE_HEVC-$(call FRAMECRC, MOV HEVC,, HEVC_PARSER MOV_MUXER DTS2PTS_BSF) += 
fate-hevc-bsf-dts2pts-idr
diff --git a/tests/ref/fate/copy-trac2211-avi b/tests/ref/fate/copy-trac2211-avi
index 06d81e537d..7459b1ec50 100644
--- a/tests/ref/fate/copy-trac2211-avi
+++ b/tests/ref/fate/copy-trac2211-avi
@@ -1,5 +1,5 @@
-0920978f3f8196413c43f0033b55a5b6 *tests/data/fate/copy-trac2211-avi.avi
-1777956 tests/data/fate/copy-trac2211-avi.avi
+ab1e2b88e25a8a65b0010ce9dc761f97 *tests/data/fate/copy-trac2211-avi.avi
+1777958 tests/data/fate/copy-trac2211-avi.avi
 #tb 0: 1/14
 #media_type 0: video
 #codec_id 0: rawvideo
diff --git a/tests/ref/fate/enhanced-flv-hevc-hdr10 
b/tests/ref/fate/enhanced-flv-hevc-hdr10
index 525f056d66..77a42ed624 100644
--- a/tests/ref/fate/enhanced-flv-hevc-hdr10
+++ b/tests/ref/fate/enhanced-flv-hevc-hdr10
@@ -1,4 +1,4 @@
-#extradata 0:      111, 0x091d1885
+#extradata 0:      113, 0x298d1887
 #tb 0: 1/1000
 #media_type 0: video
 #codec_id 0: hevc
@@ -17,7 +17,7 @@ best_effort_timestamp=0
 best_effort_timestamp_time=0.000000
 duration=N/A
 duration_time=N/A
-pkt_pos=459
+pkt_pos=461
 pkt_size=77718
 width=1280
 height=720
diff --git a/tests/ref/fate/enhanced-flv-vvc b/tests/ref/fate/enhanced-flv-vvc
index 329728037d..00bf6a3e55 100644
--- a/tests/ref/fate/enhanced-flv-vvc
+++ b/tests/ref/fate/enhanced-flv-vvc
@@ -1,6 +1,6 @@
-b4074094cb8c5152361a9fab71dca9e9 *tests/data/fate/enhanced-flv-vvc.flv
-90620 tests/data/fate/enhanced-flv-vvc.flv
-#extradata 0:      161, 0x98c53408
+bbff94332036f7f611f2530b4f3b0645 *tests/data/fate/enhanced-flv-vvc.flv
+90621 tests/data/fate/enhanced-flv-vvc.flv
+#extradata 0:      162, 0xc8c23409
 #tb 0: 1/1000
 #media_type 0: video
 #codec_id 0: vvc
diff --git a/tests/ref/fate/h264-bsf-dts2pts b/tests/ref/fate/h264-bsf-dts2pts
index f908bb44f5..9a8f1cd18f 100644
--- a/tests/ref/fate/h264-bsf-dts2pts
+++ b/tests/ref/fate/h264-bsf-dts2pts
@@ -1,6 +1,6 @@
-219edd347ce3151f5b5579d300cd7179 *tests/data/fate/h264-bsf-dts2pts.mov
-243937 tests/data/fate/h264-bsf-dts2pts.mov
-#extradata 0:       26, 0x75e2093d
+2c60a8ca0df36f999474b33005496e91 *tests/data/fate/h264-bsf-dts2pts.mov
+243938 tests/data/fate/h264-bsf-dts2pts.mov
+#extradata 0:       27, 0x7cb9093e
 #tb 0: 1/1200000
 #media_type 0: video
 #codec_id 0: h264
diff --git a/tests/ref/fate/h264_mp4toannexb_ticket2991 
b/tests/ref/fate/h264_mp4toannexb_ticket2991
index 9a1fbf2f8c..493d057e12 100644
--- a/tests/ref/fate/h264_mp4toannexb_ticket2991
+++ b/tests/ref/fate/h264_mp4toannexb_ticket2991
@@ -1,6 +1,6 @@
 b6ff5910928ad0b2a7eec481dcc41594 
*tests/data/fate/h264_mp4toannexb_ticket2991.h264
 1985815 tests/data/fate/h264_mp4toannexb_ticket2991.h264
-#extradata 0:       47, 0x3a590d55
+#extradata 0:       49, 0x459b0d55
 #tb 0: 1/1200000
 #media_type 0: video
 #codec_id 0: h264
diff --git a/tests/ref/fate/h264_mp4toannexb_ticket5927 
b/tests/ref/fate/h264_mp4toannexb_ticket5927
index eb0b5cf283..e65ba8dc1f 100644
--- a/tests/ref/fate/h264_mp4toannexb_ticket5927
+++ b/tests/ref/fate/h264_mp4toannexb_ticket5927
@@ -1,6 +1,6 @@
 edddeef7901b2bd8d55625b8105b579f 
*tests/data/fate/h264_mp4toannexb_ticket5927.h264
 595583 tests/data/fate/h264_mp4toannexb_ticket5927.h264
-#extradata 0:       33, 0x84e308f7
+#extradata 0:       35, 0x8c0208f7
 #tb 0: 1/1200000
 #media_type 0: video
 #codec_id 0: h264
diff --git a/tests/ref/fate/h264_mp4toannexb_ticket5927_2 
b/tests/ref/fate/h264_mp4toannexb_ticket5927_2
index 8c3613ee79..7a99faa535 100644
--- a/tests/ref/fate/h264_mp4toannexb_ticket5927_2
+++ b/tests/ref/fate/h264_mp4toannexb_ticket5927_2
@@ -1,6 +1,6 @@
 edddeef7901b2bd8d55625b8105b579f 
*tests/data/fate/h264_mp4toannexb_ticket5927_2.h264
 595583 tests/data/fate/h264_mp4toannexb_ticket5927_2.h264
-#extradata 0:       33, 0x84e308f7
+#extradata 0:       35, 0x8c0208f7
 #tb 0: 1/1200000
 #media_type 0: video
 #codec_id 0: h264
diff --git a/tests/ref/fate/hevc-bsf-dts2pts-idr 
b/tests/ref/fate/hevc-bsf-dts2pts-idr
index 9568a5932c..a7a7db85bc 100644
--- a/tests/ref/fate/hevc-bsf-dts2pts-idr
+++ b/tests/ref/fate/hevc-bsf-dts2pts-idr
@@ -1,6 +1,6 @@
-368d177821450241820bf3507d74b35a *tests/data/fate/hevc-bsf-dts2pts-idr.mov
-346603 tests/data/fate/hevc-bsf-dts2pts-idr.mov
-#extradata 0:      699, 0x9c810c10
+20c52f7729b6143ec6498fd5b92fd6ab *tests/data/fate/hevc-bsf-dts2pts-idr.mov
+346606 tests/data/fate/hevc-bsf-dts2pts-idr.mov
+#extradata 0:      702, 0xaf1f0c13
 #tb 0: 1/1200000
 #media_type 0: video
 #codec_id 0: hevc
diff --git a/tests/ref/fate/hevc-bsf-dts2pts-idr-cra 
b/tests/ref/fate/hevc-bsf-dts2pts-idr-cra
index 02e9765a26..cdec6aa3fa 100644
--- a/tests/ref/fate/hevc-bsf-dts2pts-idr-cra
+++ b/tests/ref/fate/hevc-bsf-dts2pts-idr-cra
@@ -1,6 +1,6 @@
-07a216d6537502705348fea392d5d73d *tests/data/fate/hevc-bsf-dts2pts-idr-cra.mov
-375266 tests/data/fate/hevc-bsf-dts2pts-idr-cra.mov
-#extradata 0:      648, 0x30a7fa5c
+522a725a0e8ff12050091e8be2016a47 *tests/data/fate/hevc-bsf-dts2pts-idr-cra.mov
+375268 tests/data/fate/hevc-bsf-dts2pts-idr-cra.mov
+#extradata 0:      650, 0x38ebfa5e
 #tb 0: 1/1200000
 #media_type 0: video
 #codec_id 0: hevc
diff --git a/tests/ref/fate/hxvs-demux b/tests/ref/fate/hxvs-demux
index c72628ace7..f8b196e0cc 100644
--- a/tests/ref/fate/hxvs-demux
+++ b/tests/ref/fate/hxvs-demux
@@ -1,4 +1,4 @@
-#extradata 0:       88, 0x61e61071
+#extradata 0:       91, 0x721f1071
 #tb 0: 1/1000
 #media_type 0: video
 #codec_id 0: hevc
diff --git a/tests/ref/fate/matroska-h264-remux 
b/tests/ref/fate/matroska-h264-remux
index 6362b6f684..dd82adf92c 100644
--- a/tests/ref/fate/matroska-h264-remux
+++ b/tests/ref/fate/matroska-h264-remux
@@ -1,5 +1,5 @@
-277a08f708965112a7c2fb25d941e68a *tests/data/fate/matroska-h264-remux.matroska
-2036806 tests/data/fate/matroska-h264-remux.matroska
+bfe1da5a2dcaaaaf975b8c4c446984e7 *tests/data/fate/matroska-h264-remux.matroska
+2036807 tests/data/fate/matroska-h264-remux.matroska
 #tb 0: 1/25
 #media_type 0: video
 #codec_id 0: rawvideo
diff --git a/tests/ref/fate/segment-mp4-to-ts b/tests/ref/fate/segment-mp4-to-ts
index 9f3bdf4e1d..b25ab12ca3 100644
--- a/tests/ref/fate/segment-mp4-to-ts
+++ b/tests/ref/fate/segment-mp4-to-ts
@@ -1,4 +1,4 @@
-#extradata 0:       50, 0x4f1b0df9
+#extradata 0:       52, 0x5a8b0df9
 #tb 0: 1/90000
 #media_type 0: video
 #codec_id 0: h264
diff --git a/tests/ref/fate/ts-small-demux b/tests/ref/fate/ts-small-demux
index 7e693df6ad..41e40bdfac 100644
--- a/tests/ref/fate/ts-small-demux
+++ b/tests/ref/fate/ts-small-demux
@@ -72,5 +72,5 @@ 
packet|codec_type=video|stream_index=0|pts=546000|pts_time=6.066667|dts=546000|d
 
packet|codec_type=video|stream_index=0|pts=552000|pts_time=6.133333|dts=552000|dts_time=6.133333|duration=6000|duration_time=0.066667|size=16|pos=15604|flags=___|data_hash=CRC32:cca62b67|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=224
 
packet|codec_type=video|stream_index=0|pts=558000|pts_time=6.200000|dts=558000|dts_time=6.200000|duration=6000|duration_time=0.066667|size=16|pos=15792|flags=___|data_hash=CRC32:27b943ef|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=224
 
packet|codec_type=video|stream_index=0|pts=564000|pts_time=6.266667|dts=564000|dts_time=6.266667|duration=6000|duration_time=0.066667|size=16|pos=16356|flags=___|data_hash=CRC32:f7116111|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=224
-stream|index=0|codec_name=h264|profile=578|codec_type=video|codec_tag_string=[27][0][0][0]|codec_tag=0x001b|mime_codec_string=avc1.42c00a|width=82|height=144|coded_width=82|coded_height=144|has_b_frames=0|sample_aspect_ratio=1:1|display_aspect_ratio=41:72|pix_fmt=yuv420p|level=10|color_range=unknown|color_space=unknown|color_transfer=unknown|color_primaries=unknown|chroma_location=left|field_order=progressive|is_avc=false|nal_length_size=0|ts_id=1|ts_packetsize=188|id=0x100|r_frame_rate=15/1|avg_frame_rate=15/1|time_base=1/90000|start_pts=126000|start_time=1.400000|duration_ts=444000|duration=4.933333|bit_rate=N/A|max_bit_rate=N/A|bits_per_raw_sample=8|nb_frames=N/A|nb_read_frames=N/A|nb_read_packets=74|extradata_size=35|extradata_hash=CRC32:e62cae27|disposition:default=0|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=
 
0|disposition:attached_pic=0|disposition:timed_thumbnails=0|disposition:non_diegetic=0|disposition:captions=0|disposition:descriptions=0|disposition:metadata=0|disposition:dependent=0|disposition:still_image=0|disposition:multilayer=0
+stream|index=0|codec_name=h264|profile=578|codec_type=video|codec_tag_string=[27][0][0][0]|codec_tag=0x001b|mime_codec_string=avc1.42c00a|width=82|height=144|coded_width=82|coded_height=144|has_b_frames=0|sample_aspect_ratio=1:1|display_aspect_ratio=41:72|pix_fmt=yuv420p|level=10|color_range=unknown|color_space=unknown|color_transfer=unknown|color_primaries=unknown|chroma_location=left|field_order=progressive|is_avc=false|nal_length_size=0|ts_id=1|ts_packetsize=188|id=0x100|r_frame_rate=15/1|avg_frame_rate=15/1|time_base=1/90000|start_pts=126000|start_time=1.400000|duration_ts=444000|duration=4.933333|bit_rate=N/A|max_bit_rate=N/A|bits_per_raw_sample=8|nb_frames=N/A|nb_read_frames=N/A|nb_read_packets=74|extradata_size=37|extradata_hash=CRC32:1d7ffe93|disposition:default=0|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=
 
0|disposition:attached_pic=0|disposition:timed_thumbnails=0|disposition:non_diegetic=0|disposition:captions=0|disposition:descriptions=0|disposition:metadata=0|disposition:dependent=0|disposition:still_image=0|disposition:multilayer=0
 
format|filename=h264small.ts|nb_streams=1|nb_programs=1|nb_stream_groups=0|format_name=mpegts|start_time=1.400000|duration=4.933333|size=16544|bit_rate=26828|probe_score=50
diff --git a/tests/ref/lavf-fate/h264.mp4 b/tests/ref/lavf-fate/h264.mp4
index a9c3823c2c..2d93d3faee 100644
--- a/tests/ref/lavf-fate/h264.mp4
+++ b/tests/ref/lavf-fate/h264.mp4
@@ -1,3 +1,3 @@
-fe299ea5205b71a48281f917b1256a5d *tests/data/lavf-fate/lavf.h264.mp4
-547928 tests/data/lavf-fate/lavf.h264.mp4
+f491053811da29b9908c62eb8846c98d *tests/data/lavf-fate/lavf.h264.mp4
+547929 tests/data/lavf-fate/lavf.h264.mp4
 tests/data/lavf-fate/lavf.h264.mp4 CRC=0x9da2c999
diff --git a/tests/ref/lavf-fate/hevc.mp4 b/tests/ref/lavf-fate/hevc.mp4
index aea5ae8979..1c8915e258 100644
--- a/tests/ref/lavf-fate/hevc.mp4
+++ b/tests/ref/lavf-fate/hevc.mp4
@@ -1,3 +1,3 @@
-37b3a3e84df2350380b05b2af4dc97f5 *tests/data/lavf-fate/lavf.hevc.mp4
-151340 tests/data/lavf-fate/lavf.hevc.mp4
+e75a1eba44865dc2f6e5fa99ce392bb5 *tests/data/lavf-fate/lavf.hevc.mp4
+151342 tests/data/lavf-fate/lavf.hevc.mp4
 tests/data/lavf-fate/lavf.hevc.mp4 CRC=0xc0a771de
diff --git a/tests/ref/lavf-fate/vvc.mkv b/tests/ref/lavf-fate/vvc.mkv
index 12936f1f58..a680416541 100644
--- a/tests/ref/lavf-fate/vvc.mkv
+++ b/tests/ref/lavf-fate/vvc.mkv
@@ -1,3 +1,3 @@
-088fe4756b99c28031ba41d1a841a1cb *tests/data/lavf-fate/lavf.vvc.mkv
-16351 tests/data/lavf-fate/lavf.vvc.mkv
+47ae23d78078cd9e3ed7b6f06c818770 *tests/data/lavf-fate/lavf.vvc.mkv
+16353 tests/data/lavf-fate/lavf.vvc.mkv
 tests/data/lavf-fate/lavf.vvc.mkv CRC=0x895790b1
diff --git a/tests/ref/lavf-fate/vvc.mp4 b/tests/ref/lavf-fate/vvc.mp4
index b237fe18cb..1a42c7fc37 100644
--- a/tests/ref/lavf-fate/vvc.mp4
+++ b/tests/ref/lavf-fate/vvc.mp4
@@ -1,3 +1,3 @@
-b5d5939890d3246475f990e5ebd58dc8 *tests/data/lavf-fate/lavf.vvc.mp4
-16625 tests/data/lavf-fate/lavf.vvc.mp4
+4497760ca8fa9eb475f4e0d222de2f38 *tests/data/lavf-fate/lavf.vvc.mp4
+16627 tests/data/lavf-fate/lavf.vvc.mp4
 tests/data/lavf-fate/lavf.vvc.mp4 CRC=0x895790b1
-- 
2.52.0

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

Reply via email to