@theoplayer/react-native-ui
Version:
A React Native UI for @theoplayer/react-native
65 lines (63 loc) • 1.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.calculateQualityLabelParams = calculateQualityLabelParams;
exports.filterRenderableTracks = filterRenderableTracks;
exports.getTrackLabel = getTrackLabel;
exports.stringFromTextTrackListEvent = stringFromTextTrackListEvent;
var _reactNativeTheoplayer = require("react-native-theoplayer");
var _Language = require("../../utils/language/Language");
function getTrackLabel(track) {
if (track.label) {
return track.label;
}
const languageCode = track.language;
if (languageCode) {
const iso639Language = (0, _Language.getISO639LanguageByCode)(languageCode);
if (iso639Language) {
return iso639Language.local;
}
}
return languageCode || '';
}
function stringFromTextTrackListEvent(type) {
switch (type) {
case _reactNativeTheoplayer.TrackListEventType.ADD_TRACK:
return 'AddTrack';
case _reactNativeTheoplayer.TrackListEventType.REMOVE_TRACK:
return 'RemoveTrack';
case _reactNativeTheoplayer.TrackListEventType.CHANGE_TRACK:
return 'ChangeTrack';
}
}
/**
* Retain renderable tracks.
* https://html.spec.whatwg.org/multipage/embedded-content.html#text-track-showing
*/
function filterRenderableTracks(textTracks) {
return textTracks.filter(textTrack => textTrack.kind === 'subtitles' || textTrack.kind === 'captions');
}
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