Skip to content

Commit 5022f9d

Browse files
authored
feat(UI): Show the audio selector when they only differ in the label (#8745)
This case is very common in HLS.
1 parent 56f6aa8 commit 5022f9d

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

ui/language_utils.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,27 @@ goog.requireType('shaka.ui.Localization');
2020

2121

2222
shaka.ui.LanguageUtils = class {
23+
/**
24+
* @param {!Array<shaka.extern.AudioTrack>} tracks
25+
* @return {boolean}
26+
* @private
27+
*/
28+
static areAudioTracksEqualExceptLabel_(tracks) {
29+
const basicTrack = (track) => {
30+
return {
31+
codecs: track.codecs,
32+
channelCount: track.channelCount,
33+
language: track.language,
34+
roles: track.roles,
35+
spatialAudio: track.spatialAudio,
36+
};
37+
};
38+
const reference = basicTrack(tracks[0]);
39+
return tracks.every((track) => {
40+
return JSON.stringify(basicTrack(track)) === JSON.stringify(reference);
41+
});
42+
}
43+
2344
/**
2445
* @param {!Array<shaka.extern.AudioTrack>} tracks
2546
* @param {!HTMLElement} langMenu
@@ -42,6 +63,12 @@ shaka.ui.LanguageUtils = class {
4263
return track.active == true;
4364
});
4465

66+
if (tracks.length > 1 && tracks[0].label &&
67+
trackLabelFormat != shaka.ui.Overlay.TrackLabelFormat.LABEL &&
68+
shaka.ui.LanguageUtils.areAudioTracksEqualExceptLabel_(tracks)) {
69+
trackLabelFormat = shaka.ui.Overlay.TrackLabelFormat.LABEL;
70+
}
71+
4572
/** @type {!Map<string, !Set<string>>} */
4673
const codecsByLanguage = new Map();
4774
for (const track of tracks) {

0 commit comments

Comments
 (0)