UNPKG

bitmovin-player-react-native

Version:

Official React Native bindings for Bitmovin's mobile Player SDKs.

63 lines (57 loc) 1.63 kB
import { NativeModule, requireNativeModule } from 'expo-modules-core'; import { Platform } from 'react-native'; export type DecoderConfigModuleEvents = { onOverrideDecodersPriority: ({ nativeId, context, preferredDecoders, }: { nativeId: string; context: any; preferredDecoders: any[]; }) => void; }; /** * Native DecoderConfigModule using Expo modules API. * Android-only module for decoder configuration. */ declare class DecoderConfigModule extends NativeModule<DecoderConfigModuleEvents> { initializeWithConfig( nativeId: string, config: Record<string, any> ): Promise<void>; overrideDecoderPriorityProviderComplete( nativeId: string, response: any[] ): Promise<void>; destroy(nativeId: string): Promise<void>; } /** * Expo-based DecoderConfigModule implementation. * Android-only module that gracefully handles iOS by providing no-op implementations. */ let DecoderConfigModuleInstance: any; if (Platform.OS === 'android') { DecoderConfigModuleInstance = requireNativeModule<DecoderConfigModule>( 'DecoderConfigModule' ); } else { // iOS graceful fallback - provide no-op implementations DecoderConfigModuleInstance = { initializeWithConfig: async () => { // No-op on iOS }, overrideDecoderPriorityProviderComplete: async () => { // No-op on iOS }, destroy: async () => { // No-op on iOS }, addListener: () => ({ remove: () => {} }), removeListener: () => {}, removeAllListeners: () => {}, emit: () => {}, listenerCount: () => 0, }; } export default DecoderConfigModuleInstance;