Skip to content

Commit 39516c5

Browse files
committed
flac support: don't duplicate regex needlessly
1 parent 463a71f commit 39516c5

File tree

3 files changed

+9
-15
lines changed

3 files changed

+9
-15
lines changed

src/controller/buffer-controller.ts

+4-8
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import { LevelDetails } from '../loader/level-details';
3030

3131
const MediaSource = getMediaSource();
3232
const VIDEO_CODEC_PROFILE_REPACE = /([ha]vc.)(?:\.[^.,]+)+/;
33-
const AUDIO_CODEC_REGEXP = /flac|opus/gi;
3433

3534
export default class BufferController implements ComponentAPI {
3635
// The level details used to determine duration, target-duration and live
@@ -257,11 +256,8 @@ export default class BufferController implements ComponentAPI {
257256
);
258257
if (currentCodec !== nextCodec) {
259258
let trackCodec = levelCodec || codec;
260-
if (trackName.indexOf('audio') !== -1) {
261-
trackCodec = trackCodec.replace(
262-
AUDIO_CODEC_REGEXP,
263-
getCodecCompatibleName
264-
);
259+
if (trackName.slice(0, 5) === 'audio') {
260+
trackCodec = getCodecCompatibleName(trackCodec);
265261
}
266262
const mimeType = `${container};codecs=${trackCodec}`;
267263
this.appendChangeType(trackName, mimeType);
@@ -723,8 +719,8 @@ export default class BufferController implements ComponentAPI {
723719
// use levelCodec as first priority
724720
let codec = track.levelCodec || track.codec;
725721
if (codec) {
726-
if (trackName.indexOf('audio') !== -1) {
727-
codec = codec.replace(AUDIO_CODEC_REGEXP, getCodecCompatibleName);
722+
if (trackName.slice(0, 5) === 'audio') {
723+
codec = getCodecCompatibleName(codec);
728724
}
729725
}
730726
const mimeType = `${track.container};codecs=${codec}`;

src/controller/level-controller.ts

+1-6
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ const chromeOrFirefox: boolean = /chrome|firefox/.test(
2626
navigator.userAgent.toLowerCase()
2727
);
2828

29-
const AUDIO_CODEC_REGEXP = /flac|opus/gi;
30-
3129
export default class LevelController extends BasePlaylistController {
3230
private _levels: Level[] = [];
3331
private _firstLevel: number = -1;
@@ -112,10 +110,7 @@ export default class LevelController extends BasePlaylistController {
112110
}
113111

114112
if (levelParsed.audioCodec) {
115-
levelParsed.audioCodec = levelParsed.audioCodec.replace(
116-
AUDIO_CODEC_REGEXP,
117-
getCodecCompatibleName
118-
);
113+
levelParsed.audioCodec = getCodecCompatibleName(levelParsed.audioCodec);
119114
}
120115

121116
const levelKey = `${levelParsed.bitrate}-${levelParsed.attrs.RESOLUTION}-${levelParsed.attrs.CODECS}`;

src/utils/codecs.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,9 @@ function getCodecCompatibleNameLower(
118118
return lowerCaseCodec;
119119
}
120120

121+
const AUDIO_CODEC_REGEXP = /flac|opus/i;
121122
export function getCodecCompatibleName(codec: string): string {
122-
return getCodecCompatibleNameLower(codec.toLowerCase() as LowerCaseCodecType);
123+
return codec.replace(AUDIO_CODEC_REGEXP, (m) =>
124+
getCodecCompatibleNameLower(m.toLowerCase() as LowerCaseCodecType)
125+
);
123126
}

0 commit comments

Comments
 (0)