Skip to content

Commit a9e25e9

Browse files
committed
flac support: don't duplicate regex needlessly
1 parent 1edd029 commit a9e25e9

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
@@ -31,7 +31,6 @@ import type { LevelDetails } from '../loader/level-details';
3131

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

3635
export default class BufferController implements ComponentAPI {
3736
// The level details used to determine duration, target-duration and live
@@ -265,11 +264,8 @@ export default class BufferController implements ComponentAPI {
265264
);
266265
if (currentCodec !== nextCodec) {
267266
let trackCodec = levelCodec || codec;
268-
if (trackName.indexOf('audio') !== -1) {
269-
trackCodec = trackCodec.replace(
270-
AUDIO_CODEC_REGEXP,
271-
getCodecCompatibleName
272-
);
267+
if (trackName.slice(0, 5) === 'audio') {
268+
trackCodec = getCodecCompatibleName(trackCodec);
273269
}
274270
const mimeType = `${container};codecs=${trackCodec}`;
275271
this.appendChangeType(trackName, mimeType);
@@ -758,8 +754,8 @@ export default class BufferController implements ComponentAPI {
758754
// use levelCodec as first priority
759755
let codec = track.levelCodec || track.codec;
760756
if (codec) {
761-
if (trackName.indexOf('audio') !== -1) {
762-
codec = codec.replace(AUDIO_CODEC_REGEXP, getCodecCompatibleName);
757+
if (trackName.slice(0, 5) === 'audio') {
758+
codec = getCodecCompatibleName(codec);
763759
}
764760
}
765761
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 @@ import ContentSteeringController from './content-steering-controller';
2626

2727
let chromeOrFirefox: boolean;
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;
@@ -125,10 +123,7 @@ export default class LevelController extends BasePlaylistController {
125123
}
126124

127125
if (levelParsed.audioCodec) {
128-
levelParsed.audioCodec = levelParsed.audioCodec.replace(
129-
AUDIO_CODEC_REGEXP,
130-
getCodecCompatibleName
131-
);
126+
levelParsed.audioCodec = getCodecCompatibleName(levelParsed.audioCodec);
132127
}
133128

134129
const {

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)