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

Git pushed a commit to branch master
in repository ffmpeg.

commit 3ca52f0e1278b73bafae81d62ae95e213f757d3a
Author:     Kacper Michajłow <[email protected]>
AuthorDate: Wed Oct 14 10:53:50 2026 +0200
Commit:     Kacper Michajłow <[email protected]>
CommitDate: Fri Oct 16 21:17:22 2026 +0000

    tests/fate/demux: add an HLS test with a shared Media Playlist and 
renditions
    
    Two variants share one Media Playlist, an in-stream audio rendition group
    and a WebVTT subtitle rendition, so the streams are created once, each
    program lists both streams and the rendition attributes end up on the
    streams.
    
    Signed-off-by: Kacper Michajłow <[email protected]>
---
 tests/fate/demux.mak                       | 17 ++++++++++++++
 tests/ref/fate/hls-shared-renditions-demux | 37 ++++++++++++++++++++++++++++++
 2 files changed, 54 insertions(+)

diff --git a/tests/fate/demux.mak b/tests/fate/demux.mak
index 44d9ab5f9d..d4ac666f81 100644
--- a/tests/fate/demux.mak
+++ b/tests/fate/demux.mak
@@ -216,6 +216,23 @@ fate-hls-self-variant-demux: 
tests/data/hls-self-variant.m3u8
 fate-hls-self-variant-demux: CLEANFILES = tests/data/hls-self-variant.m3u8
 fate-hls-self-variant-demux: CMD = ffprobe_demux 
$(TARGET_PATH)/tests/data/hls-self-variant.m3u8
 
+tests/data/hls-shared-renditions.m3u8: TAG = GEN
+tests/data/hls-shared-renditions.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+       $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
+        -f lavfi -i "aevalsrc=0:s=16000:d=2" -c:a mp2fixed -flags +bitexact 
-muxdelay 0 -muxpreload 0 \
+        -f hls -hls_time 2 -hls_list_size 0 \
+        -hls_segment_filename 
$(TARGET_PATH)/tests/data/hls-shared-renditions-a%d.ts \
+        $(TARGET_PATH)/tests/data/hls-shared-renditions-a.m3u8 2>/dev/null
+       $(Q)printf 
'#EXTM3U\n#EXT-X-TARGETDURATION:2\n#EXTINF:2,\nhls-shared-renditions-s0.vtt\n#EXT-X-ENDLIST\n'
 > tests/data/hls-shared-renditions-s.m3u8
+       $(Q)printf 'WEBVTT\n\n00:00.500 --> 00:01.500\nfirst\n' > 
tests/data/hls-shared-renditions-s0.vtt
+       $(Q)printf 
'#EXTM3U\n#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="g",NAME="German",LANGUAGE="de",URI="hls-shared-renditions-s.m3u8"\n#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="g",NAME="English",LANGUAGE="en",DEFAULT=YES\n#EXT-X-STREAM-INF:BANDWIDTH=64000,AUDIO="g",SUBTITLES="g"\nhls-shared-renditions-a.m3u8\n#EXT-X-STREAM-INF:BANDWIDTH=128000,AUDIO="g",SUBTITLES="g"\nhls-shared-renditions-a.m3u8\n'
 > $@
+
+FATE_HLS_SHARED_RENDITIONS-$(call FILTERDEMDECENCMUX, AEVALSRC ARESAMPLE, HLS 
MPEGTS WEBVTT, MP3FLOAT PCM_F64LE, MP2FIXED, HLS MPEGTS, LAVFI_INDEV 
MPEGAUDIO_PARSER) += fate-hls-shared-renditions-demux
+FATE_FFMPEG_FFPROBE += $(FATE_HLS_SHARED_RENDITIONS-yes)
+fate-hls-shared-renditions-demux: tests/data/hls-shared-renditions.m3u8
+fate-hls-shared-renditions-demux: CLEANFILES = 
tests/data/hls-shared-renditions*.m3u8 tests/data/hls-shared-renditions-*.ts 
tests/data/hls-shared-renditions-*.vtt
+fate-hls-shared-renditions-demux: CMD = ffprobe_demux 
$(TARGET_PATH)/tests/data/hls-shared-renditions.m3u8 -show_programs
+
 FATE_SAMPLES_DEMUX-$(call PARSERDEM, JPEGXS, IMAGE_JPEGXS_PIPE, 
CONCAT_PROTOCOL) += fate-jxs-concat-demux
 fate-jxs-concat-demux: CMD = framecrc "-i 
concat:$(TARGET_SAMPLES)/jxs/lena.jxs|$(TARGET_SAMPLES)/jxs/lena.jxs -c:v copy"
 
