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,16 @@
1
+ package com.margelo.nitro.unifiedplayer
2
+
3
+ import androidx.annotation.OptIn
4
+ import androidx.media3.common.util.UnstableApi
5
+ import com.facebook.proguard.annotations.DoNotStrip
6
+
7
+ @DoNotStrip
8
+ class HybridVideoPlayerFactory(): HybridVideoPlayerFactorySpec() {
9
+ @OptIn(UnstableApi::class)
10
+ override fun createPlayer(source: HybridVideoPlayerSourceSpec): HybridVideoPlayerSpec {
11
+ return HybridVideoPlayer(source as HybridVideoPlayerSource)
12
+ }
13
+
14
+ override val memorySize: Long
15
+ get() = 0
16
+ }
@@ -0,0 +1,180 @@
1
+ package com.margelo.nitro.unifiedplayer
2
+
3
+ import android.util.Log
4
+ import com.margelo.nitro.core.NullType
5
+ import java.util.UUID
6
+
7
+ data class ListenerPair(val id: UUID, val eventName: String, val callback: Any)
8
+
9
+ class HybridVideoPlayerEventEmitter : HybridVideoPlayerEventEmitterSpec() {
10
+ private val lock = Any()
11
+
12
+ var listeners: MutableList<ListenerPair> = mutableListOf()
13
+
14
+ // MARK: - Private helpers
15
+ private fun <T : Any> addListener(eventName: String, listener: T): ListenerSubscription {
16
+ val id = UUID.randomUUID()
17
+ synchronized(lock) {
18
+ listeners.add(ListenerPair(id, eventName, listener))
19
+ }
20
+ return ListenerSubscription {
21
+ synchronized(lock) {
22
+ listeners.removeAll { it.id == id }
23
+ }
24
+ }
25
+ }
26
+
27
+ private inline fun <reified T> emitEvent(eventName: String, invokeCallback: (T) -> Unit) {
28
+ val snapshot: List<ListenerPair> = synchronized(lock) {
29
+ listeners.filter { it.eventName == eventName }.toList()
30
+ }
31
+
32
+ snapshot.forEach { pair ->
33
+ try {
34
+ @Suppress("UNCHECKED_CAST")
35
+ val callback = pair.callback as? T ?: run {
36
+ Log.d(TAG, "Invalid callback type for $eventName")
37
+ return@forEach
38
+ }
39
+ invokeCallback(callback)
40
+ } catch (t: Throwable) {
41
+ Log.d(TAG, "Error calling $eventName listener", t)
42
+ }
43
+ }
44
+ }
45
+
46
+
47
+ // MARK: - Listener registration methods
48
+
49
+ override fun addOnAudioBecomingNoisyListener(listener: () -> Unit) =
50
+ addListener("onAudioBecomingNoisy", listener)
51
+
52
+ override fun addOnAudioFocusChangeListener(listener: (Boolean) -> Unit) =
53
+ addListener("onAudioFocusChange", listener)
54
+
55
+ override fun addOnBandwidthUpdateListener(listener: (BandwidthData) -> Unit) =
56
+ addListener("onBandwidthUpdate", listener)
57
+
58
+ override fun addOnBufferListener(listener: (Boolean) -> Unit) =
59
+ addListener("onBuffer", listener)
60
+
61
+ override fun addOnControlsVisibleChangeListener(listener: (Boolean) -> Unit) =
62
+ addListener("onControlsVisibleChange", listener)
63
+
64
+ override fun addOnEndListener(listener: () -> Unit) =
65
+ addListener("onEnd", listener)
66
+
67
+ override fun addOnExternalPlaybackChangeListener(listener: (Boolean) -> Unit) =
68
+ addListener("onExternalPlaybackChange", listener)
69
+
70
+ override fun addOnLoadListener(listener: (onLoadData) -> Unit) =
71
+ addListener("onLoad", listener)
72
+
73
+ override fun addOnLoadStartListener(listener: (onLoadStartData) -> Unit) =
74
+ addListener("onLoadStart", listener)
75
+
76
+ override fun addOnPlaybackStateChangeListener(listener: (onPlaybackStateChangeData) -> Unit) =
77
+ addListener("onPlaybackStateChange", listener)
78
+
79
+ override fun addOnPlaybackRateChangeListener(listener: (Double) -> Unit) =
80
+ addListener("onPlaybackRateChange", listener)
81
+
82
+ override fun addOnProgressListener(listener: (onProgressData) -> Unit) =
83
+ addListener("onProgress", listener)
84
+
85
+ override fun addOnReadyToDisplayListener(listener: () -> Unit) =
86
+ addListener("onReadyToDisplay", listener)
87
+
88
+ override fun addOnSeekListener(listener: (Double) -> Unit) =
89
+ addListener("onSeek", listener)
90
+
91
+ override fun addOnStatusChangeListener(listener: (VideoPlayerStatus) -> Unit) =
92
+ addListener("onStatusChange", listener)
93
+
94
+ override fun addOnTimedMetadataListener(listener: (TimedMetadata) -> Unit) =
95
+ addListener("onTimedMetadata", listener)
96
+
97
+ override fun addOnTextTrackDataChangedListener(listener: (Array<String>) -> Unit) =
98
+ addListener("onTextTrackDataChanged", listener)
99
+
100
+ override fun addOnTrackChangeListener(listener: (Variant_NullType_TextTrack?) -> Unit) =
101
+ addListener("onTrackChange", listener)
102
+
103
+ override fun addOnVolumeChangeListener(listener: (onVolumeChangeData) -> Unit) =
104
+ addListener("onVolumeChange", listener)
105
+
106
+ override fun clearAllListeners() {
107
+ synchronized(lock) {
108
+ listeners.clear()
109
+ }
110
+ }
111
+
112
+ // MARK: - Event emission methods
113
+
114
+ fun onAudioBecomingNoisy() =
115
+ emitEvent<() -> Unit>("onAudioBecomingNoisy") { it() }
116
+
117
+ fun onAudioFocusChange(hasFocus: Boolean) =
118
+ emitEvent<(Boolean) -> Unit>("onAudioFocusChange") { it(hasFocus) }
119
+
120
+ fun onBandwidthUpdate(data: BandwidthData) =
121
+ emitEvent<(BandwidthData) -> Unit>("onBandwidthUpdate") { it(data) }
122
+
123
+ fun onBuffer(isBuffering: Boolean) =
124
+ emitEvent<(Boolean) -> Unit>("onBuffer") { it(isBuffering) }
125
+
126
+ fun onControlsVisibleChange(isVisible: Boolean) =
127
+ emitEvent<(Boolean) -> Unit>("onControlsVisibleChange") { it(isVisible) }
128
+
129
+ fun onEnd() =
130
+ emitEvent<() -> Unit>("onEnd") { it() }
131
+
132
+ fun onExternalPlaybackChange(isExternalPlayback: Boolean) =
133
+ emitEvent<(Boolean) -> Unit>("onExternalPlaybackChange") { it(isExternalPlayback) }
134
+
135
+ fun onLoad(data: onLoadData) =
136
+ emitEvent<(onLoadData) -> Unit>("onLoad") { it(data) }
137
+
138
+ fun onLoadStart(data: onLoadStartData) =
139
+ emitEvent<(onLoadStartData) -> Unit>("onLoadStart") { it(data) }
140
+
141
+ fun onPlaybackStateChange(data: onPlaybackStateChangeData) =
142
+ emitEvent<(onPlaybackStateChangeData) -> Unit>("onPlaybackStateChange") { it(data) }
143
+
144
+ fun onPlaybackRateChange(rate: Double) =
145
+ emitEvent<(Double) -> Unit>("onPlaybackRateChange") { it(rate) }
146
+
147
+ fun onProgress(data: onProgressData) =
148
+ emitEvent<(onProgressData) -> Unit>("onProgress") { it(data) }
149
+
150
+ fun onReadyToDisplay() =
151
+ emitEvent<() -> Unit>("onReadyToDisplay") { it() }
152
+
153
+ fun onSeek(position: Double) =
154
+ emitEvent<(Double) -> Unit>("onSeek") { it(position) }
155
+
156
+ fun onTimedMetadata(metadata: TimedMetadata) =
157
+ emitEvent<(TimedMetadata) -> Unit>("onTimedMetadata") { it(metadata) }
158
+
159
+ fun onTextTrackDataChanged(tracks: Array<String>) =
160
+ emitEvent<(Array<String>) -> Unit>("onTextTrackDataChanged") { it(tracks) }
161
+
162
+ fun onTrackChange(track: TextTrack?) {
163
+ val param = if (track == null) {
164
+ Variant_NullType_TextTrack.create(NullType.NULL)
165
+ } else {
166
+ Variant_NullType_TextTrack.create(track)
167
+ }
168
+ emitEvent<(Variant_NullType_TextTrack?) -> Unit>("onTrackChange") { it(param) }
169
+ }
170
+
171
+ fun onVolumeChange(data: onVolumeChangeData) =
172
+ emitEvent<(onVolumeChangeData) -> Unit>("onVolumeChange") { it(data) }
173
+
174
+ fun onStatusChange(status: VideoPlayerStatus) =
175
+ emitEvent<(VideoPlayerStatus) -> Unit>("onStatusChange") { it(status) }
176
+
177
+ companion object {
178
+ const val TAG = "HybridVideoPlayerEventEmitter"
179
+ }
180
+ }
@@ -0,0 +1,67 @@
1
+ package com.margelo.nitro.unifiedplayer
2
+
3
+ import androidx.media3.common.MediaItem
4
+ import androidx.media3.common.util.UnstableApi
5
+ import androidx.media3.exoplayer.drm.DrmSessionManager
6
+ import androidx.media3.exoplayer.source.MediaSource
7
+ import com.margelo.nitro.NitroModules
8
+ import com.margelo.nitro.core.Promise
9
+ import com.unifiedplayer.core.LibraryError
10
+ import com.unifiedplayer.core.player.DRMManagerSpec
11
+ import com.unifiedplayer.core.player.buildMediaSource
12
+ import com.unifiedplayer.core.player.createMediaItemFromVideoConfig
13
+ import com.unifiedplayer.core.plugins.PluginsRegistry
14
+ import com.unifiedplayer.core.utils.SourceLoader
15
+ import com.unifiedplayer.core.utils.VideoInformationUtils
16
+
17
+ class HybridVideoPlayerSource(): HybridVideoPlayerSourceSpec() {
18
+ override lateinit var uri: String
19
+ override lateinit var config: NativeVideoConfig
20
+
21
+ private lateinit var mediaItem: MediaItem
22
+ lateinit var mediaSource: MediaSource
23
+
24
+ var drmManager: DRMManagerSpec? = null
25
+
26
+ @UnstableApi
27
+ var drmSessionManager: DrmSessionManager? = null
28
+
29
+ internal val sourceLoader = SourceLoader()
30
+
31
+ constructor(config: NativeVideoConfig) : this() {
32
+ this.uri = config.uri
33
+ this.config = config
34
+
35
+ val overriddenSource = PluginsRegistry.shared.overrideSource(this)
36
+
37
+ config.drm?.let {
38
+ drmManager = PluginsRegistry.shared.getDRMManager(this)
39
+ drmSessionManager = drmManager?.buildDrmSessionManager(it)
40
+ }
41
+
42
+ this.mediaItem = createMediaItemFromVideoConfig(
43
+ overriddenSource
44
+ )
45
+
46
+ NitroModules.applicationContext?.let {
47
+ this.mediaSource = buildMediaSource(
48
+ context = it,
49
+ source = overriddenSource,
50
+ mediaItem
51
+ )
52
+ } ?: run {
53
+ throw LibraryError.ApplicationContextNotFound
54
+ }
55
+ }
56
+
57
+ override fun getAssetInformationAsync(): Promise<VideoInformation> {
58
+ return Promise.async {
59
+ return@async sourceLoader.load {
60
+ VideoInformationUtils.fromUri(uri, config.headers ?: emptyMap())
61
+ }
62
+ }
63
+ }
64
+
65
+ override val memorySize: Long
66
+ get() = 0
67
+ }
@@ -0,0 +1,58 @@
1
+ package com.margelo.nitro.unifiedplayer
2
+
3
+ import android.content.Context
4
+ import android.net.Uri
5
+ import androidx.media3.common.MediaItem
6
+ import androidx.media3.datasource.RawResourceDataSource
7
+ import com.facebook.react.bridge.ReactApplicationContext
8
+ import com.facebook.proguard.annotations.DoNotStrip
9
+ import com.margelo.nitro.NitroModules
10
+
11
+ @DoNotStrip
12
+ class HybridVideoPlayerSourceFactory: HybridVideoPlayerSourceFactorySpec() {
13
+ private val applicationContext: Context
14
+ get() = NitroModules.applicationContext
15
+ ?: throw IllegalStateException(
16
+ "NitroModules.applicationContext has not been initialized."
17
+ )
18
+
19
+ private fun normalizeUri(input: String): String {
20
+ val parsedUri = Uri.parse(input)
21
+
22
+ if (parsedUri.scheme != null) {
23
+ return parsedUri.toString()
24
+ }
25
+
26
+ val resId = applicationContext.resources
27
+ .getIdentifier(input, "raw", applicationContext.packageName)
28
+
29
+ if (resId == 0) {
30
+ throw IllegalArgumentException("The video resource '$input' could not be found in res/raw")
31
+ }
32
+
33
+ val mediaUri = RawResourceDataSource.buildRawResourceUri(resId)
34
+
35
+ return mediaUri.toString()
36
+ }
37
+
38
+ override fun fromUri(uri: String): HybridVideoPlayerSourceSpec {
39
+ val config = NativeVideoConfig(
40
+ uri = normalizeUri(uri),
41
+ externalSubtitles = null,
42
+ drm = null,
43
+ headers = null,
44
+ bufferConfig = null,
45
+ metadata = null,
46
+ initializeOnCreation = true
47
+ )
48
+
49
+ return HybridVideoPlayerSource(config)
50
+ }
51
+
52
+ override fun fromVideoConfig(config: NativeVideoConfig): HybridVideoPlayerSourceSpec {
53
+ return HybridVideoPlayerSource(config)
54
+ }
55
+
56
+ override val memorySize: Long
57
+ get() = 0
58
+ }
@@ -0,0 +1,187 @@
1
+ package com.margelo.nitro.unifiedplayer
2
+
3
+ import androidx.annotation.OptIn
4
+ import androidx.media3.common.util.UnstableApi
5
+ import com.facebook.proguard.annotations.DoNotStrip
6
+ import com.unifiedplayer.core.VideoManager
7
+ import com.unifiedplayer.core.VideoViewError
8
+ import com.unifiedplayer.core.utils.PictureInPictureUtils
9
+ import com.unifiedplayer.core.utils.Threading
10
+ import java.util.UUID
11
+
12
+ data class ViewListenerPair(
13
+ val id: UUID,
14
+ val eventName: String,
15
+ val callback: Any
16
+ )
17
+
18
+ @DoNotStrip
19
+ @OptIn(UnstableApi::class)
20
+ class HybridVideoViewViewManager(nitroId: Int): HybridVideoViewViewManagerSpec(), VideoViewEventsEmitter {
21
+ private var videoView =
22
+ VideoManager.getVideoViewWeakReferenceByNitroId(nitroId) ?: throw VideoViewError.ViewNotFound(nitroId)
23
+ private val listeners = mutableListOf<ViewListenerPair>()
24
+
25
+ init {
26
+ videoView.get()?.eventsEmitter = this
27
+ }
28
+
29
+ override var player: HybridVideoPlayerSpec?
30
+ get() {
31
+ return Threading.runOnMainThreadSync { return@runOnMainThreadSync videoView.get()?.hybridPlayer }
32
+ }
33
+ set(value) {
34
+ Threading.runOnMainThread {
35
+ videoView.get()?.hybridPlayer = value as? HybridVideoPlayer
36
+ }
37
+ }
38
+
39
+ override fun canEnterPictureInPicture(): Boolean {
40
+ return PictureInPictureUtils.canEnterPictureInPicture()
41
+ }
42
+
43
+ override fun enterFullscreen() {
44
+ videoView.get()?.enterFullscreen()
45
+ }
46
+
47
+ override fun exitFullscreen() {
48
+ videoView.get()?.exitFullscreen()
49
+ }
50
+
51
+ override fun enterPictureInPicture() {
52
+ Threading.runOnMainThread {
53
+ videoView.get()?.enterPictureInPicture()
54
+ }
55
+ }
56
+
57
+ override fun exitPictureInPicture() {
58
+ Threading.runOnMainThread {
59
+ videoView.get()?.exitPictureInPicture()
60
+ }
61
+ }
62
+
63
+ override var autoEnterPictureInPicture: Boolean
64
+ get() = videoView.get()?.autoEnterPictureInPicture == true
65
+ set(value) {
66
+ Threading.runOnMainThread {
67
+ videoView.get()?.autoEnterPictureInPicture = value
68
+ }
69
+ }
70
+
71
+ override var pictureInPicture: Boolean
72
+ get() = videoView.get()?.pictureInPictureEnabled == true
73
+ set(value) {
74
+ videoView.get()?.pictureInPictureEnabled = value
75
+ }
76
+
77
+ override var controls: Boolean
78
+ get() = videoView.get()?.useController == true
79
+ set(value) {
80
+ videoView.get()?.useController = value
81
+ }
82
+
83
+ override var resizeMode: ResizeMode
84
+ get() = videoView.get()?.resizeMode ?: ResizeMode.NONE
85
+ set(value) {
86
+ videoView.get()?.resizeMode = value
87
+ }
88
+
89
+ override var keepScreenAwake: Boolean
90
+ get() = videoView.get()?.keepScreenAwake == true
91
+ set(value) {
92
+ videoView.get()?.keepScreenAwake = value
93
+ }
94
+
95
+ override var surfaceType: SurfaceType
96
+ get() = videoView.get()?.surfaceType ?: SurfaceType.SURFACE
97
+ set(value) {
98
+ videoView.get()?.surfaceType = value
99
+ }
100
+
101
+ // MARK: - Private helpers
102
+
103
+ private fun <T> addListener(eventName: String, listener: T): ListenerSubscription {
104
+ val id = UUID.randomUUID()
105
+ listeners.add(ViewListenerPair(id, eventName, listener as Any))
106
+ return ListenerSubscription { listeners.removeAll { it.id == id } }
107
+ }
108
+
109
+ @Suppress("UNCHECKED_CAST")
110
+ private fun <T> emitEvent(eventName: String, invoke: (T) -> Unit) {
111
+ listeners.filter { it.eventName == eventName }.forEach { pair ->
112
+ try {
113
+ invoke(pair.callback as T)
114
+ } catch (e: Exception) {
115
+ println("[UnifiedPlayer] Error calling $eventName listener: $e")
116
+ }
117
+ }
118
+ }
119
+
120
+ // MARK: - Listener registration methods
121
+
122
+ override fun addOnPictureInPictureChangeListener(listener: (Boolean) -> Unit): ListenerSubscription {
123
+ return addListener("onPictureInPictureChange", listener)
124
+ }
125
+
126
+ override fun addOnFullscreenChangeListener(listener: (Boolean) -> Unit): ListenerSubscription {
127
+ return addListener("onFullscreenChange", listener)
128
+ }
129
+
130
+ override fun addWillEnterFullscreenListener(listener: () -> Unit): ListenerSubscription {
131
+ return addListener("willEnterFullscreen", listener)
132
+ }
133
+
134
+ override fun addWillExitFullscreenListener(listener: () -> Unit): ListenerSubscription {
135
+ return addListener("willExitFullscreen", listener)
136
+ }
137
+
138
+ override fun addWillEnterPictureInPictureListener(listener: () -> Unit): ListenerSubscription {
139
+ return addListener("willEnterPictureInPicture", listener)
140
+ }
141
+
142
+ override fun addWillExitPictureInPictureListener(listener: () -> Unit): ListenerSubscription {
143
+ return addListener("willExitPictureInPicture", listener)
144
+ }
145
+
146
+ override fun clearAllListeners() {
147
+ listeners.clear()
148
+ }
149
+
150
+ // MARK: - Event emission methods (called by VideoView)
151
+
152
+ override fun onPictureInPictureChange(isActive: Boolean) {
153
+ emitEvent<(Boolean) -> Unit>("onPictureInPictureChange") { it(isActive) }
154
+ }
155
+
156
+ override fun onFullscreenChange(isActive: Boolean) {
157
+ emitEvent<(Boolean) -> Unit>("onFullscreenChange") { it(isActive) }
158
+ }
159
+
160
+ override fun willEnterFullscreen() {
161
+ emitEvent<() -> Unit>("willEnterFullscreen") { it() }
162
+ }
163
+
164
+ override fun willExitFullscreen() {
165
+ emitEvent<() -> Unit>("willExitFullscreen") { it() }
166
+ }
167
+
168
+ override fun willEnterPictureInPicture() {
169
+ emitEvent<() -> Unit>("willEnterPictureInPicture") { it() }
170
+ }
171
+
172
+ override fun willExitPictureInPicture() {
173
+ emitEvent<() -> Unit>("willExitPictureInPicture") { it() }
174
+ }
175
+
176
+ override val memorySize: Long
177
+ get() = 0
178
+ }
179
+
180
+ interface VideoViewEventsEmitter {
181
+ fun onPictureInPictureChange(isActive: Boolean)
182
+ fun onFullscreenChange(isActive: Boolean)
183
+ fun willEnterFullscreen()
184
+ fun willExitFullscreen()
185
+ fun willEnterPictureInPicture()
186
+ fun willExitPictureInPicture()
187
+ }
@@ -0,0 +1,13 @@
1
+ package com.margelo.nitro.unifiedplayer
2
+
3
+ import com.facebook.proguard.annotations.DoNotStrip
4
+
5
+ @DoNotStrip
6
+ class HybridVideoViewViewManagerFactory: HybridVideoViewViewManagerFactorySpec() {
7
+ override fun createViewManager(nitroId: Double): HybridVideoViewViewManagerSpec {
8
+ return HybridVideoViewViewManager(nitroId.toInt())
9
+ }
10
+
11
+ override val memorySize: Long
12
+ get() = 0
13
+ }
@@ -0,0 +1,25 @@
1
+ package com.unifiedplayer.react
2
+
3
+ import androidx.annotation.OptIn
4
+ import androidx.media3.common.util.UnstableApi
5
+ import com.facebook.react.ReactPackage
6
+ import com.facebook.react.bridge.NativeModule
7
+ import com.facebook.react.bridge.ReactApplicationContext
8
+ import com.facebook.react.uimanager.ViewManager
9
+
10
+ class VideoPackage : ReactPackage {
11
+ override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
12
+ return emptyList()
13
+ }
14
+
15
+ @OptIn(UnstableApi::class)
16
+ override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
17
+ return listOf(VideoViewViewManager())
18
+ }
19
+
20
+ companion object {
21
+ init {
22
+ System.loadLibrary("UnifiedPlayer")
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,78 @@
1
+ package com.unifiedplayer.react
2
+
3
+ import androidx.media3.common.util.UnstableApi
4
+ import com.facebook.react.bridge.Arguments
5
+ import com.facebook.react.bridge.WritableMap
6
+ import com.facebook.react.common.MapBuilder
7
+ import com.facebook.react.module.annotations.ReactModule
8
+ import com.facebook.react.uimanager.SimpleViewManager
9
+ import com.facebook.react.uimanager.ThemedReactContext
10
+ import com.facebook.react.uimanager.UIManagerHelper
11
+ import com.facebook.react.uimanager.ViewManagerDelegate
12
+ import com.facebook.react.uimanager.annotations.ReactProp
13
+ import com.facebook.react.uimanager.events.Event
14
+ import com.facebook.react.viewmanagers.RNCVideoViewManagerDelegate
15
+ import com.facebook.react.viewmanagers.RNCVideoViewManagerInterface
16
+ import com.unifiedplayer.view.VideoView
17
+
18
+ internal class NitroIdChange(
19
+ surfaceId: Int,
20
+ viewTag: Int,
21
+ val nitroId: Int
22
+ ) : Event<NitroIdChange>(surfaceId, viewTag) {
23
+ override fun getEventName() = EVENT_NAME
24
+
25
+ override fun getEventData(): WritableMap = Arguments.createMap().apply {
26
+ putInt("nitroId", nitroId)
27
+ }
28
+
29
+ companion object {
30
+ const val EVENT_NAME = "topNitroIdChange"
31
+ }
32
+ }
33
+
34
+ @UnstableApi
35
+ @ReactModule(name = VideoViewViewManager.NAME)
36
+ class VideoViewViewManager : SimpleViewManager<VideoView>(), RNCVideoViewManagerInterface<VideoView> {
37
+ private val mDelegate: ViewManagerDelegate<VideoView>
38
+
39
+ init {
40
+ mDelegate = RNCVideoViewManagerDelegate(this)
41
+ }
42
+
43
+ @ReactProp(name = "nitroId")
44
+ override fun setNitroId(view: VideoView, nitroId: Int) {
45
+ view.nitroId = nitroId
46
+ }
47
+
48
+ public override fun createViewInstance(reactContext: ThemedReactContext): VideoView {
49
+ return VideoView(reactContext)
50
+ }
51
+
52
+ override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any> {
53
+ return MapBuilder.builder<String, Any>()
54
+ .put(NitroIdChange.EVENT_NAME, MapBuilder.of("registrationName", "onNitroIdChange"))
55
+ .build()
56
+ }
57
+
58
+ override fun getName() = NAME
59
+
60
+ override fun getDelegate() = mDelegate
61
+
62
+ override fun addEventEmitters(reactContext: ThemedReactContext, view: VideoView) {
63
+ super.addEventEmitters(reactContext, view)
64
+
65
+ val surfaceId = UIManagerHelper.getSurfaceId(reactContext)
66
+ val dispatcher = UIManagerHelper.getEventDispatcherForReactTag(reactContext, view.id)
67
+
68
+ if (dispatcher != null) {
69
+ view.onNitroIdChange = {
70
+ dispatcher.dispatchEvent(NitroIdChange(surfaceId, view.id, view.nitroId))
71
+ }
72
+ }
73
+ }
74
+
75
+ companion object {
76
+ const val NAME = "RNCVideoView"
77
+ }
78
+ }