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.
Files changed (492) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +474 -0
  3. package/UnifiedPlayer.podspec +51 -0
  4. package/android/CMakeLists.txt +29 -0
  5. package/android/build.gradle +249 -0
  6. package/android/fix-prefab.gradle +51 -0
  7. package/android/gradle.properties +15 -0
  8. package/android/src/main/AndroidManifest.xml +10 -0
  9. package/android/src/main/AndroidManifestNew.xml +9 -0
  10. package/android/src/main/cpp/cpp-adapter.cpp +9 -0
  11. package/android/src/main/java/com/unifiedplayer/core/AudioFocusManager.kt +233 -0
  12. package/android/src/main/java/com/unifiedplayer/core/VideoError.kt +105 -0
  13. package/android/src/main/java/com/unifiedplayer/core/VideoManager.kt +292 -0
  14. package/android/src/main/java/com/unifiedplayer/core/extensions/ResizeMode+AspectRatioFrameLayout.kt +20 -0
  15. package/android/src/main/java/com/unifiedplayer/core/extensions/SubtitleType+toString.kt +14 -0
  16. package/android/src/main/java/com/unifiedplayer/core/extensions/VideoPlaybackService+ServiceManagment.kt +59 -0
  17. package/android/src/main/java/com/unifiedplayer/core/fragments/FullscreenVideoFragment.kt +346 -0
  18. package/android/src/main/java/com/unifiedplayer/core/fragments/PictureInPictureHelperFragment.kt +85 -0
  19. package/android/src/main/java/com/unifiedplayer/core/player/DRMManagerSpec.kt +23 -0
  20. package/android/src/main/java/com/unifiedplayer/core/player/DataSourceFactoryUtils.kt +93 -0
  21. package/android/src/main/java/com/unifiedplayer/core/player/MediaItemUtils.kt +141 -0
  22. package/android/src/main/java/com/unifiedplayer/core/player/MediaSourceUtils.kt +134 -0
  23. package/android/src/main/java/com/unifiedplayer/core/player/OnAudioFocusChangedListener.kt +25 -0
  24. package/android/src/main/java/com/unifiedplayer/core/plugins/PluginsRegistry.kt +223 -0
  25. package/android/src/main/java/com/unifiedplayer/core/plugins/ReactNativeVideoPlugin.kt +173 -0
  26. package/android/src/main/java/com/unifiedplayer/core/recivers/AudioBecomingNoisyReceiver.kt +38 -0
  27. package/android/src/main/java/com/unifiedplayer/core/services/playback/CustomMediaNotificationProvider.kt +151 -0
  28. package/android/src/main/java/com/unifiedplayer/core/services/playback/VideoPlaybackCallback.kt +96 -0
  29. package/android/src/main/java/com/unifiedplayer/core/services/playback/VideoPlaybackService.kt +219 -0
  30. package/android/src/main/java/com/unifiedplayer/core/services/playback/VideoPlaybackServiceConnection.kt +59 -0
  31. package/android/src/main/java/com/unifiedplayer/core/utils/PictureInPictureUtils.kt +153 -0
  32. package/android/src/main/java/com/unifiedplayer/core/utils/SmallVideoPlayerOptimizer.kt +157 -0
  33. package/android/src/main/java/com/unifiedplayer/core/utils/SourceLoader.kt +48 -0
  34. package/android/src/main/java/com/unifiedplayer/core/utils/TextTrackUtils.kt +175 -0
  35. package/android/src/main/java/com/unifiedplayer/core/utils/Threading.kt +75 -0
  36. package/android/src/main/java/com/unifiedplayer/core/utils/VideoFileHelper.kt +51 -0
  37. package/android/src/main/java/com/unifiedplayer/core/utils/VideoInformationUtils.kt +67 -0
  38. package/android/src/main/java/com/unifiedplayer/core/utils/VideoOrientationUtils.kt +30 -0
  39. package/android/src/main/java/com/unifiedplayer/hybrids/videoplayer/HybridVideoPlayer.kt +732 -0
  40. package/android/src/main/java/com/unifiedplayer/hybrids/videoplayer/HybridVideoPlayerFactory.kt +16 -0
  41. package/android/src/main/java/com/unifiedplayer/hybrids/videoplayereventemitter/HybridVideoPlayerEventEmitter.kt +180 -0
  42. package/android/src/main/java/com/unifiedplayer/hybrids/videoplayersource/HybridVideoPlayerSource.kt +67 -0
  43. package/android/src/main/java/com/unifiedplayer/hybrids/videoplayersource/HybridVideoPlayerSourceFactory.kt +58 -0
  44. package/android/src/main/java/com/unifiedplayer/hybrids/videoviewviewmanager/HybridVideoViewViewManager.kt +187 -0
  45. package/android/src/main/java/com/unifiedplayer/hybrids/videoviewviewmanager/HybridVideoViewViewManagerFactory.kt +13 -0
  46. package/android/src/main/java/com/unifiedplayer/react/VideoPackage.kt +25 -0
  47. package/android/src/main/java/com/unifiedplayer/react/VideoViewViewManager.kt +78 -0
  48. package/android/src/main/java/com/unifiedplayer/view/VideoView.kt +565 -0
  49. package/android/src/main/res/layout/custom_player_control_view.xml +82 -0
  50. package/android/src/main/res/layout/player_view_surface.xml +13 -0
  51. package/android/src/main/res/layout/player_view_texture.xml +13 -0
  52. package/android/src/paper/java/com/facebook/react/viewmanagers/RNCVideoViewManagerDelegate.java +32 -0
  53. package/android/src/paper/java/com/facebook/react/viewmanagers/RNCVideoViewManagerInterface.java +16 -0
  54. package/android/src/stubs/dash/androidx/media3/exoplayer/dash/DashMediaSource.kt +35 -0
  55. package/android/src/stubs/dash/androidx/media3/exoplayer/dash/DashUtil.kt +11 -0
  56. package/android/src/stubs/dash/androidx/media3/exoplayer/dash/manifest/AdaptationSet.kt +9 -0
  57. package/android/src/stubs/dash/androidx/media3/exoplayer/dash/manifest/DashManifest.kt +10 -0
  58. package/android/src/stubs/dash/androidx/media3/exoplayer/dash/manifest/Period.kt +7 -0
  59. package/android/src/stubs/dash/androidx/media3/exoplayer/dash/manifest/Representation.kt +8 -0
  60. package/android/src/stubs/hls/androidx/media3/exoplayer/hls/HlsMediaSource.kt +33 -0
  61. package/ios/RNCVideoViewManager.mm +39 -0
  62. package/ios/Video-Bridging-Header.h +2 -0
  63. package/ios/core/HLSAuthProxy.swift +428 -0
  64. package/ios/core/VideoError.swift +164 -0
  65. package/ios/core/VideoManager.swift +219 -0
  66. package/ios/hybrids/VideoPlayer/HybridVideoPlayer.swift +697 -0
  67. package/ios/hybrids/VideoPlayer/HybridVideoPlayerFactory.swift +15 -0
  68. package/ios/hybrids/VideoPlayer/VLCPlaybackDelegates.swift +58 -0
  69. package/ios/hybrids/VideoPlayerEmitter/HybridVideoPlayerEventEmitter.swift +203 -0
  70. package/ios/hybrids/VideoPlayerSource/HybridVideoPlayerSource.swift +55 -0
  71. package/ios/hybrids/VideoPlayerSource/HybridVideoPlayerSourceFactory.swift +29 -0
  72. package/ios/hybrids/VideoViewViewManager/HybridVideoViewViewManager.swift +266 -0
  73. package/ios/hybrids/VideoViewViewManager/HybridVideoViewViewManagerFactory.swift +14 -0
  74. package/ios/view/VideoComponentView.swift +196 -0
  75. package/ios/view/VideoComponentViewObserver.swift +48 -0
  76. package/lib/module/core/VideoPlayer.js +287 -0
  77. package/lib/module/core/VideoPlayer.js.map +1 -0
  78. package/lib/module/core/VideoPlayerEvents.js +84 -0
  79. package/lib/module/core/VideoPlayerEvents.js.map +1 -0
  80. package/lib/module/core/hooks/useEvent.js +19 -0
  81. package/lib/module/core/hooks/useEvent.js.map +1 -0
  82. package/lib/module/core/hooks/useManagedInstance.js +75 -0
  83. package/lib/module/core/hooks/useManagedInstance.js.map +1 -0
  84. package/lib/module/core/hooks/useVideoPlayer.js +57 -0
  85. package/lib/module/core/hooks/useVideoPlayer.js.map +1 -0
  86. package/lib/module/core/types/BufferConfig.js +2 -0
  87. package/lib/module/core/types/BufferConfig.js.map +1 -0
  88. package/lib/module/core/types/DrmParams.js +2 -0
  89. package/lib/module/core/types/DrmParams.js.map +1 -0
  90. package/lib/module/core/types/Events.js +10 -0
  91. package/lib/module/core/types/Events.js.map +1 -0
  92. package/lib/module/core/types/IgnoreSilentSwitchMode.js +2 -0
  93. package/lib/module/core/types/IgnoreSilentSwitchMode.js.map +1 -0
  94. package/lib/module/core/types/MixAudioMode.js +2 -0
  95. package/lib/module/core/types/MixAudioMode.js.map +1 -0
  96. package/lib/module/core/types/ResizeMode.js +2 -0
  97. package/lib/module/core/types/ResizeMode.js.map +1 -0
  98. package/lib/module/core/types/TextTrack.js +2 -0
  99. package/lib/module/core/types/TextTrack.js.map +1 -0
  100. package/lib/module/core/types/Utils.js +2 -0
  101. package/lib/module/core/types/Utils.js.map +1 -0
  102. package/lib/module/core/types/VideoConfig.js +4 -0
  103. package/lib/module/core/types/VideoConfig.js.map +1 -0
  104. package/lib/module/core/types/VideoError.js +100 -0
  105. package/lib/module/core/types/VideoError.js.map +1 -0
  106. package/lib/module/core/types/VideoInformation.js +4 -0
  107. package/lib/module/core/types/VideoInformation.js.map +1 -0
  108. package/lib/module/core/types/VideoOrientation.js +2 -0
  109. package/lib/module/core/types/VideoOrientation.js.map +1 -0
  110. package/lib/module/core/types/VideoPlayerBase.js +4 -0
  111. package/lib/module/core/types/VideoPlayerBase.js.map +1 -0
  112. package/lib/module/core/types/VideoPlayerSourceBase.js +4 -0
  113. package/lib/module/core/types/VideoPlayerSourceBase.js.map +1 -0
  114. package/lib/module/core/types/VideoPlayerStatus.js +2 -0
  115. package/lib/module/core/types/VideoPlayerStatus.js.map +1 -0
  116. package/lib/module/core/utils/playerFactory.js +25 -0
  117. package/lib/module/core/utils/playerFactory.js.map +1 -0
  118. package/lib/module/core/utils/sourceFactory.js +138 -0
  119. package/lib/module/core/utils/sourceFactory.js.map +1 -0
  120. package/lib/module/core/video-view/NativeVideoView.tsx +18 -0
  121. package/lib/module/core/video-view/VideoView.js +261 -0
  122. package/lib/module/core/video-view/VideoView.js.map +1 -0
  123. package/lib/module/expo-plugins/@types.js +2 -0
  124. package/lib/module/expo-plugins/@types.js.map +1 -0
  125. package/lib/module/expo-plugins/getPackageInfo.js +23 -0
  126. package/lib/module/expo-plugins/getPackageInfo.js.map +1 -0
  127. package/lib/module/expo-plugins/withAndroidExtensions.js +35 -0
  128. package/lib/module/expo-plugins/withAndroidExtensions.js.map +1 -0
  129. package/lib/module/expo-plugins/withAndroidNotificationControls.js +29 -0
  130. package/lib/module/expo-plugins/withAndroidNotificationControls.js.map +1 -0
  131. package/lib/module/expo-plugins/withAndroidPictureInPicture.js +18 -0
  132. package/lib/module/expo-plugins/withAndroidPictureInPicture.js.map +1 -0
  133. package/lib/module/expo-plugins/withBackgroundAudio.js +22 -0
  134. package/lib/module/expo-plugins/withBackgroundAudio.js.map +1 -0
  135. package/lib/module/expo-plugins/withReactNativeVideo.js +27 -0
  136. package/lib/module/expo-plugins/withReactNativeVideo.js.map +1 -0
  137. package/lib/module/expo-plugins/writeToPodfile.js +53 -0
  138. package/lib/module/expo-plugins/writeToPodfile.js.map +1 -0
  139. package/lib/module/index.js +8 -0
  140. package/lib/module/index.js.map +1 -0
  141. package/lib/module/package.json +1 -0
  142. package/lib/module/spec/fabric/VideoViewNativeComponent.ts +17 -0
  143. package/lib/module/spec/nitro/VideoPlayer.nitro.js +4 -0
  144. package/lib/module/spec/nitro/VideoPlayer.nitro.js.map +1 -0
  145. package/lib/module/spec/nitro/VideoPlayerEventEmitter.nitro.js +4 -0
  146. package/lib/module/spec/nitro/VideoPlayerEventEmitter.nitro.js.map +1 -0
  147. package/lib/module/spec/nitro/VideoPlayerSource.nitro.js +4 -0
  148. package/lib/module/spec/nitro/VideoPlayerSource.nitro.js.map +1 -0
  149. package/lib/module/spec/nitro/VideoViewViewManager.nitro.js +4 -0
  150. package/lib/module/spec/nitro/VideoViewViewManager.nitro.js.map +1 -0
  151. package/lib/typescript/drm-plugin/src/PluginManager.nitro.d.ts +10 -0
  152. package/lib/typescript/drm-plugin/src/PluginManager.nitro.d.ts.map +1 -0
  153. package/lib/typescript/drm-plugin/src/index.d.ts +4 -0
  154. package/lib/typescript/drm-plugin/src/index.d.ts.map +1 -0
  155. package/lib/typescript/package.json +1 -0
  156. package/lib/typescript/src/core/VideoPlayer.d.ts +88 -0
  157. package/lib/typescript/src/core/VideoPlayer.d.ts.map +1 -0
  158. package/lib/typescript/src/core/VideoPlayerEvents.d.ts +22 -0
  159. package/lib/typescript/src/core/VideoPlayerEvents.d.ts.map +1 -0
  160. package/lib/typescript/src/core/hooks/useEvent.d.ts +11 -0
  161. package/lib/typescript/src/core/hooks/useEvent.d.ts.map +1 -0
  162. package/lib/typescript/src/core/hooks/useManagedInstance.d.ts +19 -0
  163. package/lib/typescript/src/core/hooks/useManagedInstance.d.ts.map +1 -0
  164. package/lib/typescript/src/core/hooks/useVideoPlayer.d.ts +16 -0
  165. package/lib/typescript/src/core/hooks/useVideoPlayer.d.ts.map +1 -0
  166. package/lib/typescript/src/core/types/BufferConfig.d.ts +97 -0
  167. package/lib/typescript/src/core/types/BufferConfig.d.ts.map +1 -0
  168. package/lib/typescript/src/core/types/DrmParams.d.ts +64 -0
  169. package/lib/typescript/src/core/types/DrmParams.d.ts.map +1 -0
  170. package/lib/typescript/src/core/types/Events.d.ts +224 -0
  171. package/lib/typescript/src/core/types/Events.d.ts.map +1 -0
  172. package/lib/typescript/src/core/types/IgnoreSilentSwitchMode.d.ts +2 -0
  173. package/lib/typescript/src/core/types/IgnoreSilentSwitchMode.d.ts.map +1 -0
  174. package/lib/typescript/src/core/types/MixAudioMode.d.ts +2 -0
  175. package/lib/typescript/src/core/types/MixAudioMode.d.ts.map +1 -0
  176. package/lib/typescript/src/core/types/ResizeMode.d.ts +10 -0
  177. package/lib/typescript/src/core/types/ResizeMode.d.ts.map +1 -0
  178. package/lib/typescript/src/core/types/TextTrack.d.ts +20 -0
  179. package/lib/typescript/src/core/types/TextTrack.d.ts.map +1 -0
  180. package/lib/typescript/src/core/types/Utils.d.ts +2 -0
  181. package/lib/typescript/src/core/types/Utils.d.ts.map +1 -0
  182. package/lib/typescript/src/core/types/VideoConfig.d.ts +138 -0
  183. package/lib/typescript/src/core/types/VideoConfig.d.ts.map +1 -0
  184. package/lib/typescript/src/core/types/VideoError.d.ts +31 -0
  185. package/lib/typescript/src/core/types/VideoError.d.ts.map +1 -0
  186. package/lib/typescript/src/core/types/VideoInformation.d.ts +38 -0
  187. package/lib/typescript/src/core/types/VideoInformation.d.ts.map +1 -0
  188. package/lib/typescript/src/core/types/VideoOrientation.d.ts +2 -0
  189. package/lib/typescript/src/core/types/VideoOrientation.d.ts.map +1 -0
  190. package/lib/typescript/src/core/types/VideoPlayerBase.d.ts +155 -0
  191. package/lib/typescript/src/core/types/VideoPlayerBase.d.ts.map +1 -0
  192. package/lib/typescript/src/core/types/VideoPlayerSourceBase.d.ts +17 -0
  193. package/lib/typescript/src/core/types/VideoPlayerSourceBase.d.ts.map +1 -0
  194. package/lib/typescript/src/core/types/VideoPlayerStatus.d.ts +9 -0
  195. package/lib/typescript/src/core/types/VideoPlayerStatus.d.ts.map +1 -0
  196. package/lib/typescript/src/core/utils/playerFactory.d.ts +12 -0
  197. package/lib/typescript/src/core/utils/playerFactory.d.ts.map +1 -0
  198. package/lib/typescript/src/core/utils/sourceFactory.d.ts +29 -0
  199. package/lib/typescript/src/core/utils/sourceFactory.d.ts.map +1 -0
  200. package/lib/typescript/src/core/video-view/NativeVideoView.d.ts +2 -0
  201. package/lib/typescript/src/core/video-view/NativeVideoView.d.ts.map +1 -0
  202. package/lib/typescript/src/core/video-view/VideoView.d.ts +104 -0
  203. package/lib/typescript/src/core/video-view/VideoView.d.ts.map +1 -0
  204. package/lib/typescript/src/index.d.ts +13 -0
  205. package/lib/typescript/src/index.d.ts.map +1 -0
  206. package/lib/typescript/src/spec/fabric/VideoViewNativeComponent.d.ts +13 -0
  207. package/lib/typescript/src/spec/fabric/VideoViewNativeComponent.d.ts.map +1 -0
  208. package/lib/typescript/src/spec/nitro/VideoPlayer.nitro.d.ts +55 -0
  209. package/lib/typescript/src/spec/nitro/VideoPlayer.nitro.d.ts.map +1 -0
  210. package/lib/typescript/src/spec/nitro/VideoPlayerEventEmitter.nitro.d.ts +150 -0
  211. package/lib/typescript/src/spec/nitro/VideoPlayerEventEmitter.nitro.d.ts.map +1 -0
  212. package/lib/typescript/src/spec/nitro/VideoPlayerSource.nitro.d.ts +21 -0
  213. package/lib/typescript/src/spec/nitro/VideoPlayerSource.nitro.d.ts.map +1 -0
  214. package/lib/typescript/src/spec/nitro/VideoViewViewManager.nitro.d.ts +75 -0
  215. package/lib/typescript/src/spec/nitro/VideoViewViewManager.nitro.d.ts.map +1 -0
  216. package/nitro.json +47 -0
  217. package/nitrogen/generated/android/UnifiedPlayer+autolinking.cmake +95 -0
  218. package/nitrogen/generated/android/UnifiedPlayer+autolinking.gradle +27 -0
  219. package/nitrogen/generated/android/UnifiedPlayerOnLoad.cpp +122 -0
  220. package/nitrogen/generated/android/UnifiedPlayerOnLoad.hpp +34 -0
  221. package/nitrogen/generated/android/c++/JBandwidthData.hpp +65 -0
  222. package/nitrogen/generated/android/c++/JBufferConfig.hpp +101 -0
  223. package/nitrogen/generated/android/c++/JCustomVideoMetadata.hpp +74 -0
  224. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__string_____OnGetLicensePayload.hpp +126 -0
  225. package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
  226. package/nitrogen/generated/android/c++/JFunc_void_BandwidthData.hpp +78 -0
  227. package/nitrogen/generated/android/c++/JFunc_void_TimedMetadata.hpp +81 -0
  228. package/nitrogen/generated/android/c++/JFunc_void_VideoPlayerStatus.hpp +77 -0
  229. package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +75 -0
  230. package/nitrogen/generated/android/c++/JFunc_void_double.hpp +75 -0
  231. package/nitrogen/generated/android/c++/JFunc_void_onLoadData.hpp +79 -0
  232. package/nitrogen/generated/android/c++/JFunc_void_onLoadStartData.hpp +82 -0
  233. package/nitrogen/generated/android/c++/JFunc_void_onPlaybackStateChangeData.hpp +77 -0
  234. package/nitrogen/generated/android/c++/JFunc_void_onProgressData.hpp +77 -0
  235. package/nitrogen/generated/android/c++/JFunc_void_onVolumeChangeData.hpp +77 -0
  236. package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__TextTrack__.hpp +83 -0
  237. package/nitrogen/generated/android/c++/JFunc_void_std__vector_std__string_.hpp +95 -0
  238. package/nitrogen/generated/android/c++/JHybridVideoPlayerEventEmitterSpec.cpp +224 -0
  239. package/nitrogen/generated/android/c++/JHybridVideoPlayerEventEmitterSpec.hpp +82 -0
  240. package/nitrogen/generated/android/c++/JHybridVideoPlayerFactorySpec.cpp +60 -0
  241. package/nitrogen/generated/android/c++/JHybridVideoPlayerFactorySpec.hpp +63 -0
  242. package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceFactorySpec.cpp +106 -0
  243. package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceFactorySpec.hpp +64 -0
  244. package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceSpec.cpp +124 -0
  245. package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceSpec.hpp +64 -0
  246. package/nitrogen/generated/android/c++/JHybridVideoPlayerSpec.cpp +300 -0
  247. package/nitrogen/generated/android/c++/JHybridVideoPlayerSpec.hpp +98 -0
  248. package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerFactorySpec.cpp +56 -0
  249. package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerFactorySpec.hpp +63 -0
  250. package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerSpec.cpp +185 -0
  251. package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerSpec.hpp +87 -0
  252. package/nitrogen/generated/android/c++/JIgnoreSilentSwitchMode.hpp +61 -0
  253. package/nitrogen/generated/android/c++/JListenerSubscription.hpp +67 -0
  254. package/nitrogen/generated/android/c++/JLivePlaybackParams.hpp +73 -0
  255. package/nitrogen/generated/android/c++/JMixAudioMode.hpp +64 -0
  256. package/nitrogen/generated/android/c++/JNativeDrmParams.hpp +111 -0
  257. package/nitrogen/generated/android/c++/JNativeExternalSubtitle.hpp +71 -0
  258. package/nitrogen/generated/android/c++/JNativeVideoConfig.hpp +136 -0
  259. package/nitrogen/generated/android/c++/JOnGetLicensePayload.hpp +69 -0
  260. package/nitrogen/generated/android/c++/JResizeMode.hpp +64 -0
  261. package/nitrogen/generated/android/c++/JResolution.hpp +61 -0
  262. package/nitrogen/generated/android/c++/JSourceType.hpp +58 -0
  263. package/nitrogen/generated/android/c++/JSubtitleType.hpp +67 -0
  264. package/nitrogen/generated/android/c++/JSurfaceType.hpp +58 -0
  265. package/nitrogen/generated/android/c++/JTextTrack.hpp +70 -0
  266. package/nitrogen/generated/android/c++/JTimedMetadata.hpp +78 -0
  267. package/nitrogen/generated/android/c++/JTimedMetadataObject.hpp +61 -0
  268. package/nitrogen/generated/android/c++/JVariant_NullType_HybridVideoPlayerSourceSpec.cpp +26 -0
  269. package/nitrogen/generated/android/c++/JVariant_NullType_HybridVideoPlayerSourceSpec.hpp +72 -0
  270. package/nitrogen/generated/android/c++/JVariant_NullType_TextTrack.cpp +26 -0
  271. package/nitrogen/generated/android/c++/JVariant_NullType_TextTrack.hpp +73 -0
  272. package/nitrogen/generated/android/c++/JVideoInformation.hpp +86 -0
  273. package/nitrogen/generated/android/c++/JVideoOrientation.hpp +73 -0
  274. package/nitrogen/generated/android/c++/JVideoPlayerStatus.hpp +64 -0
  275. package/nitrogen/generated/android/c++/JonLoadData.hpp +74 -0
  276. package/nitrogen/generated/android/c++/JonLoadStartData.hpp +65 -0
  277. package/nitrogen/generated/android/c++/JonPlaybackStateChangeData.hpp +61 -0
  278. package/nitrogen/generated/android/c++/JonProgressData.hpp +65 -0
  279. package/nitrogen/generated/android/c++/JonVolumeChangeData.hpp +61 -0
  280. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/BandwidthData.kt +61 -0
  281. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/BufferConfig.kt +101 -0
  282. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/CustomVideoMetadata.kt +71 -0
  283. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__string_____OnGetLicensePayload.kt +80 -0
  284. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void.kt +80 -0
  285. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_BandwidthData.kt +80 -0
  286. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_TimedMetadata.kt +80 -0
  287. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_VideoPlayerStatus.kt +80 -0
  288. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_bool.kt +80 -0
  289. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_double.kt +80 -0
  290. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onLoadData.kt +80 -0
  291. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onLoadStartData.kt +80 -0
  292. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onPlaybackStateChangeData.kt +80 -0
  293. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onProgressData.kt +80 -0
  294. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onVolumeChangeData.kt +80 -0
  295. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_std__optional_std__variant_nitro__NullType__TextTrack__.kt +80 -0
  296. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_std__vector_std__string_.kt +80 -0
  297. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerEventEmitterSpec.kt +226 -0
  298. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerFactorySpec.kt +54 -0
  299. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerSourceFactorySpec.kt +58 -0
  300. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerSourceSpec.kt +61 -0
  301. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerSpec.kt +178 -0
  302. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoViewViewManagerFactorySpec.kt +54 -0
  303. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoViewViewManagerSpec.kt +168 -0
  304. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/IgnoreSilentSwitchMode.kt +24 -0
  305. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/ListenerSubscription.kt +55 -0
  306. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/LivePlaybackParams.kt +71 -0
  307. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/MixAudioMode.kt +25 -0
  308. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/NativeDrmParams.kt +85 -0
  309. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/NativeExternalSubtitle.kt +66 -0
  310. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/NativeVideoConfig.kt +81 -0
  311. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/OnGetLicensePayload.kt +66 -0
  312. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/ResizeMode.kt +25 -0
  313. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Resolution.kt +56 -0
  314. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/SourceType.kt +23 -0
  315. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/SubtitleType.kt +26 -0
  316. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/SurfaceType.kt +23 -0
  317. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/TextTrack.kt +66 -0
  318. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/TimedMetadata.kt +51 -0
  319. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/TimedMetadataObject.kt +56 -0
  320. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/UnifiedPlayerOnLoad.kt +35 -0
  321. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Variant_NullType_HybridVideoPlayerSourceSpec.kt +62 -0
  322. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Variant_NullType_TextTrack.kt +62 -0
  323. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/VideoInformation.kt +86 -0
  324. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/VideoOrientation.kt +28 -0
  325. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/VideoPlayerStatus.kt +25 -0
  326. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onLoadData.kt +71 -0
  327. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onLoadStartData.kt +56 -0
  328. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onPlaybackStateChangeData.kt +56 -0
  329. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onProgressData.kt +61 -0
  330. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onVolumeChangeData.kt +56 -0
  331. package/nitrogen/generated/ios/UnifiedPlayer+autolinking.rb +62 -0
  332. package/nitrogen/generated/ios/UnifiedPlayer-Swift-Cxx-Bridge.cpp +280 -0
  333. package/nitrogen/generated/ios/UnifiedPlayer-Swift-Cxx-Bridge.hpp +1106 -0
  334. package/nitrogen/generated/ios/UnifiedPlayer-Swift-Cxx-Umbrella.hpp +162 -0
  335. package/nitrogen/generated/ios/UnifiedPlayerAutolinking.mm +49 -0
  336. package/nitrogen/generated/ios/UnifiedPlayerAutolinking.swift +50 -0
  337. package/nitrogen/generated/ios/c++/HybridVideoPlayerEventEmitterSpecSwift.cpp +11 -0
  338. package/nitrogen/generated/ios/c++/HybridVideoPlayerEventEmitterSpecSwift.hpp +279 -0
  339. package/nitrogen/generated/ios/c++/HybridVideoPlayerFactorySpecSwift.cpp +11 -0
  340. package/nitrogen/generated/ios/c++/HybridVideoPlayerFactorySpecSwift.hpp +87 -0
  341. package/nitrogen/generated/ios/c++/HybridVideoPlayerSourceFactorySpecSwift.cpp +11 -0
  342. package/nitrogen/generated/ios/c++/HybridVideoPlayerSourceFactorySpecSwift.hpp +125 -0
  343. package/nitrogen/generated/ios/c++/HybridVideoPlayerSourceSpecSwift.cpp +11 -0
  344. package/nitrogen/generated/ios/c++/HybridVideoPlayerSourceSpecSwift.hpp +125 -0
  345. package/nitrogen/generated/ios/c++/HybridVideoPlayerSpecSwift.cpp +11 -0
  346. package/nitrogen/generated/ios/c++/HybridVideoPlayerSpecSwift.hpp +256 -0
  347. package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerFactorySpecSwift.cpp +11 -0
  348. package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerFactorySpecSwift.hpp +84 -0
  349. package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerSpecSwift.cpp +11 -0
  350. package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerSpecSwift.hpp +217 -0
  351. package/nitrogen/generated/ios/swift/BandwidthData.swift +65 -0
  352. package/nitrogen/generated/ios/swift/BufferConfig.swift +201 -0
  353. package/nitrogen/generated/ios/swift/CustomVideoMetadata.swift +114 -0
  354. package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__string_____OnGetLicensePayload.swift +61 -0
  355. package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
  356. package/nitrogen/generated/ios/swift/Func_void_BandwidthData.swift +46 -0
  357. package/nitrogen/generated/ios/swift/Func_void_TimedMetadata.swift +46 -0
  358. package/nitrogen/generated/ios/swift/Func_void_VideoInformation.swift +46 -0
  359. package/nitrogen/generated/ios/swift/Func_void_VideoPlayerStatus.swift +46 -0
  360. package/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
  361. package/nitrogen/generated/ios/swift/Func_void_double.swift +46 -0
  362. package/nitrogen/generated/ios/swift/Func_void_onLoadData.swift +46 -0
  363. package/nitrogen/generated/ios/swift/Func_void_onLoadStartData.swift +46 -0
  364. package/nitrogen/generated/ios/swift/Func_void_onPlaybackStateChangeData.swift +46 -0
  365. package/nitrogen/generated/ios/swift/Func_void_onProgressData.swift +46 -0
  366. package/nitrogen/generated/ios/swift/Func_void_onVolumeChangeData.swift +46 -0
  367. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  368. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__variant_nitro__NullType__TextTrack__.swift +65 -0
  369. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_std__string__.swift +66 -0
  370. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +46 -0
  371. package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +46 -0
  372. package/nitrogen/generated/ios/swift/HybridVideoPlayerEventEmitterSpec.swift +74 -0
  373. package/nitrogen/generated/ios/swift/HybridVideoPlayerEventEmitterSpec_cxx.swift +479 -0
  374. package/nitrogen/generated/ios/swift/HybridVideoPlayerFactorySpec.swift +55 -0
  375. package/nitrogen/generated/ios/swift/HybridVideoPlayerFactorySpec_cxx.swift +145 -0
  376. package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceFactorySpec.swift +56 -0
  377. package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceFactorySpec_cxx.swift +156 -0
  378. package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceSpec.swift +56 -0
  379. package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceSpec_cxx.swift +157 -0
  380. package/nitrogen/generated/ios/swift/HybridVideoPlayerSpec.swift +80 -0
  381. package/nitrogen/generated/ios/swift/HybridVideoPlayerSpec_cxx.swift +490 -0
  382. package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerFactorySpec.swift +55 -0
  383. package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerFactorySpec_cxx.swift +141 -0
  384. package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerSpec.swift +72 -0
  385. package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerSpec_cxx.swift +390 -0
  386. package/nitrogen/generated/ios/swift/IgnoreSilentSwitchMode.swift +44 -0
  387. package/nitrogen/generated/ios/swift/ListenerSubscription.swift +37 -0
  388. package/nitrogen/generated/ios/swift/LivePlaybackParams.swift +114 -0
  389. package/nitrogen/generated/ios/swift/MixAudioMode.swift +48 -0
  390. package/nitrogen/generated/ios/swift/NativeDrmParams.swift +193 -0
  391. package/nitrogen/generated/ios/swift/NativeExternalSubtitle.swift +44 -0
  392. package/nitrogen/generated/ios/swift/NativeVideoConfig.swift +136 -0
  393. package/nitrogen/generated/ios/swift/OnGetLicensePayload.swift +44 -0
  394. package/nitrogen/generated/ios/swift/ResizeMode.swift +48 -0
  395. package/nitrogen/generated/ios/swift/Resolution.swift +34 -0
  396. package/nitrogen/generated/ios/swift/SourceType.swift +40 -0
  397. package/nitrogen/generated/ios/swift/SubtitleType.swift +52 -0
  398. package/nitrogen/generated/ios/swift/SurfaceType.swift +40 -0
  399. package/nitrogen/generated/ios/swift/TextTrack.swift +57 -0
  400. package/nitrogen/generated/ios/swift/TimedMetadata.swift +35 -0
  401. package/nitrogen/generated/ios/swift/TimedMetadataObject.swift +34 -0
  402. package/nitrogen/generated/ios/swift/Variant_NullType_TextTrack.swift +30 -0
  403. package/nitrogen/generated/ios/swift/Variant_NullType__any_HybridVideoPlayerSourceSpec_.swift +30 -0
  404. package/nitrogen/generated/ios/swift/VideoInformation.swift +64 -0
  405. package/nitrogen/generated/ios/swift/VideoOrientation.swift +60 -0
  406. package/nitrogen/generated/ios/swift/VideoPlayerStatus.swift +48 -0
  407. package/nitrogen/generated/ios/swift/onLoadData.swift +49 -0
  408. package/nitrogen/generated/ios/swift/onLoadStartData.swift +41 -0
  409. package/nitrogen/generated/ios/swift/onPlaybackStateChangeData.swift +34 -0
  410. package/nitrogen/generated/ios/swift/onProgressData.swift +39 -0
  411. package/nitrogen/generated/ios/swift/onVolumeChangeData.swift +34 -0
  412. package/nitrogen/generated/shared/c++/BandwidthData.hpp +91 -0
  413. package/nitrogen/generated/shared/c++/BufferConfig.hpp +128 -0
  414. package/nitrogen/generated/shared/c++/CustomVideoMetadata.hpp +100 -0
  415. package/nitrogen/generated/shared/c++/HybridVideoPlayerEventEmitterSpec.cpp +40 -0
  416. package/nitrogen/generated/shared/c++/HybridVideoPlayerEventEmitterSpec.hpp +115 -0
  417. package/nitrogen/generated/shared/c++/HybridVideoPlayerFactorySpec.cpp +21 -0
  418. package/nitrogen/generated/shared/c++/HybridVideoPlayerFactorySpec.hpp +67 -0
  419. package/nitrogen/generated/shared/c++/HybridVideoPlayerSourceFactorySpec.cpp +22 -0
  420. package/nitrogen/generated/shared/c++/HybridVideoPlayerSourceFactorySpec.hpp +69 -0
  421. package/nitrogen/generated/shared/c++/HybridVideoPlayerSourceSpec.cpp +23 -0
  422. package/nitrogen/generated/shared/c++/HybridVideoPlayerSourceSpec.hpp +69 -0
  423. package/nitrogen/generated/shared/c++/HybridVideoPlayerSpec.cpp +57 -0
  424. package/nitrogen/generated/shared/c++/HybridVideoPlayerSpec.hpp +120 -0
  425. package/nitrogen/generated/shared/c++/HybridVideoViewViewManagerFactorySpec.cpp +21 -0
  426. package/nitrogen/generated/shared/c++/HybridVideoViewViewManagerFactorySpec.hpp +64 -0
  427. package/nitrogen/generated/shared/c++/HybridVideoViewViewManagerSpec.cpp +46 -0
  428. package/nitrogen/generated/shared/c++/HybridVideoViewViewManagerSpec.hpp +99 -0
  429. package/nitrogen/generated/shared/c++/IgnoreSilentSwitchMode.hpp +80 -0
  430. package/nitrogen/generated/shared/c++/ListenerSubscription.hpp +83 -0
  431. package/nitrogen/generated/shared/c++/LivePlaybackParams.hpp +99 -0
  432. package/nitrogen/generated/shared/c++/MixAudioMode.hpp +84 -0
  433. package/nitrogen/generated/shared/c++/NativeDrmParams.hpp +113 -0
  434. package/nitrogen/generated/shared/c++/NativeExternalSubtitle.hpp +97 -0
  435. package/nitrogen/generated/shared/c++/NativeVideoConfig.hpp +121 -0
  436. package/nitrogen/generated/shared/c++/OnGetLicensePayload.hpp +95 -0
  437. package/nitrogen/generated/shared/c++/ResizeMode.hpp +84 -0
  438. package/nitrogen/generated/shared/c++/Resolution.hpp +87 -0
  439. package/nitrogen/generated/shared/c++/SourceType.hpp +76 -0
  440. package/nitrogen/generated/shared/c++/SubtitleType.hpp +88 -0
  441. package/nitrogen/generated/shared/c++/SurfaceType.hpp +76 -0
  442. package/nitrogen/generated/shared/c++/TextTrack.hpp +96 -0
  443. package/nitrogen/generated/shared/c++/TimedMetadata.hpp +85 -0
  444. package/nitrogen/generated/shared/c++/TimedMetadataObject.hpp +87 -0
  445. package/nitrogen/generated/shared/c++/VideoInformation.hpp +112 -0
  446. package/nitrogen/generated/shared/c++/VideoOrientation.hpp +96 -0
  447. package/nitrogen/generated/shared/c++/VideoPlayerStatus.hpp +84 -0
  448. package/nitrogen/generated/shared/c++/onLoadData.hpp +100 -0
  449. package/nitrogen/generated/shared/c++/onLoadStartData.hpp +92 -0
  450. package/nitrogen/generated/shared/c++/onPlaybackStateChangeData.hpp +87 -0
  451. package/nitrogen/generated/shared/c++/onProgressData.hpp +91 -0
  452. package/nitrogen/generated/shared/c++/onVolumeChangeData.hpp +87 -0
  453. package/package.json +180 -0
  454. package/react-native.config.js +10 -0
  455. package/src/core/VideoPlayer.ts +357 -0
  456. package/src/core/VideoPlayerEvents.ts +146 -0
  457. package/src/core/hooks/useEvent.ts +24 -0
  458. package/src/core/hooks/useManagedInstance.ts +96 -0
  459. package/src/core/hooks/useVideoPlayer.ts +73 -0
  460. package/src/core/types/BufferConfig.ts +103 -0
  461. package/src/core/types/DrmParams.ts +65 -0
  462. package/src/core/types/Events.ts +283 -0
  463. package/src/core/types/IgnoreSilentSwitchMode.ts +1 -0
  464. package/src/core/types/MixAudioMode.ts +1 -0
  465. package/src/core/types/ResizeMode.ts +9 -0
  466. package/src/core/types/TextTrack.ts +22 -0
  467. package/src/core/types/Utils.ts +1 -0
  468. package/src/core/types/VideoConfig.ts +150 -0
  469. package/src/core/types/VideoError.ts +174 -0
  470. package/src/core/types/VideoInformation.ts +45 -0
  471. package/src/core/types/VideoOrientation.ts +8 -0
  472. package/src/core/types/VideoPlayerBase.ts +181 -0
  473. package/src/core/types/VideoPlayerSourceBase.ts +19 -0
  474. package/src/core/types/VideoPlayerStatus.ts +8 -0
  475. package/src/core/utils/playerFactory.ts +33 -0
  476. package/src/core/utils/sourceFactory.ts +171 -0
  477. package/src/core/video-view/NativeVideoView.tsx +18 -0
  478. package/src/core/video-view/VideoView.tsx +492 -0
  479. package/src/expo-plugins/@types.ts +37 -0
  480. package/src/expo-plugins/getPackageInfo.ts +23 -0
  481. package/src/expo-plugins/withAndroidExtensions.ts +46 -0
  482. package/src/expo-plugins/withAndroidNotificationControls.ts +43 -0
  483. package/src/expo-plugins/withAndroidPictureInPicture.ts +31 -0
  484. package/src/expo-plugins/withBackgroundAudio.ts +26 -0
  485. package/src/expo-plugins/withReactNativeVideo.ts +32 -0
  486. package/src/expo-plugins/writeToPodfile.ts +74 -0
  487. package/src/index.tsx +29 -0
  488. package/src/spec/fabric/VideoViewNativeComponent.ts +17 -0
  489. package/src/spec/nitro/VideoPlayer.nitro.ts +62 -0
  490. package/src/spec/nitro/VideoPlayerEventEmitter.nitro.ts +207 -0
  491. package/src/spec/nitro/VideoPlayerSource.nitro.ts +18 -0
  492. package/src/spec/nitro/VideoViewViewManager.nitro.ts +92 -0
