bitmovin-player-react-native 0.44.1-alpha.0 → 1.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +11 -0
- package/.eslintrc.js +7 -0
- package/.gitattributes +3 -0
- package/.prettierignore +11 -0
- package/.ruby-version +1 -0
- package/.swiftlint.yml +171 -0
- package/Brewfile +2 -0
- package/CHANGELOG.md +627 -0
- package/CONTRIBUTING.md +255 -0
- package/TODO.md +0 -0
- package/android/.editorconfig +8 -0
- package/android/build.gradle +78 -75
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +7 -0
- package/android/gradle.properties +1 -0
- package/android/gradlew +248 -0
- package/android/gradlew.bat +92 -0
- package/android/ktlint.gradle +31 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/ActivityLifecycleListener.kt +51 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/BitmovinCastManagerModule.kt +32 -55
- package/android/src/main/java/com/bitmovin/player/reactnative/BufferModule.kt +33 -45
- package/android/src/main/java/com/bitmovin/player/reactnative/CustomMessageHandlerModule.kt +84 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/DebugModule.kt +6 -14
- package/android/src/main/java/com/bitmovin/player/reactnative/DecoderConfigModule.kt +89 -44
- package/android/src/main/java/com/bitmovin/player/reactnative/DrmModule.kt +80 -99
- package/android/src/main/java/com/bitmovin/player/reactnative/EventSubscription.kt +22 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/FullscreenHandlerModule.kt +100 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/MediaSessionPlaybackManager.kt +5 -5
- package/android/src/main/java/com/bitmovin/player/reactnative/NetworkModule.kt +98 -56
- package/android/src/main/java/com/bitmovin/player/reactnative/OfflineModule.kt +132 -186
- package/android/src/main/java/com/bitmovin/player/reactnative/PlayerAnalyticsModule.kt +37 -36
- package/android/src/main/java/com/bitmovin/player/reactnative/PlayerModule.kt +252 -528
- package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerPackage.kt +11 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerView.kt +558 -213
- package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerViewManager.kt +99 -286
- package/android/src/main/java/com/bitmovin/player/reactnative/ResultWaiter.kt +58 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/SourceModule.kt +77 -151
- package/android/src/main/java/com/bitmovin/player/reactnative/Types.kt +44 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/UuidModule.kt +12 -15
- package/android/src/main/java/com/bitmovin/player/reactnative/converter/JsonConverter.kt +296 -456
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ListExtension.kt +89 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/MapExtension.kt +95 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/offline/OfflineContentManagerBridge.kt +20 -52
- package/android/src/main/java/com/bitmovin/player/reactnative/ui/CustomMessageHandlerBridge.kt +10 -20
- package/android/src/main/java/com/bitmovin/player/reactnative/ui/FullscreenHandlerBridge.kt +4 -9
- package/app.plugin.js +21 -0
- package/build/BitmovinPlayerReactNative.types.d.ts +18 -0
- package/build/BitmovinPlayerReactNative.types.d.ts.map +1 -0
- package/build/BitmovinPlayerReactNative.types.js +2 -0
- package/build/BitmovinPlayerReactNative.types.js.map +1 -0
- package/build/adaptationConfig.d.ts +18 -0
- package/build/adaptationConfig.d.ts.map +1 -0
- package/build/adaptationConfig.js +2 -0
- package/build/adaptationConfig.js.map +1 -0
- package/build/advertising.d.ts +175 -0
- package/build/advertising.d.ts.map +1 -0
- package/build/advertising.js +37 -0
- package/build/advertising.js.map +1 -0
- package/build/analytics/config.d.ts +194 -0
- package/build/analytics/config.d.ts.map +1 -0
- package/build/analytics/config.js +2 -0
- package/build/analytics/config.js.map +1 -0
- package/build/analytics/index.d.ts +3 -0
- package/build/analytics/index.d.ts.map +1 -0
- package/build/analytics/index.js +3 -0
- package/build/analytics/index.js.map +1 -0
- package/build/analytics/player.d.ts +24 -0
- package/build/analytics/player.d.ts.map +1 -0
- package/build/analytics/player.js +30 -0
- package/build/analytics/player.js.map +1 -0
- package/build/analytics/playerAnalyticsModule.d.ts +13 -0
- package/build/analytics/playerAnalyticsModule.d.ts.map +1 -0
- package/build/analytics/playerAnalyticsModule.js +3 -0
- package/build/analytics/playerAnalyticsModule.js.map +1 -0
- package/build/audioSession.d.ts +33 -0
- package/build/audioSession.d.ts.map +1 -0
- package/build/audioSession.js +21 -0
- package/build/audioSession.js.map +1 -0
- package/build/audioTrack.d.ts +39 -0
- package/build/audioTrack.d.ts.map +1 -0
- package/build/audioTrack.js +2 -0
- package/build/audioTrack.js.map +1 -0
- package/build/bitmovinCastManager.d.ts +58 -0
- package/build/bitmovinCastManager.d.ts.map +1 -0
- package/build/bitmovinCastManager.js +64 -0
- package/build/bitmovinCastManager.js.map +1 -0
- package/build/bufferApi.d.ts +85 -0
- package/build/bufferApi.d.ts.map +1 -0
- package/build/bufferApi.js +60 -0
- package/build/bufferApi.js.map +1 -0
- package/build/bufferConfig.d.ts +42 -0
- package/build/bufferConfig.d.ts.map +1 -0
- package/build/bufferConfig.js +2 -0
- package/build/bufferConfig.js.map +1 -0
- package/build/components/PlayerView/events.d.ts +310 -0
- package/build/components/PlayerView/events.d.ts.map +1 -0
- package/build/components/PlayerView/events.js +2 -0
- package/build/components/PlayerView/events.js.map +1 -0
- package/build/components/PlayerView/index.d.ts +10 -0
- package/build/components/PlayerView/index.d.ts.map +1 -0
- package/build/components/PlayerView/index.js +72 -0
- package/build/components/PlayerView/index.js.map +1 -0
- package/build/components/PlayerView/native.d.ts +30 -0
- package/build/components/PlayerView/native.d.ts.map +1 -0
- package/build/components/PlayerView/native.js +6 -0
- package/build/components/PlayerView/native.js.map +1 -0
- package/build/components/PlayerView/nativeEvents.d.ts +437 -0
- package/build/components/PlayerView/nativeEvents.d.ts.map +1 -0
- package/build/components/PlayerView/nativeEvents.js +2 -0
- package/build/components/PlayerView/nativeEvents.js.map +1 -0
- package/build/components/PlayerView/pictureInPictureConfig.d.ts +22 -0
- package/build/components/PlayerView/pictureInPictureConfig.d.ts.map +1 -0
- package/build/components/PlayerView/pictureInPictureConfig.js +2 -0
- package/build/components/PlayerView/pictureInPictureConfig.js.map +1 -0
- package/build/components/PlayerView/playerViewConfig.d.ts +111 -0
- package/build/components/PlayerView/playerViewConfig.d.ts.map +1 -0
- package/build/components/PlayerView/playerViewConfig.js +51 -0
- package/build/components/PlayerView/playerViewConfig.js.map +1 -0
- package/build/components/PlayerView/properties.d.ts +61 -0
- package/build/components/PlayerView/properties.d.ts.map +1 -0
- package/build/components/PlayerView/properties.js +2 -0
- package/build/components/PlayerView/properties.js.map +1 -0
- package/build/components/index.d.ts +5 -0
- package/build/components/index.d.ts.map +1 -0
- package/build/components/index.js +5 -0
- package/build/components/index.js.map +1 -0
- package/build/debug.d.ts +46 -0
- package/build/debug.d.ts.map +1 -0
- package/build/debug.js +52 -0
- package/build/debug.js.map +1 -0
- package/build/decoder/decoderConfig.d.ts +96 -0
- package/build/decoder/decoderConfig.d.ts.map +1 -0
- package/build/decoder/decoderConfig.js +6 -0
- package/build/decoder/decoderConfig.js.map +1 -0
- package/build/decoder/decoderConfigModule.d.ts +14 -0
- package/build/decoder/decoderConfigModule.d.ts.map +1 -0
- package/build/decoder/decoderConfigModule.js +31 -0
- package/build/decoder/decoderConfigModule.js.map +1 -0
- package/build/decoder/index.d.ts +26 -0
- package/build/decoder/index.d.ts.map +1 -0
- package/build/decoder/index.js +50 -0
- package/build/decoder/index.js.map +1 -0
- package/build/drm/drmModule.d.ts +55 -0
- package/build/drm/drmModule.d.ts.map +1 -0
- package/build/drm/drmModule.js +3 -0
- package/build/drm/drmModule.js.map +1 -0
- package/build/drm/fairplayConfig.d.ts +91 -0
- package/build/drm/fairplayConfig.d.ts.map +1 -0
- package/build/drm/fairplayConfig.js +2 -0
- package/build/drm/fairplayConfig.js.map +1 -0
- package/build/drm/index.d.ts +112 -0
- package/build/drm/index.d.ts.map +1 -0
- package/build/drm/index.js +191 -0
- package/build/drm/index.js.map +1 -0
- package/build/drm/widevineConfig.d.ts +58 -0
- package/build/drm/widevineConfig.d.ts.map +1 -0
- package/build/drm/widevineConfig.js +2 -0
- package/build/drm/widevineConfig.js.map +1 -0
- package/build/events.d.ts +692 -0
- package/build/events.d.ts.map +1 -0
- package/build/events.js +2 -0
- package/build/events.js.map +1 -0
- package/build/hooks/index.d.ts +2 -0
- package/build/hooks/index.d.ts.map +1 -0
- package/build/hooks/index.js +2 -0
- package/build/hooks/index.js.map +1 -0
- package/build/hooks/usePlayer.d.ts +8 -0
- package/build/hooks/usePlayer.d.ts.map +1 -0
- package/build/hooks/usePlayer.js +10 -0
- package/build/hooks/usePlayer.js.map +1 -0
- package/build/hooks/useProxy.d.ts +18 -0
- package/build/hooks/useProxy.d.ts.map +1 -0
- package/build/hooks/useProxy.js +16 -0
- package/build/hooks/useProxy.js.map +1 -0
- package/build/index.d.ts +32 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +32 -0
- package/build/index.js.map +1 -0
- package/build/liveConfig.d.ts +13 -0
- package/build/liveConfig.d.ts.map +1 -0
- package/build/liveConfig.js +2 -0
- package/build/liveConfig.js.map +1 -0
- package/build/media.d.ts +85 -0
- package/build/media.d.ts.map +1 -0
- package/build/media.js +2 -0
- package/build/media.js.map +1 -0
- package/build/mediaControlConfig.d.ts +62 -0
- package/build/mediaControlConfig.d.ts.map +1 -0
- package/build/mediaControlConfig.js +2 -0
- package/build/mediaControlConfig.js.map +1 -0
- package/build/mediaTrackRole.d.ts +28 -0
- package/build/mediaTrackRole.d.ts.map +1 -0
- package/build/mediaTrackRole.js +2 -0
- package/build/mediaTrackRole.js.map +1 -0
- package/build/modules/AudioSessionModule.d.ts +8 -0
- package/build/modules/AudioSessionModule.d.ts.map +1 -0
- package/build/modules/AudioSessionModule.js +7 -0
- package/build/modules/AudioSessionModule.js.map +1 -0
- package/build/modules/BitmovinCastManagerModule.d.ts +11 -0
- package/build/modules/BitmovinCastManagerModule.d.ts.map +1 -0
- package/build/modules/BitmovinCastManagerModule.js +3 -0
- package/build/modules/BitmovinCastManagerModule.js.map +1 -0
- package/build/modules/BufferModule.d.ts +16 -0
- package/build/modules/BufferModule.d.ts.map +1 -0
- package/build/modules/BufferModule.js +3 -0
- package/build/modules/BufferModule.js.map +1 -0
- package/build/modules/DebugModule.d.ts +8 -0
- package/build/modules/DebugModule.d.ts.map +1 -0
- package/build/modules/DebugModule.js +3 -0
- package/build/modules/DebugModule.js.map +1 -0
- package/build/modules/PlayerModule.d.ts +188 -0
- package/build/modules/PlayerModule.d.ts.map +1 -0
- package/build/modules/PlayerModule.js +3 -0
- package/build/modules/PlayerModule.js.map +1 -0
- package/build/modules/SourceModule.d.ts +51 -0
- package/build/modules/SourceModule.d.ts.map +1 -0
- package/build/modules/SourceModule.js +3 -0
- package/build/modules/SourceModule.js.map +1 -0
- package/build/modules/UuidModule.d.ts +8 -0
- package/build/modules/UuidModule.d.ts.map +1 -0
- package/build/modules/UuidModule.js +3 -0
- package/build/modules/UuidModule.js.map +1 -0
- package/build/nativeInstance.d.ts +49 -0
- package/build/nativeInstance.d.ts.map +1 -0
- package/build/nativeInstance.js +20 -0
- package/build/nativeInstance.js.map +1 -0
- package/build/network/index.d.ts +50 -0
- package/build/network/index.d.ts.map +1 -0
- package/build/network/index.js +102 -0
- package/build/network/index.js.map +1 -0
- package/build/network/networkConfig.d.ts +151 -0
- package/build/network/networkConfig.d.ts.map +1 -0
- package/build/network/networkConfig.js +21 -0
- package/build/network/networkConfig.js.map +1 -0
- package/build/network/networkModule.d.ts +29 -0
- package/build/network/networkModule.d.ts.map +1 -0
- package/build/network/networkModule.js +3 -0
- package/build/network/networkModule.js.map +1 -0
- package/build/offline/index.d.ts +8 -0
- package/build/offline/index.d.ts.map +1 -0
- package/build/offline/index.js +8 -0
- package/build/offline/index.js.map +1 -0
- package/build/offline/offlineContentConfig.d.ts +18 -0
- package/build/offline/offlineContentConfig.d.ts.map +1 -0
- package/build/offline/offlineContentConfig.js +2 -0
- package/build/offline/offlineContentConfig.js.map +1 -0
- package/build/offline/offlineContentManager.d.ts +90 -0
- package/build/offline/offlineContentManager.d.ts.map +1 -0
- package/build/offline/offlineContentManager.js +177 -0
- package/build/offline/offlineContentManager.js.map +1 -0
- package/build/offline/offlineContentManagerListener.d.ts +174 -0
- package/build/offline/offlineContentManagerListener.d.ts.map +1 -0
- package/build/offline/offlineContentManagerListener.js +17 -0
- package/build/offline/offlineContentManagerListener.js.map +1 -0
- package/build/offline/offlineContentOptions.d.ts +29 -0
- package/build/offline/offlineContentOptions.d.ts.map +1 -0
- package/build/offline/offlineContentOptions.js +2 -0
- package/build/offline/offlineContentOptions.js.map +1 -0
- package/build/offline/offlineDownloadRequest.d.ts +19 -0
- package/build/offline/offlineDownloadRequest.d.ts.map +1 -0
- package/build/offline/offlineDownloadRequest.js +2 -0
- package/build/offline/offlineDownloadRequest.js.map +1 -0
- package/build/offline/offlineModule.d.ts +32 -0
- package/build/offline/offlineModule.d.ts.map +1 -0
- package/build/offline/offlineModule.js +3 -0
- package/build/offline/offlineModule.js.map +1 -0
- package/build/offline/offlineSourceOptions.d.ts +12 -0
- package/build/offline/offlineSourceOptions.d.ts.map +1 -0
- package/build/offline/offlineSourceOptions.js +2 -0
- package/build/offline/offlineSourceOptions.js.map +1 -0
- package/build/offline/offlineState.d.ts +23 -0
- package/build/offline/offlineState.d.ts.map +1 -0
- package/build/offline/offlineState.js +24 -0
- package/build/offline/offlineState.js.map +1 -0
- package/build/playbackConfig.d.ts +88 -0
- package/build/playbackConfig.d.ts.map +1 -0
- package/build/playbackConfig.js +2 -0
- package/build/playbackConfig.js.map +1 -0
- package/build/player.d.ts +308 -0
- package/build/player.d.ts.map +1 -0
- package/build/player.js +445 -0
- package/build/player.js.map +1 -0
- package/build/playerConfig.d.ts +83 -0
- package/build/playerConfig.d.ts.map +1 -0
- package/build/playerConfig.js +2 -0
- package/build/playerConfig.js.map +1 -0
- package/build/remoteControlConfig.d.ts +38 -0
- package/build/remoteControlConfig.d.ts.map +1 -0
- package/build/remoteControlConfig.js +2 -0
- package/build/remoteControlConfig.js.map +1 -0
- package/build/source.d.ts +216 -0
- package/build/source.d.ts.map +1 -0
- package/build/source.js +167 -0
- package/build/source.js.map +1 -0
- package/build/styleConfig.d.ts +120 -0
- package/build/styleConfig.d.ts.map +1 -0
- package/build/styleConfig.js +38 -0
- package/build/styleConfig.js.map +1 -0
- package/build/subtitleFormat.d.ts +27 -0
- package/build/subtitleFormat.d.ts.map +1 -0
- package/build/subtitleFormat.js +28 -0
- package/build/subtitleFormat.js.map +1 -0
- package/build/subtitleTrack.d.ts +55 -0
- package/build/subtitleTrack.d.ts.map +1 -0
- package/build/subtitleTrack.js +2 -0
- package/build/subtitleTrack.js.map +1 -0
- package/build/thumbnail.d.ts +38 -0
- package/build/thumbnail.d.ts.map +1 -0
- package/build/thumbnail.js +2 -0
- package/build/thumbnail.js.map +1 -0
- package/build/tweaksConfig.d.ts +197 -0
- package/build/tweaksConfig.d.ts.map +1 -0
- package/build/tweaksConfig.js +25 -0
- package/build/tweaksConfig.js.map +1 -0
- package/build/ui/customMessageHandlerModule.d.ts +27 -0
- package/build/ui/customMessageHandlerModule.d.ts.map +1 -0
- package/build/ui/customMessageHandlerModule.js +3 -0
- package/build/ui/customMessageHandlerModule.js.map +1 -0
- package/build/ui/custommessagehandler.d.ts +56 -0
- package/build/ui/custommessagehandler.d.ts.map +1 -0
- package/build/ui/custommessagehandler.js +54 -0
- package/build/ui/custommessagehandler.js.map +1 -0
- package/build/ui/custommessagehandlerbridge.d.ts +33 -0
- package/build/ui/custommessagehandlerbridge.d.ts.map +1 -0
- package/build/ui/custommessagehandlerbridge.js +72 -0
- package/build/ui/custommessagehandlerbridge.js.map +1 -0
- package/build/ui/custommessagesender.d.ts +5 -0
- package/build/ui/custommessagesender.d.ts.map +1 -0
- package/build/ui/custommessagesender.js +2 -0
- package/build/ui/custommessagesender.js.map +1 -0
- package/build/ui/fullscreenHandlerModule.d.ts +20 -0
- package/build/ui/fullscreenHandlerModule.d.ts.map +1 -0
- package/build/ui/fullscreenHandlerModule.js +3 -0
- package/build/ui/fullscreenHandlerModule.js.map +1 -0
- package/build/ui/fullscreenhandler.d.ts +18 -0
- package/build/ui/fullscreenhandler.d.ts.map +1 -0
- package/build/ui/fullscreenhandler.js +2 -0
- package/build/ui/fullscreenhandler.js.map +1 -0
- package/build/ui/fullscreenhandlerbridge.d.ts +26 -0
- package/build/ui/fullscreenhandlerbridge.d.ts.map +1 -0
- package/build/ui/fullscreenhandlerbridge.js +67 -0
- package/build/ui/fullscreenhandlerbridge.js.map +1 -0
- package/build/ui/index.d.ts +3 -0
- package/build/ui/index.d.ts.map +1 -0
- package/build/ui/index.js +3 -0
- package/build/ui/index.js.map +1 -0
- package/expo-module.config.json +40 -0
- package/ios/AppLifecycleDelegate.swift +25 -0
- package/ios/AudioSessionModule.swift +14 -40
- package/ios/BitmovinCastManagerModule.swift +30 -69
- package/ios/BufferModule.swift +26 -62
- package/ios/CustomMessageHandlerBridge.swift +11 -18
- package/ios/CustomMessageHandlerModule.swift +61 -63
- package/ios/DebugModule.swift +6 -27
- package/ios/DrmModule.swift +105 -379
- package/ios/Event+JSON.swift +1 -0
- package/ios/FullscreenHandlerBridge.swift +12 -5
- package/ios/FullscreenHandlerModule.swift +73 -57
- package/ios/LockedBox.swift +21 -0
- package/ios/ModuleRegistry+Generics.swift +11 -0
- package/ios/NetworkModule.swift +78 -82
- package/ios/OfflineContentManagerBridge.swift +11 -38
- package/ios/OfflineModule.swift +136 -454
- package/ios/PlayerAnalyticsModule.swift +24 -52
- package/ios/PlayerModule.swift +192 -770
- package/ios/RCTConvert+BitmovinPlayer.swift +38 -312
- package/ios/RNBitmovinPlayer.h +1 -8
- package/ios/RNBitmovinPlayer.podspec +47 -0
- package/ios/RNPlayerView.swift +600 -77
- package/ios/RNPlayerViewManager.swift +96 -210
- package/ios/Registry.swift +2 -2
- package/ios/ResultWaiter.swift +66 -0
- package/ios/SourceModule.swift +104 -223
- package/ios/UuidModule.swift +9 -18
- package/package.json +67 -71
- package/plugin/build/FeatureFlags.d.ts +24 -0
- package/plugin/build/FeatureFlags.js +2 -0
- package/plugin/build/index.d.ts +7 -0
- package/plugin/build/index.js +10 -0
- package/plugin/build/withAppGradleDependencies.d.ts +7 -0
- package/plugin/build/withAppGradleDependencies.js +49 -0
- package/plugin/build/withBitmovinAndroidConfig.d.ts +7 -0
- package/plugin/build/withBitmovinAndroidConfig.js +159 -0
- package/plugin/build/withBitmovinConfig.d.ts +7 -0
- package/plugin/build/withBitmovinConfig.js +21 -0
- package/plugin/build/withBitmovinIosConfig.d.ts +7 -0
- package/plugin/build/withBitmovinIosConfig.js +53 -0
- package/plugin/src/FeatureFlags.ts +21 -0
- package/plugin/src/index.ts +9 -0
- package/plugin/src/withAppGradleDependencies.ts +80 -0
- package/plugin/src/withBitmovinAndroidConfig.ts +224 -0
- package/plugin/src/withBitmovinConfig.ts +24 -0
- package/plugin/src/withBitmovinIosConfig.ts +71 -0
- package/plugin/tsconfig.json +9 -0
- package/plugin/tsconfig.tsbuildinfo +1 -0
- package/prettier.config.js +7 -0
- package/scripts/format-android.sh +2 -0
- package/scripts/format-swift.sh +3 -0
- package/scripts/lint-android.sh +2 -0
- package/scripts/lint-swift.sh +3 -0
- package/scripts/pre-commit.sh +14 -0
- package/scripts/setup-hooks.sh +58 -0
- package/src/BitmovinPlayerReactNative.types.ts +19 -0
- package/src/adaptationConfig.ts +1 -1
- package/src/advertising.ts +1 -1
- package/src/analytics/config.ts +4 -4
- package/src/analytics/player.ts +4 -6
- package/src/analytics/playerAnalyticsModule.ts +19 -0
- package/src/audioSession.ts +4 -6
- package/src/audioTrack.ts +1 -1
- package/src/bitmovinCastManager.ts +14 -10
- package/src/bufferApi.ts +1 -3
- package/src/bufferConfig.ts +2 -2
- package/src/components/PlayerView/events.ts +92 -94
- package/src/components/PlayerView/index.tsx +109 -159
- package/src/components/PlayerView/native.ts +24 -11
- package/src/components/PlayerView/nativeEvents.ts +113 -94
- package/src/components/PlayerView/pictureInPictureConfig.ts +1 -1
- package/src/components/PlayerView/playerViewConfig.ts +4 -8
- package/src/components/PlayerView/properties.ts +23 -22
- package/src/debug.ts +1 -3
- package/src/decoder/decoderConfig.ts +3 -3
- package/src/decoder/decoderConfigModule.ts +62 -0
- package/src/decoder/index.ts +32 -16
- package/src/drm/drmModule.ts +84 -0
- package/src/drm/fairplayConfig.ts +1 -1
- package/src/drm/index.ts +130 -40
- package/src/drm/widevineConfig.ts +5 -5
- package/src/events.ts +47 -41
- package/src/hooks/useProxy.ts +13 -20
- package/src/mediaControlConfig.ts +1 -1
- package/src/modules/AudioSessionModule.ts +13 -0
- package/src/modules/BitmovinCastManagerModule.ts +14 -0
- package/src/modules/BufferModule.ts +18 -0
- package/src/modules/DebugModule.ts +9 -0
- package/src/modules/PlayerModule.ts +251 -0
- package/src/modules/SourceModule.ts +74 -0
- package/src/modules/UuidModule.ts +9 -0
- package/src/nativeInstance.ts +3 -3
- package/src/network/index.ts +42 -15
- package/src/network/networkConfig.ts +3 -3
- package/src/network/networkModule.ts +51 -0
- package/src/offline/offlineContentConfig.ts +1 -1
- package/src/offline/offlineContentManager.ts +15 -50
- package/src/offline/offlineContentManagerListener.ts +20 -23
- package/src/offline/offlineContentOptions.ts +2 -2
- package/src/offline/offlineDownloadRequest.ts +1 -1
- package/src/offline/offlineModule.ts +46 -0
- package/src/offline/offlineSourceOptions.ts +2 -2
- package/src/offline/offlineState.ts +1 -1
- package/src/playbackConfig.ts +5 -6
- package/src/player.ts +53 -48
- package/src/source.ts +15 -14
- package/src/styleConfig.ts +5 -5
- package/src/subtitleFormat.ts +5 -5
- package/src/subtitleTrack.ts +1 -1
- package/src/tweaksConfig.ts +16 -16
- package/src/ui/customMessageHandlerModule.ts +46 -0
- package/src/ui/custommessagehandlerbridge.ts +45 -18
- package/src/ui/fullscreenHandlerModule.ts +35 -0
- package/src/ui/fullscreenhandlerbridge.ts +35 -15
- package/tsconfig.json +9 -0
- package/typedoc.json +23 -0
- package/RNBitmovinPlayer.podspec +0 -26
- package/android/src/main/java/com/bitmovin/player/reactnative/BitmovinBaseModule.kt +0 -114
- package/android/src/main/java/com/bitmovin/player/reactnative/EventRelay.kt +0 -47
- package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerViewPackage.kt +0 -48
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReactContextExtension.kt +0 -24
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReadableArray.kt +0 -20
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReadableMap.kt +0 -15
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReadableMapExtension.kt +0 -57
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/WritableMap.kt +0 -27
- package/android/src/main/java/com/bitmovin/player/reactnative/ui/CustomMessageHandlerModule.kt +0 -86
- package/android/src/main/java/com/bitmovin/player/reactnative/ui/FullscreenHandlerModule.kt +0 -78
- package/ios/AudioSessionModule.m +0 -10
- package/ios/BitmovinCastManagerModule.m +0 -14
- package/ios/BufferModule.m +0 -8
- package/ios/CustomMessageHandlerModule.m +0 -10
- package/ios/DebugModule.m +0 -7
- package/ios/DrmModule.m +0 -16
- package/ios/FullscreenHandlerModule.m +0 -10
- package/ios/NetworkModule.m +0 -10
- package/ios/OfflineModule.m +0 -19
- package/ios/PlayerAnalyticsModule.m +0 -8
- package/ios/PlayerModule.m +0 -130
- package/ios/PreprocessHttpRequestDelegateBridge.swift +0 -30
- package/ios/RCTBridge+Generics.swift +0 -6
- package/ios/RNBitmovinPlayer.xcodeproj/project.pbxproj +0 -303
- package/ios/RNPlayerView+PlayerListener.swift +0 -229
- package/ios/RNPlayerView+UserInterfaceListener.swift +0 -35
- package/ios/RNPlayerViewManager.m +0 -79
- package/ios/SourceModule.m +0 -42
- package/ios/UuidModule.m +0 -9
- package/lib/index.d.mts +0 -4303
- package/lib/index.d.ts +0 -4303
- package/lib/index.js +0 -1895
- package/lib/index.mjs +0 -1836
|
@@ -1,302 +1,115 @@
|
|
|
1
1
|
package com.bitmovin.player.reactnative
|
|
2
2
|
|
|
3
|
-
import android.os.Handler
|
|
4
|
-
import android.os.Looper
|
|
5
|
-
import android.util.Log
|
|
6
|
-
import android.view.ViewGroup.LayoutParams
|
|
7
|
-
import com.bitmovin.player.PlayerView
|
|
8
|
-
import com.bitmovin.player.SubtitleView
|
|
9
|
-
import com.bitmovin.player.api.ui.PlayerViewConfig
|
|
10
|
-
import com.bitmovin.player.api.ui.ScalingMode
|
|
11
|
-
import com.bitmovin.player.api.ui.UiConfig
|
|
12
3
|
import com.bitmovin.player.reactnative.converter.toRNPlayerViewConfigWrapper
|
|
13
|
-
import com.bitmovin.player.reactnative.converter.toRNStyleConfigWrapperFromPlayerConfig
|
|
14
|
-
import com.bitmovin.player.reactnative.extensions.customMessageHandlerModule
|
|
15
4
|
import com.bitmovin.player.reactnative.extensions.getBooleanOrNull
|
|
16
|
-
import com.bitmovin.player.reactnative.extensions.
|
|
17
|
-
import com.bitmovin.player.reactnative.extensions.
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Exported module name to JS.
|
|
45
|
-
*/
|
|
46
|
-
override fun getName() = MODULE_NAME
|
|
47
|
-
|
|
48
|
-
private var customMessageHandlerBridgeId: NativeId? = null
|
|
49
|
-
private val handler = Handler(Looper.getMainLooper())
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* The component's native view factory. RN may call this method multiple times
|
|
53
|
-
* for each component instance.
|
|
54
|
-
*/
|
|
55
|
-
override fun createViewInstance(reactContext: ThemedReactContext) = RNPlayerView(context)
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Called when the component's view gets detached from the view hierarchy. Useful to perform
|
|
59
|
-
* cleanups.
|
|
60
|
-
*/
|
|
61
|
-
override fun onDropViewInstance(view: RNPlayerView) {
|
|
62
|
-
super.onDropViewInstance(view)
|
|
63
|
-
view.dispose()
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* A mapping between a event native identifier and its bubbled version that will
|
|
68
|
-
* be accessed from React.
|
|
69
|
-
*/
|
|
70
|
-
private val bubblingEventsMapping: Map<String, String> = mapOf(
|
|
71
|
-
"event" to "onBmpEvent",
|
|
72
|
-
"playerError" to "onBmpPlayerError",
|
|
73
|
-
"playerWarning" to "onBmpPlayerWarning",
|
|
74
|
-
"destroy" to "onBmpDestroy",
|
|
75
|
-
"muted" to "onBmpMuted",
|
|
76
|
-
"unmuted" to "onBmpUnmuted",
|
|
77
|
-
"ready" to "onBmpReady",
|
|
78
|
-
"paused" to "onBmpPaused",
|
|
79
|
-
"play" to "onBmpPlay",
|
|
80
|
-
"playing" to "onBmpPlaying",
|
|
81
|
-
"playbackFinished" to "onBmpPlaybackFinished",
|
|
82
|
-
"seek" to "onBmpSeek",
|
|
83
|
-
"seeked" to "onBmpSeeked",
|
|
84
|
-
"timeShift" to "onBmpTimeShift",
|
|
85
|
-
"timeShifted" to "onBmpTimeShifted",
|
|
86
|
-
"stallStarted" to "onBmpStallStarted",
|
|
87
|
-
"stallEnded" to "onBmpStallEnded",
|
|
88
|
-
"timeChanged" to "onBmpTimeChanged",
|
|
89
|
-
"sourceLoad" to "onBmpSourceLoad",
|
|
90
|
-
"sourceLoaded" to "onBmpSourceLoaded",
|
|
91
|
-
"sourceUnloaded" to "onBmpSourceUnloaded",
|
|
92
|
-
"sourceError" to "onBmpSourceError",
|
|
93
|
-
"sourceWarning" to "onBmpSourceWarning",
|
|
94
|
-
"audioAdded" to "onBmpAudioAdded",
|
|
95
|
-
"audioChanged" to "onBmpAudioChanged",
|
|
96
|
-
"audioRemoved" to "onBmpAudioRemoved",
|
|
97
|
-
"subtitleAdded" to "onBmpSubtitleAdded",
|
|
98
|
-
"subtitleChanged" to "onBmpSubtitleChanged",
|
|
99
|
-
"subtitleRemoved" to "onBmpSubtitleRemoved",
|
|
100
|
-
"downloadFinished" to "onBmpDownloadFinished",
|
|
101
|
-
"videoDownloadQualityChanged" to "onBmpVideoDownloadQualityChanged",
|
|
102
|
-
"pictureInPictureAvailabilityChanged" to "onBmpPictureInPictureAvailabilityChanged",
|
|
103
|
-
"pictureInPictureEnter" to "onBmpPictureInPictureEnter",
|
|
104
|
-
"pictureInPictureExit" to "onBmpPictureInPictureExit",
|
|
105
|
-
"adBreakFinished" to "onBmpAdBreakFinished",
|
|
106
|
-
"adBreakStarted" to "onBmpAdBreakStarted",
|
|
107
|
-
"adClicked" to "onBmpAdClicked",
|
|
108
|
-
"adError" to "onBmpAdError",
|
|
109
|
-
"adFinished" to "onBmpAdFinished",
|
|
110
|
-
"adManifestLoad" to "onBmpAdManifestLoad",
|
|
111
|
-
"adManifestLoaded" to "onBmpAdManifestLoaded",
|
|
112
|
-
"adQuartile" to "onBmpAdQuartile",
|
|
113
|
-
"adScheduled" to "onBmpAdScheduled",
|
|
114
|
-
"adSkipped" to "onBmpAdSkipped",
|
|
115
|
-
"adStarted" to "onBmpAdStarted",
|
|
116
|
-
"videoPlaybackQualityChanged" to "onBmpVideoPlaybackQualityChanged",
|
|
117
|
-
"fullscreenEnabled" to "onBmpFullscreenEnabled",
|
|
118
|
-
"fullscreenDisabled" to "onBmpFullscreenDisabled",
|
|
119
|
-
"fullscreenEnter" to "onBmpFullscreenEnter",
|
|
120
|
-
"fullscreenExit" to "onBmpFullscreenExit",
|
|
121
|
-
"castStart" to "onBmpCastStart",
|
|
122
|
-
"castPlaybackFinished" to "onBmpCastPlaybackFinished",
|
|
123
|
-
"castPaused" to "onBmpCastPaused",
|
|
124
|
-
"castPlaying" to "onBmpCastPlaying",
|
|
125
|
-
"castStarted" to "onBmpCastStarted",
|
|
126
|
-
"castAvailable" to "onBmpCastAvailable",
|
|
127
|
-
"castStopped" to "onBmpCastStopped",
|
|
128
|
-
"castWaitingForDevice" to "onBmpCastWaitingForDevice",
|
|
129
|
-
"castTimeUpdated" to "onBmpCastTimeUpdated",
|
|
130
|
-
"cueEnter" to "onBmpCueEnter",
|
|
131
|
-
"cueExit" to "onBmpCueExit",
|
|
132
|
-
)
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Component's event registry. Bubbling events are directly mapped to react props. No
|
|
136
|
-
* need to use proxy functions or `NativeEventEmitter`.
|
|
137
|
-
* @return map between event names (sent from native code) to js props.
|
|
138
|
-
*/
|
|
139
|
-
override fun getExportedCustomBubblingEventTypeConstants(): MutableMap<String, Any> =
|
|
140
|
-
bubblingEventsMapping.entries.associate {
|
|
141
|
-
it.key to mapOf(
|
|
142
|
-
"phasedRegistrationNames" to mapOf("bubbled" to it.value),
|
|
143
|
-
)
|
|
144
|
-
}.toMutableMap()
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* Component's command registry. They enable granular control over
|
|
148
|
-
* instances of a certain native component from js and give the ability
|
|
149
|
-
* to call 'functions' on them.
|
|
150
|
-
* @return map between names (used in js) and command ids (used in native code).
|
|
151
|
-
*/
|
|
152
|
-
override fun getCommandsMap(): Map<String, Int> = Commands.values().associate {
|
|
153
|
-
it.command to it.ordinal
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Callback triggered in response to command dispatches from the js side.
|
|
158
|
-
* @param view Root native view of the targeted component.
|
|
159
|
-
* @param commandId Command number identifier. It's a number even though RN sends it as a string.
|
|
160
|
-
* @param args Arguments list sent from the js side.
|
|
161
|
-
*/
|
|
162
|
-
override fun receiveCommand(view: RNPlayerView, commandId: String?, args: ReadableArray?) {
|
|
163
|
-
fun Int.toCommand(): Commands? = Commands.values().getOrNull(this)
|
|
164
|
-
val command = commandId?.toInt()?.toCommand() ?: throw IllegalArgumentException(
|
|
165
|
-
"The received command is not supported by the Bitmovin Player View",
|
|
166
|
-
)
|
|
167
|
-
|
|
168
|
-
fun <T> T?.require(): T = this ?: throw InvalidParameterException("Missing parameter")
|
|
169
|
-
when (command) {
|
|
170
|
-
Commands.ATTACH_PLAYER -> attachPlayer(view, args?.getString(1).require(), args?.getMap(2))
|
|
171
|
-
Commands.ATTACH_FULLSCREEN_BRIDGE -> attachFullscreenBridge(view, args?.getString(1).require())
|
|
172
|
-
Commands.SET_CUSTOM_MESSAGE_HANDLER_BRIDGE_ID -> setCustomMessageHandlerBridgeId(
|
|
173
|
-
view,
|
|
174
|
-
args?.getString(1).require(),
|
|
175
|
-
)
|
|
176
|
-
|
|
177
|
-
Commands.SET_FULLSCREEN -> setFullscreen(view, args?.getBoolean(1).require())
|
|
178
|
-
Commands.SET_SCALING_MODE -> setScalingMode(view, args?.getString(1).require())
|
|
179
|
-
Commands.SET_PICTURE_IN_PICTURE -> setPictureInPicture(view, args?.getBoolean(1).require())
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
@ReactProp(name = "config")
|
|
184
|
-
fun setConfig(view: RNPlayerView, config: ReadableMap?) {
|
|
185
|
-
view.config = config?.toRNPlayerViewConfigWrapper()
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
private fun attachFullscreenBridge(view: RNPlayerView, fullscreenBridgeId: NativeId) {
|
|
189
|
-
handler.postAndLogException {
|
|
190
|
-
view.playerView?.setFullscreenHandler(
|
|
191
|
-
context.getModule<FullscreenHandlerModule>()?.getInstance(fullscreenBridgeId),
|
|
192
|
-
)
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
private fun setFullscreen(view: RNPlayerView, isFullscreenRequested: Boolean) {
|
|
197
|
-
handler.postAndLogException {
|
|
198
|
-
val playerView = view.playerView ?: return@postAndLogException
|
|
199
|
-
if (playerView.isFullscreen == isFullscreenRequested) return@postAndLogException
|
|
200
|
-
if (isFullscreenRequested) {
|
|
201
|
-
playerView.enterFullscreen()
|
|
202
|
-
} else {
|
|
203
|
-
playerView.exitFullscreen()
|
|
5
|
+
import com.bitmovin.player.reactnative.extensions.getMap
|
|
6
|
+
import com.bitmovin.player.reactnative.extensions.getString
|
|
7
|
+
import expo.modules.kotlin.modules.Module
|
|
8
|
+
import expo.modules.kotlin.modules.ModuleDefinition
|
|
9
|
+
|
|
10
|
+
class RNPlayerViewManager : Module() {
|
|
11
|
+
override fun definition() = ModuleDefinition {
|
|
12
|
+
Name("RNPlayerViewManager")
|
|
13
|
+
|
|
14
|
+
View(RNPlayerView::class) {
|
|
15
|
+
Prop("config") { view: RNPlayerView, playerInfo: Map<String, Any>? ->
|
|
16
|
+
val playerId = playerInfo?.get("playerId") as? String
|
|
17
|
+
?: throw IllegalArgumentException("Player info must contain 'playerId' field")
|
|
18
|
+
val customMessageHandlerBridgeId = playerInfo.getString("customMessageHandlerBridgeId")
|
|
19
|
+
val enableBackgroundPlayback = playerInfo.getBooleanOrNull("enableBackgroundPlayback") ?: false
|
|
20
|
+
val isPictureInPictureEnabledOnPlayer =
|
|
21
|
+
playerInfo.getBooleanOrNull("isPictureInPictureEnabledOnPlayer") ?: false
|
|
22
|
+
val userInterfaceTypeName = playerInfo.getString("userInterfaceTypeName")
|
|
23
|
+
val playerViewConfigWrapper = playerInfo.getMap("playerViewConfig")?.toRNPlayerViewConfigWrapper()
|
|
24
|
+
view.attachPlayer(
|
|
25
|
+
playerId,
|
|
26
|
+
playerViewConfigWrapper,
|
|
27
|
+
customMessageHandlerBridgeId,
|
|
28
|
+
enableBackgroundPlayback,
|
|
29
|
+
isPictureInPictureEnabledOnPlayer,
|
|
30
|
+
userInterfaceTypeName,
|
|
31
|
+
)
|
|
204
32
|
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
33
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
val playerView = view.playerView ?: throw IllegalStateException("The player view is not yet created")
|
|
211
|
-
if (playerView.isPictureInPicture == isPictureInPictureRequested) return@postAndLogException
|
|
212
|
-
if (isPictureInPictureRequested) {
|
|
213
|
-
playerView.enterPictureInPicture()
|
|
214
|
-
} else {
|
|
215
|
-
playerView.exitPictureInPicture()
|
|
34
|
+
Prop("scalingMode") { view: RNPlayerView, scalingMode: String? ->
|
|
35
|
+
view.setScalingMode(scalingMode)
|
|
216
36
|
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
private fun setScalingMode(view: RNPlayerView, scalingMode: String) {
|
|
221
|
-
handler.postAndLogException {
|
|
222
|
-
view.playerView?.scalingMode = ScalingMode.valueOf(scalingMode)
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
37
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
private fun attachCustomMessageHandlerBridge(view: RNPlayerView) {
|
|
232
|
-
view.playerView?.setCustomMessageHandler(
|
|
233
|
-
context.customMessageHandlerModule
|
|
234
|
-
?.getInstance(customMessageHandlerBridgeId)
|
|
235
|
-
?.customMessageHandler,
|
|
236
|
-
)
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
/**
|
|
240
|
-
* Set the `Player` instance for the target view using `playerId`.
|
|
241
|
-
* @param view Target `RNPlayerView`.
|
|
242
|
-
* @param playerId `Player` instance id inside `PlayerModule`'s registry.
|
|
243
|
-
*/
|
|
244
|
-
private fun attachPlayer(view: RNPlayerView, playerId: NativeId, playerConfig: ReadableMap?) {
|
|
245
|
-
handler.postAndLogException {
|
|
246
|
-
val player = playerId.let { context.playerModule?.getPlayerOrNull(it) }
|
|
247
|
-
?: throw InvalidParameterException("Cannot create a PlayerView, invalid playerId was passed: $playerId")
|
|
248
|
-
val playbackConfig = playerConfig?.getMap("playbackConfig")
|
|
249
|
-
val isPictureInPictureEnabled = view.config?.pictureInPictureConfig?.isEnabled == true ||
|
|
250
|
-
playbackConfig?.getBooleanOrNull("isPictureInPictureEnabled") == true
|
|
251
|
-
view.enableBackgroundPlayback = playbackConfig?.getBooleanOrNull("isBackgroundPlaybackEnabled") == true
|
|
252
|
-
|
|
253
|
-
val rnStyleConfigWrapper = playerConfig?.toRNStyleConfigWrapperFromPlayerConfig()
|
|
254
|
-
val configuredPlayerViewConfig = view.config?.playerViewConfig ?: PlayerViewConfig()
|
|
255
|
-
|
|
256
|
-
if (view.playerView != null) {
|
|
257
|
-
view.player = player
|
|
258
|
-
} else {
|
|
259
|
-
// PlayerView has to be initialized with Activity context
|
|
260
|
-
val currentActivity = context.currentActivity
|
|
261
|
-
?: throw IllegalStateException("Cannot create a PlayerView, because no activity is attached.")
|
|
262
|
-
val userInterfaceType = rnStyleConfigWrapper?.userInterfaceType ?: UserInterfaceType.Bitmovin
|
|
263
|
-
val playerViewConfig: PlayerViewConfig = if (userInterfaceType != UserInterfaceType.Bitmovin) {
|
|
264
|
-
configuredPlayerViewConfig.copy(uiConfig = UiConfig.Disabled)
|
|
265
|
-
} else {
|
|
266
|
-
configuredPlayerViewConfig
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
val playerView = PlayerView(currentActivity, player, playerViewConfig)
|
|
38
|
+
Prop("isFullscreenRequested") { view: RNPlayerView, isFullscreen: Boolean ->
|
|
39
|
+
view.setFullscreen(isFullscreen)
|
|
40
|
+
}
|
|
270
41
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
LayoutParams.MATCH_PARENT,
|
|
274
|
-
)
|
|
275
|
-
if (isPictureInPictureEnabled) {
|
|
276
|
-
playerView.setPictureInPictureHandler(RNPictureInPictureHandler(currentActivity, player))
|
|
277
|
-
}
|
|
278
|
-
view.setPlayerView(playerView)
|
|
279
|
-
attachCustomMessageHandlerBridge(view)
|
|
42
|
+
Prop("isPictureInPictureRequested") { view: RNPlayerView, isPictureInPicture: Boolean ->
|
|
43
|
+
view.setPictureInPicture(isPictureInPicture)
|
|
280
44
|
}
|
|
281
45
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
) {
|
|
285
|
-
context.currentActivity?.let { activity ->
|
|
286
|
-
val subtitleView = SubtitleView(activity)
|
|
287
|
-
subtitleView.setPlayer(player)
|
|
288
|
-
view.setSubtitleView(subtitleView)
|
|
289
|
-
}
|
|
46
|
+
Prop("fullscreenBridgeId") { view: RNPlayerView, fullscreenBridgeId: String ->
|
|
47
|
+
view.attachFullscreenBridge(fullscreenBridgeId)
|
|
290
48
|
}
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
49
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
50
|
+
Events(
|
|
51
|
+
"onBmpEvent",
|
|
52
|
+
"onBmpPlayerError",
|
|
53
|
+
"onBmpPlayerWarning",
|
|
54
|
+
"onBmpDestroy",
|
|
55
|
+
"onBmpMuted",
|
|
56
|
+
"onBmpUnmuted",
|
|
57
|
+
"onBmpReady",
|
|
58
|
+
"onBmpPaused",
|
|
59
|
+
"onBmpPlay",
|
|
60
|
+
"onBmpPlaying",
|
|
61
|
+
"onBmpPlaybackFinished",
|
|
62
|
+
"onBmpSeek",
|
|
63
|
+
"onBmpSeeked",
|
|
64
|
+
"onBmpTimeShift",
|
|
65
|
+
"onBmpTimeShifted",
|
|
66
|
+
"onBmpStallStarted",
|
|
67
|
+
"onBmpStallEnded",
|
|
68
|
+
"onBmpTimeChanged",
|
|
69
|
+
"onBmpSourceLoad",
|
|
70
|
+
"onBmpSourceLoaded",
|
|
71
|
+
"onBmpSourceUnloaded",
|
|
72
|
+
"onBmpSourceError",
|
|
73
|
+
"onBmpSourceWarning",
|
|
74
|
+
"onBmpAudioAdded",
|
|
75
|
+
"onBmpAudioChanged",
|
|
76
|
+
"onBmpAudioRemoved",
|
|
77
|
+
"onBmpSubtitleAdded",
|
|
78
|
+
"onBmpSubtitleChanged",
|
|
79
|
+
"onBmpSubtitleRemoved",
|
|
80
|
+
"onBmpDownloadFinished",
|
|
81
|
+
"onBmpVideoDownloadQualityChanged",
|
|
82
|
+
"onBmpPictureInPictureAvailabilityChanged",
|
|
83
|
+
"onBmpPictureInPictureEnter",
|
|
84
|
+
"onBmpPictureInPictureExit",
|
|
85
|
+
"onBmpAdBreakFinished",
|
|
86
|
+
"onBmpAdBreakStarted",
|
|
87
|
+
"onBmpAdClicked",
|
|
88
|
+
"onBmpAdError",
|
|
89
|
+
"onBmpAdFinished",
|
|
90
|
+
"onBmpAdManifestLoad",
|
|
91
|
+
"onBmpAdManifestLoaded",
|
|
92
|
+
"onBmpAdQuartile",
|
|
93
|
+
"onBmpAdScheduled",
|
|
94
|
+
"onBmpAdSkipped",
|
|
95
|
+
"onBmpAdStarted",
|
|
96
|
+
"onBmpVideoPlaybackQualityChanged",
|
|
97
|
+
"onBmpFullscreenEnabled",
|
|
98
|
+
"onBmpFullscreenDisabled",
|
|
99
|
+
"onBmpFullscreenEnter",
|
|
100
|
+
"onBmpFullscreenExit",
|
|
101
|
+
"onBmpCastStart",
|
|
102
|
+
"onBmpCastPlaybackFinished",
|
|
103
|
+
"onBmpCastPaused",
|
|
104
|
+
"onBmpCastPlaying",
|
|
105
|
+
"onBmpCastStarted",
|
|
106
|
+
"onBmpCastAvailable",
|
|
107
|
+
"onBmpCastStopped",
|
|
108
|
+
"onBmpCastWaitingForDevice",
|
|
109
|
+
"onBmpCastTimeUpdated",
|
|
110
|
+
"onBmpCueEnter",
|
|
111
|
+
"onBmpCueExit",
|
|
112
|
+
)
|
|
300
113
|
}
|
|
301
114
|
}
|
|
302
115
|
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
package com.bitmovin.player.reactnative
|
|
2
|
+
|
|
3
|
+
import java.util.concurrent.ConcurrentHashMap
|
|
4
|
+
import java.util.concurrent.CountDownLatch
|
|
5
|
+
import java.util.concurrent.TimeUnit
|
|
6
|
+
import java.util.concurrent.atomic.AtomicInteger
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Lets native code synchronously wait for a value that will be supplied
|
|
10
|
+
* later (typically from JavaScript). Thread-safe, generic, timeout-aware.
|
|
11
|
+
*
|
|
12
|
+
* val (id, wait) = boolWaiter.make(250) // 250 ms
|
|
13
|
+
* sendEvent("...", mapOf("id" to id))
|
|
14
|
+
* val answer = wait() ?: false // fallback on timeout
|
|
15
|
+
*/
|
|
16
|
+
class ResultWaiter<T> {
|
|
17
|
+
|
|
18
|
+
private data class Entry<V>(
|
|
19
|
+
val latch: CountDownLatch = CountDownLatch(1),
|
|
20
|
+
@Volatile var value: V? = null,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
private val nextId = AtomicInteger()
|
|
24
|
+
private val table = ConcurrentHashMap<Int, Entry<T>>()
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Registers a new waiter and returns:
|
|
28
|
+
* • id – unique request handle
|
|
29
|
+
* • wait – blocking lambda that returns null on timeout
|
|
30
|
+
*
|
|
31
|
+
* @param timeoutMs max time the caller is willing to block
|
|
32
|
+
*/
|
|
33
|
+
fun make(timeoutMs: Long): Pair<Int, () -> T?> {
|
|
34
|
+
val id = nextId.incrementAndGet()
|
|
35
|
+
val entry = Entry<T>()
|
|
36
|
+
table[id] = entry
|
|
37
|
+
|
|
38
|
+
val waitFn = {
|
|
39
|
+
entry.latch.await(timeoutMs, TimeUnit.MILLISECONDS)
|
|
40
|
+
table.remove(id) // GC once done
|
|
41
|
+
entry.value
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return id to waitFn
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** Completes the waiter if it exists; does nothing otherwise. */
|
|
48
|
+
fun complete(id: Int, value: T) {
|
|
49
|
+
table[id]?.let {
|
|
50
|
+
it.value = value
|
|
51
|
+
it.latch.countDown()
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
fun clear() {
|
|
56
|
+
table.clear()
|
|
57
|
+
}
|
|
58
|
+
}
|