Skip to content

Commit 971727c

Browse files
committed
Error and switch on containerless EC-3
Fixes #4958 in Safari where EC-3 playback is supported, but hls.js ec-3 audio demuxer not implemented
1 parent 9baf59e commit 971727c

2 files changed

Lines changed: 16 additions & 8 deletions

File tree

src/demux/audio/ac3-demuxer.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,15 @@ export class AC3Demuxer extends BaseAudioDemuxer {
7272
if (
7373
data[offset] === 0x0b &&
7474
data[offset + 1] === 0x77 &&
75-
getId3Timestamp(id3Data) !== undefined &&
76-
// check the bsid to confirm ac-3
77-
getAudioBSID(data, offset) < 16
75+
getId3Timestamp(id3Data) !== undefined
7876
) {
79-
return true;
77+
// check the bsid to confirm ac-3
78+
const bsid = getAudioBSID(data, offset);
79+
if (bsid < 16) {
80+
return true;
81+
} else {
82+
throw new Error('Containerless ec-3 is not supported');
83+
}
8084
}
8185
return false;
8286
}

src/demux/transmuxer.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -468,11 +468,15 @@ export default class Transmuxer {
468468
}
469469
// probe for content type
470470
let mux: MuxConfig | undefined;
471-
for (let i = 0, len = muxConfig.length; i < len; i++) {
472-
if (muxConfig[i].demux?.probe(data, this.logger)) {
473-
mux = muxConfig[i];
474-
break;
471+
try {
472+
for (let i = 0, len = muxConfig.length; i < len; i++) {
473+
if (muxConfig[i].demux?.probe(data, this.logger)) {
474+
mux = muxConfig[i];
475+
break;
476+
}
475477
}
478+
} catch (error) {
479+
return error;
476480
}
477481
if (!mux) {
478482
return new Error('Failed to find demuxer by probing fragment data');

0 commit comments

Comments
 (0)