@@ -0,0 +1,32 @@
1
+ /**
2
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
+ *
4
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
5
+ * once the code is regenerated.
6
+ *
7
+ * @generated by codegen project: GeneratePropsJavaDelegate.js
8
+ */
9
+
10
+ package com.facebook.react.viewmanagers;
11
+
12
+ import android.view.View;
13
+ import androidx.annotation.Nullable;
14
+ import com.facebook.react.uimanager.BaseViewManager;
15
+ import com.facebook.react.uimanager.BaseViewManagerDelegate;
16
+ import com.facebook.react.uimanager.LayoutShadowNode;
17
+
18
+ public class RNCVideoViewManagerDelegate<T extends View, U extends BaseViewManager<T, ? extends LayoutShadowNode> & RNCVideoViewManagerInterface<T>> extends BaseViewManagerDelegate<T, U> {
19
+ public RNCVideoViewManagerDelegate(U viewManager) {
20
+ super(viewManager);
21
+ }
22
+ @Override
23
+ public void setProperty(T view, String propName, @Nullable Object value) {
24
+ switch (propName) {
25
+ case "nitroId":
26
+ mViewManager.setNitroId(view, value == null ? 0 : ((Double) value).intValue());
27
+ break;
28
+ default:
29
+ super.setProperty(view, propName, value);
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
+ *
4
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
5
+ * once the code is regenerated.
6
+ *
7
+ * @generated by codegen project: GeneratePropsJavaInterface.js
8
+ */
9
+
10
+ package com.facebook.react.viewmanagers;
11
+
12
+ import android.view.View;
13
+
14
+ public interface RNCVideoViewManagerInterface<T extends View> {
15
+ void setNitroId(T view, int value);
16
+ }
@@ -0,0 +1,35 @@
1
+ package androidx.media3.exoplayer.dash;
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 DashMediaSource {
11
+
12
+ @UnstableApi
13
+ class Factory(
14
+ factory: DataSource.Factory,
15
+ ) : MediaSource.Factory {
16
+ // NOOP
17
+
18
+ override fun setDrmSessionManagerProvider(drmSessionManagerProvider: DrmSessionManagerProvider): MediaSource.Factory {
19
+ throw UnsupportedOperationException("STUB")
20
+ }
21
+
22
+ override fun setLoadErrorHandlingPolicy(loadErrorHandlingPolicy: LoadErrorHandlingPolicy): MediaSource.Factory {
23
+ throw UnsupportedOperationException("STUB")
24
+ }
25
+
26
+ override fun getSupportedTypes(): IntArray {
27
+ return intArrayOf()
28
+ }
29
+
30
+ override fun createMediaSource(mediaItem: MediaItem): MediaSource {
31
+ throw UnsupportedOperationException("STUB")
32
+ }
33
+ }
34
+ }
35
+
@@ -0,0 +1,11 @@
1
+ package androidx.media3.exoplayer.dash
2
+
3
+ import android.net.Uri
4
+ import androidx.media3.datasource.DataSource
5
+ import androidx.media3.exoplayer.dash.manifest.DashManifest
6
+
7
+ object DashUtil {
8
+ fun loadManifest(ds: DataSource?, uri: Uri?): DashManifest? {
9
+ return null
10
+ }
11
+ }
@@ -0,0 +1,9 @@
1
+ package androidx.media3.exoplayer.dash.manifest
2
+
3
+ import androidx.collection.CircularArray
4
+
5
+ class AdaptationSet {
6
+ var type: Int = 0
7
+ var representations: CircularArray<Representation?>? =
8
+ null
9
+ }
@@ -0,0 +1,10 @@
1
+ package androidx.media3.exoplayer.dash.manifest
2
+
3
+ class DashManifest {
4
+ val periodCount: Int
5
+ get() = 0
6
+
7
+ fun getPeriod(index: Int): Period? {
8
+ return null
9
+ }
10
+ }
@@ -0,0 +1,7 @@
1
+ package androidx.media3.exoplayer.dash.manifest
2
+
3
+ import androidx.collection.CircularArray
4
+
5
+ class Period {
6
+ var adaptationSets: CircularArray<AdaptationSet?>? = null
7
+ }
@@ -0,0 +1,8 @@
1
+ package androidx.media3.exoplayer.dash.manifest
2
+
3
+ import androidx.media3.common.Format
4
+
5
+ class Representation {
6
+ var format: Format? = null
7
+ var presentationTimeOffsetUs: Long = 0
8
+ }
@@ -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,39 @@
1
+ //
2
+ // RNCVideoViewManager.mm
3
+ // UnifiedPlayer
4
+ //
5
+
6
+ #import <React/RCTViewManager.h>
7
+ #import <React/RCTUIManager.h>
8
+
9
+ // Declare the VideoComponentView interface for property access
10
+ // We don't import the Swift header to avoid pulling in Nitro C++ bridge code
11
+ @interface VideoComponentView : UIView
12
+ @property (nonatomic, strong) NSNumber *nitroId;
13
+ @property (nonatomic, copy) void (^onNitroIdChange)(NSDictionary *body);
14
+ @end
15
+
16
+ @interface RNCVideoViewManager : RCTViewManager
17
+ @end
18
+
19
+ @implementation RNCVideoViewManager
20
+
21
+ RCT_EXPORT_MODULE(RNCVideoView)
22
+
23
+ - (UIView *)view
24
+ {
25
+ Class videoViewClass = NSClassFromString(@"UnifiedPlayer.VideoComponentView");
26
+ if (videoViewClass) {
27
+ NSLog(@"[UnifiedPlayer] Found VideoComponentView class, creating view");
28
+ UIView *view = [[videoViewClass alloc] init];
29
+ NSLog(@"[UnifiedPlayer] Created VideoComponentView: %@", view);
30
+ return view;
31
+ }
32
+ NSLog(@"[UnifiedPlayer] ERROR: VideoComponentView class not found!");
33
+ return [[UIView alloc] init];
34
+ }
35
+
36
+ RCT_EXPORT_VIEW_PROPERTY(nitroId, NSNumber)
37
+ RCT_EXPORT_VIEW_PROPERTY(onNitroIdChange, RCTDirectEventBlock)
38
+
39
+ @end
@@ -0,0 +1,2 @@
1
+ // Video-Bridging-Header.h
2
+ // This file is intentionally empty - all React imports are handled in .mm files
@@ -0,0 +1,428 @@
1
+ //
2
+ // HLSAuthProxy.swift
3
+ // UnifiedPlayer
4
+ //
5
+ // Local 127.0.0.1 HTTP/1.1 proxy used to inject an Authorization header
6
+ // into HLS manifest + segment requests. MobileVLCKit ships with libvlc
7
+ // 3.x, whose HTTP access module does not honour `--http-header(s)`, so
8
+ // custom auth headers passed through `media.addOption(":http-header=…")`
9
+ // are silently dropped. We point VLC at this proxy instead, and forward
10
+ // every request to the real origin with the bearer token attached.
11
+ //
12
+ // One proxy instance is bound 1:1 to a HybridVideoPlayer; lifecycle is
13
+ // driven by attachMedia / replaceSourceAsync / release.
14
+ //
15
+
16
+ import Foundation
17
+ import Network
18
+
19
+ final class HLSAuthProxy {
20
+
21
+ private let queue = DispatchQueue(label: "unified-player.hls-auth-proxy")
22
+ private var listener: NWListener?
23
+ private var session: URLSession
24
+ private var connectionsLock = NSLock()
25
+ private var connections: Set<ObjectIdentifier> = []
26
+ private var connectionRefs: [ObjectIdentifier: NWConnection] = [:]
27
+
28
+ /// Cached origin parts. Re-resolved on every request to keep this struct
29
+ /// stateless w.r.t. URL parsing.
30
+ private let originScheme: String
31
+ private let originHost: String
32
+ private let originPort: Int?
33
+
34
+ /// Bearer token (token only — we prepend "Bearer " on forward).
35
+ private let bearerToken: String?
36
+
37
+ /// Listening port — only valid after `start()` returns successfully.
38
+ private(set) var port: UInt16 = 0
39
+
40
+ init(originURL: URL, bearerToken: String?) {
41
+ self.originScheme = originURL.scheme ?? "https"
42
+ self.originHost = originURL.host ?? ""
43
+ self.originPort = originURL.port
44
+ self.bearerToken = bearerToken
45
+
46
+ let cfg = URLSessionConfiguration.ephemeral
47
+ cfg.timeoutIntervalForRequest = 30
48
+ cfg.timeoutIntervalForResource = 600
49
+ cfg.httpShouldUsePipelining = true
50
+ cfg.waitsForConnectivity = false
51
+ self.session = URLSession(configuration: cfg)
52
+ }
53
+
54
+ deinit {
55
+ stop()
56
+ }
57
+
58
+ /// Start the listener and block (briefly) until it's ready, so callers
59
+ /// can read `port` synchronously and hand the localhost URL to VLC.
60
+ func start(timeout: TimeInterval = 2.0) throws {
61
+ let parameters = NWParameters.tcp
62
+ parameters.requiredInterfaceType = .loopback
63
+ let listener = try NWListener(using: parameters, on: .any)
64
+
65
+ let semaphore = DispatchSemaphore(value: 0)
66
+ var startError: Error?
67
+ listener.stateUpdateHandler = { [weak listener] state in
68
+ switch state {
69
+ case .ready:
70
+ semaphore.signal()
71
+ case .failed(let err):
72
+ startError = err
73
+ semaphore.signal()
74
+ case .cancelled:
75
+ break
76
+ default:
77
+ break
78
+ }
79
+ _ = listener
80
+ }
81
+ listener.newConnectionHandler = { [weak self] conn in
82
+ self?.handleNewConnection(conn)
83
+ }
84
+ listener.start(queue: queue)
85
+
86
+ if semaphore.wait(timeout: .now() + timeout) == .timedOut {
87
+ listener.cancel()
88
+ throw NSError(
89
+ domain: "HLSAuthProxy",
90
+ code: -1,
91
+ userInfo: [NSLocalizedDescriptionKey: "listener start timed out"]
92
+ )
93
+ }
94
+ if let e = startError {
95
+ listener.cancel()
96
+ throw e
97
+ }
98
+ guard let bound = listener.port?.rawValue else {
99
+ listener.cancel()
100
+ throw NSError(
101
+ domain: "HLSAuthProxy",
102
+ code: -2,
103
+ userInfo: [NSLocalizedDescriptionKey: "no bound port"]
104
+ )
105
+ }
106
+ self.listener = listener
107
+ self.port = bound
108
+ }
109
+
110
+ func stop() {
111
+ listener?.cancel()
112
+ listener = nil
113
+
114
+ connectionsLock.lock()
115
+ let refs = connectionRefs.values
116
+ connectionRefs.removeAll()
117
+ connections.removeAll()
118
+ connectionsLock.unlock()
119
+ for c in refs { c.cancel() }
120
+
121
+ session.invalidateAndCancel()
122
+ }
123
+
124
+ // MARK: - Connection handling
125
+
126
+ private func track(_ conn: NWConnection) {
127
+ let id = ObjectIdentifier(conn)
128
+ connectionsLock.lock()
129
+ connections.insert(id)
130
+ connectionRefs[id] = conn
131
+ connectionsLock.unlock()
132
+ }
133
+
134
+ private func untrack(_ conn: NWConnection) {
135
+ let id = ObjectIdentifier(conn)
136
+ connectionsLock.lock()
137
+ connections.remove(id)
138
+ connectionRefs.removeValue(forKey: id)
139
+ connectionsLock.unlock()
140
+ }
141
+
142
+ private func handleNewConnection(_ conn: NWConnection) {
143
+ track(conn)
144
+ conn.stateUpdateHandler = { [weak self, weak conn] state in
145
+ guard let self, let conn else { return }
146
+ switch state {
147
+ case .failed, .cancelled:
148
+ self.untrack(conn)
149
+ default:
150
+ break
151
+ }
152
+ }
153
+ conn.start(queue: queue)
154
+ receiveRequest(conn, accumulated: Data())
155
+ }
156
+
157
+ /// Read until we have a full set of HTTP request headers (terminated by
158
+ /// CRLF CRLF). For HLS we only ever forward GET/HEAD, so we do not need
159
+ /// to handle request bodies.
160
+ private func receiveRequest(_ conn: NWConnection, accumulated: Data) {
161
+ conn.receive(minimumIncompleteLength: 1, maximumLength: 16 * 1024) {
162
+ [weak self] data, _, isComplete, error in
163
+ guard let self else { conn.cancel(); return }
164
+ if error != nil {
165
+ conn.cancel()
166
+ return
167
+ }
168
+ var buf = accumulated
169
+ if let data = data, !data.isEmpty { buf.append(data) }
170
+
171
+ let terminator = Data([0x0D, 0x0A, 0x0D, 0x0A])
172
+ if let range = buf.range(of: terminator) {
173
+ let headBytes = buf.subdata(in: 0..<range.lowerBound)
174
+ self.processRequest(conn, headBytes: headBytes)
175
+ return
176
+ }
177
+
178
+ if isComplete || buf.count > 64 * 1024 {
179
+ self.write502(conn, message: "malformed request")
180
+ return
181
+ }
182
+ self.receiveRequest(conn, accumulated: buf)
183
+ }
184
+ }
185
+
186
+ private func processRequest(_ conn: NWConnection, headBytes: Data) {
187
+ guard let headStr = String(data: headBytes, encoding: .utf8) else {
188
+ write502(conn, message: "invalid utf8 in request line")
189
+ return
190
+ }
191
+ let lines = headStr.components(separatedBy: "\r\n")
192
+ guard let requestLine = lines.first else {
193
+ write502(conn, message: "no request line")
194
+ return
195
+ }
196
+ let parts = requestLine.split(separator: " ", maxSplits: 2, omittingEmptySubsequences: true)
197
+ guard parts.count >= 2 else {
198
+ write502(conn, message: "bad request line")
199
+ return
200
+ }
201
+ let method = String(parts[0]).uppercased()
202
+ let pathAndQuery = String(parts[1])
203
+
204
+ var clientHeaders: [String: String] = [:]
205
+ for raw in lines.dropFirst() {
206
+ if raw.isEmpty { continue }
207
+ guard let colon = raw.firstIndex(of: ":") else { continue }
208
+ let k = String(raw[..<colon]).trimmingCharacters(in: .whitespaces)
209
+ let v = String(raw[raw.index(after: colon)...]).trimmingCharacters(in: .whitespaces)
210
+ clientHeaders[k.lowercased()] = v
211
+ }
212
+
213
+ var components = URLComponents()
214
+ components.scheme = originScheme
215
+ components.host = originHost
216
+ if let p = originPort { components.port = p }
217
+ if let q = pathAndQuery.firstIndex(of: "?") {
218
+ components.percentEncodedPath = String(pathAndQuery[..<q])
219
+ components.percentEncodedQuery = String(pathAndQuery[pathAndQuery.index(after: q)...])
220
+ } else {
221
+ components.percentEncodedPath = pathAndQuery
222
+ }
223
+
224
+ guard let upstreamURL = components.url else {
225
+ write502(conn, message: "bad upstream url")
226
+ return
227
+ }
228
+
229
+ var req = URLRequest(url: upstreamURL)
230
+ req.httpMethod = method
231
+ if let token = bearerToken, !token.isEmpty {
232
+ req.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
233
+ }
234
+ // Forward only the request headers that affect upstream caching/range.
235
+ if let range = clientHeaders["range"] {
236
+ req.setValue(range, forHTTPHeaderField: "Range")
237
+ }
238
+ if let inm = clientHeaders["if-none-match"] {
239
+ req.setValue(inm, forHTTPHeaderField: "If-None-Match")
240
+ }
241
+ if let ims = clientHeaders["if-modified-since"] {
242
+ req.setValue(ims, forHTTPHeaderField: "If-Modified-Since")
243
+ }
244
+ if let ua = clientHeaders["user-agent"] {
245
+ req.setValue(ua, forHTTPHeaderField: "User-Agent")
246
+ }
247
+ req.setValue("identity", forHTTPHeaderField: "Accept-Encoding")
248
+
249
+ let pump = StreamingPump(connection: conn, request: req, ownerQueue: queue) { [weak self] in
250
+ self?.untrack(conn)
251
+ }
252
+ pump.start()
253
+ }
254
+
255
+ private func write502(_ conn: NWConnection, message: String) {
256
+ let body = "Bad Gateway: \(message)"
257
+ let head =
258
+ "HTTP/1.1 502 Bad Gateway\r\n"
259
+ + "Content-Type: text/plain; charset=utf-8\r\n"
260
+ + "Content-Length: \(body.utf8.count)\r\n"
261
+ + "Connection: close\r\n\r\n"
262
+ + body
263
+ conn.send(
264
+ content: head.data(using: .utf8),
265
+ contentContext: .finalMessage,
266
+ isComplete: true,
267
+ completion: .contentProcessed { [weak self] _ in
268
+ self?.untrack(conn)
269
+ conn.cancel()
270
+ }
271
+ )
272
+ }
273
+ }
274
+
275
+ // MARK: - Streaming pump
276
+
277
+ /// Owns a single upstream URLSessionDataTask and writes the response head
278
+ /// + body chunks into the local NWConnection. We give each request its
279
+ /// own ephemeral session/delegate so cancellation is straightforward and
280
+ /// there are no shared-delegate races.
281
+ private final class StreamingPump: NSObject, URLSessionDataDelegate {
282
+ private let connection: NWConnection
283
+ private let request: URLRequest
284
+ private let ownerQueue: DispatchQueue
285
+ private let onFinished: () -> Void
286
+
287
+ private var session: URLSession?
288
+ private var task: URLSessionDataTask?
289
+ private var sentHead = false
290
+ private var finished = false
291
+
292
+ init(
293
+ connection: NWConnection,
294
+ request: URLRequest,
295
+ ownerQueue: DispatchQueue,
296
+ onFinished: @escaping () -> Void
297
+ ) {
298
+ self.connection = connection
299
+ self.request = request
300
+ self.ownerQueue = ownerQueue
301
+ self.onFinished = onFinished
302
+ }
303
+
304
+ func start() {
305
+ let cfg = URLSessionConfiguration.ephemeral
306
+ cfg.timeoutIntervalForRequest = 30
307
+ cfg.timeoutIntervalForResource = 600
308
+ cfg.httpShouldUsePipelining = true
309
+ let s = URLSession(configuration: cfg, delegate: self, delegateQueue: nil)
310
+ self.session = s
311
+ let t = s.dataTask(with: request)
312
+ self.task = t
313
+ t.resume()
314
+ }
315
+
316
+ // MARK: URLSessionDataDelegate
317
+
318
+ func urlSession(
319
+ _ session: URLSession,
320
+ dataTask: URLSessionDataTask,
321
+ didReceive response: URLResponse,
322
+ completionHandler: @escaping (URLSession.ResponseDisposition) -> Void
323
+ ) {
324
+ guard let http = response as? HTTPURLResponse else {
325
+ writeError(status: 502, message: "non-http upstream response")
326
+ completionHandler(.cancel)
327
+ return
328
+ }
329
+ var head =
330
+ "HTTP/1.1 \(http.statusCode) "
331
+ + HTTPURLResponse.localizedString(forStatusCode: http.statusCode)
332
+ + "\r\n"
333
+ for (rawKey, rawValue) in http.allHeaderFields {
334
+ let k = "\(rawKey)"
335
+ let lower = k.lowercased()
336
+ // Strip hop-by-hop headers and content-encoding (we requested identity).
337
+ if [
338
+ "transfer-encoding", "connection", "keep-alive", "upgrade",
339
+ "proxy-authenticate", "proxy-authorization", "te", "trailers",
340
+ "content-encoding",
341
+ ].contains(lower) {
342
+ continue
343
+ }
344
+ head += "\(k): \(rawValue)\r\n"
345
+ }
346
+ head += "Connection: close\r\n\r\n"
347
+ sentHead = true
348
+ connection.send(
349
+ content: head.data(using: .utf8),
350
+ completion: .contentProcessed { [weak self] err in
351
+ if err != nil { self?.cancelAll() }
352
+ }
353
+ )
354
+ completionHandler(.allow)
355
+ }
356
+
357
+ func urlSession(
358
+ _ session: URLSession,
359
+ dataTask: URLSessionDataTask,
360
+ didReceive data: Data
361
+ ) {
362
+ connection.send(
363
+ content: data,
364
+ completion: .contentProcessed { [weak self] err in
365
+ if err != nil { self?.cancelAll() }
366
+ }
367
+ )
368
+ }
369
+
370
+ func urlSession(
371
+ _ session: URLSession,
372
+ task: URLSessionTask,
373
+ didCompleteWithError error: Error?
374
+ ) {
375
+ if let _ = error, !sentHead {
376
+ writeError(status: 502, message: "upstream error")
377
+ return
378
+ }
379
+ finalizeAndClose()
380
+ }
381
+
382
+ // MARK: - Helpers
383
+
384
+ private func writeError(status: Int, message: String) {
385
+ guard !finished else { return }
386
+ finished = true
387
+ if sentHead {
388
+ // Headers already gone — best we can do is hang up.
389
+ cancelAll()
390
+ return
391
+ }
392
+ let body = message
393
+ let head =
394
+ "HTTP/1.1 \(status) \(HTTPURLResponse.localizedString(forStatusCode: status))\r\n"
395
+ + "Content-Type: text/plain; charset=utf-8\r\n"
396
+ + "Content-Length: \(body.utf8.count)\r\n"
397
+ + "Connection: close\r\n\r\n"
398
+ + body
399
+ connection.send(
400
+ content: head.data(using: .utf8),
401
+ contentContext: .finalMessage,
402
+ isComplete: true,
403
+ completion: .contentProcessed { [weak self] _ in
404
+ self?.cancelAll()
405
+ }
406
+ )
407
+ }
408
+
409
+ private func finalizeAndClose() {
410
+ guard !finished else { return }
411
+ finished = true
412
+ connection.send(
413
+ content: nil,
414
+ contentContext: .finalMessage,
415
+ isComplete: true,
416
+ completion: .contentProcessed { [weak self] _ in
417
+ self?.cancelAll()
418
+ }
419
+ )
420
+ }
421
+
422
+ private func cancelAll() {
423
+ task?.cancel()
424
+ session?.invalidateAndCancel()
425
+ connection.cancel()
426
+ onFinished()
427
+ }
428
+ }