@theoplayer/react-native-ui
Version:
A React Native UI for @theoplayer/react-native
56 lines (55 loc) • 1.58 kB
JavaScript
import { TrackListEventType } from 'react-native-theoplayer';
import { getISO639LanguageByCode } from '../../utils/language/Language';
export function getTrackLabel(track) {
if (track.label) {
return track.label;
}
const languageCode = track.language;
if (languageCode) {
const iso639Language = getISO639LanguageByCode(languageCode);
if (iso639Language) {
return iso639Language.local;
}
}
return languageCode || '';
}
export function stringFromTextTrackListEvent(type) {
switch (type) {
case TrackListEventType.ADD_TRACK:
return 'AddTrack';
case TrackListEventType.REMOVE_TRACK:
return 'RemoveTrack';
case TrackListEventType.CHANGE_TRACK:
return 'ChangeTrack';
}
}
/**
* Retain renderable tracks.
* https://html.spec.whatwg.org/multipage/embedded-content.html#text-track-showing
*/
export function filterRenderableTracks(textTracks) {
return textTracks.filter(textTrack => textTrack.kind === 'subtitles' || textTrack.kind === 'captions');
}
export function calculateQualityLabelParams(quality) {
let bitrate;
let unit;
if (quality.bandwidth > 1e7) {
bitrate = (quality.bandwidth / 1e6).toFixed(0);
unit = 'Mbps';
} else if (quality.bandwidth > 1e6) {
bitrate = (quality.bandwidth / 1e6).toFixed(1);
unit = 'Mbps';
} else {
bitrate = (quality.bandwidth / 1e3).toFixed(0);
unit = 'kbps';
}
return {
quality: quality,
label: quality.label,
width: quality.width,
height: quality.height,
bitrate,
unit
};
}
//# sourceMappingURL=TrackUtils.js.map