Skip to content

Commit

Permalink
flac support: don't duplicate regex needlessly
Browse files Browse the repository at this point in the history
  • Loading branch information
jprjr committed Dec 21, 2022
1 parent 4db9399 commit 17c2b88
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 15 deletions.
12 changes: 4 additions & 8 deletions src/controller/buffer-controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ import { LevelDetails } from '../loader/level-details';

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

export default class BufferController implements ComponentAPI {
// The level details used to determine duration, target-duration and live
Expand Down Expand Up @@ -257,11 +256,8 @@ export default class BufferController implements ComponentAPI {
);
if (currentCodec !== nextCodec) {
let trackCodec = levelCodec || codec;
if (trackName.indexOf('audio') !== -1) {
trackCodec = trackCodec.replace(
AUDIO_CODEC_REGEXP,
getCodecCompatibleName
);
if (trackName.slice(0, 5) === 'audio') {
trackCodec = getCodecCompatibleName(trackCodec);
}
const mimeType = `${container};codecs=${trackCodec}`;
this.appendChangeType(trackName, mimeType);
Expand Down Expand Up @@ -723,8 +719,8 @@ export default class BufferController implements ComponentAPI {
// use levelCodec as first priority
let codec = track.levelCodec || track.codec;
if (codec) {
if (trackName.indexOf('audio') !== -1) {
codec = codec.replace(AUDIO_CODEC_REGEXP, getCodecCompatibleName);
if (trackName.slice(0, 5) === 'audio') {
codec = getCodecCompatibleName(codec);
}
}
const mimeType = `${track.container};codecs=${codec}`;
Expand Down
7 changes: 1 addition & 6 deletions src/controller/level-controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@ const chromeOrFirefox: boolean = /chrome|firefox/.test(
navigator.userAgent.toLowerCase()
);

const AUDIO_CODEC_REGEXP = /flac|opus/gi;

export default class LevelController extends BasePlaylistController {
private _levels: Level[] = [];
private _firstLevel: number = -1;
Expand Down Expand Up @@ -112,10 +110,7 @@ export default class LevelController extends BasePlaylistController {
}

if (levelParsed.audioCodec) {
levelParsed.audioCodec = levelParsed.audioCodec.replace(
AUDIO_CODEC_REGEXP,
getCodecCompatibleName
);
levelParsed.audioCodec = getCodecCompatibleName(levelParsed.audioCodec);
}

const levelKey = `${levelParsed.bitrate}-${levelParsed.attrs.RESOLUTION}-${levelParsed.attrs.CODECS}`;
Expand Down
5 changes: 4 additions & 1 deletion src/utils/codecs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,9 @@ function getCodecCompatibleNameLower(
return lowerCaseCodec;
}

const AUDIO_CODEC_REGEXP = /flac|opus/i;
export function getCodecCompatibleName(codec: string): string {
return getCodecCompatibleNameLower(codec.toLowerCase() as LowerCaseCodecType);
return codec.replace(AUDIO_CODEC_REGEXP, (m) =>
getCodecCompatibleNameLower(m.toLowerCase() as LowerCaseCodecType)
);
}

0 comments on commit 17c2b88

Please sign in to comment.