Skip to content

Commit c6b53b3

Browse files
authored
fix(HLS): Do not skip DateRanges based on ID (#8638)
According to HLS spec, there might be few date ranges with the same ID, which complement each other (i.e. SCTE35-IN / SCTE35-OUT). If date ranges are true duplicates (i.e. due to live update) it will be filter out anyway by `RegionTimeline` logic.
1 parent 712738d commit c6b53b3

File tree

2 files changed

+0
-46
lines changed

2 files changed

+0
-46
lines changed

lib/hls/hls_parser.js

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -286,9 +286,6 @@ shaka.hls.HlsParser = class {
286286
/** @private {boolean} */
287287
this.needsClosedCaptionsDetection_ = true;
288288

289-
/** @private {Set<string>} */
290-
this.dateRangeIdsEmitted_ = new Set();
291-
292289
/** @private {shaka.util.EventManager} */
293290
this.eventManager_ = new shaka.util.EventManager();
294291

@@ -382,7 +379,6 @@ shaka.hls.HlsParser = class {
382379
this.aesKeyMap_.clear();
383380
this.identityKeyMap_.clear();
384381
this.initSegmentToKidMap_.clear();
385-
this.dateRangeIdsEmitted_.clear();
386382

387383
if (this.contentSteeringManager_) {
388384
this.contentSteeringManager_.destroy();
@@ -4102,10 +4098,6 @@ shaka.hls.HlsParser = class {
41024098
for (let i = 0; i < dateRangeTags.length; i++) {
41034099
const tag = dateRangeTags[i];
41044100
try {
4105-
const id = tag.getRequiredAttrValue('ID');
4106-
if (this.dateRangeIdsEmitted_.has(id)) {
4107-
continue;
4108-
}
41094101
const startDateValue = tag.getRequiredAttrValue('START-DATE');
41104102
const startDate = shaka.util.TXml.parseDate(startDateValue);
41114103
if (isNaN(startDate)) {
@@ -4215,8 +4207,6 @@ shaka.hls.HlsParser = class {
42154207
if (values.length > 1) {
42164208
this.playerInterface_.onMetadata(type, startTime, endTime, values);
42174209
}
4218-
4219-
this.dateRangeIdsEmitted_.add(id);
42204210
} catch (e) {
42214211
shaka.log.warning('Ignoring DATERANGE with errors', tag.toString());
42224212
}

test/hls/hls_parser_unit.js

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -6094,42 +6094,6 @@ describe('HlsParser', () => {
60946094
expect(onMetadataSpy).toHaveBeenCalledWith(metadataType, 0, 5, values);
60956095
});
60966096

6097-
it('skip duplicate IDs', async () => {
6098-
const mediaPlaylist = [
6099-
'#EXTM3U\n',
6100-
'#EXT-X-TARGETDURATION:5\n',
6101-
'#EXT-X-PROGRAM-DATE-TIME:2000-01-01T00:00:00.00Z\n',
6102-
'#EXTINF:5,\n',
6103-
'video1.ts\n',
6104-
'#EXT-X-DATERANGE:ID="0",START-DATE="2000-01-01T00:00:00.00Z",',
6105-
'DURATION=1,X-SHAKA="FOREVER"\n',
6106-
'#EXT-X-DATERANGE:ID="0",START-DATE="2000-01-01T00:00:00.00Z",',
6107-
'DURATION=1,X-SHAKA="FOREVER"\n',
6108-
'#EXT-X-DATERANGE:ID="0",START-DATE="2000-01-01T00:00:00.00Z",',
6109-
'DURATION=1,X-SHAKA="FOREVER"\n',
6110-
].join('');
6111-
6112-
fakeNetEngine
6113-
.setResponseText('test:/master', mediaPlaylist)
6114-
.setResponseValue('test:/video1.ts', tsSegmentData);
6115-
6116-
await parser.start('test:/master', playerInterface);
6117-
6118-
const metadataType = 'com.apple.quicktime.HLS';
6119-
const values = [
6120-
jasmine.objectContaining({
6121-
key: 'ID',
6122-
data: '0',
6123-
}),
6124-
jasmine.objectContaining({
6125-
key: 'X-SHAKA',
6126-
data: 'FOREVER',
6127-
}),
6128-
];
6129-
expect(onMetadataSpy).toHaveBeenCalledTimes(1);
6130-
expect(onMetadataSpy).toHaveBeenCalledWith(metadataType, 0, 1, values);
6131-
});
6132-
61336097
it('with no EXT-X-PROGRAM-DATE-TIME', async () => {
61346098
const mediaPlaylist = [
61356099
'#EXTM3U\n',

0 commit comments

Comments
 (0)