UNPKG

react-native-theoplayer

Version:

A THEOplayer video component for react-native.

62 lines (49 loc) 1.82 kB
import type { ABRConfiguration, ABRStrategy, Resolution, THEOplayerView } from 'react-native-theoplayer'; import { NativeModules } from 'react-native'; const NativePlayerModule = NativeModules.THEORCTPlayerModule; export class AbrAdapter implements ABRConfiguration { private readonly _view: THEOplayerView; private _strategy: ABRStrategy | undefined; private _targetBuffer: number | undefined; private _preferredPeakBitRate: number | undefined; private _preferredMaximumResolution: Resolution | undefined; constructor(view: THEOplayerView) { this._view = view; } get strategy(): ABRStrategy | undefined { return this._strategy; } set strategy(strategy: ABRStrategy | undefined) { this._strategy = strategy; this.updateConfig(); } get targetBuffer(): number | undefined { return this._targetBuffer; } set targetBuffer(targetBuffer: number | undefined) { this._targetBuffer = targetBuffer; this.updateConfig(); } get preferredPeakBitRate(): number | undefined { return this._preferredPeakBitRate; } set preferredPeakBitRate(preferredPeakBitRate: number | undefined) { this._preferredPeakBitRate = preferredPeakBitRate; this.updateConfig(); } get preferredMaximumResolution(): Resolution | undefined { return this._preferredMaximumResolution; } set preferredMaximumResolution(preferredMaximumResolution: Resolution | undefined) { this._preferredMaximumResolution = preferredMaximumResolution; this.updateConfig(); } private updateConfig() { NativePlayerModule.setABRConfig(this._view.nativeHandle, { targetBuffer: this._targetBuffer, strategy: this._strategy, preferredPeakBitRate: this._preferredPeakBitRate, preferredMaximumResolution: this._preferredMaximumResolution, }); } }