spactureai-mobile-player 1.0.30
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/LICENSE +20 -0
- package/README.md +474 -0
- package/UnifiedPlayer.podspec +51 -0
- package/android/CMakeLists.txt +29 -0
- package/android/build.gradle +249 -0
- package/android/fix-prefab.gradle +51 -0
- package/android/gradle.properties +15 -0
- package/android/src/main/AndroidManifest.xml +10 -0
- package/android/src/main/AndroidManifestNew.xml +9 -0
- package/android/src/main/cpp/cpp-adapter.cpp +9 -0
- package/android/src/main/java/com/unifiedplayer/core/AudioFocusManager.kt +233 -0
- package/android/src/main/java/com/unifiedplayer/core/VideoError.kt +105 -0
- package/android/src/main/java/com/unifiedplayer/core/VideoManager.kt +292 -0
- package/android/src/main/java/com/unifiedplayer/core/extensions/ResizeMode+AspectRatioFrameLayout.kt +20 -0
- package/android/src/main/java/com/unifiedplayer/core/extensions/SubtitleType+toString.kt +14 -0
- package/android/src/main/java/com/unifiedplayer/core/extensions/VideoPlaybackService+ServiceManagment.kt +59 -0
- package/android/src/main/java/com/unifiedplayer/core/fragments/FullscreenVideoFragment.kt +346 -0
- package/android/src/main/java/com/unifiedplayer/core/fragments/PictureInPictureHelperFragment.kt +85 -0
- package/android/src/main/java/com/unifiedplayer/core/player/DRMManagerSpec.kt +23 -0
- package/android/src/main/java/com/unifiedplayer/core/player/DataSourceFactoryUtils.kt +93 -0
- package/android/src/main/java/com/unifiedplayer/core/player/MediaItemUtils.kt +141 -0
- package/android/src/main/java/com/unifiedplayer/core/player/MediaSourceUtils.kt +134 -0
- package/android/src/main/java/com/unifiedplayer/core/player/OnAudioFocusChangedListener.kt +25 -0
- package/android/src/main/java/com/unifiedplayer/core/plugins/PluginsRegistry.kt +223 -0
- package/android/src/main/java/com/unifiedplayer/core/plugins/ReactNativeVideoPlugin.kt +173 -0
- package/android/src/main/java/com/unifiedplayer/core/recivers/AudioBecomingNoisyReceiver.kt +38 -0
- package/android/src/main/java/com/unifiedplayer/core/services/playback/CustomMediaNotificationProvider.kt +151 -0
- package/android/src/main/java/com/unifiedplayer/core/services/playback/VideoPlaybackCallback.kt +96 -0
- package/android/src/main/java/com/unifiedplayer/core/services/playback/VideoPlaybackService.kt +219 -0
- package/android/src/main/java/com/unifiedplayer/core/services/playback/VideoPlaybackServiceConnection.kt +59 -0
- package/android/src/main/java/com/unifiedplayer/core/utils/PictureInPictureUtils.kt +153 -0
- package/android/src/main/java/com/unifiedplayer/core/utils/SmallVideoPlayerOptimizer.kt +157 -0
- package/android/src/main/java/com/unifiedplayer/core/utils/SourceLoader.kt +48 -0
- package/android/src/main/java/com/unifiedplayer/core/utils/TextTrackUtils.kt +175 -0
- package/android/src/main/java/com/unifiedplayer/core/utils/Threading.kt +75 -0
- package/android/src/main/java/com/unifiedplayer/core/utils/VideoFileHelper.kt +51 -0
- package/android/src/main/java/com/unifiedplayer/core/utils/VideoInformationUtils.kt +67 -0
- package/android/src/main/java/com/unifiedplayer/core/utils/VideoOrientationUtils.kt +30 -0
- package/android/src/main/java/com/unifiedplayer/hybrids/videoplayer/HybridVideoPlayer.kt +732 -0
- package/android/src/main/java/com/unifiedplayer/hybrids/videoplayer/HybridVideoPlayerFactory.kt +16 -0
- package/android/src/main/java/com/unifiedplayer/hybrids/videoplayereventemitter/HybridVideoPlayerEventEmitter.kt +180 -0
- package/android/src/main/java/com/unifiedplayer/hybrids/videoplayersource/HybridVideoPlayerSource.kt +67 -0
- package/android/src/main/java/com/unifiedplayer/hybrids/videoplayersource/HybridVideoPlayerSourceFactory.kt +58 -0
- package/android/src/main/java/com/unifiedplayer/hybrids/videoviewviewmanager/HybridVideoViewViewManager.kt +187 -0
- package/android/src/main/java/com/unifiedplayer/hybrids/videoviewviewmanager/HybridVideoViewViewManagerFactory.kt +13 -0
- package/android/src/main/java/com/unifiedplayer/react/VideoPackage.kt +25 -0
- package/android/src/main/java/com/unifiedplayer/react/VideoViewViewManager.kt +78 -0
- package/android/src/main/java/com/unifiedplayer/view/VideoView.kt +565 -0
- package/android/src/main/res/layout/custom_player_control_view.xml +82 -0
- package/android/src/main/res/layout/player_view_surface.xml +13 -0
- package/android/src/main/res/layout/player_view_texture.xml +13 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNCVideoViewManagerDelegate.java +32 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNCVideoViewManagerInterface.java +16 -0
- package/android/src/stubs/dash/androidx/media3/exoplayer/dash/DashMediaSource.kt +35 -0
- package/android/src/stubs/dash/androidx/media3/exoplayer/dash/DashUtil.kt +11 -0
- package/android/src/stubs/dash/androidx/media3/exoplayer/dash/manifest/AdaptationSet.kt +9 -0
- package/android/src/stubs/dash/androidx/media3/exoplayer/dash/manifest/DashManifest.kt +10 -0
- package/android/src/stubs/dash/androidx/media3/exoplayer/dash/manifest/Period.kt +7 -0
- package/android/src/stubs/dash/androidx/media3/exoplayer/dash/manifest/Representation.kt +8 -0
- package/android/src/stubs/hls/androidx/media3/exoplayer/hls/HlsMediaSource.kt +33 -0
- package/ios/RNCVideoViewManager.mm +39 -0
- package/ios/Video-Bridging-Header.h +2 -0
- package/ios/core/HLSAuthProxy.swift +428 -0
- package/ios/core/VideoError.swift +164 -0
- package/ios/core/VideoManager.swift +219 -0
- package/ios/hybrids/VideoPlayer/HybridVideoPlayer.swift +697 -0
- package/ios/hybrids/VideoPlayer/HybridVideoPlayerFactory.swift +15 -0
- package/ios/hybrids/VideoPlayer/VLCPlaybackDelegates.swift +58 -0
- package/ios/hybrids/VideoPlayerEmitter/HybridVideoPlayerEventEmitter.swift +203 -0
- package/ios/hybrids/VideoPlayerSource/HybridVideoPlayerSource.swift +55 -0
- package/ios/hybrids/VideoPlayerSource/HybridVideoPlayerSourceFactory.swift +29 -0
- package/ios/hybrids/VideoViewViewManager/HybridVideoViewViewManager.swift +266 -0
- package/ios/hybrids/VideoViewViewManager/HybridVideoViewViewManagerFactory.swift +14 -0
- package/ios/view/VideoComponentView.swift +196 -0
- package/ios/view/VideoComponentViewObserver.swift +48 -0
- package/lib/module/core/VideoPlayer.js +287 -0
- package/lib/module/core/VideoPlayer.js.map +1 -0
- package/lib/module/core/VideoPlayerEvents.js +84 -0
- package/lib/module/core/VideoPlayerEvents.js.map +1 -0
- package/lib/module/core/hooks/useEvent.js +19 -0
- package/lib/module/core/hooks/useEvent.js.map +1 -0
- package/lib/module/core/hooks/useManagedInstance.js +75 -0
- package/lib/module/core/hooks/useManagedInstance.js.map +1 -0
- package/lib/module/core/hooks/useVideoPlayer.js +57 -0
- package/lib/module/core/hooks/useVideoPlayer.js.map +1 -0
- package/lib/module/core/types/BufferConfig.js +2 -0
- package/lib/module/core/types/BufferConfig.js.map +1 -0
- package/lib/module/core/types/DrmParams.js +2 -0
- package/lib/module/core/types/DrmParams.js.map +1 -0
- package/lib/module/core/types/Events.js +10 -0
- package/lib/module/core/types/Events.js.map +1 -0
- package/lib/module/core/types/IgnoreSilentSwitchMode.js +2 -0
- package/lib/module/core/types/IgnoreSilentSwitchMode.js.map +1 -0
- package/lib/module/core/types/MixAudioMode.js +2 -0
- package/lib/module/core/types/MixAudioMode.js.map +1 -0
- package/lib/module/core/types/ResizeMode.js +2 -0
- package/lib/module/core/types/ResizeMode.js.map +1 -0
- package/lib/module/core/types/TextTrack.js +2 -0
- package/lib/module/core/types/TextTrack.js.map +1 -0
- package/lib/module/core/types/Utils.js +2 -0
- package/lib/module/core/types/Utils.js.map +1 -0
- package/lib/module/core/types/VideoConfig.js +4 -0
- package/lib/module/core/types/VideoConfig.js.map +1 -0
- package/lib/module/core/types/VideoError.js +100 -0
- package/lib/module/core/types/VideoError.js.map +1 -0
- package/lib/module/core/types/VideoInformation.js +4 -0
- package/lib/module/core/types/VideoInformation.js.map +1 -0
- package/lib/module/core/types/VideoOrientation.js +2 -0
- package/lib/module/core/types/VideoOrientation.js.map +1 -0
- package/lib/module/core/types/VideoPlayerBase.js +4 -0
- package/lib/module/core/types/VideoPlayerBase.js.map +1 -0
- package/lib/module/core/types/VideoPlayerSourceBase.js +4 -0
- package/lib/module/core/types/VideoPlayerSourceBase.js.map +1 -0
- package/lib/module/core/types/VideoPlayerStatus.js +2 -0
- package/lib/module/core/types/VideoPlayerStatus.js.map +1 -0
- package/lib/module/core/utils/playerFactory.js +25 -0
- package/lib/module/core/utils/playerFactory.js.map +1 -0
- package/lib/module/core/utils/sourceFactory.js +138 -0
- package/lib/module/core/utils/sourceFactory.js.map +1 -0
- package/lib/module/core/video-view/NativeVideoView.tsx +18 -0
- package/lib/module/core/video-view/VideoView.js +261 -0
- package/lib/module/core/video-view/VideoView.js.map +1 -0
- package/lib/module/expo-plugins/@types.js +2 -0
- package/lib/module/expo-plugins/@types.js.map +1 -0
- package/lib/module/expo-plugins/getPackageInfo.js +23 -0
- package/lib/module/expo-plugins/getPackageInfo.js.map +1 -0
- package/lib/module/expo-plugins/withAndroidExtensions.js +35 -0
- package/lib/module/expo-plugins/withAndroidExtensions.js.map +1 -0
- package/lib/module/expo-plugins/withAndroidNotificationControls.js +29 -0
- package/lib/module/expo-plugins/withAndroidNotificationControls.js.map +1 -0
- package/lib/module/expo-plugins/withAndroidPictureInPicture.js +18 -0
- package/lib/module/expo-plugins/withAndroidPictureInPicture.js.map +1 -0
- package/lib/module/expo-plugins/withBackgroundAudio.js +22 -0
- package/lib/module/expo-plugins/withBackgroundAudio.js.map +1 -0
- package/lib/module/expo-plugins/withReactNativeVideo.js +27 -0
- package/lib/module/expo-plugins/withReactNativeVideo.js.map +1 -0
- package/lib/module/expo-plugins/writeToPodfile.js +53 -0
- package/lib/module/expo-plugins/writeToPodfile.js.map +1 -0
- package/lib/module/index.js +8 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/spec/fabric/VideoViewNativeComponent.ts +17 -0
- package/lib/module/spec/nitro/VideoPlayer.nitro.js +4 -0
- package/lib/module/spec/nitro/VideoPlayer.nitro.js.map +1 -0
- package/lib/module/spec/nitro/VideoPlayerEventEmitter.nitro.js +4 -0
- package/lib/module/spec/nitro/VideoPlayerEventEmitter.nitro.js.map +1 -0
- package/lib/module/spec/nitro/VideoPlayerSource.nitro.js +4 -0
- package/lib/module/spec/nitro/VideoPlayerSource.nitro.js.map +1 -0
- package/lib/module/spec/nitro/VideoViewViewManager.nitro.js +4 -0
- package/lib/module/spec/nitro/VideoViewViewManager.nitro.js.map +1 -0
- package/lib/typescript/drm-plugin/src/PluginManager.nitro.d.ts +10 -0
- package/lib/typescript/drm-plugin/src/PluginManager.nitro.d.ts.map +1 -0
- package/lib/typescript/drm-plugin/src/index.d.ts +4 -0
- package/lib/typescript/drm-plugin/src/index.d.ts.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/core/VideoPlayer.d.ts +88 -0
- package/lib/typescript/src/core/VideoPlayer.d.ts.map +1 -0
- package/lib/typescript/src/core/VideoPlayerEvents.d.ts +22 -0
- package/lib/typescript/src/core/VideoPlayerEvents.d.ts.map +1 -0
- package/lib/typescript/src/core/hooks/useEvent.d.ts +11 -0
- package/lib/typescript/src/core/hooks/useEvent.d.ts.map +1 -0
- package/lib/typescript/src/core/hooks/useManagedInstance.d.ts +19 -0
- package/lib/typescript/src/core/hooks/useManagedInstance.d.ts.map +1 -0
- package/lib/typescript/src/core/hooks/useVideoPlayer.d.ts +16 -0
- package/lib/typescript/src/core/hooks/useVideoPlayer.d.ts.map +1 -0
- package/lib/typescript/src/core/types/BufferConfig.d.ts +97 -0
- package/lib/typescript/src/core/types/BufferConfig.d.ts.map +1 -0
- package/lib/typescript/src/core/types/DrmParams.d.ts +64 -0
- package/lib/typescript/src/core/types/DrmParams.d.ts.map +1 -0
- package/lib/typescript/src/core/types/Events.d.ts +224 -0
- package/lib/typescript/src/core/types/Events.d.ts.map +1 -0
- package/lib/typescript/src/core/types/IgnoreSilentSwitchMode.d.ts +2 -0
- package/lib/typescript/src/core/types/IgnoreSilentSwitchMode.d.ts.map +1 -0
- package/lib/typescript/src/core/types/MixAudioMode.d.ts +2 -0
- package/lib/typescript/src/core/types/MixAudioMode.d.ts.map +1 -0
- package/lib/typescript/src/core/types/ResizeMode.d.ts +10 -0
- package/lib/typescript/src/core/types/ResizeMode.d.ts.map +1 -0
- package/lib/typescript/src/core/types/TextTrack.d.ts +20 -0
- package/lib/typescript/src/core/types/TextTrack.d.ts.map +1 -0
- package/lib/typescript/src/core/types/Utils.d.ts +2 -0
- package/lib/typescript/src/core/types/Utils.d.ts.map +1 -0
- package/lib/typescript/src/core/types/VideoConfig.d.ts +138 -0
- package/lib/typescript/src/core/types/VideoConfig.d.ts.map +1 -0
- package/lib/typescript/src/core/types/VideoError.d.ts +31 -0
- package/lib/typescript/src/core/types/VideoError.d.ts.map +1 -0
- package/lib/typescript/src/core/types/VideoInformation.d.ts +38 -0
- package/lib/typescript/src/core/types/VideoInformation.d.ts.map +1 -0
- package/lib/typescript/src/core/types/VideoOrientation.d.ts +2 -0
- package/lib/typescript/src/core/types/VideoOrientation.d.ts.map +1 -0
- package/lib/typescript/src/core/types/VideoPlayerBase.d.ts +155 -0
- package/lib/typescript/src/core/types/VideoPlayerBase.d.ts.map +1 -0
- package/lib/typescript/src/core/types/VideoPlayerSourceBase.d.ts +17 -0
- package/lib/typescript/src/core/types/VideoPlayerSourceBase.d.ts.map +1 -0
- package/lib/typescript/src/core/types/VideoPlayerStatus.d.ts +9 -0
- package/lib/typescript/src/core/types/VideoPlayerStatus.d.ts.map +1 -0
- package/lib/typescript/src/core/utils/playerFactory.d.ts +12 -0
- package/lib/typescript/src/core/utils/playerFactory.d.ts.map +1 -0
- package/lib/typescript/src/core/utils/sourceFactory.d.ts +29 -0
- package/lib/typescript/src/core/utils/sourceFactory.d.ts.map +1 -0
- package/lib/typescript/src/core/video-view/NativeVideoView.d.ts +2 -0
- package/lib/typescript/src/core/video-view/NativeVideoView.d.ts.map +1 -0
- package/lib/typescript/src/core/video-view/VideoView.d.ts +104 -0
- package/lib/typescript/src/core/video-view/VideoView.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +13 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/spec/fabric/VideoViewNativeComponent.d.ts +13 -0
- package/lib/typescript/src/spec/fabric/VideoViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/spec/nitro/VideoPlayer.nitro.d.ts +55 -0
- package/lib/typescript/src/spec/nitro/VideoPlayer.nitro.d.ts.map +1 -0
- package/lib/typescript/src/spec/nitro/VideoPlayerEventEmitter.nitro.d.ts +150 -0
- package/lib/typescript/src/spec/nitro/VideoPlayerEventEmitter.nitro.d.ts.map +1 -0
- package/lib/typescript/src/spec/nitro/VideoPlayerSource.nitro.d.ts +21 -0
- package/lib/typescript/src/spec/nitro/VideoPlayerSource.nitro.d.ts.map +1 -0
- package/lib/typescript/src/spec/nitro/VideoViewViewManager.nitro.d.ts +75 -0
- package/lib/typescript/src/spec/nitro/VideoViewViewManager.nitro.d.ts.map +1 -0
- package/nitro.json +47 -0
- package/nitrogen/generated/android/UnifiedPlayer+autolinking.cmake +95 -0
- package/nitrogen/generated/android/UnifiedPlayer+autolinking.gradle +27 -0
- package/nitrogen/generated/android/UnifiedPlayerOnLoad.cpp +122 -0
- package/nitrogen/generated/android/UnifiedPlayerOnLoad.hpp +34 -0
- package/nitrogen/generated/android/c++/JBandwidthData.hpp +65 -0
- package/nitrogen/generated/android/c++/JBufferConfig.hpp +101 -0
- package/nitrogen/generated/android/c++/JCustomVideoMetadata.hpp +74 -0
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__string_____OnGetLicensePayload.hpp +126 -0
- package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_BandwidthData.hpp +78 -0
- package/nitrogen/generated/android/c++/JFunc_void_TimedMetadata.hpp +81 -0
- package/nitrogen/generated/android/c++/JFunc_void_VideoPlayerStatus.hpp +77 -0
- package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_double.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_onLoadData.hpp +79 -0
- package/nitrogen/generated/android/c++/JFunc_void_onLoadStartData.hpp +82 -0
- package/nitrogen/generated/android/c++/JFunc_void_onPlaybackStateChangeData.hpp +77 -0
- package/nitrogen/generated/android/c++/JFunc_void_onProgressData.hpp +77 -0
- package/nitrogen/generated/android/c++/JFunc_void_onVolumeChangeData.hpp +77 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__TextTrack__.hpp +83 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_std__string_.hpp +95 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerEventEmitterSpec.cpp +224 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerEventEmitterSpec.hpp +82 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerFactorySpec.cpp +60 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerFactorySpec.hpp +63 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceFactorySpec.cpp +106 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceFactorySpec.hpp +64 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceSpec.cpp +124 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceSpec.hpp +64 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSpec.cpp +300 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSpec.hpp +98 -0
- package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerFactorySpec.cpp +56 -0
- package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerFactorySpec.hpp +63 -0
- package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerSpec.cpp +185 -0
- package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerSpec.hpp +87 -0
- package/nitrogen/generated/android/c++/JIgnoreSilentSwitchMode.hpp +61 -0
- package/nitrogen/generated/android/c++/JListenerSubscription.hpp +67 -0
- package/nitrogen/generated/android/c++/JLivePlaybackParams.hpp +73 -0
- package/nitrogen/generated/android/c++/JMixAudioMode.hpp +64 -0
- package/nitrogen/generated/android/c++/JNativeDrmParams.hpp +111 -0
- package/nitrogen/generated/android/c++/JNativeExternalSubtitle.hpp +71 -0
- package/nitrogen/generated/android/c++/JNativeVideoConfig.hpp +136 -0
- package/nitrogen/generated/android/c++/JOnGetLicensePayload.hpp +69 -0
- package/nitrogen/generated/android/c++/JResizeMode.hpp +64 -0
- package/nitrogen/generated/android/c++/JResolution.hpp +61 -0
- package/nitrogen/generated/android/c++/JSourceType.hpp +58 -0
- package/nitrogen/generated/android/c++/JSubtitleType.hpp +67 -0
- package/nitrogen/generated/android/c++/JSurfaceType.hpp +58 -0
- package/nitrogen/generated/android/c++/JTextTrack.hpp +70 -0
- package/nitrogen/generated/android/c++/JTimedMetadata.hpp +78 -0
- package/nitrogen/generated/android/c++/JTimedMetadataObject.hpp +61 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_HybridVideoPlayerSourceSpec.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_HybridVideoPlayerSourceSpec.hpp +72 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_TextTrack.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_TextTrack.hpp +73 -0
- package/nitrogen/generated/android/c++/JVideoInformation.hpp +86 -0
- package/nitrogen/generated/android/c++/JVideoOrientation.hpp +73 -0
- package/nitrogen/generated/android/c++/JVideoPlayerStatus.hpp +64 -0
- package/nitrogen/generated/android/c++/JonLoadData.hpp +74 -0
- package/nitrogen/generated/android/c++/JonLoadStartData.hpp +65 -0
- package/nitrogen/generated/android/c++/JonPlaybackStateChangeData.hpp +61 -0
- package/nitrogen/generated/android/c++/JonProgressData.hpp +65 -0
- package/nitrogen/generated/android/c++/JonVolumeChangeData.hpp +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/BandwidthData.kt +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/BufferConfig.kt +101 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/CustomVideoMetadata.kt +71 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__string_____OnGetLicensePayload.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_BandwidthData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_TimedMetadata.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_VideoPlayerStatus.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_bool.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_double.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onLoadData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onLoadStartData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onPlaybackStateChangeData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onProgressData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onVolumeChangeData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_std__optional_std__variant_nitro__NullType__TextTrack__.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_std__vector_std__string_.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerEventEmitterSpec.kt +226 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerFactorySpec.kt +54 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerSourceFactorySpec.kt +58 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerSourceSpec.kt +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerSpec.kt +178 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoViewViewManagerFactorySpec.kt +54 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoViewViewManagerSpec.kt +168 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/IgnoreSilentSwitchMode.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/ListenerSubscription.kt +55 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/LivePlaybackParams.kt +71 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/MixAudioMode.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/NativeDrmParams.kt +85 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/NativeExternalSubtitle.kt +66 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/NativeVideoConfig.kt +81 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/OnGetLicensePayload.kt +66 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/ResizeMode.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Resolution.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/SourceType.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/SubtitleType.kt +26 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/SurfaceType.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/TextTrack.kt +66 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/TimedMetadata.kt +51 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/TimedMetadataObject.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/UnifiedPlayerOnLoad.kt +35 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Variant_NullType_HybridVideoPlayerSourceSpec.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Variant_NullType_TextTrack.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/VideoInformation.kt +86 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/VideoOrientation.kt +28 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/VideoPlayerStatus.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onLoadData.kt +71 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onLoadStartData.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onPlaybackStateChangeData.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onProgressData.kt +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onVolumeChangeData.kt +56 -0
- package/nitrogen/generated/ios/UnifiedPlayer+autolinking.rb +62 -0
- package/nitrogen/generated/ios/UnifiedPlayer-Swift-Cxx-Bridge.cpp +280 -0
- package/nitrogen/generated/ios/UnifiedPlayer-Swift-Cxx-Bridge.hpp +1106 -0
- package/nitrogen/generated/ios/UnifiedPlayer-Swift-Cxx-Umbrella.hpp +162 -0
- package/nitrogen/generated/ios/UnifiedPlayerAutolinking.mm +49 -0
- package/nitrogen/generated/ios/UnifiedPlayerAutolinking.swift +50 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerEventEmitterSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerEventEmitterSpecSwift.hpp +279 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerFactorySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerFactorySpecSwift.hpp +87 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerSourceFactorySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerSourceFactorySpecSwift.hpp +125 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerSourceSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerSourceSpecSwift.hpp +125 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerSpecSwift.hpp +256 -0
- package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerFactorySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerFactorySpecSwift.hpp +84 -0
- package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerSpecSwift.hpp +217 -0
- package/nitrogen/generated/ios/swift/BandwidthData.swift +65 -0
- package/nitrogen/generated/ios/swift/BufferConfig.swift +201 -0
- package/nitrogen/generated/ios/swift/CustomVideoMetadata.swift +114 -0
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__string_____OnGetLicensePayload.swift +61 -0
- package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_BandwidthData.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_TimedMetadata.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_VideoInformation.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_VideoPlayerStatus.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_double.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_onLoadData.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_onLoadStartData.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_onPlaybackStateChangeData.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_onProgressData.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_onVolumeChangeData.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__optional_std__variant_nitro__NullType__TextTrack__.swift +65 -0
- package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_std__string__.swift +66 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +46 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerEventEmitterSpec.swift +74 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerEventEmitterSpec_cxx.swift +479 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerFactorySpec.swift +55 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerFactorySpec_cxx.swift +145 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceFactorySpec.swift +56 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceFactorySpec_cxx.swift +156 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceSpec.swift +56 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceSpec_cxx.swift +157 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSpec.swift +80 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSpec_cxx.swift +490 -0
- package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerFactorySpec.swift +55 -0
- package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerFactorySpec_cxx.swift +141 -0
- package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerSpec.swift +72 -0
- package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerSpec_cxx.swift +390 -0
- package/nitrogen/generated/ios/swift/IgnoreSilentSwitchMode.swift +44 -0
- package/nitrogen/generated/ios/swift/ListenerSubscription.swift +37 -0
- package/nitrogen/generated/ios/swift/LivePlaybackParams.swift +114 -0
- package/nitrogen/generated/ios/swift/MixAudioMode.swift +48 -0
- package/nitrogen/generated/ios/swift/NativeDrmParams.swift +193 -0
- package/nitrogen/generated/ios/swift/NativeExternalSubtitle.swift +44 -0
- package/nitrogen/generated/ios/swift/NativeVideoConfig.swift +136 -0
- package/nitrogen/generated/ios/swift/OnGetLicensePayload.swift +44 -0
- package/nitrogen/generated/ios/swift/ResizeMode.swift +48 -0
- package/nitrogen/generated/ios/swift/Resolution.swift +34 -0
- package/nitrogen/generated/ios/swift/SourceType.swift +40 -0
- package/nitrogen/generated/ios/swift/SubtitleType.swift +52 -0
- package/nitrogen/generated/ios/swift/SurfaceType.swift +40 -0
- package/nitrogen/generated/ios/swift/TextTrack.swift +57 -0
- package/nitrogen/generated/ios/swift/TimedMetadata.swift +35 -0
- package/nitrogen/generated/ios/swift/TimedMetadataObject.swift +34 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_TextTrack.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType__any_HybridVideoPlayerSourceSpec_.swift +30 -0
- package/nitrogen/generated/ios/swift/VideoInformation.swift +64 -0
- package/nitrogen/generated/ios/swift/VideoOrientation.swift +60 -0
- package/nitrogen/generated/ios/swift/VideoPlayerStatus.swift +48 -0
- package/nitrogen/generated/ios/swift/onLoadData.swift +49 -0
- package/nitrogen/generated/ios/swift/onLoadStartData.swift +41 -0
- package/nitrogen/generated/ios/swift/onPlaybackStateChangeData.swift +34 -0
- package/nitrogen/generated/ios/swift/onProgressData.swift +39 -0
- package/nitrogen/generated/ios/swift/onVolumeChangeData.swift +34 -0
- package/nitrogen/generated/shared/c++/BandwidthData.hpp +91 -0
- package/nitrogen/generated/shared/c++/BufferConfig.hpp +128 -0
- package/nitrogen/generated/shared/c++/CustomVideoMetadata.hpp +100 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerEventEmitterSpec.cpp +40 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerEventEmitterSpec.hpp +115 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerFactorySpec.cpp +21 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerFactorySpec.hpp +67 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerSourceFactorySpec.cpp +22 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerSourceFactorySpec.hpp +69 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerSourceSpec.cpp +23 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerSourceSpec.hpp +69 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerSpec.cpp +57 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerSpec.hpp +120 -0
- package/nitrogen/generated/shared/c++/HybridVideoViewViewManagerFactorySpec.cpp +21 -0
- package/nitrogen/generated/shared/c++/HybridVideoViewViewManagerFactorySpec.hpp +64 -0
- package/nitrogen/generated/shared/c++/HybridVideoViewViewManagerSpec.cpp +46 -0
- package/nitrogen/generated/shared/c++/HybridVideoViewViewManagerSpec.hpp +99 -0
- package/nitrogen/generated/shared/c++/IgnoreSilentSwitchMode.hpp +80 -0
- package/nitrogen/generated/shared/c++/ListenerSubscription.hpp +83 -0
- package/nitrogen/generated/shared/c++/LivePlaybackParams.hpp +99 -0
- package/nitrogen/generated/shared/c++/MixAudioMode.hpp +84 -0
- package/nitrogen/generated/shared/c++/NativeDrmParams.hpp +113 -0
- package/nitrogen/generated/shared/c++/NativeExternalSubtitle.hpp +97 -0
- package/nitrogen/generated/shared/c++/NativeVideoConfig.hpp +121 -0
- package/nitrogen/generated/shared/c++/OnGetLicensePayload.hpp +95 -0
- package/nitrogen/generated/shared/c++/ResizeMode.hpp +84 -0
- package/nitrogen/generated/shared/c++/Resolution.hpp +87 -0
- package/nitrogen/generated/shared/c++/SourceType.hpp +76 -0
- package/nitrogen/generated/shared/c++/SubtitleType.hpp +88 -0
- package/nitrogen/generated/shared/c++/SurfaceType.hpp +76 -0
- package/nitrogen/generated/shared/c++/TextTrack.hpp +96 -0
- package/nitrogen/generated/shared/c++/TimedMetadata.hpp +85 -0
- package/nitrogen/generated/shared/c++/TimedMetadataObject.hpp +87 -0
- package/nitrogen/generated/shared/c++/VideoInformation.hpp +112 -0
- package/nitrogen/generated/shared/c++/VideoOrientation.hpp +96 -0
- package/nitrogen/generated/shared/c++/VideoPlayerStatus.hpp +84 -0
- package/nitrogen/generated/shared/c++/onLoadData.hpp +100 -0
- package/nitrogen/generated/shared/c++/onLoadStartData.hpp +92 -0
- package/nitrogen/generated/shared/c++/onPlaybackStateChangeData.hpp +87 -0
- package/nitrogen/generated/shared/c++/onProgressData.hpp +91 -0
- package/nitrogen/generated/shared/c++/onVolumeChangeData.hpp +87 -0
- package/package.json +180 -0
- package/react-native.config.js +10 -0
- package/src/core/VideoPlayer.ts +357 -0
- package/src/core/VideoPlayerEvents.ts +146 -0
- package/src/core/hooks/useEvent.ts +24 -0
- package/src/core/hooks/useManagedInstance.ts +96 -0
- package/src/core/hooks/useVideoPlayer.ts +73 -0
- package/src/core/types/BufferConfig.ts +103 -0
- package/src/core/types/DrmParams.ts +65 -0
- package/src/core/types/Events.ts +283 -0
- package/src/core/types/IgnoreSilentSwitchMode.ts +1 -0
- package/src/core/types/MixAudioMode.ts +1 -0
- package/src/core/types/ResizeMode.ts +9 -0
- package/src/core/types/TextTrack.ts +22 -0
- package/src/core/types/Utils.ts +1 -0
- package/src/core/types/VideoConfig.ts +150 -0
- package/src/core/types/VideoError.ts +174 -0
- package/src/core/types/VideoInformation.ts +45 -0
- package/src/core/types/VideoOrientation.ts +8 -0
- package/src/core/types/VideoPlayerBase.ts +181 -0
- package/src/core/types/VideoPlayerSourceBase.ts +19 -0
- package/src/core/types/VideoPlayerStatus.ts +8 -0
- package/src/core/utils/playerFactory.ts +33 -0
- package/src/core/utils/sourceFactory.ts +171 -0
- package/src/core/video-view/NativeVideoView.tsx +18 -0
- package/src/core/video-view/VideoView.tsx +492 -0
- package/src/expo-plugins/@types.ts +37 -0
- package/src/expo-plugins/getPackageInfo.ts +23 -0
- package/src/expo-plugins/withAndroidExtensions.ts +46 -0
- package/src/expo-plugins/withAndroidNotificationControls.ts +43 -0
- package/src/expo-plugins/withAndroidPictureInPicture.ts +31 -0
- package/src/expo-plugins/withBackgroundAudio.ts +26 -0
- package/src/expo-plugins/withReactNativeVideo.ts +32 -0
- package/src/expo-plugins/writeToPodfile.ts +74 -0
- package/src/index.tsx +29 -0
- package/src/spec/fabric/VideoViewNativeComponent.ts +17 -0
- package/src/spec/nitro/VideoPlayer.nitro.ts +62 -0
- package/src/spec/nitro/VideoPlayerEventEmitter.nitro.ts +207 -0
- package/src/spec/nitro/VideoPlayerSource.nitro.ts +18 -0
- package/src/spec/nitro/VideoViewViewManager.nitro.ts +92 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
//
|
|
2
|
+
// VideoComponent.swift
|
|
3
|
+
// ReactNativeVideo
|
|
4
|
+
//
|
|
5
|
+
// Created by Krzysztof Moch on 30/09/2024.
|
|
6
|
+
// VLC backend rewrite — replaces AVPlayerViewController with a UIView that
|
|
7
|
+
// serves as the VLCMediaPlayer drawable.
|
|
8
|
+
//
|
|
9
|
+
|
|
10
|
+
import Foundation
|
|
11
|
+
import MobileVLCKit
|
|
12
|
+
import UIKit
|
|
13
|
+
|
|
14
|
+
@objc public class VideoComponentView: UIView {
|
|
15
|
+
public weak var player: HybridVideoPlayerSpec? = nil {
|
|
16
|
+
didSet {
|
|
17
|
+
attachCurrentPlayer()
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
var delegate: VideoViewDelegate?
|
|
22
|
+
|
|
23
|
+
/// The UIView VLC renders into. We keep this distinct from `self` so that
|
|
24
|
+
/// resize-mode adjustments only affect the video surface, not the
|
|
25
|
+
/// container's interaction targets / overlays.
|
|
26
|
+
private var drawableView: UIView!
|
|
27
|
+
|
|
28
|
+
private var _keepScreenAwake: Bool = false
|
|
29
|
+
var keepScreenAwake: Bool {
|
|
30
|
+
get { _keepScreenAwake }
|
|
31
|
+
set {
|
|
32
|
+
_keepScreenAwake = newValue
|
|
33
|
+
DispatchQueue.main.async {
|
|
34
|
+
UIApplication.shared.isIdleTimerDisabled = newValue
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/// Controls overlay isn't supported on the VLC backend; the prop is
|
|
40
|
+
/// preserved for API compat but is a no-op.
|
|
41
|
+
public var controls: Bool = false
|
|
42
|
+
|
|
43
|
+
public var allowsPictureInPicturePlayback: Bool = false
|
|
44
|
+
public var autoEnterPictureInPicture: Bool = false
|
|
45
|
+
|
|
46
|
+
public var resizeMode: ResizeMode = .none {
|
|
47
|
+
didSet { applyResizeMode() }
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/// Track if we need to send pending nitroId change event
|
|
51
|
+
private var pendingNitroIdEvent = false
|
|
52
|
+
|
|
53
|
+
@objc public var onNitroIdChange: (([String: Any]) -> Void)? {
|
|
54
|
+
didSet {
|
|
55
|
+
if pendingNitroIdEvent, let callback = onNitroIdChange {
|
|
56
|
+
callback(["nitroId": nitroId])
|
|
57
|
+
pendingNitroIdEvent = false
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
@objc public var nitroId: NSNumber = -1 {
|
|
63
|
+
didSet {
|
|
64
|
+
VideoComponentView.globalViewsMap.setObject(self, forKey: nitroId)
|
|
65
|
+
if let callback = onNitroIdChange {
|
|
66
|
+
callback(["nitroId": nitroId])
|
|
67
|
+
pendingNitroIdEvent = false
|
|
68
|
+
} else {
|
|
69
|
+
pendingNitroIdEvent = true
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@objc public static var globalViewsMap: NSMapTable<NSNumber, VideoComponentView> =
|
|
75
|
+
.strongToWeakObjects()
|
|
76
|
+
|
|
77
|
+
@objc public override init(frame: CGRect) {
|
|
78
|
+
super.init(frame: frame)
|
|
79
|
+
backgroundColor = .black
|
|
80
|
+
VideoManager.shared.register(view: self)
|
|
81
|
+
setupDrawableView()
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
deinit {
|
|
85
|
+
VideoManager.shared.unregister(view: self)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
@objc public required init?(coder: NSCoder) {
|
|
89
|
+
super.init(coder: coder)
|
|
90
|
+
backgroundColor = .black
|
|
91
|
+
setupDrawableView()
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
func setNitroId(nitroId: NSNumber) {
|
|
95
|
+
self.nitroId = nitroId
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
private func setupDrawableView() {
|
|
99
|
+
drawableView = UIView(frame: bounds)
|
|
100
|
+
drawableView.backgroundColor = .black
|
|
101
|
+
drawableView.translatesAutoresizingMaskIntoConstraints = false
|
|
102
|
+
addSubview(drawableView)
|
|
103
|
+
NSLayoutConstraint.activate([
|
|
104
|
+
drawableView.leadingAnchor.constraint(equalTo: leadingAnchor),
|
|
105
|
+
drawableView.trailingAnchor.constraint(equalTo: trailingAnchor),
|
|
106
|
+
drawableView.topAnchor.constraint(equalTo: topAnchor),
|
|
107
|
+
drawableView.bottomAnchor.constraint(equalTo: bottomAnchor),
|
|
108
|
+
])
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
private func attachCurrentPlayer() {
|
|
112
|
+
guard let hybridPlayer = player as? HybridVideoPlayer else { return }
|
|
113
|
+
DispatchQueue.main.async { [weak self] in
|
|
114
|
+
guard let self = self else { return }
|
|
115
|
+
hybridPlayer.mediaPlayer.drawable = self.drawableView
|
|
116
|
+
self.applyResizeMode()
|
|
117
|
+
// `play()` may have run from JS before this view existed; VLC needs a
|
|
118
|
+
// drawable to complete HLS decode on iOS — kick playback again here.
|
|
119
|
+
hybridPlayer.notifyVideoHostViewAttached()
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
private func applyResizeMode() {
|
|
124
|
+
guard let hybridPlayer = player as? HybridVideoPlayer else { return }
|
|
125
|
+
let mediaPlayer = hybridPlayer.mediaPlayer
|
|
126
|
+
DispatchQueue.main.async { [weak self] in
|
|
127
|
+
guard let self = self else { return }
|
|
128
|
+
switch self.resizeMode {
|
|
129
|
+
case .contain, .none:
|
|
130
|
+
// VLC default: fit-aspect (letterbox). scaleFactor=0 = auto.
|
|
131
|
+
mediaPlayer.scaleFactor = 0
|
|
132
|
+
case .cover, .stretch:
|
|
133
|
+
// Both modes fill the view. We compute scaleFactor from the ratio
|
|
134
|
+
// of view-aspect to video-aspect so the smaller side scales up to
|
|
135
|
+
// hide the letterbox. With VLC there's no clean way to anisotropic-
|
|
136
|
+
// scale through public API without char* lifetime gymnastics, so
|
|
137
|
+
// .stretch is approximated by .cover (visually identical for any
|
|
138
|
+
// source whose aspect roughly matches the view).
|
|
139
|
+
let viewSize = self.bounds.size
|
|
140
|
+
let videoSize = mediaPlayer.videoSize
|
|
141
|
+
guard
|
|
142
|
+
viewSize.width > 0, viewSize.height > 0,
|
|
143
|
+
videoSize.width > 0, videoSize.height > 0
|
|
144
|
+
else {
|
|
145
|
+
mediaPlayer.scaleFactor = 0
|
|
146
|
+
return
|
|
147
|
+
}
|
|
148
|
+
let viewAspect = viewSize.width / viewSize.height
|
|
149
|
+
let videoAspect = videoSize.width / videoSize.height
|
|
150
|
+
let scale: CGFloat = viewAspect > videoAspect
|
|
151
|
+
? viewAspect / videoAspect
|
|
152
|
+
: videoAspect / viewAspect
|
|
153
|
+
mediaPlayer.scaleFactor = Float(scale)
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
public override func willMove(toSuperview newSuperview: UIView?) {
|
|
159
|
+
super.willMove(toSuperview: newSuperview)
|
|
160
|
+
if newSuperview == nil {
|
|
161
|
+
if keepScreenAwake { keepScreenAwake = false }
|
|
162
|
+
} else if _keepScreenAwake {
|
|
163
|
+
keepScreenAwake = true
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
public override func layoutSubviews() {
|
|
168
|
+
super.layoutSubviews()
|
|
169
|
+
// Reapply resize mode whenever bounds change so cover/stretch math stays
|
|
170
|
+
// in sync with the new aspect ratio.
|
|
171
|
+
applyResizeMode()
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// MARK: - Fullscreen / PiP — not supported on the VLC backend
|
|
175
|
+
|
|
176
|
+
public func enterFullscreen() throws {
|
|
177
|
+
throw VideoViewError.viewIsDeallocated.error()
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
public func exitFullscreen() throws {
|
|
181
|
+
throw VideoViewError.viewIsDeallocated.error()
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
public func startPictureInPicture() throws {
|
|
185
|
+
throw VideoViewError.pictureInPictureNotSupported.error()
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
public func stopPictureInPicture() throws {
|
|
189
|
+
throw VideoViewError.pictureInPictureNotSupported.error()
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// MARK: - Fullscreen lifecycle hooks (kept for API compat)
|
|
193
|
+
|
|
194
|
+
func onEnterFullscreen() { /* no-op */ }
|
|
195
|
+
func onExitFullscreen() { /* no-op */ }
|
|
196
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
//
|
|
2
|
+
// VideoComponentViewObserver.swift
|
|
3
|
+
// ReactNativeVideo
|
|
4
|
+
//
|
|
5
|
+
// VLC backend rewrite — AVPlayerViewController is gone, so the observer
|
|
6
|
+
// collapses into a thin delegate proxy that just forwards lifecycle hooks
|
|
7
|
+
// the JS layer expects (PiP/fullscreen become inert under VLC).
|
|
8
|
+
//
|
|
9
|
+
|
|
10
|
+
import Foundation
|
|
11
|
+
import UIKit
|
|
12
|
+
|
|
13
|
+
protocol VideoComponentViewDelegate: AnyObject {
|
|
14
|
+
func onPictureInPictureChange(_ isActive: Bool)
|
|
15
|
+
func onFullscreenChange(_ isActive: Bool)
|
|
16
|
+
func willEnterFullscreen()
|
|
17
|
+
func willExitFullscreen()
|
|
18
|
+
func willEnterPictureInPicture()
|
|
19
|
+
func willExitPictureInPicture()
|
|
20
|
+
func onReadyToDisplay()
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
final class VideoViewDelegate: NSObject, VideoComponentViewDelegate {
|
|
24
|
+
weak var viewManager: HybridVideoViewViewManager?
|
|
25
|
+
|
|
26
|
+
init(viewManager: HybridVideoViewViewManager) {
|
|
27
|
+
self.viewManager = viewManager
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
func onPictureInPictureChange(_ isActive: Bool) {
|
|
31
|
+
viewManager?.onPictureInPictureChange(isActive)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
func onFullscreenChange(_ isActive: Bool) {
|
|
35
|
+
viewManager?.onFullscreenChange(isActive)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
func willEnterFullscreen() { viewManager?.willEnterFullscreen() }
|
|
39
|
+
func willExitFullscreen() { viewManager?.willExitFullscreen() }
|
|
40
|
+
func willEnterPictureInPicture() { viewManager?.willEnterPictureInPicture() }
|
|
41
|
+
func willExitPictureInPicture() { viewManager?.willExitPictureInPicture() }
|
|
42
|
+
|
|
43
|
+
func onReadyToDisplay() {
|
|
44
|
+
if let player = viewManager?.player as? HybridVideoPlayer {
|
|
45
|
+
player._eventEmitter?.onReadyToDisplay()
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Platform } from 'react-native';
|
|
4
|
+
import { NitroModules } from 'react-native-nitro-modules';
|
|
5
|
+
import { tryParseNativeVideoError, VideoRuntimeError } from "./types/VideoError.js";
|
|
6
|
+
import { createPlayer } from "./utils/playerFactory.js";
|
|
7
|
+
import { createSource } from "./utils/sourceFactory.js";
|
|
8
|
+
import { VideoPlayerEvents } from "./VideoPlayerEvents.js";
|
|
9
|
+
class VideoPlayer extends VideoPlayerEvents {
|
|
10
|
+
get player() {
|
|
11
|
+
if (this._player === undefined) {
|
|
12
|
+
throw new VideoRuntimeError('player/released', "You can't access player after it's released");
|
|
13
|
+
}
|
|
14
|
+
return this._player;
|
|
15
|
+
}
|
|
16
|
+
constructor(source) {
|
|
17
|
+
const hybridSource = createSource(source);
|
|
18
|
+
const player = createPlayer(hybridSource);
|
|
19
|
+
|
|
20
|
+
// Initialize events
|
|
21
|
+
super(player.eventEmitter);
|
|
22
|
+
this._player = player;
|
|
23
|
+
this._lastObservedStatus = player.status;
|
|
24
|
+
this._statusErrorSubscription = player.eventEmitter.addOnStatusChangeListener(status => {
|
|
25
|
+
if (status === 'error' && this._lastObservedStatus !== 'error') {
|
|
26
|
+
this.triggerJSEvent('onError', new VideoRuntimeError('unknown/unknown', 'Playback failed (native player reported error status).'));
|
|
27
|
+
}
|
|
28
|
+
this._lastObservedStatus = status;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Releases the player's native resources and releases native state.
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
__destroy() {
|
|
37
|
+
if (this._player === undefined) return;
|
|
38
|
+
this._statusErrorSubscription?.remove();
|
|
39
|
+
this._statusErrorSubscription = undefined;
|
|
40
|
+
this._lastObservedStatus = undefined;
|
|
41
|
+
this.clearAllEvents();
|
|
42
|
+
try {
|
|
43
|
+
this.player.release();
|
|
44
|
+
} catch (error) {
|
|
45
|
+
// Best effort cleanup: teardown must never crash app unmount.
|
|
46
|
+
console.error('Failed to cleanup native player resources', error);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// We leave hybrid object to be cleaned up by garbage collector
|
|
50
|
+
// So we update memory size to ensure that memory is released
|
|
51
|
+
// when needed
|
|
52
|
+
this.updateMemorySize();
|
|
53
|
+
|
|
54
|
+
// We wait for 5s to let late events that were triggered before release to be processed
|
|
55
|
+
if (this._releaseTimeout !== undefined) {
|
|
56
|
+
clearTimeout(this._releaseTimeout);
|
|
57
|
+
}
|
|
58
|
+
this._releaseTimeout = setTimeout(() => {
|
|
59
|
+
this._player = undefined;
|
|
60
|
+
this._releaseTimeout = undefined;
|
|
61
|
+
}, 5000);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Returns the native (hybrid) player instance.
|
|
66
|
+
* Should not be used outside of the module.
|
|
67
|
+
* @internal
|
|
68
|
+
*/
|
|
69
|
+
__getNativePlayer() {
|
|
70
|
+
return this.player;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Handles parsing native errors to VideoRuntimeError and calling onError if provided
|
|
75
|
+
* @internal
|
|
76
|
+
*/
|
|
77
|
+
throwError(error) {
|
|
78
|
+
const parsedError = tryParseNativeVideoError(error);
|
|
79
|
+
if (parsedError instanceof VideoRuntimeError && this.triggerJSEvent('onError', parsedError)) {
|
|
80
|
+
// We don't throw errors if onError is provided
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
throw parsedError;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Updates the memory size of the player and its source. Should be called after any operation that changes the memory size of the player or its source.
|
|
88
|
+
* @internal
|
|
89
|
+
*/
|
|
90
|
+
updateMemorySize() {
|
|
91
|
+
NitroModules.updateMemorySize(this.player);
|
|
92
|
+
NitroModules.updateMemorySize(this.player.source);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Wraps a promise to try parsing native errors to VideoRuntimeError
|
|
97
|
+
* @internal
|
|
98
|
+
*/
|
|
99
|
+
wrapPromise(promise) {
|
|
100
|
+
return new Promise((resolve, reject) => {
|
|
101
|
+
promise.then(resolve).catch(error => {
|
|
102
|
+
reject(this.throwError(error));
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Source
|
|
108
|
+
get source() {
|
|
109
|
+
return this.player.source;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Status
|
|
113
|
+
get status() {
|
|
114
|
+
return this.player.status;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Duration
|
|
118
|
+
get duration() {
|
|
119
|
+
return this.player.duration;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Volume
|
|
123
|
+
get volume() {
|
|
124
|
+
return this.player.volume;
|
|
125
|
+
}
|
|
126
|
+
set volume(value) {
|
|
127
|
+
this.player.volume = value;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Current Time
|
|
131
|
+
get currentTime() {
|
|
132
|
+
return this.player.currentTime;
|
|
133
|
+
}
|
|
134
|
+
set currentTime(value) {
|
|
135
|
+
this.player.currentTime = value;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Muted
|
|
139
|
+
get muted() {
|
|
140
|
+
return this.player.muted;
|
|
141
|
+
}
|
|
142
|
+
set muted(value) {
|
|
143
|
+
this.player.muted = value;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Loop
|
|
147
|
+
get loop() {
|
|
148
|
+
return this.player.loop;
|
|
149
|
+
}
|
|
150
|
+
set loop(value) {
|
|
151
|
+
this.player.loop = value;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Rate
|
|
155
|
+
get rate() {
|
|
156
|
+
return this.player.rate;
|
|
157
|
+
}
|
|
158
|
+
set rate(value) {
|
|
159
|
+
this.player.rate = value;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Mix Audio Mode
|
|
163
|
+
get mixAudioMode() {
|
|
164
|
+
return this.player.mixAudioMode;
|
|
165
|
+
}
|
|
166
|
+
set mixAudioMode(value) {
|
|
167
|
+
this.player.mixAudioMode = value;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Ignore Silent Switch Mode
|
|
171
|
+
get ignoreSilentSwitchMode() {
|
|
172
|
+
return this.player.ignoreSilentSwitchMode;
|
|
173
|
+
}
|
|
174
|
+
set ignoreSilentSwitchMode(value) {
|
|
175
|
+
if (__DEV__ && !['ios'].includes(Platform.OS)) {
|
|
176
|
+
console.warn('ignoreSilentSwitchMode is not supported on this platform, it wont have any effect');
|
|
177
|
+
}
|
|
178
|
+
this.player.ignoreSilentSwitchMode = value;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Play In Background
|
|
182
|
+
get playInBackground() {
|
|
183
|
+
return this.player.playInBackground;
|
|
184
|
+
}
|
|
185
|
+
set playInBackground(value) {
|
|
186
|
+
this.player.playInBackground = value;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Play When Inactive
|
|
190
|
+
get playWhenInactive() {
|
|
191
|
+
return this.player.playWhenInactive;
|
|
192
|
+
}
|
|
193
|
+
set playWhenInactive(value) {
|
|
194
|
+
this.player.playWhenInactive = value;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// Is Playing
|
|
198
|
+
get isPlaying() {
|
|
199
|
+
return this.player.isPlaying;
|
|
200
|
+
}
|
|
201
|
+
get showNotificationControls() {
|
|
202
|
+
return this.player.showNotificationControls;
|
|
203
|
+
}
|
|
204
|
+
set showNotificationControls(value) {
|
|
205
|
+
this.player.showNotificationControls = value;
|
|
206
|
+
}
|
|
207
|
+
async initialize() {
|
|
208
|
+
await this.wrapPromise(this.player.initialize());
|
|
209
|
+
this.updateMemorySize();
|
|
210
|
+
}
|
|
211
|
+
async preload() {
|
|
212
|
+
await this.wrapPromise(this.player.preload());
|
|
213
|
+
this.updateMemorySize();
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Releases the player's native resources and releases native state.
|
|
218
|
+
* After calling this method, the player is no longer usable.
|
|
219
|
+
* Accessing any properties or methods of the player after calling this method will throw an error.
|
|
220
|
+
* If you want to clean player resource use `replaceSourceAsync` with `null` instead.
|
|
221
|
+
*/
|
|
222
|
+
release() {
|
|
223
|
+
this.__destroy();
|
|
224
|
+
}
|
|
225
|
+
play() {
|
|
226
|
+
try {
|
|
227
|
+
this.player.play();
|
|
228
|
+
} catch (error) {
|
|
229
|
+
this.throwError(error);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
pause() {
|
|
233
|
+
try {
|
|
234
|
+
this.player.pause();
|
|
235
|
+
} catch (error) {
|
|
236
|
+
this.throwError(error);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
seekBy(time) {
|
|
240
|
+
try {
|
|
241
|
+
this.player.seekBy(time);
|
|
242
|
+
} catch (error) {
|
|
243
|
+
this.throwError(error);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
seekTo(time) {
|
|
247
|
+
try {
|
|
248
|
+
this.player.seekTo(time);
|
|
249
|
+
} catch (error) {
|
|
250
|
+
this.throwError(error);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
async replaceSourceAsync(source) {
|
|
254
|
+
this.updateMemorySize();
|
|
255
|
+
await this.wrapPromise(this.player.replaceSourceAsync(source === null ? null : createSource(source)));
|
|
256
|
+
this.updateMemorySize();
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// Text Track Management
|
|
260
|
+
getAvailableTextTracks() {
|
|
261
|
+
try {
|
|
262
|
+
return this.player.getAvailableTextTracks();
|
|
263
|
+
} catch (error) {
|
|
264
|
+
this.throwError(error);
|
|
265
|
+
return [];
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
selectTextTrack(textTrack) {
|
|
269
|
+
try {
|
|
270
|
+
this.player.selectTextTrack(textTrack);
|
|
271
|
+
} catch (error) {
|
|
272
|
+
this.throwError(error);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
// Selected Text Track
|
|
277
|
+
get selectedTrack() {
|
|
278
|
+
return this.player.selectedTrack;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// Frame Capture
|
|
282
|
+
async captureFrame() {
|
|
283
|
+
return this.wrapPromise(this.player.captureFrame());
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
export { VideoPlayer };
|
|
287
|
+
//# sourceMappingURL=VideoPlayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Platform","NitroModules","tryParseNativeVideoError","VideoRuntimeError","createPlayer","createSource","VideoPlayerEvents","VideoPlayer","player","_player","undefined","constructor","source","hybridSource","eventEmitter","_lastObservedStatus","status","_statusErrorSubscription","addOnStatusChangeListener","triggerJSEvent","__destroy","remove","clearAllEvents","release","error","console","updateMemorySize","_releaseTimeout","clearTimeout","setTimeout","__getNativePlayer","throwError","parsedError","wrapPromise","promise","Promise","resolve","reject","then","catch","duration","volume","value","currentTime","muted","loop","rate","mixAudioMode","ignoreSilentSwitchMode","__DEV__","includes","OS","warn","playInBackground","playWhenInactive","isPlaying","showNotificationControls","initialize","preload","play","pause","seekBy","time","seekTo","replaceSourceAsync","getAvailableTextTracks","selectTextTrack","textTrack","selectedTrack","captureFrame"],"sourceRoot":"../../../src","sources":["core/VideoPlayer.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { ALL_PLAYER_EVENTS } from "./types/Events.js";
|
|
4
|
+
export class VideoPlayerEvents {
|
|
5
|
+
jsEventListeners = {};
|
|
6
|
+
supportedEvents = ALL_PLAYER_EVENTS;
|
|
7
|
+
constructor(eventEmitter) {
|
|
8
|
+
this.eventEmitter = eventEmitter;
|
|
9
|
+
}
|
|
10
|
+
triggerJSEvent(event, ...params) {
|
|
11
|
+
if (!this.jsEventListeners[event]) return false;
|
|
12
|
+
this.jsEventListeners[event]?.forEach(fn => fn(...params));
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Adds a listener for a player event.
|
|
18
|
+
* @throw Error if the event is not supported.
|
|
19
|
+
* @param event - The event to add a listener for.
|
|
20
|
+
* @param callback - The callback to call when the event is triggered.
|
|
21
|
+
* @returns A subscription object that can be used to remove the listener.
|
|
22
|
+
*/
|
|
23
|
+
addEventListener(event, callback) {
|
|
24
|
+
switch (event) {
|
|
25
|
+
// ----------------- JS Events -----------------
|
|
26
|
+
case 'onError':
|
|
27
|
+
this.jsEventListeners.onError ??= new Set();
|
|
28
|
+
this.jsEventListeners.onError.add(callback);
|
|
29
|
+
return {
|
|
30
|
+
remove: () => this.jsEventListeners.onError?.delete(callback)
|
|
31
|
+
};
|
|
32
|
+
// ----------------- Native Events -----------------
|
|
33
|
+
case 'onAudioBecomingNoisy':
|
|
34
|
+
return this.eventEmitter.addOnAudioBecomingNoisyListener(callback);
|
|
35
|
+
case 'onAudioFocusChange':
|
|
36
|
+
return this.eventEmitter.addOnAudioFocusChangeListener(callback);
|
|
37
|
+
case 'onBandwidthUpdate':
|
|
38
|
+
return this.eventEmitter.addOnBandwidthUpdateListener(callback);
|
|
39
|
+
case 'onBuffer':
|
|
40
|
+
return this.eventEmitter.addOnBufferListener(callback);
|
|
41
|
+
case 'onControlsVisibleChange':
|
|
42
|
+
return this.eventEmitter.addOnControlsVisibleChangeListener(callback);
|
|
43
|
+
case 'onEnd':
|
|
44
|
+
return this.eventEmitter.addOnEndListener(callback);
|
|
45
|
+
case 'onExternalPlaybackChange':
|
|
46
|
+
return this.eventEmitter.addOnExternalPlaybackChangeListener(callback);
|
|
47
|
+
case 'onLoad':
|
|
48
|
+
return this.eventEmitter.addOnLoadListener(callback);
|
|
49
|
+
case 'onLoadStart':
|
|
50
|
+
return this.eventEmitter.addOnLoadStartListener(callback);
|
|
51
|
+
case 'onPlaybackStateChange':
|
|
52
|
+
return this.eventEmitter.addOnPlaybackStateChangeListener(callback);
|
|
53
|
+
case 'onPlaybackRateChange':
|
|
54
|
+
return this.eventEmitter.addOnPlaybackRateChangeListener(callback);
|
|
55
|
+
case 'onProgress':
|
|
56
|
+
return this.eventEmitter.addOnProgressListener(callback);
|
|
57
|
+
case 'onReadyToDisplay':
|
|
58
|
+
return this.eventEmitter.addOnReadyToDisplayListener(callback);
|
|
59
|
+
case 'onSeek':
|
|
60
|
+
return this.eventEmitter.addOnSeekListener(callback);
|
|
61
|
+
case 'onTimedMetadata':
|
|
62
|
+
return this.eventEmitter.addOnTimedMetadataListener(callback);
|
|
63
|
+
case 'onTextTrackDataChanged':
|
|
64
|
+
return this.eventEmitter.addOnTextTrackDataChangedListener(callback);
|
|
65
|
+
case 'onTrackChange':
|
|
66
|
+
return this.eventEmitter.addOnTrackChangeListener(callback);
|
|
67
|
+
case 'onVolumeChange':
|
|
68
|
+
return this.eventEmitter.addOnVolumeChangeListener(callback);
|
|
69
|
+
case 'onStatusChange':
|
|
70
|
+
return this.eventEmitter.addOnStatusChangeListener(callback);
|
|
71
|
+
default:
|
|
72
|
+
throw new Error(`[Unified Player] Unsupported event: ${event}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Clears all events from the event emitter.
|
|
78
|
+
*/
|
|
79
|
+
clearAllEvents() {
|
|
80
|
+
this.jsEventListeners = {};
|
|
81
|
+
this.eventEmitter.clearAllListeners();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=VideoPlayerEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ALL_PLAYER_EVENTS","VideoPlayerEvents","jsEventListeners","supportedEvents","constructor","eventEmitter","triggerJSEvent","event","params","forEach","fn","addEventListener","callback","onError","Set","add","remove","delete","addOnAudioBecomingNoisyListener","addOnAudioFocusChangeListener","addOnBandwidthUpdateListener","addOnBufferListener","addOnControlsVisibleChangeListener","addOnEndListener","addOnExternalPlaybackChangeListener","addOnLoadListener","addOnLoadStartListener","addOnPlaybackStateChangeListener","addOnPlaybackRateChangeListener","addOnProgressListener","addOnReadyToDisplayListener","addOnSeekListener","addOnTimedMetadataListener","addOnTextTrackDataChangedListener","addOnTrackChangeListener","addOnVolumeChangeListener","addOnStatusChangeListener","Error","clearAllEvents","clearAllListeners"],"sourceRoot":"../../../src","sources":["core/VideoPlayerEvents.ts"],"mappings":";;AAIA,SACEA,iBAAiB,QAGZ,mBAAgB;AAEvB,OAAO,MAAMC,iBAAiB,CAAC;EAEnBC,gBAAgB,GAEtB,CAAC,CAAC;EAEaC,eAAe,GAChCH,iBAAiB;EAEnBI,WAAWA,CAACC,YAAqC,EAAE;IACjD,IAAI,CAACA,YAAY,GAAGA,YAAY;EAClC;EAEUC,cAAcA,CACtBC,KAAY,EACZ,GAAGC,MAA8C,EACxC;IACT,IAAI,CAAC,IAAI,CAACN,gBAAgB,CAACK,KAAK,CAAC,EAAE,OAAO,KAAK;IAC/C,IAAI,CAACL,gBAAgB,CAACK,KAAK,CAAC,EAAEE,OAAO,CAAEC,EAAE,IAAKA,EAAE,CAAC,GAAGF,MAAM,CAAC,CAAC;IAC5D,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEG,gBAAgBA,CACdJ,KAAY,EACZK,QAA6B,EACP;IACtB,QAAQL,KAAK;MACX;MACA,KAAK,SAAS;QACZ,IAAI,CAACL,gBAAgB,CAACW,OAAO,KAAK,IAAIC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAACZ,gBAAgB,CAACW,OAAO,CAACE,GAAG,CAC/BH,QACF,CAAC;QACD,OAAO;UACLI,MAAM,EAAEA,CAAA,KACN,IAAI,CAACd,gBAAgB,CAACW,OAAO,EAAEI,MAAM,CACnCL,QACF;QACJ,CAAC;MACH;MACA,KAAK,sBAAsB;QACzB,OAAO,IAAI,CAACP,YAAY,CAACa,+BAA+B,CACtDN,QACF,CAAC;MACH,KAAK,oBAAoB;QACvB,OAAO,IAAI,CAACP,YAAY,CAACc,6BAA6B,CACpDP,QACF,CAAC;MACH,KAAK,mBAAmB;QACtB,OAAO,IAAI,CAACP,YAAY,CAACe,4BAA4B,CACnDR,QACF,CAAC;MACH,KAAK,UAAU;QACb,OAAO,IAAI,CAACP,YAAY,CAACgB,mBAAmB,CAC1CT,QACF,CAAC;MACH,KAAK,yBAAyB;QAC5B,OAAO,IAAI,CAACP,YAAY,CAACiB,kCAAkC,CACzDV,QACF,CAAC;MACH,KAAK,OAAO;QACV,OAAO,IAAI,CAACP,YAAY,CAACkB,gBAAgB,CACvCX,QACF,CAAC;MACH,KAAK,0BAA0B;QAC7B,OAAO,IAAI,CAACP,YAAY,CAACmB,mCAAmC,CAC1DZ,QACF,CAAC;MACH,KAAK,QAAQ;QACX,OAAO,IAAI,CAACP,YAAY,CAACoB,iBAAiB,CACxCb,QACF,CAAC;MACH,KAAK,aAAa;QAChB,OAAO,IAAI,CAACP,YAAY,CAACqB,sBAAsB,CAC7Cd,QACF,CAAC;MACH,KAAK,uBAAuB;QAC1B,OAAO,IAAI,CAACP,YAAY,CAACsB,gCAAgC,CACvDf,QACF,CAAC;MACH,KAAK,sBAAsB;QACzB,OAAO,IAAI,CAACP,YAAY,CAACuB,+BAA+B,CACtDhB,QACF,CAAC;MACH,KAAK,YAAY;QACf,OAAO,IAAI,CAACP,YAAY,CAACwB,qBAAqB,CAC5CjB,QACF,CAAC;MACH,KAAK,kBAAkB;QACrB,OAAO,IAAI,CAACP,YAAY,CAACyB,2BAA2B,CAClDlB,QACF,CAAC;MACH,KAAK,QAAQ;QACX,OAAO,IAAI,CAACP,YAAY,CAAC0B,iBAAiB,CACxCnB,QACF,CAAC;MACH,KAAK,iBAAiB;QACpB,OAAO,IAAI,CAACP,YAAY,CAAC2B,0BAA0B,CACjDpB,QACF,CAAC;MACH,KAAK,wBAAwB;QAC3B,OAAO,IAAI,CAACP,YAAY,CAAC4B,iCAAiC,CACxDrB,QACF,CAAC;MACH,KAAK,eAAe;QAClB,OAAO,IAAI,CAACP,YAAY,CAAC6B,wBAAwB,CAC/CtB,QACF,CAAC;MACH,KAAK,gBAAgB;QACnB,OAAO,IAAI,CAACP,YAAY,CAAC8B,yBAAyB,CAChDvB,QACF,CAAC;MACH,KAAK,gBAAgB;QACnB,OAAO,IAAI,CAACP,YAAY,CAAC+B,yBAAyB,CAChDxB,QACF,CAAC;MACH;QACE,MAAM,IAAIyB,KAAK,CAAC,uCAAuC9B,KAAK,EAAE,CAAC;IACnE;EACF;;EAEA;AACF;AACA;EACE+B,cAAcA,CAAA,EAAG;IACf,IAAI,CAACpC,gBAAgB,GAAG,CAAC,CAAC;IAC1B,IAAI,CAACG,YAAY,CAACkC,iBAAiB,CAAC,CAAC;EACvC;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useEffect } from 'react';
|
|
4
|
+
/**
|
|
5
|
+
* Attaches an event listener to a `VideoPlayer` instance for a specified event.
|
|
6
|
+
*
|
|
7
|
+
* @param player - The player to attach the event to
|
|
8
|
+
* @param event - The name of the event to attach the callback to
|
|
9
|
+
* @param callback - The callback for the event
|
|
10
|
+
*/
|
|
11
|
+
export const useEvent = (player, event, callback) => {
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
const subscription = player.addEventListener(event, callback);
|
|
14
|
+
return () => {
|
|
15
|
+
subscription.remove();
|
|
16
|
+
};
|
|
17
|
+
}, [player, event, callback]);
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=useEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useEvent","player","event","callback","subscription","addEventListener","remove"],"sourceRoot":"../../../../src","sources":["core/hooks/useEvent.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,OAAO;AAIjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,QAAQ,GAAGA,CACtBC,MAAmB,EACnBC,KAAQ,EACRC,QAA4B,KACzB;EACHJ,SAAS,CAAC,MAAM;IACd,MAAMK,YAAY,GAAGH,MAAM,CAACI,gBAAgB,CAACH,KAAK,EAAEC,QAAQ,CAAC;IAE7D,OAAO,MAAM;MACXC,YAAY,CAACE,MAAM,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAACL,MAAM,EAAEC,KAAK,EAAEC,QAAQ,CAAC,CAAC;AAC/B,CAAC","ignoreList":[]}
|