diff --git a/tests/ref/fate/hls-shared-renditions-demux 
b/tests/ref/fate/hls-shared-renditions-demux
new file mode 100644
index 0000000000..0a128bb79a
--- /dev/null
+++ b/tests/ref/fate/hls-shared-renditions-demux
@@ -0,0 +1,37 @@
+packet|codec_type=audio|stream_index=1|pts=0|pts_time=0.000000|dts=0|dts_time=0.000000|duration=3240|duration_time=0.036000|size=1440|pos=564|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=6480|pts_time=0.072000|dts=6480|dts_time=0.072000|duration=6480|duration_time=0.072000|size=1440|pos=2068|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=12960|pts_time=0.144000|dts=12960|dts_time=0.144000|duration=6480|duration_time=0.072000|size=1440|pos=3572|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=19440|pts_time=0.216000|dts=19440|dts_time=0.216000|duration=6480|duration_time=0.072000|size=1440|pos=5076|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=25920|pts_time=0.288000|dts=25920|dts_time=0.288000|duration=6480|duration_time=0.072000|size=1440|pos=6580|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=32400|pts_time=0.360000|dts=32400|dts_time=0.360000|duration=6480|duration_time=0.072000|size=1440|pos=8084|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=38880|pts_time=0.432000|dts=38880|dts_time=0.432000|duration=6480|duration_time=0.072000|size=1440|pos=9588|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=45360|pts_time=0.504000|dts=45360|dts_time=0.504000|duration=6480|duration_time=0.072000|size=1440|pos=11092|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=51840|pts_time=0.576000|dts=51840|dts_time=0.576000|duration=6480|duration_time=0.072000|size=1440|pos=12596|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=58320|pts_time=0.648000|dts=58320|dts_time=0.648000|duration=6480|duration_time=0.072000|size=1440|pos=14100|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=64800|pts_time=0.720000|dts=64800|dts_time=0.720000|duration=6480|duration_time=0.072000|size=1440|pos=15604|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=71280|pts_time=0.792000|dts=71280|dts_time=0.792000|duration=6480|duration_time=0.072000|size=1440|pos=17108|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=77760|pts_time=0.864000|dts=77760|dts_time=0.864000|duration=6480|duration_time=0.072000|size=1440|pos=18612|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=84240|pts_time=0.936000|dts=84240|dts_time=0.936000|duration=6480|duration_time=0.072000|size=1440|pos=20116|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=90720|pts_time=1.008000|dts=90720|dts_time=1.008000|duration=6480|duration_time=0.072000|size=1440|pos=21620|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=97200|pts_time=1.080000|dts=97200|dts_time=1.080000|duration=6480|duration_time=0.072000|size=1440|pos=23124|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=103680|pts_time=1.152000|dts=103680|dts_time=1.152000|duration=6480|duration_time=0.072000|size=1440|pos=24628|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=110160|pts_time=1.224000|dts=110160|dts_time=1.224000|duration=6480|duration_time=0.072000|size=1440|pos=26132|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=116640|pts_time=1.296000|dts=116640|dts_time=1.296000|duration=6480|duration_time=0.072000|size=1440|pos=27636|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=123120|pts_time=1.368000|dts=123120|dts_time=1.368000|duration=6480|duration_time=0.072000|size=1440|pos=29140|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=129600|pts_time=1.440000|dts=129600|dts_time=1.440000|duration=6480|duration_time=0.072000|size=1440|pos=30644|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=136080|pts_time=1.512000|dts=136080|dts_time=1.512000|duration=6480|duration_time=0.072000|size=1440|pos=32148|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=142560|pts_time=1.584000|dts=142560|dts_time=1.584000|duration=6480|duration_time=0.072000|size=1440|pos=33652|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=149040|pts_time=1.656000|dts=149040|dts_time=1.656000|duration=6480|duration_time=0.072000|size=1440|pos=35156|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=155520|pts_time=1.728000|dts=155520|dts_time=1.728000|duration=6480|duration_time=0.072000|size=1440|pos=36660|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=162000|pts_time=1.800000|dts=162000|dts_time=1.800000|duration=6480|duration_time=0.072000|size=1440|pos=38164|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=168480|pts_time=1.872000|dts=168480|dts_time=1.872000|duration=6480|duration_time=0.072000|size=1440|pos=39668|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+packet|codec_type=audio|stream_index=1|pts=174960|pts_time=1.944000|dts=174960|dts_time=1.944000|duration=6480|duration_time=0.072000|size=1440|pos=41172|flags=K__|data_hash=CRC32:cb00dd5b|side_datum/mpegts_stream_id:side_data_type=MPEGTS
 Stream ID|side_datum/mpegts_stream_id:id=192
