wai-pack's catalogs (W4-3) are to render through these renderers, so they now express everything its Mode N output holds: - render_hls_with writes EXT-X-PLAYLIST-TYPE, EXT-X-INDEPENDENT-SEGMENTS and a header EXT-X-MAP, and EXT-X-GAP before a segment's EXTINF; the reader reads them back, so a classical floor playlist is in the rendered form too; the WAI media playlist takes the classical one's type and independence, never its map, and marks a WaiSegment gap; the playlist receipt's render and extras carry the new members; - render_multivariant writes a classical or a WAI multivariant playlist: a version, independent segments, session-data lines (VALUE or URI), and variants with or without X-WAI-FLOOR; wai_multivariant is its WAI case; - dash::render_mpd writes any static one-period MPD (content type, size, segment alignment, startWithSAP, descriptors, an initialization, a dependency per layer, a timeline per representation); wai_mpd is built on it, with minBufferTime and Period@start in whole seconds as the packager writes them. Where the texts differed, http-delivery decides: a variant's bandwidth counts the layer objects listed with a segment and leaves out gaps (as the packager does; this tree had left layers out), and a WAI1 is listed with n alone, h only for a WAI2 (§5.4). The corpus, the receipts and the Python verifier follow, with a gap playlist and packager-line cases. Co-Authored-By: Claude Opus 5.5 <[email protected]>
25 lines
2.4 KiB
Text
25 lines
2.4 KiB
Text
#EXTM3U
|
|
#EXT-X-VERSION:9
|
|
#EXT-X-TARGETDURATION:4
|
|
#EXT-X-PART-INF:PART-TARGET=0.320
|
|
#EXT-X-SERVER-CONTROL:CAN-BLOCK-RELOAD=YES,PART-HOLD-BACK=0.960
|
|
#EXT-X-MEDIA-SEQUENCE:1200
|
|
#EXT-X-PROGRAM-DATE-TIME:2026-10-01T12:00:00.000Z
|
|
#EXT-X-PART:DURATION=0.320,INDEPENDENT=YES,URI="720/1200.0.wai#cid=b8637cf58c3a5a0c567115d9065e5ec6d228663a65e50cb0b95a8b0dfb4cc385&n=3026"
|
|
#EXT-X-PART:DURATION=0.320,INDEPENDENT=YES,URI="720/1200.1.wai#cid=c4336fb0c48737e9e68b8fe5f4bc60aa8314878a602de85cfc9c3c0d33c0e03f&n=2962"
|
|
#EXT-X-PART:DURATION=0.320,INDEPENDENT=YES,URI="720/1200.2.wai#cid=12f271588cd4463ab7a8c89a25902fac152de57ec5420330b9ba5afd1fe0873a&n=2994"
|
|
#EXT-X-PART:DURATION=0.320,INDEPENDENT=YES,URI="720/1200.3.wai#cid=00af350c635dd361002588143eaac2171e7b3ba39e8f8354eb3ac3fabd3392d4&n=3018"
|
|
#EXT-X-PART:DURATION=0.320,INDEPENDENT=YES,URI="720/1200.4.wai#cid=27432e8c8ded7a74a057d0ffa83768d249982ed842d3e8659d0e39f69e92c815&n=3026"
|
|
#EXT-X-PART:DURATION=0.320,INDEPENDENT=YES,URI="720/1200.5.wai#cid=2f38e98c125601d888c9a719cf0ac74e0846fe09c2d9fb09ed88b54cabc3a778&n=2962"
|
|
#EXT-X-PART:DURATION=0.320,INDEPENDENT=YES,URI="720/1200.6.wai#cid=0a749256ffcfd6cfb3b396f04cea3d73622b5c230325096eed3585aa5f813008&n=2994"
|
|
#EXT-X-PART:DURATION=0.320,INDEPENDENT=YES,URI="720/1200.7.wai#cid=dd01430fa65add27f88d5de32bb2100a3491b6202e935a1d4101aae8062d9d6f&n=3018"
|
|
#EXT-X-PART:DURATION=0.320,INDEPENDENT=YES,URI="720/1200.8.wai#cid=7095c2d1f03b11435df79189640f73303b9c1492fa302d1dcbdb26f1527d9ce6&n=3026"
|
|
#EXT-X-PART:DURATION=0.320,INDEPENDENT=YES,URI="720/1200.9.wai#cid=55f3946ced44b2e8384e772b9ffb71f07acbb176d171508cf269d06f0cf69676&n=2962"
|
|
#EXT-X-PART:DURATION=0.320,INDEPENDENT=YES,URI="720/1200.10.wai#cid=f04294c0f3f12e5e6309b39f1c336ef3257c8c755dbeb69314bce44fcc0947ac&n=2994"
|
|
#EXT-X-PART:DURATION=0.320,INDEPENDENT=YES,URI="720/1200.11.wai#cid=62853bb69f462471f250a4140c254b7bb0af2cf0691e4e759b89cc320f5f8659&n=3014"
|
|
#EXTINF:3.840,
|
|
../objects/9de886a61b983bfcb8118ec313551c5af730a176180151756f8071fbb7d5f716.wai#n=16606
|
|
#EXT-X-PART:DURATION=0.320,INDEPENDENT=YES,URI="720/1201.0.wai#cid=7ae66a04b663eaf965ee71c445af732893632ab0713cca8139969d3529e8ec8e&n=3190"
|
|
#EXT-X-PART:DURATION=0.320,INDEPENDENT=YES,URI="720/1201.1.wai#cid=ab999eaf1dfdbdee1784b3de6b4f1c7edf311119358fdb59870ad9d51c369c3d&n=3042"
|
|
#EXT-X-PART:DURATION=0.320,INDEPENDENT=YES,URI="720/1201.2.wai#cid=a002266b23a292284444fb753d53a3def273636f4bd7ca182b635326d9f74c7b&n=3122"
|
|
#EXT-X-PRELOAD-HINT:TYPE=PART,URI="720/1201.3.wai"
|