diff --git a/index.js b/index.js index 39e6282..dea15a3 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,4 @@ const m3u8 = require("@eyevinn/m3u8"); -const { deserialize } = require("v8"); const debug = require("debug")("hls-vodtolive"); const verbose = require("debug")("hls-vodtolive-verbose"); const { findIndexReversed, fetchWithRetry, urlResolve, segToM3u8, findBottomSegItem } = require("./utils.js"); @@ -49,6 +48,7 @@ class HLSVod { this.header = header; this.lastUsedDiscSeq = null; this.sequenceAlwaysContainNewSegments = false; + this.skipSerializeMediaSequences = false; if (opts && opts.sequenceAlwaysContainNewSegments) { this.sequenceAlwaysContainNewSegments = opts.sequenceAlwaysContainNewSegments; } @@ -70,6 +70,9 @@ class HLSVod { if (opts && opts.alwaysMapBandwidthByNearest) { this.alwaysMapBandwidthByNearest = opts.alwaysMapBandwidthByNearest; } + if (opts && opts.skipSerializeMediaSequences) { + this.skipSerializeMediaSequences = opts.skipSerializeMediaSequences; + } this.videoSequencesCount = 0; this.audioSequencesCount = 0; this.defaultAudioGroupAndLang = null; @@ -86,7 +89,7 @@ class HLSVod { subtitleSegments: this.subtitleSegments, shouldContainSubtitles: this.shouldContainSubtitles, expectedSubtitleTracks: this.expectedSubtitleTracks, - mediaSequences: this.mediaSequences, + mediaSequences: this.skipSerializeMediaSequences ? null : this.mediaSequences, SEQUENCE_DURATION: this.SEQUENCE_DURATION, targetDuration: this.targetDuration, targetAudioDuration: this.targetAudioDuration, @@ -114,12 +117,13 @@ class HLSVod { forcedDemuxMode: this.forcedDemuxMode, dummySubtitleEndpoint: this.dummySubtitleEndpoint, subtitleSliceEndpoint: this.subtitleSliceEndpoint, - videoSequencesCount: this.videoSequencesCount, - audioSequencesCount: this.audioSequencesCount, - subtitleSequencesCount: this.subtitleSequencesCount, + videoSequencesCount: this.skipSerializeMediaSequences ? 0 : this.videoSequencesCount, + audioSequencesCount: this.skipSerializeMediaSequences ? 0 : this.audioSequencesCount, + subtitleSequencesCount: this.skipSerializeMediaSequences ? 0 : this.subtitleSequencesCount, mediaStartExcessTime: this.mediaStartExcessTime, audioCodecsMap: this.audioCodecsMap, - alwaysMapBandwidthByNearest: this.alwaysMapBandwidthByNearest + alwaysMapBandwidthByNearest: this.alwaysMapBandwidthByNearest, + skipSerializeMediaSequences: this.skipSerializeMediaSequences }; return JSON.stringify(serialized); } @@ -172,6 +176,7 @@ class HLSVod { this.mediaStartExcessTime = de.mediaStartExcessTime; this.audioCodecsMap = de.audioCodecsMap; this.alwaysMapBandwidthByNearest = de.alwaysMapBandwidthByNearest; + this.skipSerializeMediaSequences = de.skipSerializeMediaSequences; } /** @@ -500,12 +505,12 @@ class HLSVod { try { this._loadPrevious(); this.load(_injectMasterManifest, _injectMediaManifest, _injectAudioManifest, _injectSubtitleManifest) - .then(() => {// WARNING we can never remove this.previousVod because it is used later in the code - previousVod.releasePreviousVod(); + .then(() => { + this.releasePreviousVod(); resolve(); }) .catch((err) => { - previousVod.releasePreviousVod(); + this.releasePreviousVod(); reject(err); }); } catch (exc) { @@ -1398,8 +1403,12 @@ class HLSVod { } videoSequences.push(_sequence); - this.mediaSequenceValues[seqIndex] = totalRemovedSegments; - this.discontinuities[seqIndex] = totalRemovedDiscTags; + if (!this.mediaSequenceValues[seqIndex]) { + this.mediaSequenceValues[seqIndex] = totalRemovedSegments; + } + if (!this.discontinuities[seqIndex]) { + this.discontinuities[seqIndex] = totalRemovedDiscTags; + } sequence = _sequence; seqIndex++; } catch (err) { @@ -1529,7 +1538,7 @@ class HLSVod { let shiftOnce = true; let shiftedSegmentsCount = 0; // 2 - Shift excess segments and keep count of what has been removed (per variant) - while (totalSeqDur >= this.SEQUENCE_DURATION || (shiftOnce && segIdx !== 0)) { // TODO continue here + while (totalSeqDur >= this.SEQUENCE_DURATION || (shiftOnce && segIdx !== 0)) { shiftOnce = false; let timeToRemove = 0; let incrementDiscSeqCount = false; @@ -1602,11 +1611,19 @@ class HLSVod { sequences.push(_sequence); if (type === "audio") { - this.discontinuitiesAudio[seqIndex] = totalRemovedDiscTags; - this.mediaSequenceValuesAudio[seqIndex] = totalRemovedSegments; + if (!this.discontinuitiesAudio[seqIndex]) { + this.discontinuitiesAudio[seqIndex] = totalRemovedDiscTags; + } + if (!this.mediaSequenceValuesAudio[seqIndex]) { + this.mediaSequenceValuesAudio[seqIndex] = totalRemovedSegments; + } } else if (type === "subtitle") { - this.discontinuitiesSubtitle[seqIndex] = totalRemovedDiscTags; - this.mediaSequenceValuesSubtitle[seqIndex] = totalRemovedSegments; + if (!this.discontinuitiesSubtitle[seqIndex]) { + this.discontinuitiesSubtitle[seqIndex] = totalRemovedDiscTags; + } + if (!this.mediaSequenceValuesSubtitle[seqIndex]) { + this.mediaSequenceValuesSubtitle[seqIndex] = totalRemovedSegments; + } } sequence = _sequence; seqIndex++; @@ -1617,6 +1634,13 @@ class HLSVod { return sequences; } + generateMediaSequences() { + this.mediaSequences = []; + return new Promise((resolve, reject) => { + this._createMediaSequences(1).then(resolve).catch(reject); + }); + } + calculateDeltaAndPositionExtraMedia(type) { let prevLastSegment = null; let discSeqNo = 0; @@ -1959,7 +1983,7 @@ class HLSVod { } } - _createMediaSequences() { + _createMediaSequences(mode = false) { return new Promise((resolve, reject) => { const bw = this._getFirstBwWithSegments(); const audioGroupId = this._getFirstAudioGroupWithSegments(); @@ -1993,7 +2017,7 @@ class HLSVod { if (subtitleGroupId) { this._removeDoubleDiscontinuitiesFromExtraMedia(this.subtitleSegments) } - if (this.shouldContainSubtitles) { + if (this.shouldContainSubtitles && !mode) { // we are doing all this to figure out the entire duration of the new vod so we can create a long subtitle segment that we can later chunk to smaller segments let duration = this.getDuration(); let offset = 0; @@ -2092,9 +2116,7 @@ class HLSVod { let subtitleSequences = []; if (this.shouldContainSubtitles) { subtitleSequences = this.generateSequencesTypeBExtraMedia(this.subtitleSegments, subtitleGroupId, firstSubtitleLanguage, "subtitle"); - } - // Append newly generated video/audio/subtitle sequences videoSequences.map((_, index) => { this.mediaSequences.push({ @@ -2125,7 +2147,6 @@ class HLSVod { }); } } - this.videoSequencesCount = videoSequences.length; this.audioSequencesCount = audioSequences.length; this.subtitleSequencesCount = subtitleSequences.length @@ -2133,7 +2154,11 @@ class HLSVod { if (!this.mediaSequences) { reject("Failed to init media sequences"); + } else if (this.mediaSequences.length > 0 && this.skipSerializeMediaSequences && this.deltaTimes.length > 0 && this.mediaSequences.length === this.deltaTimes.length) { + debug(`Discontinuities, MediaSequencesValues, Delta times & positions have already been calculated. Skipping this step!`); + resolve() } else { + // Calculate Delta Times and Position for Video let prevLastSegment = null; let discSeqNo = 0; this.deltaTimes.push({ @@ -2238,7 +2263,6 @@ class HLSVod { if (this.mediaSequences[0].subtitleSegments) { this.calculateDeltaAndPositionExtraMedia("subtitle") } - resolve(); } }); diff --git a/spec/hlsvod_spec.js b/spec/hlsvod_spec.js index cdb5b7f..89b8ca2 100644 --- a/spec/hlsvod_spec.js +++ b/spec/hlsvod_spec.js @@ -2099,6 +2099,7 @@ describe("HLSVod with mixed target durations", () => { describe("HLSVod serializing", () => { let mockMasterManifest; let mockMediaManifest; + let mockM3u8Item1; beforeEach(() => { mockMasterManifest = function () { @@ -2108,6 +2109,21 @@ describe("HLSVod serializing", () => { mockMediaManifest = function (bandwidth) { return fs.createReadStream("testvectors/hls1/" + bandwidth + ".m3u8"); }; + + mockM3u8Item1 = { + master: () => { + return fs.createReadStream("testvectors/hls_abr7/master.m3u8"); + }, + media: (bw) => { + return fs.createReadStream(`testvectors/hls_abr7/master${bw}.m3u8`); + }, + audio: (g, l) => { + return fs.createReadStream(`testvectors/hls_abr7/master-${g}_${l}.m3u8`); + }, + subtitle: (g, l) => { + return fs.createReadStream(`testvectors/hls_abr7/master-${g}_${l}.m3u8`); + }, + }; }); it("can be serialized", (done) => { @@ -2161,6 +2177,174 @@ describe("HLSVod serializing", () => { done(); }); }); + + it("can handle a sequence of VODs, with skipSerializeMediaSequences set -> true (TYPE-A)", (done) => { + mockVod = new HLSVod("http://mock.com/mock.m3u8", null, 0, 0, null, { + sequenceAlwaysContainNewSegments: 0, + forcedDemuxMode: 1, + shouldContainSubtitles: 1, + subtitleSliceEndpoint: "https://test.test.com", + expectedSubtitleTracks: [ + { language: "sv", name: "sv" }, + { language: "en", name: "en" }, + { language: "no", name: "no" }, + ], + dummySubtitleEndpoint: "fake/subs/here", + alwaysMapBandwidthByNearest: 1, + skipSerializeMediaSequences: false, + }); + mockVod2 = new HLSVod("http://mock.com/mock2.m3u8", null, 0, 0, null, { + sequenceAlwaysContainNewSegments: 0, + forcedDemuxMode: 1, + shouldContainSubtitles: 1, + subtitleSliceEndpoint: "https://test.test.com", + expectedSubtitleTracks: [ + { language: "sv", name: "sv" }, + { language: "en", name: "en" }, + { language: "no", name: "no" }, + ], + dummySubtitleEndpoint: "fake/subs/here", + alwaysMapBandwidthByNearest: 1, + skipSerializeMediaSequences: false, + }); + mockVod + .load(mockM3u8Item1.master, mockM3u8Item1.media, mockM3u8Item1.audio, mockM3u8Item1.subtitle) + .then(() => { + return mockVod2.loadAfter(mockVod, mockM3u8Item1.master, mockM3u8Item1.media, mockM3u8Item1.audio, mockM3u8Item1.subtitle); + }) + .then(() => { + const bytesToMB = (bytes) => { + const megabytes = bytes / (1024 * 1024); + return megabytes.toFixed(2); + } + const expectedJSONSizeInMBFull = "5.26"; + const expectedJSONSizeInMBPartial = "0.38"; + const expectedJSONSizeInMBFullAgain = expectedJSONSizeInMBFull; + const expectedMseqCountFull = 145; + const expectedMseqCountPartial = 0; + const expectedMseqCountFullAgain = expectedMseqCountFull; + + const mseqCountFull = mockVod2.getLiveMediaSequencesCount(); + const fullySerialized = mockVod2.toJSON(); + const sizeFull = Buffer.byteLength(JSON.stringify(fullySerialized)); + const sizeInMBFull = bytesToMB(sizeFull); + const fullyDeserializedVod = new HLSVod(); + fullyDeserializedVod.fromJSON(fullySerialized); + + fullyDeserializedVod.skipSerializeMediaSequences = true; + const partiallySerialized = fullyDeserializedVod.toJSON(); + const partiallyDeserializedVod = new HLSVod(); + partiallyDeserializedVod.fromJSON(partiallySerialized); + + const mseqCountPart = partiallyDeserializedVod.getLiveMediaSequencesCount(); + const sizePart = Buffer.byteLength(JSON.stringify(partiallySerialized)); + const sizeInMBPart = bytesToMB(sizePart); + + partiallyDeserializedVod.generateMediaSequences().then(() => { + const mseqCountFullAgain = partiallyDeserializedVod.getLiveMediaSequencesCount(); + partiallyDeserializedVod.skipSerializeMediaSequences = false; + const fullySerializedAgain = partiallyDeserializedVod.toJSON(); + const sizeFullAgain = Buffer.byteLength(JSON.stringify(fullySerializedAgain)); + const sizeInMBFullAgain = bytesToMB(sizeFullAgain); + + expect(sizeInMBFull).toBe(expectedJSONSizeInMBFull); + expect(sizeInMBPart).toBe(expectedJSONSizeInMBPartial); + expect(sizeInMBFullAgain).toBe(expectedJSONSizeInMBFullAgain); + expect(mseqCountFull).toBe(expectedMseqCountFull); + expect(mseqCountPart).toBe(expectedMseqCountPartial); + expect(mseqCountFullAgain).toBe(expectedMseqCountFullAgain); + + expect(sizeInMBFull).toEqual(sizeInMBFullAgain); + expect(fullySerialized).toEqual(fullySerializedAgain); + + done(); + }); + }); + }); + + it("can handle a sequence of VODs, with skipSerializeMediaSequences set -> true (TYPE-B)", (done) => { + mockVod = new HLSVod("http://mock.com/mock.m3u8", null, 0, 0, null, { + sequenceAlwaysContainNewSegments: 1, + forcedDemuxMode: 1, + shouldContainSubtitles: 1, + subtitleSliceEndpoint: "https://test.test.com", + expectedSubtitleTracks: [ + { language: "sv", name: "sv" }, + { language: "en", name: "en" }, + { language: "no", name: "no" }, + ], + dummySubtitleEndpoint: "fake/subs/here", + alwaysMapBandwidthByNearest: 1, + skipSerializeMediaSequences: false, + }); + mockVod2 = new HLSVod("http://mock.com/mock2.m3u8", null, 0, 0, null, { + sequenceAlwaysContainNewSegments: 1, + forcedDemuxMode: 1, + shouldContainSubtitles: 1, + subtitleSliceEndpoint: "https://test.test.com", + expectedSubtitleTracks: [ + { language: "sv", name: "sv" }, + { language: "en", name: "en" }, + { language: "no", name: "no" }, + ], + dummySubtitleEndpoint: "fake/subs/here", + alwaysMapBandwidthByNearest: 1, + skipSerializeMediaSequences: false, + }); + mockVod + .load(mockM3u8Item1.master, mockM3u8Item1.media, mockM3u8Item1.audio, mockM3u8Item1.subtitle) + .then(() => { + return mockVod2.loadAfter(mockVod, mockM3u8Item1.master, mockM3u8Item1.media, mockM3u8Item1.audio, mockM3u8Item1.subtitle); + }) + .then(() => { + const bytesToMB = (bytes) => { + const megabytes = bytes / (1024 * 1024); + return megabytes.toFixed(2); + } + const expectedJSONSizeInMBFull = "5.29"; + const expectedJSONSizeInMBPartial = "0.39"; + const expectedJSONSizeInMBFullAgain = expectedJSONSizeInMBFull; + const expectedMseqCountFull = 146; + const expectedMseqCountPartial = 0; + const expectedMseqCountFullAgain = expectedMseqCountFull; + + const mseqCountFull = mockVod2.getLiveMediaSequencesCount(); + const fullySerialized = mockVod2.toJSON(); + const sizeFull = Buffer.byteLength(JSON.stringify(fullySerialized)); + const sizeInMBFull = bytesToMB(sizeFull); + const fullyDeserializedVod = new HLSVod(); + fullyDeserializedVod.fromJSON(fullySerialized); + + fullyDeserializedVod.skipSerializeMediaSequences = true; + const partiallySerialized = fullyDeserializedVod.toJSON(); + const partiallyDeserializedVod = new HLSVod(); + partiallyDeserializedVod.fromJSON(partiallySerialized); + + const mseqCountPart = partiallyDeserializedVod.getLiveMediaSequencesCount(); + const sizePart = Buffer.byteLength(JSON.stringify(partiallySerialized)); + const sizeInMBPart = bytesToMB(sizePart); + + partiallyDeserializedVod.generateMediaSequences().then(() => { + const mseqCountFullAgain = partiallyDeserializedVod.getLiveMediaSequencesCount(); + partiallyDeserializedVod.skipSerializeMediaSequences = false; + const fullySerializedAgain = partiallyDeserializedVod.toJSON(); + const sizeFullAgain = Buffer.byteLength(JSON.stringify(fullySerializedAgain)); + const sizeInMBFullAgain = bytesToMB(sizeFullAgain); + + expect(sizeInMBFull).toBe(expectedJSONSizeInMBFull); + expect(sizeInMBPart).toBe(expectedJSONSizeInMBPartial); + expect(sizeInMBFullAgain).toBe(expectedJSONSizeInMBFullAgain); + expect(mseqCountFull).toBe(expectedMseqCountFull); + expect(mseqCountPart).toBe(expectedMseqCountPartial); + expect(mseqCountFullAgain).toBe(expectedMseqCountFullAgain); + + expect(sizeInMBFull).toEqual(sizeInMBFullAgain); + expect(fullySerialized).toEqual(fullySerializedAgain); + + done(); + }); + }); + }); }); describe("HLSVod time metadata", () => { diff --git a/testvectors/hls_abr7/master-audio-aacl-128_en.m3u8 b/testvectors/hls_abr7/master-audio-aacl-128_en.m3u8 new file mode 100644 index 0000000..897d92b --- /dev/null +++ b/testvectors/hls_abr7/master-audio-aacl-128_en.m3u8 @@ -0,0 +1,298 @@ +#EXTM3U +#EXT-X-VERSION:6 +#EXT-X-INDEPENDENT-SEGMENTS +#EXT-X-TARGETDURATION:8 +#EXT-X-MEDIA-SEQUENCE:1 +#EXT-X-DISCONTINUITY-SEQUENCE:0 +#EXT-X-MAP:URI="https://mock.vod.com/20337209-audio_en.m4s" +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-549.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-550.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-551.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-552.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-553.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-554.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-555.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-556.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-557.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-558.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-559.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-560.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-561.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-562.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-563.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-564.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-565.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-566.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-567.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-568.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-569.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-570.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-571.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-572.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-573.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-574.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-575.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-576.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-577.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-578.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-579.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-580.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-581.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-582.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-583.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-584.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-585.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-586.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-587.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-588.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-589.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-590.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-591.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-592.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-593.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-594.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-595.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-596.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-597.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-598.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-599.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-600.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-601.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-602.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-603.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-604.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-605.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-606.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-607.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-608.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-609.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-610.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-611.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-612.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-613.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-614.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-615.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-616.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-617.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-618.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-619.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-620.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-621.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-622.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-623.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-624.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-625.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-626.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-627.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-628.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-629.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-630.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-631.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-632.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-633.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-634.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-635.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-636.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-637.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-638.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-639.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-640.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-641.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-642.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-643.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-644.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-645.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-646.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-647.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-648.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-649.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-650.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-651.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-652.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-653.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-654.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-655.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-656.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-657.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-658.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-659.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-660.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-661.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-662.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-663.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-664.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-665.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-666.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-667.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-668.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-669.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-670.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-671.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-672.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-673.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-674.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-675.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-676.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-677.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-678.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-679.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-680.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-681.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-682.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-683.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-684.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-685.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-686.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-687.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-688.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-689.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-690.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-691.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_en-692.m4s +#EXTINF:3.499, +https://mock.vod.com/20337209-audio_en-693.m4s +#EXT-X-ENDLIST \ No newline at end of file diff --git a/testvectors/hls_abr7/master-audio-aacl-128_sv.m3u8 b/testvectors/hls_abr7/master-audio-aacl-128_sv.m3u8 new file mode 100644 index 0000000..e27110a --- /dev/null +++ b/testvectors/hls_abr7/master-audio-aacl-128_sv.m3u8 @@ -0,0 +1,298 @@ +#EXTM3U +#EXT-X-VERSION:6 +#EXT-X-INDEPENDENT-SEGMENTS +#EXT-X-TARGETDURATION:8 +#EXT-X-MEDIA-SEQUENCE:1 +#EXT-X-DISCONTINUITY-SEQUENCE:0 +#EXT-X-MAP:URI="https://mock.vod.com/20337209-audio_sv.m4s" +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-549.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-550.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-551.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-552.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-553.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-554.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-555.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-556.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-557.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-558.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-559.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-560.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-561.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-562.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-563.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-564.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-565.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-566.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-567.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-568.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-569.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-570.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-571.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-572.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-573.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-574.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-575.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-576.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-577.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-578.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-579.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-580.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-581.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-582.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-583.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-584.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-585.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-586.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-587.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-588.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-589.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-590.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-591.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-592.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-593.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-594.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-595.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-596.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-597.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-598.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-599.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-600.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-601.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-602.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-603.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-604.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-605.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-606.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-607.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-608.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-609.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-610.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-611.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-612.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-613.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-614.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-615.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-616.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-617.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-618.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-619.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-620.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-621.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-622.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-623.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-624.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-625.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-626.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-627.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-628.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-629.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-630.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-631.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-632.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-633.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-634.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-635.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-636.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-637.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-638.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-639.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-640.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-641.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-642.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-643.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-644.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-645.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-646.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-647.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-648.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-649.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-650.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-651.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-652.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-653.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-654.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-655.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-656.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-657.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-658.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-659.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-660.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-661.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-662.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-663.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-664.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-665.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-666.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-667.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-668.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-669.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-670.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-671.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-672.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-673.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-674.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-675.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-676.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-677.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-678.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-679.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-680.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-681.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-682.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-683.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-684.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-685.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-686.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-687.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-688.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-689.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-690.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-691.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-audio_sv-692.m4s +#EXTINF:3.499, +https://mock.vod.com/20337209-audio_sv-693.m4s +#EXT-X-ENDLIST \ No newline at end of file diff --git a/testvectors/hls_abr7/master-subtitles_en.m3u8 b/testvectors/hls_abr7/master-subtitles_en.m3u8 new file mode 100644 index 0000000..74dd90c --- /dev/null +++ b/testvectors/hls_abr7/master-subtitles_en.m3u8 @@ -0,0 +1,298 @@ +#EXTM3U +#EXT-X-VERSION:6 +#EXT-X-INDEPENDENT-SEGMENTS +#EXT-X-TARGETDURATION:8 +#EXT-X-MEDIA-SEQUENCE:1 +#EXT-X-DISCONTINUITY-SEQUENCE:0 +#EXT-X-MAP:URI="https://mock.vod.com/20337209-subs_en.m4s" +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-549.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-550.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-551.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-552.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-553.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-554.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-555.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-556.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-557.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-558.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-559.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-560.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-561.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-562.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-563.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-564.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-565.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-566.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-567.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-568.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-569.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-570.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-571.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-572.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-573.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-574.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-575.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-576.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-577.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-578.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-579.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-580.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-581.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-582.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-583.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-584.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-585.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-586.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-587.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-588.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-589.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-590.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-591.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-592.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-593.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-594.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-595.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-596.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-597.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-598.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-599.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-600.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-601.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-602.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-603.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-604.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-605.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-606.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-607.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-608.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-609.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-610.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-611.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-612.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-613.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-614.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-615.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-616.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-617.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-618.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-619.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-620.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-621.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-622.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-623.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-624.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-625.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-626.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-627.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-628.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-629.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-630.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-631.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-632.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-633.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-634.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-635.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-636.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-637.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-638.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-639.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-640.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-641.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-642.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-643.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-644.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-645.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-646.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-647.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-648.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-649.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-650.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-651.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-652.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-653.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-654.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-655.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-656.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-657.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-658.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-659.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-660.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-661.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-662.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-663.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-664.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-665.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-666.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-667.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-668.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-669.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-670.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-671.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-672.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-673.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-674.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-675.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-676.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-677.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-678.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-679.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-680.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-681.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-682.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-683.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-684.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-685.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-686.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-687.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-688.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-689.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-690.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-691.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_en-692.m4s +#EXTINF:3.499, +https://mock.vod.com/20337209-subs_en-693.m4s +#EXT-X-ENDLIST \ No newline at end of file diff --git a/testvectors/hls_abr7/master-subtitles_no.m3u8 b/testvectors/hls_abr7/master-subtitles_no.m3u8 new file mode 100644 index 0000000..97a9325 --- /dev/null +++ b/testvectors/hls_abr7/master-subtitles_no.m3u8 @@ -0,0 +1,298 @@ +#EXTM3U +#EXT-X-VERSION:6 +#EXT-X-INDEPENDENT-SEGMENTS +#EXT-X-TARGETDURATION:8 +#EXT-X-MEDIA-SEQUENCE:1 +#EXT-X-DISCONTINUITY-SEQUENCE:0 +#EXT-X-MAP:URI="https://mock.vod.com/20337209-subs_no.m4s" +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-549.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-550.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-551.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-552.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-553.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-554.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-555.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-556.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-557.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-558.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-559.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-560.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-561.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-562.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-563.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-564.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-565.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-566.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-567.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-568.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-569.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-570.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-571.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-572.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-573.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-574.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-575.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-576.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-577.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-578.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-579.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-580.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-581.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-582.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-583.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-584.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-585.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-586.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-587.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-588.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-589.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-590.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-591.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-592.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-593.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-594.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-595.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-596.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-597.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-598.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-599.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-600.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-601.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-602.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-603.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-604.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-605.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-606.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-607.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-608.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-609.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-610.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-611.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-612.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-613.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-614.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-615.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-616.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-617.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-618.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-619.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-620.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-621.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-622.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-623.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-624.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-625.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-626.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-627.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-628.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-629.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-630.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-631.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-632.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-633.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-634.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-635.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-636.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-637.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-638.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-639.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-640.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-641.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-642.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-643.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-644.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-645.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-646.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-647.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-648.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-649.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-650.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-651.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-652.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-653.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-654.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-655.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-656.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-657.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-658.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-659.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-660.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-661.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-662.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-663.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-664.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-665.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-666.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-667.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-668.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-669.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-670.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-671.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-672.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-673.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-674.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-675.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-676.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-677.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-678.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-679.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-680.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-681.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-682.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-683.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-684.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-685.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-686.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-687.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-688.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-689.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-690.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-691.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_no-692.m4s +#EXTINF:3.499, +https://mock.vod.com/20337209-subs_no-693.m4s +#EXT-X-ENDLIST \ No newline at end of file diff --git a/testvectors/hls_abr7/master-subtitles_sv.m3u8 b/testvectors/hls_abr7/master-subtitles_sv.m3u8 new file mode 100644 index 0000000..d2541c1 --- /dev/null +++ b/testvectors/hls_abr7/master-subtitles_sv.m3u8 @@ -0,0 +1,298 @@ +#EXTM3U +#EXT-X-VERSION:6 +#EXT-X-INDEPENDENT-SEGMENTS +#EXT-X-TARGETDURATION:8 +#EXT-X-MEDIA-SEQUENCE:1 +#EXT-X-DISCONTINUITY-SEQUENCE:0 +#EXT-X-MAP:URI="https://mock.vod.com/20337209-subs_sv.m4s" +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-549.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-550.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-551.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-552.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-553.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-554.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-555.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-556.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-557.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-558.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-559.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-560.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-561.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-562.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-563.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-564.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-565.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-566.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-567.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-568.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-569.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-570.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-571.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-572.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-573.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-574.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-575.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-576.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-577.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-578.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-579.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-580.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-581.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-582.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-583.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-584.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-585.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-586.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-587.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-588.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-589.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-590.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-591.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-592.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-593.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-594.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-595.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-596.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-597.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-598.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-599.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-600.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-601.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-602.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-603.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-604.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-605.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-606.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-607.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-608.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-609.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-610.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-611.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-612.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-613.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-614.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-615.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-616.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-617.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-618.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-619.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-620.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-621.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-622.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-623.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-624.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-625.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-626.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-627.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-628.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-629.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-630.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-631.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-632.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-633.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-634.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-635.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-636.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-637.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-638.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-639.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-640.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-641.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-642.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-643.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-644.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-645.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-646.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-647.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-648.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-649.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-650.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-651.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-652.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-653.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-654.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-655.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-656.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-657.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-658.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-659.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-660.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-661.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-662.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-663.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-664.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-665.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-666.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-667.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-668.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-669.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-670.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-671.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-672.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-673.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-674.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-675.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-676.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-677.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-678.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-679.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-680.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-681.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-682.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-683.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-684.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-685.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-686.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-687.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-688.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-689.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-690.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-691.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-subs_sv-692.m4s +#EXTINF:3.499, +https://mock.vod.com/20337209-subs_sv-693.m4s +#EXT-X-ENDLIST \ No newline at end of file diff --git a/testvectors/hls_abr7/master.m3u8 b/testvectors/hls_abr7/master.m3u8 new file mode 100644 index 0000000..fe129a6 --- /dev/null +++ b/testvectors/hls_abr7/master.m3u8 @@ -0,0 +1,26 @@ +#EXTM3U +#EXT-X-VERSION:4 + +# AUDIO groups +#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-aacl-128",LANGUAGE="sv",NAME="Swedish",AUTOSELECT=YES,DEFAULT=NO,CHANNELS="2",URI="master-audio-aacl-128_sv.m3u8" +#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-aacl-128",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=NO,CHANNELS="2",URI="master-audio-aacl-128_en.m3u8" + +# Subtitle groups +#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitles",LANGUAGE="sv",NAME="Svenska",AUTOSELECT=YES,DEFAULT=YES,URI="master-subtitles_sv.m3u8" +#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitles",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=NO,URI="master-subtitles_en.m3u8" +#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitles",LANGUAGE="no",NAME="Norsk",AUTOSELECT=YES,DEFAULT=NO,URI="master-subtitles_no.m3u8" + +#EXT-X-STREAM-INF:BANDWIDTH=590000,RESOLUTION=384x216,CODECS="mp4a.40.2,avc1.4D401E",AUDIO="audio-aacl-128",SUBTITLES="subtitles" +master590000.m3u8 +#EXT-X-STREAM-INF:BANDWIDTH=1120000,RESOLUTION=640x360,CODECS="mp4a.40.2,avc1.4D401E",AUDIO="audio-aacl-128",SUBTITLES="subtitles" +master1120000.m3u8 +#EXT-X-STREAM-INF:BANDWIDTH=1862000,RESOLUTION=768x432,CODECS="mp4a.40.2,avc1.4D401E",AUDIO="audio-aacl-128",SUBTITLES="subtitles" +master1862000.m3u8 +#EXT-X-STREAM-INF:BANDWIDTH=2922000,RESOLUTION=1024x576,CODECS="mp4a.40.2,avc1.4D401F",AUDIO="audio-aacl-128",SUBTITLES="subtitles" +master2922000.m3u8 +#EXT-X-STREAM-INF:BANDWIDTH=3982000,RESOLUTION=1280x720,CODECS="mp4a.40.2,avc1.4D401F",AUDIO="audio-aacl-128",SUBTITLES="subtitles" +master3982000.m3u8 +#EXT-X-STREAM-INF:BANDWIDTH=5437000,RESOLUTION=1920x1080,CODECS="mp4a.40.2,avc1.640028",AUDIO="audio-aacl-128",SUBTITLES="subtitles" +master5437000.m3u8 +#EXT-X-STREAM-INF:BANDWIDTH=7027000,RESOLUTION=1920x1080,CODECS="mp4a.40.2,avc1.640028",AUDIO="audio-aacl-128",SUBTITLES="subtitles" +master7027000.m3u8 diff --git a/testvectors/hls_abr7/master1120000.m3u8 b/testvectors/hls_abr7/master1120000.m3u8 new file mode 100644 index 0000000..b3c37b9 --- /dev/null +++ b/testvectors/hls_abr7/master1120000.m3u8 @@ -0,0 +1,298 @@ +#EXTM3U +#EXT-X-VERSION:6 +#EXT-X-INDEPENDENT-SEGMENTS +#EXT-X-TARGETDURATION:8 +#EXT-X-MEDIA-SEQUENCE:1 +#EXT-X-DISCONTINUITY-SEQUENCE:0 +#EXT-X-MAP:URI="https://mock.vod.com/20587924-video=1120000.m4s" +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-549.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-550.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-551.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-552.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-553.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-554.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-555.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-556.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-557.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-558.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-559.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-560.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-561.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-562.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-563.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-564.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-565.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-566.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-567.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-568.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-569.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-570.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-571.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-572.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-573.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-574.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-575.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-576.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-577.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-578.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-579.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-580.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-581.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-582.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-583.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-584.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-585.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-586.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-587.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-588.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-589.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-590.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-591.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-592.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-593.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-594.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-595.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-596.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-597.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-598.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-599.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-600.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-601.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-602.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-603.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-604.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-605.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-606.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-607.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-608.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-609.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-610.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-611.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-612.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-613.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-614.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-615.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-616.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-617.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-618.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-619.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-620.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-621.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-622.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-623.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-624.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-625.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-626.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-627.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-628.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-629.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-630.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-631.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-632.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-633.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-634.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-635.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-636.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-637.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-638.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-639.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-640.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-641.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-642.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-643.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-644.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-645.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-646.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-647.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-648.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-649.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-650.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-651.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-652.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-653.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-654.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-655.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-656.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-657.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-658.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-659.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-660.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-661.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-662.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-663.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-664.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-665.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-666.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-667.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-668.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-669.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-670.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-671.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-672.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-673.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-674.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-675.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-676.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-677.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-678.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-679.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-680.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-681.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-682.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-683.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-684.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-685.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-686.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-687.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-688.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-689.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-690.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-691.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1120000-692.m4s +#EXTINF:3.499, +https://mock.vod.com/20337209-video=1120000-693.m4s +#EXT-X-ENDLIST \ No newline at end of file diff --git a/testvectors/hls_abr7/master1862000.m3u8 b/testvectors/hls_abr7/master1862000.m3u8 new file mode 100644 index 0000000..b01561d --- /dev/null +++ b/testvectors/hls_abr7/master1862000.m3u8 @@ -0,0 +1,298 @@ +#EXTM3U +#EXT-X-VERSION:6 +#EXT-X-INDEPENDENT-SEGMENTS +#EXT-X-TARGETDURATION:8 +#EXT-X-MEDIA-SEQUENCE:1 +#EXT-X-DISCONTINUITY-SEQUENCE:0 +#EXT-X-MAP:URI="https://mock.vod.com/20587924-video=1862000.m4s" +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-549.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-550.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-551.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-552.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-553.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-554.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-555.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-556.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-557.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-558.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-559.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-560.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-561.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-562.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-563.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-564.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-565.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-566.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-567.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-568.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-569.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-570.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-571.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-572.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-573.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-574.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-575.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-576.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-577.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-578.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-579.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-580.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-581.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-582.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-583.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-584.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-585.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-586.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-587.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-588.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-589.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-590.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-591.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-592.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-593.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-594.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-595.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-596.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-597.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-598.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-599.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-600.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-601.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-602.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-603.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-604.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-605.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-606.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-607.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-608.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-609.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-610.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-611.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-612.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-613.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-614.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-615.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-616.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-617.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-618.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-619.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-620.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-621.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-622.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-623.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-624.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-625.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-626.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-627.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-628.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-629.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-630.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-631.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-632.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-633.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-634.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-635.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-636.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-637.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-638.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-639.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-640.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-641.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-642.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-643.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-644.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-645.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-646.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-647.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-648.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-649.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-650.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-651.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-652.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-653.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-654.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-655.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-656.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-657.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-658.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-659.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-660.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-661.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-662.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-663.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-664.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-665.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-666.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-667.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-668.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-669.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-670.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-671.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-672.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-673.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-674.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-675.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-676.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-677.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-678.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-679.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-680.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-681.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-682.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-683.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-684.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-685.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-686.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-687.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-688.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-689.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-690.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-691.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=1862000-692.m4s +#EXTINF:3.499, +https://mock.vod.com/20337209-video=1862000-693.m4s +#EXT-X-ENDLIST \ No newline at end of file diff --git a/testvectors/hls_abr7/master2922000.m3u8 b/testvectors/hls_abr7/master2922000.m3u8 new file mode 100644 index 0000000..6d01003 --- /dev/null +++ b/testvectors/hls_abr7/master2922000.m3u8 @@ -0,0 +1,298 @@ +#EXTM3U +#EXT-X-VERSION:6 +#EXT-X-INDEPENDENT-SEGMENTS +#EXT-X-TARGETDURATION:8 +#EXT-X-MEDIA-SEQUENCE:1 +#EXT-X-DISCONTINUITY-SEQUENCE:0 +#EXT-X-MAP:URI="https://mock.vod.com/20587924-video=2922000.m4s" +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-549.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-550.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-551.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-552.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-553.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-554.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-555.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-556.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-557.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-558.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-559.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-560.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-561.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-562.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-563.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-564.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-565.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-566.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-567.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-568.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-569.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-570.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-571.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-572.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-573.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-574.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-575.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-576.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-577.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-578.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-579.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-580.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-581.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-582.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-583.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-584.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-585.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-586.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-587.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-588.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-589.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-590.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-591.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-592.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-593.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-594.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-595.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-596.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-597.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-598.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-599.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-600.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-601.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-602.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-603.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-604.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-605.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-606.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-607.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-608.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-609.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-610.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-611.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-612.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-613.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-614.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-615.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-616.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-617.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-618.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-619.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-620.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-621.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-622.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-623.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-624.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-625.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-626.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-627.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-628.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-629.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-630.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-631.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-632.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-633.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-634.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-635.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-636.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-637.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-638.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-639.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-640.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-641.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-642.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-643.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-644.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-645.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-646.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-647.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-648.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-649.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-650.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-651.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-652.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-653.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-654.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-655.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-656.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-657.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-658.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-659.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-660.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-661.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-662.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-663.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-664.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-665.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-666.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-667.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-668.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-669.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-670.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-671.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-672.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-673.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-674.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-675.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-676.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-677.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-678.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-679.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-680.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-681.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-682.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-683.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-684.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-685.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-686.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-687.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-688.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-689.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-690.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-691.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=2922000-692.m4s +#EXTINF:3.499, +https://mock.vod.com/20337209-video=2922000-693.m4s +#EXT-X-ENDLIST \ No newline at end of file diff --git a/testvectors/hls_abr7/master3982000.m3u8 b/testvectors/hls_abr7/master3982000.m3u8 new file mode 100644 index 0000000..c5269dc --- /dev/null +++ b/testvectors/hls_abr7/master3982000.m3u8 @@ -0,0 +1,298 @@ +#EXTM3U +#EXT-X-VERSION:6 +#EXT-X-INDEPENDENT-SEGMENTS +#EXT-X-TARGETDURATION:8 +#EXT-X-MEDIA-SEQUENCE:1 +#EXT-X-DISCONTINUITY-SEQUENCE:0 +#EXT-X-MAP:URI="https://mock.vod.com/20587924-video=3982000.m4s" +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-549.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-550.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-551.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-552.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-553.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-554.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-555.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-556.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-557.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-558.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-559.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-560.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-561.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-562.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-563.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-564.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-565.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-566.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-567.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-568.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-569.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-570.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-571.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-572.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-573.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-574.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-575.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-576.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-577.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-578.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-579.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-580.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-581.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-582.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-583.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-584.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-585.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-586.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-587.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-588.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-589.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-590.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-591.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-592.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-593.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-594.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-595.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-596.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-597.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-598.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-599.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-600.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-601.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-602.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-603.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-604.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-605.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-606.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-607.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-608.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-609.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-610.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-611.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-612.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-613.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-614.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-615.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-616.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-617.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-618.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-619.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-620.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-621.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-622.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-623.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-624.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-625.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-626.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-627.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-628.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-629.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-630.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-631.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-632.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-633.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-634.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-635.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-636.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-637.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-638.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-639.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-640.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-641.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-642.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-643.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-644.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-645.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-646.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-647.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-648.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-649.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-650.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-651.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-652.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-653.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-654.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-655.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-656.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-657.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-658.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-659.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-660.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-661.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-662.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-663.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-664.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-665.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-666.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-667.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-668.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-669.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-670.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-671.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-672.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-673.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-674.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-675.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-676.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-677.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-678.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-679.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-680.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-681.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-682.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-683.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-684.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-685.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-686.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-687.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-688.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-689.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-690.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-691.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=3982000-692.m4s +#EXTINF:3.499, +https://mock.vod.com/20337209-video=3982000-693.m4s +#EXT-X-ENDLIST \ No newline at end of file diff --git a/testvectors/hls_abr7/master5437000.m3u8 b/testvectors/hls_abr7/master5437000.m3u8 new file mode 100644 index 0000000..070fd1a --- /dev/null +++ b/testvectors/hls_abr7/master5437000.m3u8 @@ -0,0 +1,298 @@ +#EXTM3U +#EXT-X-VERSION:6 +#EXT-X-INDEPENDENT-SEGMENTS +#EXT-X-TARGETDURATION:8 +#EXT-X-MEDIA-SEQUENCE:1 +#EXT-X-DISCONTINUITY-SEQUENCE:0 +#EXT-X-MAP:URI="https://mock.vod.com/20587924-video=5437000.m4s" +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-549.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-550.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-551.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-552.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-553.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-554.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-555.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-556.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-557.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-558.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-559.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-560.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-561.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-562.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-563.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-564.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-565.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-566.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-567.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-568.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-569.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-570.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-571.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-572.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-573.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-574.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-575.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-576.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-577.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-578.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-579.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-580.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-581.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-582.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-583.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-584.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-585.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-586.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-587.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-588.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-589.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-590.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-591.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-592.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-593.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-594.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-595.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-596.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-597.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-598.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-599.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-600.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-601.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-602.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-603.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-604.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-605.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-606.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-607.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-608.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-609.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-610.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-611.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-612.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-613.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-614.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-615.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-616.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-617.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-618.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-619.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-620.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-621.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-622.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-623.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-624.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-625.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-626.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-627.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-628.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-629.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-630.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-631.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-632.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-633.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-634.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-635.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-636.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-637.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-638.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-639.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-640.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-641.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-642.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-643.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-644.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-645.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-646.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-647.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-648.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-649.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-650.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-651.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-652.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-653.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-654.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-655.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-656.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-657.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-658.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-659.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-660.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-661.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-662.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-663.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-664.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-665.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-666.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-667.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-668.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-669.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-670.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-671.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-672.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-673.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-674.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-675.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-676.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-677.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-678.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-679.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-680.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-681.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-682.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-683.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-684.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-685.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-686.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-687.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-688.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-689.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-690.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-691.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=5437000-692.m4s +#EXTINF:3.499, +https://mock.vod.com/20337209-video=5437000-693.m4s +#EXT-X-ENDLIST \ No newline at end of file diff --git a/testvectors/hls_abr7/master590000.m3u8 b/testvectors/hls_abr7/master590000.m3u8 new file mode 100644 index 0000000..c1cb346 --- /dev/null +++ b/testvectors/hls_abr7/master590000.m3u8 @@ -0,0 +1,298 @@ +#EXTM3U +#EXT-X-VERSION:6 +#EXT-X-INDEPENDENT-SEGMENTS +#EXT-X-TARGETDURATION:8 +#EXT-X-MEDIA-SEQUENCE:1 +#EXT-X-DISCONTINUITY-SEQUENCE:0 +#EXT-X-MAP:URI="https://mock.vod.com/20587924-video=590000.m4s" +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-549.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-550.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-551.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-552.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-553.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-554.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-555.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-556.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-557.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-558.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-559.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-560.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-561.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-562.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-563.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-564.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-565.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-566.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-567.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-568.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-569.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-570.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-571.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-572.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-573.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-574.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-575.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-576.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-577.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-578.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-579.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-580.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-581.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-582.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-583.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-584.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-585.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-586.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-587.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-588.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-589.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-590.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-591.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-592.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-593.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-594.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-595.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-596.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-597.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-598.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-599.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-600.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-601.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-602.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-603.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-604.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-605.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-606.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-607.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-608.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-609.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-610.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-611.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-612.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-613.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-614.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-615.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-616.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-617.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-618.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-619.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-620.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-621.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-622.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-623.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-624.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-625.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-626.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-627.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-628.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-629.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-630.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-631.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-632.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-633.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-634.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-635.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-636.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-637.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-638.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-639.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-640.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-641.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-642.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-643.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-644.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-645.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-646.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-647.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-648.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-649.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-650.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-651.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-652.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-653.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-654.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-655.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-656.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-657.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-658.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-659.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-660.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-661.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-662.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-663.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-664.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-665.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-666.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-667.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-668.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-669.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-670.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-671.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-672.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-673.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-674.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-675.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-676.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-677.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-678.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-679.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-680.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-681.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-682.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-683.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-684.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-685.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-686.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-687.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-688.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-689.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-690.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-691.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=590000-692.m4s +#EXTINF:3.499, +https://mock.vod.com/20337209-video=590000-693.m4s +#EXT-X-ENDLIST \ No newline at end of file diff --git a/testvectors/hls_abr7/master7027000.m3u8 b/testvectors/hls_abr7/master7027000.m3u8 new file mode 100644 index 0000000..774fb04 --- /dev/null +++ b/testvectors/hls_abr7/master7027000.m3u8 @@ -0,0 +1,298 @@ +#EXTM3U +#EXT-X-VERSION:6 +#EXT-X-INDEPENDENT-SEGMENTS +#EXT-X-TARGETDURATION:8 +#EXT-X-MEDIA-SEQUENCE:1 +#EXT-X-DISCONTINUITY-SEQUENCE:0 +#EXT-X-MAP:URI="https://mock.vod.com/20587924-video=7027000.m4s" +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-549.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-550.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-551.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-552.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-553.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-554.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-555.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-556.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-557.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-558.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-559.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-560.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-561.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-562.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-563.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-564.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-565.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-566.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-567.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-568.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-569.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-570.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-571.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-572.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-573.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-574.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-575.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-576.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-577.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-578.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-579.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-580.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-581.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-582.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-583.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-584.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-585.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-586.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-587.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-588.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-589.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-590.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-591.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-592.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-593.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-594.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-595.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-596.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-597.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-598.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-599.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-600.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-601.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-602.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-603.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-604.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-605.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-606.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-607.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-608.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-609.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-610.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-611.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-612.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-613.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-614.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-615.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-616.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-617.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-618.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-619.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-620.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-621.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-622.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-623.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-624.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-625.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-626.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-627.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-628.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-629.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-630.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-631.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-632.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-633.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-634.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-635.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-636.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-637.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-638.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-639.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-640.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-641.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-642.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-643.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-644.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-645.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-646.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-647.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-648.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-649.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-650.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-651.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-652.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-653.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-654.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-655.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-656.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-657.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-658.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-659.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-660.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-661.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-662.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-663.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-664.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-665.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-666.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-667.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-668.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-669.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-670.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-671.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-672.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-673.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-674.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-675.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-676.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-677.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-678.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-679.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-680.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-681.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-682.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-683.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-684.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-685.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-686.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-687.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-688.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-689.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-690.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-691.m4s +#EXTINF:3.84, +https://mock.vod.com/20337209-video=7027000-692.m4s +#EXTINF:3.499, +https://mock.vod.com/20337209-video=7027000-693.m4s +#EXT-X-ENDLIST \ No newline at end of file