@pigeonmal/react-native-video 7.0.0-beta.2
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 +163 -0
- package/ReactNativeVideo.podspec +59 -0
- package/android/CMakeLists.txt +29 -0
- package/android/build.gradle +255 -0
- package/android/fix-prefab.gradle +51 -0
- package/android/gradle.properties +13 -0
- package/android/media3-ffmpeg-decoder/build.gradle +2 -0
- package/android/media3-ffmpeg-decoder/ffmpeg.aar +0 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/AndroidManifestNew.xml +3 -0
- package/android/src/main/cpp/cpp-adapter.cpp +6 -0
- package/android/src/main/java/com/twg/video/core/AudioFocusManager.kt +233 -0
- package/android/src/main/java/com/twg/video/core/VideoError.kt +105 -0
- package/android/src/main/java/com/twg/video/core/VideoManager.kt +284 -0
- package/android/src/main/java/com/twg/video/core/custom/MyRenderersFactory.java +78 -0
- package/android/src/main/java/com/twg/video/core/custom/MyTextRenderer.java +121 -0
- package/android/src/main/java/com/twg/video/core/custom/TextFilter.java +6 -0
- package/android/src/main/java/com/twg/video/core/custom/TextSynchronizer.java +7 -0
- package/android/src/main/java/com/twg/video/core/extensions/ResizeMode+AspectRatioFrameLayout.kt +20 -0
- package/android/src/main/java/com/twg/video/core/extensions/SubtitleType+toString.kt +14 -0
- package/android/src/main/java/com/twg/video/core/extensions/VideoPlaybackService+ServiceManagment.kt +59 -0
- package/android/src/main/java/com/twg/video/core/fragments/FullscreenVideoFragment.kt +265 -0
- package/android/src/main/java/com/twg/video/core/fragments/PictureInPictureHelperFragment.kt +85 -0
- package/android/src/main/java/com/twg/video/core/player/DRMManagerSpec.kt +23 -0
- package/android/src/main/java/com/twg/video/core/player/DataSourceFactoryUtils.kt +80 -0
- package/android/src/main/java/com/twg/video/core/player/MediaItemUtils.kt +152 -0
- package/android/src/main/java/com/twg/video/core/player/MediaSourceUtils.kt +85 -0
- package/android/src/main/java/com/twg/video/core/player/OnAudioFocusChangedListener.kt +25 -0
- package/android/src/main/java/com/twg/video/core/plugins/PluginsRegistry.kt +223 -0
- package/android/src/main/java/com/twg/video/core/plugins/ReactNativeVideoPlugin.kt +173 -0
- package/android/src/main/java/com/twg/video/core/recivers/AudioBecomingNoisyReceiver.kt +38 -0
- package/android/src/main/java/com/twg/video/core/services/playback/CustomMediaNotificationProvider.kt +151 -0
- package/android/src/main/java/com/twg/video/core/services/playback/VideoPlaybackCallback.kt +96 -0
- package/android/src/main/java/com/twg/video/core/services/playback/VideoPlaybackService.kt +219 -0
- package/android/src/main/java/com/twg/video/core/services/playback/VideoPlaybackServiceConnection.kt +59 -0
- package/android/src/main/java/com/twg/video/core/utils/PictureInPictureUtils.kt +153 -0
- package/android/src/main/java/com/twg/video/core/utils/SmallVideoPlayerOptimizer.kt +157 -0
- package/android/src/main/java/com/twg/video/core/utils/SourceLoader.kt +48 -0
- package/android/src/main/java/com/twg/video/core/utils/Threading.kt +75 -0
- package/android/src/main/java/com/twg/video/core/utils/TrackUtils.kt +305 -0
- package/android/src/main/java/com/twg/video/core/utils/VideoFileHelper.kt +51 -0
- package/android/src/main/java/com/twg/video/core/utils/VideoInformationUtils.kt +67 -0
- package/android/src/main/java/com/twg/video/core/utils/VideoOrientationUtils.kt +30 -0
- package/android/src/main/java/com/twg/video/hybrids/videoplayer/HybridVideoPlayer.kt +630 -0
- package/android/src/main/java/com/twg/video/hybrids/videoplayer/HybridVideoPlayerFactory.kt +16 -0
- package/android/src/main/java/com/twg/video/hybrids/videoplayereventemitter/HybridVideoPlayerEventEmitter.kt +154 -0
- package/android/src/main/java/com/twg/video/hybrids/videoplayersource/HybridVideoPlayerSource.kt +67 -0
- package/android/src/main/java/com/twg/video/hybrids/videoplayersource/HybridVideoPlayerSourceFactory.kt +31 -0
- package/android/src/main/java/com/twg/video/hybrids/videoviewviewmanager/HybridVideoViewViewManager.kt +187 -0
- package/android/src/main/java/com/twg/video/hybrids/videoviewviewmanager/HybridVideoViewViewManagerFactory.kt +13 -0
- package/android/src/main/java/com/twg/video/react/VideoPackage.kt +26 -0
- package/android/src/main/java/com/twg/video/react/VideoViewViewManager.kt +78 -0
- package/android/src/main/java/com/twg/video/view/VideoView.kt +565 -0
- package/android/src/main/res/layout/player_view_surface.xml +14 -0
- package/android/src/main/res/layout/player_view_texture.xml +15 -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/android/src/stubs/subs/androidx/media3/exoplayer/text/NonFinalTextRenderer.java +583 -0
- package/app.plugin.js +1 -0
- package/ios/Video-Bridging-Header.h +1 -0
- package/ios/core/Extensions/AVAsset+estimatedMemoryUsage.swift +51 -0
- package/ios/core/Extensions/AVAssetTrack+orientation.swift +41 -0
- package/ios/core/Extensions/AVPlayerItem+externalSubtitles.swift +35 -0
- package/ios/core/Extensions/AVPlayerItem+getBufferedDurration.swift +34 -0
- package/ios/core/Extensions/AVPlayerItem+setBufferConfig.swift +37 -0
- package/ios/core/Extensions/AVPlayerViewController+Fullscreen.swift +21 -0
- package/ios/core/Extensions/AVPlayerViewController+PictureInPicture.swift +24 -0
- package/ios/core/Extensions/AVURLAsset+getAssetInformation.swift +68 -0
- package/ios/core/Extensions/NSObject+PerformIfResponds.swift +30 -0
- package/ios/core/Extensions/ResizeMode+VideoGravity.swift +24 -0
- package/ios/core/HLSSubtitleInjector.swift +381 -0
- package/ios/core/NowPlayingInfoCenterManager.swift +323 -0
- package/ios/core/Plugins/PluginsRegistry.swift +102 -0
- package/ios/core/Plugins/ReactNativeVideoPlugin.swift +91 -0
- package/ios/core/Spec/DRMManagerSpec.swift +14 -0
- package/ios/core/Spec/NativeVideoPlayerSourceSpec.swift +36 -0
- package/ios/core/Spec/NativeVideoPlayerSpec.swift +42 -0
- package/ios/core/Utils/ExternalSubtitlesUtils.swift +119 -0
- package/ios/core/Utils/HLSManifestParser.swift +170 -0
- package/ios/core/Utils/Weak.swift +26 -0
- package/ios/core/VideoError.swift +169 -0
- package/ios/core/VideoFileHelper.swift +48 -0
- package/ios/core/VideoManager.swift +412 -0
- package/ios/core/VideoPlayerObserver.swift +294 -0
- package/ios/hybrids/VideoPlayer/HybridVideoPlayer+Events.swift +198 -0
- package/ios/hybrids/VideoPlayer/HybridVideoPlayer.swift +555 -0
- package/ios/hybrids/VideoPlayer/HybridVideoPlayerFactory.swift +15 -0
- package/ios/hybrids/VideoPlayerEmitter/HybridVideoPlayerEventEmitter.swift +203 -0
- package/ios/hybrids/VideoPlayerSource/HybridVideoPlayerSource.swift +166 -0
- package/ios/hybrids/VideoPlayerSource/HybridVideoPlayerSourceFactory.swift +30 -0
- package/ios/hybrids/VideoPlayerSource/SourceLoader.swift +83 -0
- package/ios/hybrids/VideoViewViewManager/HybridVideoViewViewManager.swift +266 -0
- package/ios/hybrids/VideoViewViewManager/HybridVideoViewViewManagerFactory.swift +14 -0
- package/ios/view/VideoComponentView.swift +274 -0
- package/ios/view/VideoComponentViewObserver.swift +144 -0
- package/ios/view/fabric/RCTVideoViewComponentView.h +10 -0
- package/ios/view/fabric/RCTVideoViewComponentView.mm +94 -0
- package/ios/view/fabric/RCTVideoViewViewManager.mm +14 -0
- package/ios/view/paper/RCTVideoViewComponentView.h +9 -0
- package/ios/view/paper/RCTVideoViewComponentView.mm +45 -0
- package/ios/view/paper/RCTVideoViewViewManager.m +18 -0
- package/lib/commonjs/core/VideoPlayer.js +276 -0
- package/lib/commonjs/core/VideoPlayer.js.map +1 -0
- package/lib/commonjs/core/VideoPlayerEvents.js +87 -0
- package/lib/commonjs/core/VideoPlayerEvents.js.map +1 -0
- package/lib/commonjs/core/hooks/useEvent.js +24 -0
- package/lib/commonjs/core/hooks/useEvent.js.map +1 -0
- package/lib/commonjs/core/hooks/useManagedInstance.js +79 -0
- package/lib/commonjs/core/hooks/useManagedInstance.js.map +1 -0
- package/lib/commonjs/core/hooks/useVideoPlayer.js +62 -0
- package/lib/commonjs/core/hooks/useVideoPlayer.js.map +1 -0
- package/lib/commonjs/core/types/BufferConfig.js +2 -0
- package/lib/commonjs/core/types/BufferConfig.js.map +1 -0
- package/lib/commonjs/core/types/DrmParams.js +2 -0
- package/lib/commonjs/core/types/DrmParams.js.map +1 -0
- package/lib/commonjs/core/types/Events.js +14 -0
- package/lib/commonjs/core/types/Events.js.map +1 -0
- package/lib/commonjs/core/types/IgnoreSilentSwitchMode.js +2 -0
- package/lib/commonjs/core/types/IgnoreSilentSwitchMode.js.map +1 -0
- package/lib/commonjs/core/types/MixAudioMode.js +2 -0
- package/lib/commonjs/core/types/MixAudioMode.js.map +1 -0
- package/lib/commonjs/core/types/PlayerTrack.js +13 -0
- package/lib/commonjs/core/types/PlayerTrack.js.map +1 -0
- package/lib/commonjs/core/types/ResizeMode.js +2 -0
- package/lib/commonjs/core/types/ResizeMode.js.map +1 -0
- package/lib/commonjs/core/types/Utils.js +2 -0
- package/lib/commonjs/core/types/Utils.js.map +1 -0
- package/lib/commonjs/core/types/VideoConfig.js +6 -0
- package/lib/commonjs/core/types/VideoConfig.js.map +1 -0
- package/lib/commonjs/core/types/VideoError.js +108 -0
- package/lib/commonjs/core/types/VideoError.js.map +1 -0
- package/lib/commonjs/core/types/VideoInformation.js +6 -0
- package/lib/commonjs/core/types/VideoInformation.js.map +1 -0
- package/lib/commonjs/core/types/VideoOrientation.js +2 -0
- package/lib/commonjs/core/types/VideoOrientation.js.map +1 -0
- package/lib/commonjs/core/types/VideoPlayerBase.js +6 -0
- package/lib/commonjs/core/types/VideoPlayerBase.js.map +1 -0
- package/lib/commonjs/core/types/VideoPlayerSourceBase.js +6 -0
- package/lib/commonjs/core/types/VideoPlayerSourceBase.js.map +1 -0
- package/lib/commonjs/core/types/VideoPlayerStatus.js +2 -0
- package/lib/commonjs/core/types/VideoPlayerStatus.js.map +1 -0
- package/lib/commonjs/core/utils/playerFactory.js +30 -0
- package/lib/commonjs/core/utils/playerFactory.js.map +1 -0
- package/lib/commonjs/core/utils/sourceFactory.js +146 -0
- package/lib/commonjs/core/utils/sourceFactory.js.map +1 -0
- package/lib/commonjs/core/video-view/NativeVideoView.js +18 -0
- package/lib/commonjs/core/video-view/NativeVideoView.js.map +1 -0
- package/lib/commonjs/core/video-view/VideoView.js +208 -0
- package/lib/commonjs/core/video-view/VideoView.js.map +1 -0
- package/lib/commonjs/expo-plugins/@types.js +2 -0
- package/lib/commonjs/expo-plugins/@types.js.map +1 -0
- package/lib/commonjs/expo-plugins/getPackageInfo.js +27 -0
- package/lib/commonjs/expo-plugins/getPackageInfo.js.map +1 -0
- package/lib/commonjs/expo-plugins/withAndroidExtensions.js +40 -0
- package/lib/commonjs/expo-plugins/withAndroidExtensions.js.map +1 -0
- package/lib/commonjs/expo-plugins/withAndroidNotificationControls.js +34 -0
- package/lib/commonjs/expo-plugins/withAndroidNotificationControls.js.map +1 -0
- package/lib/commonjs/expo-plugins/withAndroidPictureInPicture.js +23 -0
- package/lib/commonjs/expo-plugins/withAndroidPictureInPicture.js.map +1 -0
- package/lib/commonjs/expo-plugins/withBackgroundAudio.js +26 -0
- package/lib/commonjs/expo-plugins/withBackgroundAudio.js.map +1 -0
- package/lib/commonjs/expo-plugins/withReactNativeVideo.js +31 -0
- package/lib/commonjs/expo-plugins/withReactNativeVideo.js.map +1 -0
- package/lib/commonjs/expo-plugins/writeToPodfile.js +59 -0
- package/lib/commonjs/expo-plugins/writeToPodfile.js.map +1 -0
- package/lib/commonjs/index.js +61 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/spec/fabric/VideoViewNativeComponent.ts +17 -0
- package/lib/commonjs/spec/nitro/VideoPlayer.nitro.js +6 -0
- package/lib/commonjs/spec/nitro/VideoPlayer.nitro.js.map +1 -0
- package/lib/commonjs/spec/nitro/VideoPlayerEventEmitter.nitro.js +6 -0
- package/lib/commonjs/spec/nitro/VideoPlayerEventEmitter.nitro.js.map +1 -0
- package/lib/commonjs/spec/nitro/VideoPlayerSource.nitro.js +6 -0
- package/lib/commonjs/spec/nitro/VideoPlayerSource.nitro.js.map +1 -0
- package/lib/commonjs/spec/nitro/VideoViewViewManager.nitro.js +6 -0
- package/lib/commonjs/spec/nitro/VideoViewViewManager.nitro.js.map +1 -0
- package/lib/module/core/VideoPlayer.js +272 -0
- package/lib/module/core/VideoPlayer.js.map +1 -0
- package/lib/module/core/VideoPlayerEvents.js +82 -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/PlayerTrack.js +9 -0
- package/lib/module/core/types/PlayerTrack.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/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.js +13 -0
- package/lib/module/core/video-view/NativeVideoView.js.map +1 -0
- package/lib/module/core/video-view/VideoView.js +203 -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 +9 -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/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/src/core/VideoPlayer.d.ts +61 -0
- package/lib/typescript/commonjs/src/core/VideoPlayer.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/VideoPlayerEvents.d.ts +22 -0
- package/lib/typescript/commonjs/src/core/VideoPlayerEvents.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/hooks/useEvent.d.ts +11 -0
- package/lib/typescript/commonjs/src/core/hooks/useEvent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/hooks/useManagedInstance.d.ts +2 -0
- package/lib/typescript/commonjs/src/core/hooks/useManagedInstance.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/hooks/useVideoPlayer.d.ts +16 -0
- package/lib/typescript/commonjs/src/core/hooks/useVideoPlayer.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/types/BufferConfig.d.ts +97 -0
- package/lib/typescript/commonjs/src/core/types/BufferConfig.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/types/DrmParams.d.ts +64 -0
- package/lib/typescript/commonjs/src/core/types/DrmParams.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/types/Events.d.ts +218 -0
- package/lib/typescript/commonjs/src/core/types/Events.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/types/IgnoreSilentSwitchMode.d.ts +2 -0
- package/lib/typescript/commonjs/src/core/types/IgnoreSilentSwitchMode.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/types/MixAudioMode.d.ts +2 -0
- package/lib/typescript/commonjs/src/core/types/MixAudioMode.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/types/PlayerTrack.d.ts +34 -0
- package/lib/typescript/commonjs/src/core/types/PlayerTrack.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/types/ResizeMode.d.ts +10 -0
- package/lib/typescript/commonjs/src/core/types/ResizeMode.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/types/Utils.d.ts +2 -0
- package/lib/typescript/commonjs/src/core/types/Utils.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/types/VideoConfig.d.ts +137 -0
- package/lib/typescript/commonjs/src/core/types/VideoConfig.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/types/VideoError.d.ts +27 -0
- package/lib/typescript/commonjs/src/core/types/VideoError.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/types/VideoInformation.d.ts +37 -0
- package/lib/typescript/commonjs/src/core/types/VideoInformation.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/types/VideoOrientation.d.ts +2 -0
- package/lib/typescript/commonjs/src/core/types/VideoOrientation.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/types/VideoPlayerBase.d.ts +165 -0
- package/lib/typescript/commonjs/src/core/types/VideoPlayerBase.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/types/VideoPlayerSourceBase.d.ts +17 -0
- package/lib/typescript/commonjs/src/core/types/VideoPlayerSourceBase.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/types/VideoPlayerStatus.d.ts +9 -0
- package/lib/typescript/commonjs/src/core/types/VideoPlayerStatus.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/utils/playerFactory.d.ts +2 -0
- package/lib/typescript/commonjs/src/core/utils/playerFactory.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/utils/sourceFactory.d.ts +29 -0
- package/lib/typescript/commonjs/src/core/utils/sourceFactory.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/video-view/NativeVideoView.d.ts +2 -0
- package/lib/typescript/commonjs/src/core/video-view/NativeVideoView.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/video-view/VideoView.d.ts +85 -0
- package/lib/typescript/commonjs/src/core/video-view/VideoView.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/expo-plugins/@types.d.ts +34 -0
- package/lib/typescript/commonjs/src/expo-plugins/@types.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/expo-plugins/getPackageInfo.d.ts +5 -0
- package/lib/typescript/commonjs/src/expo-plugins/getPackageInfo.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/expo-plugins/withAndroidExtensions.d.ts +8 -0
- package/lib/typescript/commonjs/src/expo-plugins/withAndroidExtensions.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/expo-plugins/withAndroidNotificationControls.d.ts +3 -0
- package/lib/typescript/commonjs/src/expo-plugins/withAndroidNotificationControls.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/expo-plugins/withAndroidPictureInPicture.d.ts +3 -0
- package/lib/typescript/commonjs/src/expo-plugins/withAndroidPictureInPicture.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/expo-plugins/withBackgroundAudio.d.ts +7 -0
- package/lib/typescript/commonjs/src/expo-plugins/withBackgroundAudio.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/expo-plugins/withReactNativeVideo.d.ts +5 -0
- package/lib/typescript/commonjs/src/expo-plugins/withReactNativeVideo.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/expo-plugins/writeToPodfile.d.ts +2 -0
- package/lib/typescript/commonjs/src/expo-plugins/writeToPodfile.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +14 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/spec/fabric/VideoViewNativeComponent.d.ts +12 -0
- package/lib/typescript/commonjs/src/spec/fabric/VideoViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/spec/nitro/VideoPlayer.nitro.d.ts +34 -0
- package/lib/typescript/commonjs/src/spec/nitro/VideoPlayer.nitro.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/spec/nitro/VideoPlayerEventEmitter.nitro.d.ts +142 -0
- package/lib/typescript/commonjs/src/spec/nitro/VideoPlayerEventEmitter.nitro.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/spec/nitro/VideoPlayerSource.nitro.d.ts +21 -0
- package/lib/typescript/commonjs/src/spec/nitro/VideoPlayerSource.nitro.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/spec/nitro/VideoViewViewManager.nitro.d.ts +2 -0
- package/lib/typescript/commonjs/src/spec/nitro/VideoViewViewManager.nitro.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/src/core/VideoPlayer.d.ts +61 -0
- package/lib/typescript/module/src/core/VideoPlayer.d.ts.map +1 -0
- package/lib/typescript/module/src/core/VideoPlayerEvents.d.ts +22 -0
- package/lib/typescript/module/src/core/VideoPlayerEvents.d.ts.map +1 -0
- package/lib/typescript/module/src/core/hooks/useEvent.d.ts +11 -0
- package/lib/typescript/module/src/core/hooks/useEvent.d.ts.map +1 -0
- package/lib/typescript/module/src/core/hooks/useManagedInstance.d.ts +2 -0
- package/lib/typescript/module/src/core/hooks/useManagedInstance.d.ts.map +1 -0
- package/lib/typescript/module/src/core/hooks/useVideoPlayer.d.ts +16 -0
- package/lib/typescript/module/src/core/hooks/useVideoPlayer.d.ts.map +1 -0
- package/lib/typescript/module/src/core/types/BufferConfig.d.ts +97 -0
- package/lib/typescript/module/src/core/types/BufferConfig.d.ts.map +1 -0
- package/lib/typescript/module/src/core/types/DrmParams.d.ts +64 -0
- package/lib/typescript/module/src/core/types/DrmParams.d.ts.map +1 -0
- package/lib/typescript/module/src/core/types/Events.d.ts +218 -0
- package/lib/typescript/module/src/core/types/Events.d.ts.map +1 -0
- package/lib/typescript/module/src/core/types/IgnoreSilentSwitchMode.d.ts +2 -0
- package/lib/typescript/module/src/core/types/IgnoreSilentSwitchMode.d.ts.map +1 -0
- package/lib/typescript/module/src/core/types/MixAudioMode.d.ts +2 -0
- package/lib/typescript/module/src/core/types/MixAudioMode.d.ts.map +1 -0
- package/lib/typescript/module/src/core/types/PlayerTrack.d.ts +34 -0
- package/lib/typescript/module/src/core/types/PlayerTrack.d.ts.map +1 -0
- package/lib/typescript/module/src/core/types/ResizeMode.d.ts +10 -0
- package/lib/typescript/module/src/core/types/ResizeMode.d.ts.map +1 -0
- package/lib/typescript/module/src/core/types/Utils.d.ts +2 -0
- package/lib/typescript/module/src/core/types/Utils.d.ts.map +1 -0
- package/lib/typescript/module/src/core/types/VideoConfig.d.ts +137 -0
- package/lib/typescript/module/src/core/types/VideoConfig.d.ts.map +1 -0
- package/lib/typescript/module/src/core/types/VideoError.d.ts +27 -0
- package/lib/typescript/module/src/core/types/VideoError.d.ts.map +1 -0
- package/lib/typescript/module/src/core/types/VideoInformation.d.ts +37 -0
- package/lib/typescript/module/src/core/types/VideoInformation.d.ts.map +1 -0
- package/lib/typescript/module/src/core/types/VideoOrientation.d.ts +2 -0
- package/lib/typescript/module/src/core/types/VideoOrientation.d.ts.map +1 -0
- package/lib/typescript/module/src/core/types/VideoPlayerBase.d.ts +165 -0
- package/lib/typescript/module/src/core/types/VideoPlayerBase.d.ts.map +1 -0
- package/lib/typescript/module/src/core/types/VideoPlayerSourceBase.d.ts +17 -0
- package/lib/typescript/module/src/core/types/VideoPlayerSourceBase.d.ts.map +1 -0
- package/lib/typescript/module/src/core/types/VideoPlayerStatus.d.ts +9 -0
- package/lib/typescript/module/src/core/types/VideoPlayerStatus.d.ts.map +1 -0
- package/lib/typescript/module/src/core/utils/playerFactory.d.ts +2 -0
- package/lib/typescript/module/src/core/utils/playerFactory.d.ts.map +1 -0
- package/lib/typescript/module/src/core/utils/sourceFactory.d.ts +29 -0
- package/lib/typescript/module/src/core/utils/sourceFactory.d.ts.map +1 -0
- package/lib/typescript/module/src/core/video-view/NativeVideoView.d.ts +2 -0
- package/lib/typescript/module/src/core/video-view/NativeVideoView.d.ts.map +1 -0
- package/lib/typescript/module/src/core/video-view/VideoView.d.ts +85 -0
- package/lib/typescript/module/src/core/video-view/VideoView.d.ts.map +1 -0
- package/lib/typescript/module/src/expo-plugins/@types.d.ts +34 -0
- package/lib/typescript/module/src/expo-plugins/@types.d.ts.map +1 -0
- package/lib/typescript/module/src/expo-plugins/getPackageInfo.d.ts +5 -0
- package/lib/typescript/module/src/expo-plugins/getPackageInfo.d.ts.map +1 -0
- package/lib/typescript/module/src/expo-plugins/withAndroidExtensions.d.ts +8 -0
- package/lib/typescript/module/src/expo-plugins/withAndroidExtensions.d.ts.map +1 -0
- package/lib/typescript/module/src/expo-plugins/withAndroidNotificationControls.d.ts +3 -0
- package/lib/typescript/module/src/expo-plugins/withAndroidNotificationControls.d.ts.map +1 -0
- package/lib/typescript/module/src/expo-plugins/withAndroidPictureInPicture.d.ts +3 -0
- package/lib/typescript/module/src/expo-plugins/withAndroidPictureInPicture.d.ts.map +1 -0
- package/lib/typescript/module/src/expo-plugins/withBackgroundAudio.d.ts +7 -0
- package/lib/typescript/module/src/expo-plugins/withBackgroundAudio.d.ts.map +1 -0
- package/lib/typescript/module/src/expo-plugins/withReactNativeVideo.d.ts +5 -0
- package/lib/typescript/module/src/expo-plugins/withReactNativeVideo.d.ts.map +1 -0
- package/lib/typescript/module/src/expo-plugins/writeToPodfile.d.ts +2 -0
- package/lib/typescript/module/src/expo-plugins/writeToPodfile.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +14 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -0
- package/lib/typescript/module/src/spec/fabric/VideoViewNativeComponent.d.ts +12 -0
- package/lib/typescript/module/src/spec/fabric/VideoViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/spec/nitro/VideoPlayer.nitro.d.ts +34 -0
- package/lib/typescript/module/src/spec/nitro/VideoPlayer.nitro.d.ts.map +1 -0
- package/lib/typescript/module/src/spec/nitro/VideoPlayerEventEmitter.nitro.d.ts +142 -0
- package/lib/typescript/module/src/spec/nitro/VideoPlayerEventEmitter.nitro.d.ts.map +1 -0
- package/lib/typescript/module/src/spec/nitro/VideoPlayerSource.nitro.d.ts +21 -0
- package/lib/typescript/module/src/spec/nitro/VideoPlayerSource.nitro.d.ts.map +1 -0
- package/lib/typescript/module/src/spec/nitro/VideoViewViewManager.nitro.d.ts +2 -0
- package/lib/typescript/module/src/spec/nitro/VideoViewViewManager.nitro.d.ts.map +1 -0
- package/nitro.json +28 -0
- package/nitrogen/generated/android/ReactNativeVideo+autolinking.cmake +94 -0
- package/nitrogen/generated/android/ReactNativeVideo+autolinking.gradle +27 -0
- package/nitrogen/generated/android/ReactNativeVideoOnLoad.cpp +98 -0
- package/nitrogen/generated/android/ReactNativeVideoOnLoad.hpp +25 -0
- package/nitrogen/generated/android/c++/JAllPlayerTracks.hpp +125 -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++/JExternalAudio.hpp +80 -0
- package/nitrogen/generated/android/c++/JExternalForcedType.hpp +59 -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 +88 -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__vector_std__string_.hpp +95 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerEventEmitterSpec.cpp +221 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerEventEmitterSpec.hpp +83 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerFactorySpec.cpp +59 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerFactorySpec.hpp +65 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceFactorySpec.cpp +113 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceFactorySpec.hpp +66 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceSpec.cpp +131 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceSpec.hpp +66 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSpec.cpp +307 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSpec.hpp +102 -0
- package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerFactorySpec.cpp +55 -0
- package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerFactorySpec.hpp +65 -0
- package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerSpec.cpp +184 -0
- package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerSpec.hpp +89 -0
- package/nitrogen/generated/android/c++/JIgnoreSilentSwitchMode.hpp +62 -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 +65 -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 +174 -0
- package/nitrogen/generated/android/c++/JOnGetLicensePayload.hpp +69 -0
- package/nitrogen/generated/android/c++/JPlayerTrack.hpp +70 -0
- package/nitrogen/generated/android/c++/JResizeMode.hpp +65 -0
- package/nitrogen/generated/android/c++/JResolution.hpp +61 -0
- package/nitrogen/generated/android/c++/JSourceType.hpp +59 -0
- package/nitrogen/generated/android/c++/JSubtitleType.hpp +68 -0
- package/nitrogen/generated/android/c++/JSurfaceType.hpp +59 -0
- package/nitrogen/generated/android/c++/JTimedMetadata.hpp +78 -0
- package/nitrogen/generated/android/c++/JTimedMetadataObject.hpp +61 -0
- package/nitrogen/generated/android/c++/JTrackType.hpp +62 -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++/JVideoInformation.hpp +86 -0
- package/nitrogen/generated/android/c++/JVideoOrientation.hpp +74 -0
- package/nitrogen/generated/android/c++/JVideoPlayerStatus.hpp +65 -0
- package/nitrogen/generated/android/c++/JVideoPlayerTrack.hpp +78 -0
- package/nitrogen/generated/android/c++/JonLoadData.hpp +87 -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 +61 -0
- package/nitrogen/generated/android/c++/JonVolumeChangeData.hpp +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/AllPlayerTracks.kt +44 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/BandwidthData.kt +44 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/BufferConfig.kt +68 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/CustomVideoMetadata.kt +50 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/ExternalAudio.kt +44 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/ExternalForcedType.kt +21 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__string_____OnGetLicensePayload.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/Func_void.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/Func_void_BandwidthData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/Func_void_TimedMetadata.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/Func_void_VideoPlayerStatus.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/Func_void_bool.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/Func_void_double.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/Func_void_onLoadData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/Func_void_onLoadStartData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/Func_void_onPlaybackStateChangeData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/Func_void_onProgressData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/Func_void_onVolumeChangeData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/Func_void_std__vector_std__string_.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/HybridVideoPlayerEventEmitterSpec.kt +219 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/HybridVideoPlayerFactorySpec.kt +57 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/HybridVideoPlayerSourceFactorySpec.kt +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/HybridVideoPlayerSourceSpec.kt +64 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/HybridVideoPlayerSpec.kt +187 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/HybridVideoViewViewManagerFactorySpec.kt +57 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/HybridVideoViewViewManagerSpec.kt +171 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/IgnoreSilentSwitchMode.kt +22 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/ListenerSubscription.kt +42 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/LivePlaybackParams.kt +50 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/MixAudioMode.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/NativeDrmParams.kt +60 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/NativeExternalSubtitle.kt +47 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/NativeVideoConfig.kt +68 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/OnGetLicensePayload.kt +47 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/PlayerTrack.kt +47 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/ReactNativeVideoOnLoad.kt +35 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/ResizeMode.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/Resolution.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/SourceType.kt +21 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/SubtitleType.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/SurfaceType.kt +21 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/TimedMetadata.kt +38 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/TimedMetadataObject.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/TrackType.kt +22 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/Variant_NullType_HybridVideoPlayerSourceSpec.kt +59 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/VideoInformation.kt +59 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/VideoOrientation.kt +26 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/VideoPlayerStatus.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/VideoPlayerTrack.kt +53 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/onLoadData.kt +53 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/onLoadStartData.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/onPlaybackStateChangeData.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/onProgressData.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/onVolumeChangeData.kt +41 -0
- package/nitrogen/generated/ios/ReactNativeVideo+autolinking.rb +60 -0
- package/nitrogen/generated/ios/ReactNativeVideo-Swift-Cxx-Bridge.cpp +272 -0
- package/nitrogen/generated/ios/ReactNativeVideo-Swift-Cxx-Bridge.hpp +1119 -0
- package/nitrogen/generated/ios/ReactNativeVideo-Swift-Cxx-Umbrella.hpp +177 -0
- package/nitrogen/generated/ios/ReactNativeVideoAutolinking.mm +49 -0
- package/nitrogen/generated/ios/ReactNativeVideoAutolinking.swift +55 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerEventEmitterSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerEventEmitterSpecSwift.hpp +269 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerFactorySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerFactorySpecSwift.hpp +81 -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 +265 -0
- package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerFactorySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerFactorySpecSwift.hpp +78 -0
- package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerSpecSwift.hpp +211 -0
- package/nitrogen/generated/ios/swift/AllPlayerTracks.swift +94 -0
- package/nitrogen/generated/ios/swift/BandwidthData.swift +82 -0
- package/nitrogen/generated/ios/swift/BufferConfig.swift +278 -0
- package/nitrogen/generated/ios/swift/CustomVideoMetadata.swift +175 -0
- package/nitrogen/generated/ios/swift/ExternalAudio.swift +116 -0
- package/nitrogen/generated/ios/swift/ExternalForcedType.swift +40 -0
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__string_____OnGetLicensePayload.swift +62 -0
- package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_BandwidthData.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_TimedMetadata.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_VideoInformation.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_VideoPlayerStatus.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_bool.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_double.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_onLoadData.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_onLoadStartData.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_onPlaybackStateChangeData.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_onProgressData.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_onVolumeChangeData.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_std__string__.swift +67 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +47 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerEventEmitterSpec.swift +74 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerEventEmitterSpec_cxx.swift +442 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerFactorySpec.swift +56 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerFactorySpec_cxx.swift +138 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceFactorySpec.swift +57 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceFactorySpec_cxx.swift +149 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceSpec.swift +57 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceSpec_cxx.swift +150 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSpec.swift +82 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSpec_cxx.swift +475 -0
- package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerFactorySpec.swift +56 -0
- package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerFactorySpec_cxx.swift +134 -0
- package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerSpec.swift +73 -0
- package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerSpec_cxx.swift +383 -0
- package/nitrogen/generated/ios/swift/IgnoreSilentSwitchMode.swift +44 -0
- package/nitrogen/generated/ios/swift/ListenerSubscription.swift +47 -0
- package/nitrogen/generated/ios/swift/LivePlaybackParams.swift +140 -0
- package/nitrogen/generated/ios/swift/MixAudioMode.swift +48 -0
- package/nitrogen/generated/ios/swift/NativeDrmParams.swift +287 -0
- package/nitrogen/generated/ios/swift/NativeExternalSubtitle.swift +69 -0
- package/nitrogen/generated/ios/swift/NativeVideoConfig.swift +345 -0
- package/nitrogen/generated/ios/swift/OnGetLicensePayload.swift +69 -0
- package/nitrogen/generated/ios/swift/PlayerTrack.swift +88 -0
- package/nitrogen/generated/ios/swift/ResizeMode.swift +48 -0
- package/nitrogen/generated/ios/swift/Resolution.swift +47 -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/TimedMetadata.swift +48 -0
- package/nitrogen/generated/ios/swift/TimedMetadataObject.swift +47 -0
- package/nitrogen/generated/ios/swift/TrackType.swift +44 -0
- package/nitrogen/generated/ios/swift/Variant_NullType__any_HybridVideoPlayerSourceSpec_.swift +18 -0
- package/nitrogen/generated/ios/swift/VideoInformation.swift +113 -0
- package/nitrogen/generated/ios/swift/VideoOrientation.swift +60 -0
- package/nitrogen/generated/ios/swift/VideoPlayerStatus.swift +48 -0
- package/nitrogen/generated/ios/swift/VideoPlayerTrack.swift +110 -0
- package/nitrogen/generated/ios/swift/onLoadData.swift +91 -0
- package/nitrogen/generated/ios/swift/onLoadStartData.swift +57 -0
- package/nitrogen/generated/ios/swift/onPlaybackStateChangeData.swift +47 -0
- package/nitrogen/generated/ios/swift/onProgressData.swift +47 -0
- package/nitrogen/generated/ios/swift/onVolumeChangeData.swift +47 -0
- package/nitrogen/generated/shared/c++/AllPlayerTracks.hpp +88 -0
- package/nitrogen/generated/shared/c++/BandwidthData.hpp +83 -0
- package/nitrogen/generated/shared/c++/BufferConfig.hpp +120 -0
- package/nitrogen/generated/shared/c++/CustomVideoMetadata.hpp +92 -0
- package/nitrogen/generated/shared/c++/ExternalAudio.hpp +85 -0
- package/nitrogen/generated/shared/c++/ExternalForcedType.hpp +76 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerEventEmitterSpec.cpp +39 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerEventEmitterSpec.hpp +108 -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 +59 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerSpec.hpp +128 -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 +75 -0
- package/nitrogen/generated/shared/c++/LivePlaybackParams.hpp +91 -0
- package/nitrogen/generated/shared/c++/MixAudioMode.hpp +84 -0
- package/nitrogen/generated/shared/c++/NativeDrmParams.hpp +105 -0
- package/nitrogen/generated/shared/c++/NativeExternalSubtitle.hpp +89 -0
- package/nitrogen/generated/shared/c++/NativeVideoConfig.hpp +135 -0
- package/nitrogen/generated/shared/c++/OnGetLicensePayload.hpp +87 -0
- package/nitrogen/generated/shared/c++/PlayerTrack.hpp +88 -0
- package/nitrogen/generated/shared/c++/ResizeMode.hpp +84 -0
- package/nitrogen/generated/shared/c++/Resolution.hpp +79 -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++/TimedMetadata.hpp +77 -0
- package/nitrogen/generated/shared/c++/TimedMetadataObject.hpp +79 -0
- package/nitrogen/generated/shared/c++/TrackType.hpp +63 -0
- package/nitrogen/generated/shared/c++/VideoInformation.hpp +104 -0
- package/nitrogen/generated/shared/c++/VideoOrientation.hpp +96 -0
- package/nitrogen/generated/shared/c++/VideoPlayerStatus.hpp +84 -0
- package/nitrogen/generated/shared/c++/VideoPlayerTrack.hpp +96 -0
- package/nitrogen/generated/shared/c++/onLoadData.hpp +99 -0
- package/nitrogen/generated/shared/c++/onLoadStartData.hpp +84 -0
- package/nitrogen/generated/shared/c++/onPlaybackStateChangeData.hpp +79 -0
- package/nitrogen/generated/shared/c++/onProgressData.hpp +79 -0
- package/nitrogen/generated/shared/c++/onVolumeChangeData.hpp +79 -0
- package/package.json +155 -0
- package/react-native.config.js +19 -0
- package/src/core/VideoPlayer.ts +326 -0
- package/src/core/VideoPlayerEvents.ts +142 -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 +276 -0
- package/src/core/types/IgnoreSilentSwitchMode.ts +1 -0
- package/src/core/types/MixAudioMode.ts +1 -0
- package/src/core/types/PlayerTrack.ts +39 -0
- package/src/core/types/ResizeMode.ts +9 -0
- package/src/core/types/Utils.ts +1 -0
- package/src/core/types/VideoConfig.ts +165 -0
- package/src/core/types/VideoError.ts +174 -0
- package/src/core/types/VideoInformation.ts +44 -0
- package/src/core/types/VideoOrientation.ts +8 -0
- package/src/core/types/VideoPlayerBase.ts +193 -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 +406 -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 +27 -0
- package/src/spec/fabric/VideoViewNativeComponent.ts +17 -0
- package/src/spec/nitro/VideoPlayer.nitro.ts +38 -0
- package/src/spec/nitro/VideoPlayerEventEmitter.nitro.ts +196 -0
- package/src/spec/nitro/VideoPlayerSource.nitro.ts +18 -0
- package/src/spec/nitro/VideoViewViewManager.nitro.ts +92 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
package androidx.media3.exoplayer.hls
|
|
2
|
+
|
|
3
|
+
import androidx.media3.common.MediaItem
|
|
4
|
+
import androidx.media3.common.util.UnstableApi
|
|
5
|
+
import androidx.media3.datasource.DataSource
|
|
6
|
+
import androidx.media3.exoplayer.drm.DrmSessionManagerProvider
|
|
7
|
+
import androidx.media3.exoplayer.source.MediaSource
|
|
8
|
+
import androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy
|
|
9
|
+
|
|
10
|
+
class HlsMediaSource {
|
|
11
|
+
@UnstableApi
|
|
12
|
+
class Factory(private val mediaDataSourceFactory: DataSource.Factory) : MediaSource.Factory {
|
|
13
|
+
override fun setDrmSessionManagerProvider(drmSessionManagerProvider: DrmSessionManagerProvider): MediaSource.Factory {
|
|
14
|
+
throw UnsupportedOperationException("Not implemented")
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
override fun setLoadErrorHandlingPolicy(loadErrorHandlingPolicy: LoadErrorHandlingPolicy): MediaSource.Factory {
|
|
18
|
+
throw UnsupportedOperationException("Not implemented")
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
override fun getSupportedTypes(): IntArray {
|
|
22
|
+
return intArrayOf()
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
override fun createMediaSource(mediaItem: MediaItem): MediaSource {
|
|
26
|
+
throw UnsupportedOperationException("Not implemented")
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
fun setAllowChunklessPreparation(allowChunklessPreparation: Boolean): Factory {
|
|
30
|
+
return this
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,583 @@
|
|
|
1
|
+
package androidx.media3.exoplayer.text;
|
|
2
|
+
// 1.4.1 TextRenderer https://raw.githubusercontent.com/androidx/media/refs/tags/1.4.1/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/TextRenderer.java
|
|
3
|
+
|
|
4
|
+
import static androidx.media3.common.util.Assertions.checkNotNull;
|
|
5
|
+
import static androidx.media3.common.util.Assertions.checkState;
|
|
6
|
+
import static java.lang.annotation.ElementType.TYPE_USE;
|
|
7
|
+
|
|
8
|
+
import android.os.Handler;
|
|
9
|
+
import android.os.Handler.Callback;
|
|
10
|
+
import android.os.Looper;
|
|
11
|
+
import android.os.Message;
|
|
12
|
+
import androidx.annotation.IntDef;
|
|
13
|
+
import androidx.annotation.Nullable;
|
|
14
|
+
import androidx.media3.common.C;
|
|
15
|
+
import androidx.media3.common.Format;
|
|
16
|
+
import androidx.media3.common.MimeTypes;
|
|
17
|
+
import androidx.media3.common.text.Cue;
|
|
18
|
+
import androidx.media3.common.text.CueGroup;
|
|
19
|
+
import androidx.media3.common.util.Log;
|
|
20
|
+
import androidx.media3.common.util.UnstableApi;
|
|
21
|
+
import androidx.media3.common.util.Util;
|
|
22
|
+
import androidx.media3.decoder.DecoderInputBuffer;
|
|
23
|
+
import androidx.media3.exoplayer.BaseRenderer;
|
|
24
|
+
import androidx.media3.exoplayer.FormatHolder;
|
|
25
|
+
import androidx.media3.exoplayer.Renderer;
|
|
26
|
+
import androidx.media3.exoplayer.RendererCapabilities;
|
|
27
|
+
import androidx.media3.exoplayer.source.MediaSource;
|
|
28
|
+
import androidx.media3.exoplayer.source.SampleStream.ReadDataResult;
|
|
29
|
+
import androidx.media3.extractor.text.CueDecoder;
|
|
30
|
+
import androidx.media3.extractor.text.CuesWithTiming;
|
|
31
|
+
import androidx.media3.extractor.text.SubtitleDecoder;
|
|
32
|
+
import androidx.media3.extractor.text.SubtitleDecoderException;
|
|
33
|
+
import androidx.media3.extractor.text.SubtitleInputBuffer;
|
|
34
|
+
import androidx.media3.extractor.text.SubtitleOutputBuffer;
|
|
35
|
+
import com.google.common.collect.ImmutableList;
|
|
36
|
+
import java.lang.annotation.Documented;
|
|
37
|
+
import java.lang.annotation.Retention;
|
|
38
|
+
import java.lang.annotation.RetentionPolicy;
|
|
39
|
+
import java.lang.annotation.Target;
|
|
40
|
+
import java.nio.ByteBuffer;
|
|
41
|
+
import java.util.Objects;
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* A {@link Renderer} for text.
|
|
46
|
+
*
|
|
47
|
+
* <p>This implementations decodes sample data to {@link Cue} instances. The actual rendering is
|
|
48
|
+
* delegated to a {@link TextOutput}.
|
|
49
|
+
*/
|
|
50
|
+
@UnstableApi
|
|
51
|
+
public class NonFinalTextRenderer extends BaseRenderer implements Callback {
|
|
52
|
+
|
|
53
|
+
private static final String TAG = "NonFinalTextRenderer";
|
|
54
|
+
|
|
55
|
+
@Documented
|
|
56
|
+
@Retention(RetentionPolicy.SOURCE)
|
|
57
|
+
@Target(TYPE_USE)
|
|
58
|
+
@IntDef({
|
|
59
|
+
REPLACEMENT_STATE_NONE,
|
|
60
|
+
REPLACEMENT_STATE_SIGNAL_END_OF_STREAM,
|
|
61
|
+
REPLACEMENT_STATE_WAIT_END_OF_STREAM
|
|
62
|
+
})
|
|
63
|
+
private @interface ReplacementState {}
|
|
64
|
+
|
|
65
|
+
/** The decoder does not need to be replaced. */
|
|
66
|
+
private static final int REPLACEMENT_STATE_NONE = 0;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The decoder needs to be replaced, but we haven't yet signaled an end of stream to the existing
|
|
70
|
+
* decoder. We need to do so in order to ensure that it outputs any remaining buffers before we
|
|
71
|
+
* release it.
|
|
72
|
+
*/
|
|
73
|
+
private static final int REPLACEMENT_STATE_SIGNAL_END_OF_STREAM = 1;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* The decoder needs to be replaced, and we've signaled an end of stream to the existing decoder.
|
|
77
|
+
* We're waiting for the decoder to output an end of stream signal to indicate that it has output
|
|
78
|
+
* any remaining buffers before we release it.
|
|
79
|
+
*/
|
|
80
|
+
private static final int REPLACEMENT_STATE_WAIT_END_OF_STREAM = 2;
|
|
81
|
+
|
|
82
|
+
private static final int MSG_UPDATE_OUTPUT = 1;
|
|
83
|
+
|
|
84
|
+
// Fields used when handling CuesWithTiming objects from application/x-media3-cues samples.
|
|
85
|
+
private final CueDecoder cueDecoder;
|
|
86
|
+
private final DecoderInputBuffer cueDecoderInputBuffer;
|
|
87
|
+
private CuesResolver cuesResolver;
|
|
88
|
+
|
|
89
|
+
// Fields used when handling Subtitle objects from legacy samples.
|
|
90
|
+
private final SubtitleDecoderFactory subtitleDecoderFactory;
|
|
91
|
+
private boolean waitingForKeyFrame;
|
|
92
|
+
private @ReplacementState int decoderReplacementState;
|
|
93
|
+
@Nullable private SubtitleDecoder subtitleDecoder;
|
|
94
|
+
@Nullable private SubtitleInputBuffer nextSubtitleInputBuffer;
|
|
95
|
+
@Nullable private SubtitleOutputBuffer subtitle;
|
|
96
|
+
@Nullable private SubtitleOutputBuffer nextSubtitle;
|
|
97
|
+
private int nextSubtitleEventIndex;
|
|
98
|
+
|
|
99
|
+
// Fields used with both CuesWithTiming and Subtitle objects
|
|
100
|
+
@Nullable private final Handler outputHandler;
|
|
101
|
+
private final TextOutput output;
|
|
102
|
+
private final FormatHolder formatHolder;
|
|
103
|
+
private boolean inputStreamEnded;
|
|
104
|
+
private boolean outputStreamEnded;
|
|
105
|
+
@Nullable private Format streamFormat;
|
|
106
|
+
private long outputStreamOffsetUs;
|
|
107
|
+
private long lastRendererPositionUs;
|
|
108
|
+
private long finalStreamEndPositionUs;
|
|
109
|
+
private boolean legacyDecodingEnabled;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* @param output The output.
|
|
113
|
+
* @param outputLooper The looper associated with the thread on which the output should be called.
|
|
114
|
+
* If the output makes use of standard Android UI components, then this should normally be the
|
|
115
|
+
* looper associated with the application's main thread, which can be obtained using {@link
|
|
116
|
+
* android.app.Activity#getMainLooper()}. Null may be passed if the output should be called
|
|
117
|
+
* directly on the player's internal rendering thread.
|
|
118
|
+
*/
|
|
119
|
+
public NonFinalTextRenderer(TextOutput output, @Nullable Looper outputLooper) {
|
|
120
|
+
this(output, outputLooper, SubtitleDecoderFactory.DEFAULT);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* @param output The output.
|
|
125
|
+
* @param outputLooper The looper associated with the thread on which the output should be called.
|
|
126
|
+
* If the output makes use of standard Android UI components, then this should normally be the
|
|
127
|
+
* looper associated with the application's main thread, which can be obtained using {@link
|
|
128
|
+
* android.app.Activity#getMainLooper()}. Null may be passed if the output should be called
|
|
129
|
+
* directly on the player's internal rendering thread.
|
|
130
|
+
* @param subtitleDecoderFactory A factory from which to obtain {@link SubtitleDecoder} instances.
|
|
131
|
+
*/
|
|
132
|
+
public NonFinalTextRenderer(
|
|
133
|
+
TextOutput output,
|
|
134
|
+
@Nullable Looper outputLooper,
|
|
135
|
+
SubtitleDecoderFactory subtitleDecoderFactory) {
|
|
136
|
+
super(C.TRACK_TYPE_TEXT);
|
|
137
|
+
this.output = checkNotNull(output);
|
|
138
|
+
this.outputHandler =
|
|
139
|
+
outputLooper == null ? null : Util.createHandler(outputLooper, /* callback= */ this);
|
|
140
|
+
this.subtitleDecoderFactory = subtitleDecoderFactory;
|
|
141
|
+
this.cueDecoder = new CueDecoder();
|
|
142
|
+
this.cueDecoderInputBuffer =
|
|
143
|
+
new DecoderInputBuffer(DecoderInputBuffer.BUFFER_REPLACEMENT_MODE_NORMAL);
|
|
144
|
+
formatHolder = new FormatHolder();
|
|
145
|
+
finalStreamEndPositionUs = C.TIME_UNSET;
|
|
146
|
+
outputStreamOffsetUs = C.TIME_UNSET;
|
|
147
|
+
lastRendererPositionUs = C.TIME_UNSET;
|
|
148
|
+
legacyDecodingEnabled = false;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
@Override
|
|
152
|
+
public String getName() {
|
|
153
|
+
return TAG;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
@Override
|
|
157
|
+
public @Capabilities int supportsFormat(Format format) {
|
|
158
|
+
// TODO: b/289983417 - Return UNSUPPORTED for non-media3-cues once we stop supporting them
|
|
159
|
+
// completely. In the meantime, we return SUPPORTED here and then throw later if
|
|
160
|
+
// legacyDecodingEnabled is false (when receiving the first Format or sample). This ensures
|
|
161
|
+
// apps are aware (via the playback failure) they're using a legacy/deprecated code path.
|
|
162
|
+
if (isCuesWithTiming(format) || subtitleDecoderFactory.supportsFormat(format)) {
|
|
163
|
+
return RendererCapabilities.create(
|
|
164
|
+
format.cryptoType == C.CRYPTO_TYPE_NONE ? C.FORMAT_HANDLED : C.FORMAT_UNSUPPORTED_DRM);
|
|
165
|
+
} else if (MimeTypes.isText(format.sampleMimeType)) {
|
|
166
|
+
return RendererCapabilities.create(C.FORMAT_UNSUPPORTED_SUBTYPE);
|
|
167
|
+
} else {
|
|
168
|
+
return RendererCapabilities.create(C.FORMAT_UNSUPPORTED_TYPE);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Sets the position at which to stop rendering the current stream.
|
|
174
|
+
*
|
|
175
|
+
* <p>Must be called after {@link #setCurrentStreamFinal()}.
|
|
176
|
+
*
|
|
177
|
+
* @param streamEndPositionUs The position to stop rendering at or {@link C#LENGTH_UNSET} to
|
|
178
|
+
* render until the end of the current stream.
|
|
179
|
+
*/
|
|
180
|
+
// TODO(internal b/181312195): Remove this when it's no longer needed once subtitles are decoded
|
|
181
|
+
// on the loading side of SampleQueue.
|
|
182
|
+
public void setFinalStreamEndPositionUs(long streamEndPositionUs) {
|
|
183
|
+
checkState(isCurrentStreamFinal());
|
|
184
|
+
this.finalStreamEndPositionUs = streamEndPositionUs;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
@Override
|
|
188
|
+
protected void onStreamChanged(
|
|
189
|
+
Format[] formats,
|
|
190
|
+
long startPositionUs,
|
|
191
|
+
long offsetUs,
|
|
192
|
+
MediaSource.MediaPeriodId mediaPeriodId) {
|
|
193
|
+
outputStreamOffsetUs = offsetUs;
|
|
194
|
+
streamFormat = formats[0];
|
|
195
|
+
if (!isCuesWithTiming(streamFormat)) {
|
|
196
|
+
assertLegacyDecodingEnabledIfRequired();
|
|
197
|
+
if (subtitleDecoder != null) {
|
|
198
|
+
decoderReplacementState = REPLACEMENT_STATE_SIGNAL_END_OF_STREAM;
|
|
199
|
+
} else {
|
|
200
|
+
initSubtitleDecoder();
|
|
201
|
+
}
|
|
202
|
+
} else {
|
|
203
|
+
this.cuesResolver =
|
|
204
|
+
streamFormat.cueReplacementBehavior == Format.CUE_REPLACEMENT_BEHAVIOR_MERGE
|
|
205
|
+
? new MergingCuesResolver()
|
|
206
|
+
: new ReplacingCuesResolver();
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
@Override
|
|
211
|
+
protected void onPositionReset(long positionUs, boolean joining) {
|
|
212
|
+
lastRendererPositionUs = positionUs;
|
|
213
|
+
if (cuesResolver != null) {
|
|
214
|
+
cuesResolver.clear();
|
|
215
|
+
}
|
|
216
|
+
clearOutput();
|
|
217
|
+
inputStreamEnded = false;
|
|
218
|
+
outputStreamEnded = false;
|
|
219
|
+
finalStreamEndPositionUs = C.TIME_UNSET;
|
|
220
|
+
if (streamFormat != null && !isCuesWithTiming(streamFormat)) {
|
|
221
|
+
if (decoderReplacementState != REPLACEMENT_STATE_NONE) {
|
|
222
|
+
replaceSubtitleDecoder();
|
|
223
|
+
} else {
|
|
224
|
+
releaseSubtitleBuffers();
|
|
225
|
+
SubtitleDecoder subtitleDecoder = checkNotNull(this.subtitleDecoder);
|
|
226
|
+
subtitleDecoder.flush();
|
|
227
|
+
subtitleDecoder.setOutputStartTimeUs(getLastResetPositionUs());
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
@Override
|
|
233
|
+
public void render(long positionUs, long elapsedRealtimeUs) {
|
|
234
|
+
if (isCurrentStreamFinal()
|
|
235
|
+
&& finalStreamEndPositionUs != C.TIME_UNSET
|
|
236
|
+
&& positionUs >= finalStreamEndPositionUs) {
|
|
237
|
+
releaseSubtitleBuffers();
|
|
238
|
+
outputStreamEnded = true;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
if (outputStreamEnded) {
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
if (isCuesWithTiming(checkNotNull(streamFormat))) {
|
|
246
|
+
checkNotNull(cuesResolver);
|
|
247
|
+
renderFromCuesWithTiming(positionUs);
|
|
248
|
+
} else {
|
|
249
|
+
assertLegacyDecodingEnabledIfRequired();
|
|
250
|
+
renderFromSubtitles(positionUs);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Sets whether to decode subtitle data during rendering.
|
|
256
|
+
*
|
|
257
|
+
* <p>If this is enabled, then the {@link SubtitleDecoderFactory} passed to the constructor is
|
|
258
|
+
* used to decode subtitle data during rendering.
|
|
259
|
+
*
|
|
260
|
+
* <p>If this is disabled this text renderer can only handle tracks with MIME type {@link
|
|
261
|
+
* MimeTypes#APPLICATION_MEDIA3_CUES} (which have been parsed from their original format during
|
|
262
|
+
* extraction), and will throw an exception if passed data of a different type.
|
|
263
|
+
*
|
|
264
|
+
* <p>This is disabled by default.
|
|
265
|
+
*
|
|
266
|
+
* <p>This method is experimental. It may change behavior, be renamed, or removed in a future
|
|
267
|
+
* release.
|
|
268
|
+
*
|
|
269
|
+
* @deprecated This method (and all support for 'legacy' subtitle decoding during rendering) will
|
|
270
|
+
* be removed in a future release.
|
|
271
|
+
*/
|
|
272
|
+
@Deprecated
|
|
273
|
+
public void experimentalSetLegacyDecodingEnabled(boolean legacyDecodingEnabled) {
|
|
274
|
+
this.legacyDecodingEnabled = legacyDecodingEnabled;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
private void renderFromCuesWithTiming(long positionUs) {
|
|
278
|
+
boolean outputNeedsUpdating = readAndDecodeCuesWithTiming(positionUs);
|
|
279
|
+
|
|
280
|
+
long nextCueChangeTimeUs = cuesResolver.getNextCueChangeTimeUs(lastRendererPositionUs);
|
|
281
|
+
if (nextCueChangeTimeUs == C.TIME_END_OF_SOURCE && inputStreamEnded && !outputNeedsUpdating) {
|
|
282
|
+
outputStreamEnded = true;
|
|
283
|
+
}
|
|
284
|
+
if (nextCueChangeTimeUs != C.TIME_END_OF_SOURCE && nextCueChangeTimeUs <= positionUs) {
|
|
285
|
+
outputNeedsUpdating = true;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
if (outputNeedsUpdating) {
|
|
289
|
+
ImmutableList<Cue> cuesAtTimeUs = cuesResolver.getCuesAtTimeUs(positionUs);
|
|
290
|
+
long previousCueChangeTimeUs = cuesResolver.getPreviousCueChangeTimeUs(positionUs);
|
|
291
|
+
updateOutput(new CueGroup(cuesAtTimeUs, getPresentationTimeUs(previousCueChangeTimeUs)));
|
|
292
|
+
cuesResolver.discardCuesBeforeTimeUs(previousCueChangeTimeUs);
|
|
293
|
+
}
|
|
294
|
+
lastRendererPositionUs = positionUs;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Tries to {@linkplain #readSource(FormatHolder, DecoderInputBuffer, int) read} a buffer, and if
|
|
299
|
+
* one is read decodes it to a {@link CuesWithTiming} and adds it to {@link MergingCuesResolver}.
|
|
300
|
+
*
|
|
301
|
+
* @return true if a {@link CuesWithTiming} was read that changes what should be on screen now.
|
|
302
|
+
*/
|
|
303
|
+
private boolean readAndDecodeCuesWithTiming(long positionUs) {
|
|
304
|
+
if (inputStreamEnded) {
|
|
305
|
+
return false;
|
|
306
|
+
}
|
|
307
|
+
@ReadDataResult
|
|
308
|
+
int readResult = readSource(formatHolder, cueDecoderInputBuffer, /* readFlags= */ 0);
|
|
309
|
+
switch (readResult) {
|
|
310
|
+
case C.RESULT_BUFFER_READ:
|
|
311
|
+
if (cueDecoderInputBuffer.isEndOfStream()) {
|
|
312
|
+
inputStreamEnded = true;
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
cueDecoderInputBuffer.flip();
|
|
316
|
+
ByteBuffer cueData = checkNotNull(cueDecoderInputBuffer.data);
|
|
317
|
+
CuesWithTiming cuesWithTiming =
|
|
318
|
+
cueDecoder.decode(
|
|
319
|
+
cueDecoderInputBuffer.timeUs,
|
|
320
|
+
cueData.array(),
|
|
321
|
+
cueData.arrayOffset(),
|
|
322
|
+
cueData.limit());
|
|
323
|
+
cueDecoderInputBuffer.clear();
|
|
324
|
+
|
|
325
|
+
return cuesResolver.addCues(cuesWithTiming, positionUs);
|
|
326
|
+
case C.RESULT_FORMAT_READ:
|
|
327
|
+
case C.RESULT_NOTHING_READ:
|
|
328
|
+
default:
|
|
329
|
+
return false;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
private void renderFromSubtitles(long positionUs) {
|
|
334
|
+
lastRendererPositionUs = positionUs;
|
|
335
|
+
if (nextSubtitle == null) {
|
|
336
|
+
checkNotNull(subtitleDecoder).setPositionUs(positionUs);
|
|
337
|
+
try {
|
|
338
|
+
nextSubtitle = checkNotNull(subtitleDecoder).dequeueOutputBuffer();
|
|
339
|
+
} catch (SubtitleDecoderException e) {
|
|
340
|
+
handleDecoderError(e);
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
if (getState() != STATE_STARTED) {
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
boolean textRendererNeedsUpdate = false;
|
|
350
|
+
if (subtitle != null) {
|
|
351
|
+
// We're iterating through the events in a subtitle. Set textRendererNeedsUpdate if we
|
|
352
|
+
// advance to the next event.
|
|
353
|
+
long subtitleNextEventTimeUs = getNextEventTime();
|
|
354
|
+
while (subtitleNextEventTimeUs <= positionUs) {
|
|
355
|
+
nextSubtitleEventIndex++;
|
|
356
|
+
subtitleNextEventTimeUs = getNextEventTime();
|
|
357
|
+
textRendererNeedsUpdate = true;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
if (nextSubtitle != null) {
|
|
361
|
+
SubtitleOutputBuffer nextSubtitle = this.nextSubtitle;
|
|
362
|
+
if (nextSubtitle.isEndOfStream()) {
|
|
363
|
+
if (!textRendererNeedsUpdate && getNextEventTime() == Long.MAX_VALUE) {
|
|
364
|
+
if (decoderReplacementState == REPLACEMENT_STATE_WAIT_END_OF_STREAM) {
|
|
365
|
+
replaceSubtitleDecoder();
|
|
366
|
+
} else {
|
|
367
|
+
releaseSubtitleBuffers();
|
|
368
|
+
outputStreamEnded = true;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
} else if (nextSubtitle.timeUs <= positionUs) {
|
|
372
|
+
// Advance to the next subtitle. Sync the next event index and trigger an update.
|
|
373
|
+
if (subtitle != null) {
|
|
374
|
+
subtitle.release();
|
|
375
|
+
}
|
|
376
|
+
nextSubtitleEventIndex = nextSubtitle.getNextEventTimeIndex(positionUs);
|
|
377
|
+
subtitle = nextSubtitle;
|
|
378
|
+
this.nextSubtitle = null;
|
|
379
|
+
textRendererNeedsUpdate = true;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
if (textRendererNeedsUpdate) {
|
|
384
|
+
// If textRendererNeedsUpdate then subtitle must be non-null.
|
|
385
|
+
checkNotNull(subtitle);
|
|
386
|
+
// textRendererNeedsUpdate is set and we're playing. Update the renderer.
|
|
387
|
+
long presentationTimeUs = getPresentationTimeUs(getCurrentEventTimeUs(positionUs));
|
|
388
|
+
CueGroup cueGroup = new CueGroup(subtitle.getCues(positionUs), presentationTimeUs);
|
|
389
|
+
updateOutput(cueGroup);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
if (decoderReplacementState == REPLACEMENT_STATE_WAIT_END_OF_STREAM) {
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
try {
|
|
397
|
+
while (!inputStreamEnded) {
|
|
398
|
+
@Nullable SubtitleInputBuffer nextInputBuffer = this.nextSubtitleInputBuffer;
|
|
399
|
+
if (nextInputBuffer == null) {
|
|
400
|
+
nextInputBuffer = checkNotNull(subtitleDecoder).dequeueInputBuffer();
|
|
401
|
+
if (nextInputBuffer == null) {
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
this.nextSubtitleInputBuffer = nextInputBuffer;
|
|
405
|
+
}
|
|
406
|
+
if (decoderReplacementState == REPLACEMENT_STATE_SIGNAL_END_OF_STREAM) {
|
|
407
|
+
nextInputBuffer.setFlags(C.BUFFER_FLAG_END_OF_STREAM);
|
|
408
|
+
checkNotNull(subtitleDecoder).queueInputBuffer(nextInputBuffer);
|
|
409
|
+
this.nextSubtitleInputBuffer = null;
|
|
410
|
+
decoderReplacementState = REPLACEMENT_STATE_WAIT_END_OF_STREAM;
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
// Try and read the next subtitle from the source.
|
|
414
|
+
@ReadDataResult int result = readSource(formatHolder, nextInputBuffer, /* readFlags= */ 0);
|
|
415
|
+
if (result == C.RESULT_BUFFER_READ) {
|
|
416
|
+
if (nextInputBuffer.isEndOfStream()) {
|
|
417
|
+
inputStreamEnded = true;
|
|
418
|
+
waitingForKeyFrame = false;
|
|
419
|
+
} else {
|
|
420
|
+
@Nullable Format format = formatHolder.format;
|
|
421
|
+
if (format == null) {
|
|
422
|
+
// We haven't received a format yet.
|
|
423
|
+
return;
|
|
424
|
+
}
|
|
425
|
+
nextInputBuffer.subsampleOffsetUs = format.subsampleOffsetUs;
|
|
426
|
+
nextInputBuffer.flip();
|
|
427
|
+
waitingForKeyFrame &= !nextInputBuffer.isKeyFrame();
|
|
428
|
+
}
|
|
429
|
+
if (!waitingForKeyFrame) {
|
|
430
|
+
checkNotNull(subtitleDecoder).queueInputBuffer(nextInputBuffer);
|
|
431
|
+
this.nextSubtitleInputBuffer = null;
|
|
432
|
+
}
|
|
433
|
+
} else if (result == C.RESULT_NOTHING_READ) {
|
|
434
|
+
return;
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
} catch (SubtitleDecoderException e) {
|
|
438
|
+
handleDecoderError(e);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
@Override
|
|
443
|
+
protected void onDisabled() {
|
|
444
|
+
streamFormat = null;
|
|
445
|
+
finalStreamEndPositionUs = C.TIME_UNSET;
|
|
446
|
+
clearOutput();
|
|
447
|
+
outputStreamOffsetUs = C.TIME_UNSET;
|
|
448
|
+
lastRendererPositionUs = C.TIME_UNSET;
|
|
449
|
+
if (subtitleDecoder != null) {
|
|
450
|
+
releaseSubtitleDecoder();
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
@Override
|
|
455
|
+
public boolean isEnded() {
|
|
456
|
+
return outputStreamEnded;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
@Override
|
|
460
|
+
public boolean isReady() {
|
|
461
|
+
// Don't block playback whilst subtitles are loading.
|
|
462
|
+
// Note: To change this behavior, it will be necessary to consider [Internal: b/12949941].
|
|
463
|
+
return true;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
private void releaseSubtitleBuffers() {
|
|
467
|
+
nextSubtitleInputBuffer = null;
|
|
468
|
+
nextSubtitleEventIndex = C.INDEX_UNSET;
|
|
469
|
+
if (subtitle != null) {
|
|
470
|
+
subtitle.release();
|
|
471
|
+
subtitle = null;
|
|
472
|
+
}
|
|
473
|
+
if (nextSubtitle != null) {
|
|
474
|
+
nextSubtitle.release();
|
|
475
|
+
nextSubtitle = null;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
private void releaseSubtitleDecoder() {
|
|
480
|
+
releaseSubtitleBuffers();
|
|
481
|
+
checkNotNull(subtitleDecoder).release();
|
|
482
|
+
subtitleDecoder = null;
|
|
483
|
+
decoderReplacementState = REPLACEMENT_STATE_NONE;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
private void initSubtitleDecoder() {
|
|
487
|
+
waitingForKeyFrame = true;
|
|
488
|
+
subtitleDecoder = subtitleDecoderFactory.createDecoder(checkNotNull(streamFormat));
|
|
489
|
+
subtitleDecoder.setOutputStartTimeUs(getLastResetPositionUs());
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
private void replaceSubtitleDecoder() {
|
|
493
|
+
releaseSubtitleDecoder();
|
|
494
|
+
initSubtitleDecoder();
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
private long getNextEventTime() {
|
|
498
|
+
if (nextSubtitleEventIndex == C.INDEX_UNSET) {
|
|
499
|
+
return Long.MAX_VALUE;
|
|
500
|
+
}
|
|
501
|
+
checkNotNull(subtitle);
|
|
502
|
+
return nextSubtitleEventIndex >= subtitle.getEventTimeCount()
|
|
503
|
+
? Long.MAX_VALUE
|
|
504
|
+
: subtitle.getEventTime(nextSubtitleEventIndex);
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
private void updateOutput(CueGroup cueGroup) {
|
|
508
|
+
if (outputHandler != null) {
|
|
509
|
+
outputHandler.obtainMessage(MSG_UPDATE_OUTPUT, cueGroup).sendToTarget();
|
|
510
|
+
} else {
|
|
511
|
+
invokeUpdateOutputInternal(cueGroup);
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
private void clearOutput() {
|
|
516
|
+
updateOutput(new CueGroup(ImmutableList.of(), getPresentationTimeUs(lastRendererPositionUs)));
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
@Override
|
|
520
|
+
public boolean handleMessage(Message msg) {
|
|
521
|
+
switch (msg.what) {
|
|
522
|
+
case MSG_UPDATE_OUTPUT:
|
|
523
|
+
invokeUpdateOutputInternal((CueGroup) msg.obj);
|
|
524
|
+
return true;
|
|
525
|
+
default:
|
|
526
|
+
throw new IllegalStateException();
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
@SuppressWarnings("deprecation") // We need to call both onCues method for backward compatibility.
|
|
531
|
+
protected void invokeUpdateOutputInternal(CueGroup cueGroup) {
|
|
532
|
+
output.onCues(cueGroup.cues);
|
|
533
|
+
output.onCues(cueGroup);
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
/**
|
|
537
|
+
* Called when {@link #subtitleDecoder} throws an exception, so it can be logged and playback can
|
|
538
|
+
* continue.
|
|
539
|
+
*
|
|
540
|
+
* <p>Logs {@code e} and resets state to allow decoding the next sample.
|
|
541
|
+
*/
|
|
542
|
+
private void handleDecoderError(SubtitleDecoderException e) {
|
|
543
|
+
Log.e(TAG, "Subtitle decoding failed. streamFormat=" + streamFormat, e);
|
|
544
|
+
clearOutput();
|
|
545
|
+
replaceSubtitleDecoder();
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
private long getCurrentEventTimeUs(long positionUs) {
|
|
549
|
+
int nextEventTimeIndex = subtitle.getNextEventTimeIndex(positionUs);
|
|
550
|
+
if (nextEventTimeIndex == 0 || subtitle.getEventTimeCount() == 0) {
|
|
551
|
+
return subtitle.timeUs;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
return nextEventTimeIndex == C.INDEX_UNSET
|
|
555
|
+
? subtitle.getEventTime(subtitle.getEventTimeCount() - 1)
|
|
556
|
+
: subtitle.getEventTime(nextEventTimeIndex - 1);
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
private long getPresentationTimeUs(long positionUs) {
|
|
560
|
+
checkState(positionUs != C.TIME_UNSET);
|
|
561
|
+
checkState(outputStreamOffsetUs != C.TIME_UNSET);
|
|
562
|
+
|
|
563
|
+
return positionUs - outputStreamOffsetUs;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
private void assertLegacyDecodingEnabledIfRequired() {
|
|
567
|
+
checkState(
|
|
568
|
+
legacyDecodingEnabled
|
|
569
|
+
|| Objects.equals(streamFormat.sampleMimeType, MimeTypes.APPLICATION_CEA608)
|
|
570
|
+
|| Objects.equals(streamFormat.sampleMimeType, MimeTypes.APPLICATION_MP4CEA608)
|
|
571
|
+
|| Objects.equals(streamFormat.sampleMimeType, MimeTypes.APPLICATION_CEA708),
|
|
572
|
+
"Legacy decoding is disabled, can't handle "
|
|
573
|
+
+ streamFormat.sampleMimeType
|
|
574
|
+
+ " samples (expected "
|
|
575
|
+
+ MimeTypes.APPLICATION_MEDIA3_CUES
|
|
576
|
+
+ ").");
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
/** Returns whether {@link Format#sampleMimeType} is {@link MimeTypes#APPLICATION_MEDIA3_CUES}. */
|
|
580
|
+
private static boolean isCuesWithTiming(Format format) {
|
|
581
|
+
return Objects.equals(format.sampleMimeType, MimeTypes.APPLICATION_MEDIA3_CUES);
|
|
582
|
+
}
|
|
583
|
+
}
|
package/app.plugin.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./lib/commonjs/expo-plugins/withReactNativeVideo');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#import <React/RCTViewManager.h>
|