+program|program_id=0|program_num=0|nb_streams=2|pmt_pid=0|pcr_pid=0|tag:variant_bitrate=64000
+stream|index=0|codec_name=webvtt|profile=unknown|level=-99|codec_type=subtitle|codec_tag_string=[0][0][0][0]|codec_tag=0x0000|width=N/A|height=N/A|id=0x0|r_frame_rate=0/0|avg_frame_rate=0/0|time_base=1/1000|start_pts=0|start_time=0.000000|duration_ts=N/A|duration=N/A|bit_rate=N/A|max_bit_rate=N/A|bits_per_raw_sample=N/A|nb_frames=N/A|nb_read_frames=N/A|nb_read_packets=N/A|disposition:default=0|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition
 [...]
+stream|index=1|codec_name=mp2|profile=unknown|level=-99|codec_type=audio|codec_tag_string=[4][0][0][0]|codec_tag=0x0004|mime_codec_string=mp4a.40.33|sample_fmt=fltp|sample_rate=16000|channels=1|channel_layout=mono|bits_per_sample=0|initial_padding=0|id=0x1|r_frame_rate=0/0|avg_frame_rate=0/0|time_base=1/90000|start_pts=0|start_time=0.000000|duration_ts=N/A|duration=N/A|bit_rate=160000|max_bit_rate=N/A|bits_per_raw_sample=N/A|nb_frames=N/A|nb_read_frames=N/A|nb_read_packets=28|disposition
 [...]
+program|program_id=1|program_num=0|nb_streams=2|pmt_pid=0|pcr_pid=0|tag:variant_bitrate=128000
+stream|index=0|codec_name=webvtt|profile=unknown|level=-99|codec_type=subtitle|codec_tag_string=[0][0][0][0]|codec_tag=0x0000|width=N/A|height=N/A|id=0x0|r_frame_rate=0/0|avg_frame_rate=0/0|time_base=1/1000|start_pts=0|start_time=0.000000|duration_ts=N/A|duration=N/A|bit_rate=N/A|max_bit_rate=N/A|bits_per_raw_sample=N/A|nb_frames=N/A|nb_read_frames=N/A|nb_read_packets=N/A|disposition:default=0|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition
 [...]
+stream|index=1|codec_name=mp2|profile=unknown|level=-99|codec_type=audio|codec_tag_string=[4][0][0][0]|codec_tag=0x0004|mime_codec_string=mp4a.40.33|sample_fmt=fltp|sample_rate=16000|channels=1|channel_layout=mono|bits_per_sample=0|initial_padding=0|id=0x1|r_frame_rate=0/0|avg_frame_rate=0/0|time_base=1/90000|start_pts=0|start_time=0.000000|duration_ts=N/A|duration=N/A|bit_rate=160000|max_bit_rate=N/A|bits_per_raw_sample=N/A|nb_frames=N/A|nb_read_frames=N/A|nb_read_packets=28|disposition
 [...]
+stream|index=0|codec_name=webvtt|profile=unknown|level=-99|codec_type=subtitle|codec_tag_string=[0][0][0][0]|codec_tag=0x0000|width=N/A|height=N/A|id=0x0|r_frame_rate=0/0|avg_frame_rate=0/0|time_base=1/1000|start_pts=0|start_time=0.000000|duration_ts=N/A|duration=N/A|bit_rate=N/A|max_bit_rate=N/A|bits_per_raw_sample=N/A|nb_frames=N/A|nb_read_frames=N/A|nb_read_packets=N/A|disposition:default=0|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition
 [...]
+stream|index=1|codec_name=mp2|profile=unknown|level=-99|codec_type=audio|codec_tag_string=[4][0][0][0]|codec_tag=0x0004|mime_codec_string=mp4a.40.33|sample_fmt=fltp|sample_rate=16000|channels=1|channel_layout=mono|bits_per_sample=0|initial_padding=0|id=0x1|r_frame_rate=0/0|avg_frame_rate=0/0|time_base=1/90000|start_pts=0|start_time=0.000000|duration_ts=N/A|duration=N/A|bit_rate=160000|max_bit_rate=N/A|bits_per_raw_sample=N/A|nb_frames=N/A|nb_read_frames=N/A|nb_read_packets=28|disposition
 [...]
+format|filename=hls-shared-renditions.m3u8|nb_streams=2|nb_programs=2|nb_stream_groups=0|format_name=hls|start_time=0.000000|duration=2.016000|size=365|bit_rate=1448|probe_score=100

-- 
To stop receiving notification emails like this one, please contact
[email protected].
_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to