bitmovin-player-react-native
Version:
Official React Native bindings for Bitmovin's mobile Player SDKs.
50 lines • 1.99 kB
JavaScript
import NativeInstance from '../nativeInstance';
import DecoderConfigModule from './decoderConfigModule';
/**
* Takes care of JS/Native communication for a `DecoderConfig`.
*/
export class DecoderConfigBridge extends NativeInstance {
/**
* Whether this object's native instance has been created.
*/
isInitialized = false;
/**
* Whether this object's native instance has been disposed.
*/
isDestroyed = false;
onOverrideDecodersPrioritySubscription;
initialize() {
if (!this.isInitialized) {
// Set up event listener for decoder priority override
this.onOverrideDecodersPrioritySubscription =
DecoderConfigModule.addListener('onOverrideDecodersPriority', ({ nativeId, context, preferredDecoders, }) => {
if (nativeId !== this.nativeId) {
return;
}
this.overrideDecodersPriority(context, preferredDecoders);
});
// Create native configuration object.
DecoderConfigModule.initializeWithConfig(this.nativeId, this.config || {});
this.isInitialized = true;
}
}
/**
* Destroys the native `DecoderConfig`
*/
destroy() {
if (!this.isDestroyed) {
DecoderConfigModule.destroy(this.nativeId);
this.onOverrideDecodersPrioritySubscription?.remove();
this.onOverrideDecodersPrioritySubscription = undefined;
this.isDestroyed = true;
}
}
/**
* Called by native code, when the decoder priority should be evaluated.
*/
overrideDecodersPriority(context, preferredDecoders) {
const orderedPriority = this.config?.decoderPriorityProvider?.overrideDecodersPriority(context, preferredDecoders) ?? preferredDecoders;
DecoderConfigModule.overrideDecoderPriorityProviderComplete(this.nativeId, orderedPriority);
}
}
//# sourceMappingURL=index.js.map