agora-electron-sdk 4.2.0-dev.5 → 4.2.0-dev.8

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 (270) hide show
  1. package/js/AgoraSdk.js +4 -2
  2. package/js/Private/AgoraBase.js +1154 -6
  3. package/js/Private/AgoraMediaBase.js +308 -0
  4. package/js/Private/AgoraMediaPlayerTypes.js +112 -0
  5. package/js/Private/IAgoraLog.js +12 -0
  6. package/js/Private/IAgoraMediaStreamingSource.js +10 -0
  7. package/js/Private/IAgoraMusicContentCenter.js +104 -0
  8. package/js/Private/IAgoraRhythmPlayer.js +8 -0
  9. package/js/Private/IAgoraRtcEngine.js +843 -0
  10. package/js/Private/IAgoraRtcEngineEx.js +8 -0
  11. package/js/Private/IAgoraSpatialAudio.js +44 -0
  12. package/js/Private/impl/IAgoraMediaPlayerImpl.js +59 -59
  13. package/js/Private/impl/IAgoraRtcEngineImpl.js +55 -46
  14. package/js/Private/internal/IrisApiEngine.js +7 -12
  15. package/js/Private/internal/MediaEngineInternal.js +7 -11
  16. package/js/Private/internal/MediaPlayerInternal.js +22 -20
  17. package/js/Private/internal/MediaRecorderInternal.js +4 -4
  18. package/js/Private/internal/MusicContentCenterInternal.js +7 -9
  19. package/js/Private/internal/RtcEngineExInternal.js +52 -62
  20. package/js/Renderer/AgoraView.js +21 -24
  21. package/js/Renderer/IRenderer.js +6 -13
  22. package/js/Renderer/IRendererManager.js +9 -0
  23. package/js/Renderer/RendererManager.js +49 -33
  24. package/js/Renderer/{GlRenderer → WebGLRenderer}/index.js +39 -45
  25. package/js/Renderer/YUVCanvasRenderer/index.js +8 -7
  26. package/js/Renderer/index.js +18 -0
  27. package/js/Utils.js +6 -8
  28. package/package.json +4 -3
  29. package/scripts/buildJS.js +1 -2
  30. package/scripts/getConfig.js +0 -1
  31. package/ts/AgoraSdk.ts +5 -2
  32. package/ts/Private/IAgoraMediaPlayer.ts +45 -45
  33. package/ts/Private/IAgoraRtcEngine.ts +33 -25
  34. package/ts/Private/impl/IAgoraMediaPlayerImpl.ts +84 -84
  35. package/ts/Private/impl/IAgoraRtcEngineImpl.ts +75 -65
  36. package/ts/Private/internal/IrisApiEngine.ts +0 -2
  37. package/ts/Private/internal/RtcEngineExInternal.ts +23 -12
  38. package/ts/Renderer/AgoraView.ts +1 -0
  39. package/ts/Renderer/IRenderer.ts +8 -14
  40. package/ts/Renderer/IRendererManager.ts +35 -0
  41. package/ts/Renderer/RendererManager.ts +9 -9
  42. package/ts/Renderer/{GlRenderer → WebGLRenderer}/index.ts +26 -45
  43. package/ts/Renderer/YUVCanvasRenderer/index.ts +8 -10
  44. package/ts/Renderer/index.ts +2 -0
  45. package/ts/Types.ts +15 -9
  46. package/ts/Utils.ts +4 -6
  47. package/types/AgoraSdk.d.ts +4 -2
  48. package/types/AgoraSdk.d.ts.map +1 -0
  49. package/types/Private/AgoraBase.d.ts +1 -0
  50. package/types/Private/AgoraBase.d.ts.map +1 -0
  51. package/types/Private/AgoraMediaBase.d.ts +1 -0
  52. package/types/Private/AgoraMediaBase.d.ts.map +1 -0
  53. package/types/Private/AgoraMediaPlayerTypes.d.ts +1 -0
  54. package/types/Private/AgoraMediaPlayerTypes.d.ts.map +1 -0
  55. package/types/Private/IAgoraLog.d.ts +1 -0
  56. package/types/Private/IAgoraLog.d.ts.map +1 -0
  57. package/types/Private/IAgoraMediaEngine.d.ts +1 -0
  58. package/types/Private/IAgoraMediaEngine.d.ts.map +1 -0
  59. package/types/Private/IAgoraMediaPlayer.d.ts +35 -34
  60. package/types/Private/IAgoraMediaPlayer.d.ts.map +1 -0
  61. package/types/Private/IAgoraMediaPlayerSource.d.ts +1 -0
  62. package/types/Private/IAgoraMediaPlayerSource.d.ts.map +1 -0
  63. package/types/Private/IAgoraMediaRecorder.d.ts +1 -0
  64. package/types/Private/IAgoraMediaRecorder.d.ts.map +1 -0
  65. package/types/Private/IAgoraMediaStreamingSource.d.ts +1 -0
  66. package/types/Private/IAgoraMediaStreamingSource.d.ts.map +1 -0
  67. package/types/Private/IAgoraMusicContentCenter.d.ts +1 -0
  68. package/types/Private/IAgoraMusicContentCenter.d.ts.map +1 -0
  69. package/types/Private/IAgoraRhythmPlayer.d.ts +1 -0
  70. package/types/Private/IAgoraRhythmPlayer.d.ts.map +1 -0
  71. package/types/Private/IAgoraRtcEngine.d.ts +27 -19
  72. package/types/Private/IAgoraRtcEngine.d.ts.map +1 -0
  73. package/types/Private/IAgoraRtcEngineEx.d.ts +1 -0
  74. package/types/Private/IAgoraRtcEngineEx.d.ts.map +1 -0
  75. package/types/Private/IAgoraSpatialAudio.d.ts +1 -0
  76. package/types/Private/IAgoraSpatialAudio.d.ts.map +1 -0
  77. package/types/Private/IAudioDeviceManager.d.ts +1 -0
  78. package/types/Private/IAudioDeviceManager.d.ts.map +1 -0
  79. package/types/Private/extension/AgoraBaseExtension.d.ts +1 -0
  80. package/types/Private/extension/AgoraBaseExtension.d.ts.map +1 -0
  81. package/types/Private/extension/AgoraMediaBaseExtension.d.ts +1 -0
  82. package/types/Private/extension/AgoraMediaBaseExtension.d.ts.map +1 -0
  83. package/types/Private/extension/AgoraMediaPlayerTypesExtension.d.ts +1 -0
  84. package/types/Private/extension/AgoraMediaPlayerTypesExtension.d.ts.map +1 -0
  85. package/types/Private/extension/IAgoraLogExtension.d.ts +1 -0
  86. package/types/Private/extension/IAgoraLogExtension.d.ts.map +1 -0
  87. package/types/Private/extension/IAgoraMediaEngineExtension.d.ts +1 -0
  88. package/types/Private/extension/IAgoraMediaEngineExtension.d.ts.map +1 -0
  89. package/types/Private/extension/IAgoraMediaPlayerExtension.d.ts +1 -0
  90. package/types/Private/extension/IAgoraMediaPlayerExtension.d.ts.map +1 -0
  91. package/types/Private/extension/IAgoraMediaPlayerSourceExtension.d.ts +1 -0
  92. package/types/Private/extension/IAgoraMediaPlayerSourceExtension.d.ts.map +1 -0
  93. package/types/Private/extension/IAgoraMediaRecorderExtension.d.ts +1 -0
  94. package/types/Private/extension/IAgoraMediaRecorderExtension.d.ts.map +1 -0
  95. package/types/Private/extension/IAgoraMusicContentCenterExtension.d.ts +1 -0
  96. package/types/Private/extension/IAgoraMusicContentCenterExtension.d.ts.map +1 -0
  97. package/types/Private/extension/IAgoraRhythmPlayerExtension.d.ts +1 -0
  98. package/types/Private/extension/IAgoraRhythmPlayerExtension.d.ts.map +1 -0
  99. package/types/Private/extension/IAgoraRtcEngineExExtension.d.ts +1 -0
  100. package/types/Private/extension/IAgoraRtcEngineExExtension.d.ts.map +1 -0
  101. package/types/Private/extension/IAgoraRtcEngineExtension.d.ts +1 -0
  102. package/types/Private/extension/IAgoraRtcEngineExtension.d.ts.map +1 -0
  103. package/types/Private/extension/IAgoraSpatialAudioExtension.d.ts +1 -0
  104. package/types/Private/extension/IAgoraSpatialAudioExtension.d.ts.map +1 -0
  105. package/types/Private/extension/IAudioDeviceManagerExtension.d.ts +1 -0
  106. package/types/Private/extension/IAudioDeviceManagerExtension.d.ts.map +1 -0
  107. package/types/Private/impl/AgoraBaseImpl.d.ts +1 -0
  108. package/types/Private/impl/AgoraBaseImpl.d.ts.map +1 -0
  109. package/types/Private/impl/AgoraMediaBaseImpl.d.ts +1 -0
  110. package/types/Private/impl/AgoraMediaBaseImpl.d.ts.map +1 -0
  111. package/types/Private/impl/IAgoraMediaEngineImpl.d.ts +1 -0
  112. package/types/Private/impl/IAgoraMediaEngineImpl.d.ts.map +1 -0
  113. package/types/Private/impl/IAgoraMediaPlayerImpl.d.ts +9 -8
  114. package/types/Private/impl/IAgoraMediaPlayerImpl.d.ts.map +1 -0
  115. package/types/Private/impl/IAgoraMediaPlayerSourceImpl.d.ts +1 -0
  116. package/types/Private/impl/IAgoraMediaPlayerSourceImpl.d.ts.map +1 -0
  117. package/types/Private/impl/IAgoraMediaRecorderImpl.d.ts +1 -0
  118. package/types/Private/impl/IAgoraMediaRecorderImpl.d.ts.map +1 -0
  119. package/types/Private/impl/IAgoraMusicContentCenterImpl.d.ts +1 -0
  120. package/types/Private/impl/IAgoraMusicContentCenterImpl.d.ts.map +1 -0
  121. package/types/Private/impl/IAgoraRtcEngineExImpl.d.ts +1 -0
  122. package/types/Private/impl/IAgoraRtcEngineExImpl.d.ts.map +1 -0
  123. package/types/Private/impl/IAgoraRtcEngineImpl.d.ts +13 -10
  124. package/types/Private/impl/IAgoraRtcEngineImpl.d.ts.map +1 -0
  125. package/types/Private/impl/IAgoraSpatialAudioImpl.d.ts +1 -0
  126. package/types/Private/impl/IAgoraSpatialAudioImpl.d.ts.map +1 -0
  127. package/types/Private/impl/IAudioDeviceManagerImpl.d.ts +1 -0
  128. package/types/Private/impl/IAudioDeviceManagerImpl.d.ts.map +1 -0
  129. package/types/Private/internal/AudioDeviceManagerInternal.d.ts +1 -0
  130. package/types/Private/internal/AudioDeviceManagerInternal.d.ts.map +1 -0
  131. package/types/Private/internal/IrisApiEngine.d.ts +8 -7
  132. package/types/Private/internal/IrisApiEngine.d.ts.map +1 -0
  133. package/types/Private/internal/LocalSpatialAudioEngineInternal.d.ts +1 -0
  134. package/types/Private/internal/LocalSpatialAudioEngineInternal.d.ts.map +1 -0
  135. package/types/Private/internal/MediaEngineInternal.d.ts +1 -0
  136. package/types/Private/internal/MediaEngineInternal.d.ts.map +1 -0
  137. package/types/Private/internal/MediaPlayerInternal.d.ts +1 -0
  138. package/types/Private/internal/MediaPlayerInternal.d.ts.map +1 -0
  139. package/types/Private/internal/MediaRecorderInternal.d.ts +1 -0
  140. package/types/Private/internal/MediaRecorderInternal.d.ts.map +1 -0
  141. package/types/Private/internal/MusicContentCenterInternal.d.ts +1 -0
  142. package/types/Private/internal/MusicContentCenterInternal.d.ts.map +1 -0
  143. package/types/Private/internal/RtcEngineExInternal.d.ts +3 -2
  144. package/types/Private/internal/RtcEngineExInternal.d.ts.map +1 -0
  145. package/{js → types}/Private/internal/emitter/EventEmitter.d.ts +1 -0
  146. package/types/Private/internal/emitter/EventEmitter.d.ts.map +1 -0
  147. package/types/Private/ti/AgoraBase-ti.d.ts +1 -0
  148. package/types/Private/ti/AgoraBase-ti.d.ts.map +1 -0
  149. package/types/Private/ti/AgoraMediaBase-ti.d.ts +1 -0
  150. package/types/Private/ti/AgoraMediaBase-ti.d.ts.map +1 -0
  151. package/types/Private/ti/AgoraMediaPlayerTypes-ti.d.ts +1 -0
  152. package/types/Private/ti/AgoraMediaPlayerTypes-ti.d.ts.map +1 -0
  153. package/types/Private/ti/IAgoraLog-ti.d.ts +1 -0
  154. package/types/Private/ti/IAgoraLog-ti.d.ts.map +1 -0
  155. package/types/Private/ti/IAgoraMediaEngine-ti.d.ts +1 -0
  156. package/types/Private/ti/IAgoraMediaEngine-ti.d.ts.map +1 -0
  157. package/types/Private/ti/IAgoraMediaPlayer-ti.d.ts +1 -0
  158. package/types/Private/ti/IAgoraMediaPlayer-ti.d.ts.map +1 -0
  159. package/types/Private/ti/IAgoraMediaPlayerSource-ti.d.ts +1 -0
  160. package/types/Private/ti/IAgoraMediaPlayerSource-ti.d.ts.map +1 -0
  161. package/types/Private/ti/IAgoraMediaRecorder-ti.d.ts +1 -0
  162. package/types/Private/ti/IAgoraMediaRecorder-ti.d.ts.map +1 -0
  163. package/types/Private/ti/IAgoraMediaStreamingSource-ti.d.ts +1 -0
  164. package/types/Private/ti/IAgoraMediaStreamingSource-ti.d.ts.map +1 -0
  165. package/types/Private/ti/IAgoraMusicContentCenter-ti.d.ts +1 -0
  166. package/types/Private/ti/IAgoraMusicContentCenter-ti.d.ts.map +1 -0
  167. package/types/Private/ti/IAgoraRhythmPlayer-ti.d.ts +1 -0
  168. package/types/Private/ti/IAgoraRhythmPlayer-ti.d.ts.map +1 -0
  169. package/types/Private/ti/IAgoraRtcEngine-ti.d.ts +1 -0
  170. package/types/Private/ti/IAgoraRtcEngine-ti.d.ts.map +1 -0
  171. package/types/Private/ti/IAgoraRtcEngineEx-ti.d.ts +1 -0
  172. package/types/Private/ti/IAgoraRtcEngineEx-ti.d.ts.map +1 -0
  173. package/types/Private/ti/IAgoraSpatialAudio-ti.d.ts +1 -0
  174. package/types/Private/ti/IAgoraSpatialAudio-ti.d.ts.map +1 -0
  175. package/types/Private/ti/IAudioDeviceManager-ti.d.ts +1 -0
  176. package/types/Private/ti/IAudioDeviceManager-ti.d.ts.map +1 -0
  177. package/types/Renderer/AgoraView.d.ts +1 -0
  178. package/types/Renderer/AgoraView.d.ts.map +1 -0
  179. package/types/Renderer/IRenderer.d.ts +6 -5
  180. package/types/Renderer/IRenderer.d.ts.map +1 -0
  181. package/types/Renderer/IRendererManager.d.ts +18 -0
  182. package/types/Renderer/IRendererManager.d.ts.map +1 -0
  183. package/types/Renderer/RendererManager.d.ts +5 -3
  184. package/types/Renderer/RendererManager.d.ts.map +1 -0
  185. package/types/Renderer/{GlRenderer → WebGLRenderer}/index.d.ts +9 -19
  186. package/types/Renderer/WebGLRenderer/index.d.ts.map +1 -0
  187. package/types/Renderer/WebGLRenderer/webgl-utils.d.ts +1 -0
  188. package/types/Renderer/WebGLRenderer/webgl-utils.d.ts.map +1 -0
  189. package/types/Renderer/YUVCanvasRenderer/index.d.ts +4 -4
  190. package/types/Renderer/YUVCanvasRenderer/index.d.ts.map +1 -0
  191. package/types/Renderer/index.d.ts +3 -0
  192. package/types/Renderer/index.d.ts.map +1 -0
  193. package/types/Types.d.ts +15 -9
  194. package/types/Types.d.ts.map +1 -0
  195. package/types/Utils.d.ts +1 -0
  196. package/types/Utils.d.ts.map +1 -0
  197. package/js/AgoraSdk.d.ts +0 -36
  198. package/js/Private/AgoraBase.d.ts +0 -4441
  199. package/js/Private/AgoraMediaBase.d.ts +0 -1124
  200. package/js/Private/AgoraMediaPlayerTypes.d.ts +0 -408
  201. package/js/Private/IAgoraLog.d.ts +0 -80
  202. package/js/Private/IAgoraMediaEngine.d.ts +0 -183
  203. package/js/Private/IAgoraMediaPlayer.d.ts +0 -532
  204. package/js/Private/IAgoraMediaPlayerSource.d.ts +0 -82
  205. package/js/Private/IAgoraMediaRecorder.d.ts +0 -28
  206. package/js/Private/IAgoraMediaStreamingSource.d.ts +0 -41
  207. package/js/Private/IAgoraMusicContentCenter.d.ts +0 -335
  208. package/js/Private/IAgoraRhythmPlayer.d.ts +0 -64
  209. package/js/Private/IAgoraRtcEngine.d.ts +0 -4947
  210. package/js/Private/IAgoraRtcEngineEx.d.ts +0 -553
  211. package/js/Private/IAgoraSpatialAudio.d.ts +0 -265
  212. package/js/Private/IAudioDeviceManager.d.ts +0 -254
  213. package/js/Private/extension/AgoraBaseExtension.d.ts +0 -1
  214. package/js/Private/extension/AgoraMediaBaseExtension.d.ts +0 -1
  215. package/js/Private/extension/AgoraMediaPlayerTypesExtension.d.ts +0 -1
  216. package/js/Private/extension/IAgoraLogExtension.d.ts +0 -1
  217. package/js/Private/extension/IAgoraMediaEngineExtension.d.ts +0 -40
  218. package/js/Private/extension/IAgoraMediaPlayerExtension.d.ts +0 -46
  219. package/js/Private/extension/IAgoraMediaPlayerSourceExtension.d.ts +0 -1
  220. package/js/Private/extension/IAgoraMediaRecorderExtension.d.ts +0 -44
  221. package/js/Private/extension/IAgoraMusicContentCenterExtension.d.ts +0 -20
  222. package/js/Private/extension/IAgoraRhythmPlayerExtension.d.ts +0 -1
  223. package/js/Private/extension/IAgoraRtcEngineExExtension.d.ts +0 -1
  224. package/js/Private/extension/IAgoraRtcEngineExtension.d.ts +0 -42
  225. package/js/Private/extension/IAgoraSpatialAudioExtension.d.ts +0 -1
  226. package/js/Private/extension/IAudioDeviceManagerExtension.d.ts +0 -1
  227. package/js/Private/impl/AgoraBaseImpl.d.ts +0 -2
  228. package/js/Private/impl/AgoraMediaBaseImpl.d.ts +0 -8
  229. package/js/Private/impl/IAgoraMediaEngineImpl.d.ts +0 -39
  230. package/js/Private/impl/IAgoraMediaPlayerImpl.d.ts +0 -140
  231. package/js/Private/impl/IAgoraMediaPlayerSourceImpl.d.ts +0 -2
  232. package/js/Private/impl/IAgoraMediaRecorderImpl.d.ts +0 -10
  233. package/js/Private/impl/IAgoraMusicContentCenterImpl.d.ts +0 -58
  234. package/js/Private/impl/IAgoraRtcEngineExImpl.d.ts +0 -105
  235. package/js/Private/impl/IAgoraRtcEngineImpl.d.ts +0 -570
  236. package/js/Private/impl/IAgoraSpatialAudioImpl.d.ts +0 -48
  237. package/js/Private/impl/IAudioDeviceManagerImpl.d.ts +0 -64
  238. package/js/Private/internal/AudioDeviceManagerInternal.d.ts +0 -8
  239. package/js/Private/internal/IrisApiEngine.d.ts +0 -147
  240. package/js/Private/internal/LocalSpatialAudioEngineInternal.d.ts +0 -18
  241. package/js/Private/internal/MediaEngineInternal.d.ts +0 -21
  242. package/js/Private/internal/MediaPlayerInternal.d.ts +0 -33
  243. package/js/Private/internal/MediaRecorderInternal.d.ts +0 -17
  244. package/js/Private/internal/MusicContentCenterInternal.d.ts +0 -39
  245. package/js/Private/internal/RtcEngineExInternal.d.ts +0 -80
  246. package/js/Private/ti/AgoraBase-ti.d.ts +0 -7
  247. package/js/Private/ti/AgoraMediaBase-ti.d.ts +0 -13
  248. package/js/Private/ti/AgoraMediaPlayerTypes-ti.d.ts +0 -6
  249. package/js/Private/ti/IAgoraLog-ti.d.ts +0 -6
  250. package/js/Private/ti/IAgoraMediaEngine-ti.d.ts +0 -6
  251. package/js/Private/ti/IAgoraMediaPlayer-ti.d.ts +0 -7
  252. package/js/Private/ti/IAgoraMediaPlayerSource-ti.d.ts +0 -7
  253. package/js/Private/ti/IAgoraMediaRecorder-ti.d.ts +0 -6
  254. package/js/Private/ti/IAgoraMediaStreamingSource-ti.d.ts +0 -6
  255. package/js/Private/ti/IAgoraMusicContentCenter-ti.d.ts +0 -7
  256. package/js/Private/ti/IAgoraRhythmPlayer-ti.d.ts +0 -6
  257. package/js/Private/ti/IAgoraRtcEngine-ti.d.ts +0 -9
  258. package/js/Private/ti/IAgoraRtcEngineEx-ti.d.ts +0 -6
  259. package/js/Private/ti/IAgoraSpatialAudio-ti.d.ts +0 -6
  260. package/js/Private/ti/IAudioDeviceManager-ti.d.ts +0 -6
  261. package/js/Renderer/AgoraView.d.ts +0 -69
  262. package/js/Renderer/GlRenderer/index.d.ts +0 -59
  263. package/js/Renderer/GlRenderer/webgl-utils.d.ts +0 -0
  264. package/js/Renderer/IRenderer.d.ts +0 -21
  265. package/js/Renderer/RendererManager.d.ts +0 -152
  266. package/js/Renderer/YUVCanvasRenderer/index.d.ts +0 -16
  267. package/js/Types.d.ts +0 -271
  268. package/js/Utils.d.ts +0 -58
  269. /package/js/Renderer/{GlRenderer → WebGLRenderer}/webgl-utils.js +0 -0
  270. /package/ts/Renderer/{GlRenderer → WebGLRenderer}/webgl-utils.js +0 -0
@@ -531,6 +531,90 @@ export class IMediaPlayerImpl implements IMediaPlayer {
531
531
  return 'MediaPlayer_unregisterPlayerSourceObserver';
532
532
  }
533
533
 
534
+ registerAudioFrameObserver(
535
+ observer: IAudioPcmFrameSink,
536
+ mode: RawAudioFrameOpModeType = RawAudioFrameOpModeType.RawAudioFrameOpModeReadOnly
537
+ ): number {
538
+ const apiType = this.getApiTypeFromRegisterAudioFrameObserver(
539
+ observer,
540
+ mode
541
+ );
542
+ const jsonParams = {
543
+ observer: observer,
544
+ mode: mode,
545
+ toJSON: () => {
546
+ return {
547
+ mode: mode,
548
+ };
549
+ },
550
+ };
551
+ const jsonResults = callIrisApi.call(this, apiType, jsonParams);
552
+ return jsonResults.result;
553
+ }
554
+
555
+ protected getApiTypeFromRegisterAudioFrameObserver(
556
+ observer: IAudioPcmFrameSink,
557
+ mode: RawAudioFrameOpModeType = RawAudioFrameOpModeType.RawAudioFrameOpModeReadOnly
558
+ ): string {
559
+ return 'MediaPlayer_registerAudioFrameObserver';
560
+ }
561
+
562
+ unregisterAudioFrameObserver(observer: IAudioPcmFrameSink): number {
563
+ const apiType = this.getApiTypeFromUnregisterAudioFrameObserver(observer);
564
+ const jsonParams = {
565
+ observer: observer,
566
+ toJSON: () => {
567
+ return {};
568
+ },
569
+ };
570
+ const jsonResults = callIrisApi.call(this, apiType, jsonParams);
571
+ return jsonResults.result;
572
+ }
573
+
574
+ protected getApiTypeFromUnregisterAudioFrameObserver(
575
+ observer: IAudioPcmFrameSink
576
+ ): string {
577
+ return 'MediaPlayer_unregisterAudioFrameObserver';
578
+ }
579
+
580
+ registerVideoFrameObserver(observer: IMediaPlayerVideoFrameObserver): number {
581
+ const apiType = this.getApiTypeFromRegisterVideoFrameObserver(observer);
582
+ const jsonParams = {
583
+ observer: observer,
584
+ toJSON: () => {
585
+ return {};
586
+ },
587
+ };
588
+ const jsonResults = callIrisApi.call(this, apiType, jsonParams);
589
+ return jsonResults.result;
590
+ }
591
+
592
+ protected getApiTypeFromRegisterVideoFrameObserver(
593
+ observer: IMediaPlayerVideoFrameObserver
594
+ ): string {
595
+ return 'MediaPlayer_registerVideoFrameObserver';
596
+ }
597
+
598
+ unregisterVideoFrameObserver(
599
+ observer: IMediaPlayerVideoFrameObserver
600
+ ): number {
601
+ const apiType = this.getApiTypeFromUnregisterVideoFrameObserver(observer);
602
+ const jsonParams = {
603
+ observer: observer,
604
+ toJSON: () => {
605
+ return {};
606
+ },
607
+ };
608
+ const jsonResults = callIrisApi.call(this, apiType, jsonParams);
609
+ return jsonResults.result;
610
+ }
611
+
612
+ protected getApiTypeFromUnregisterVideoFrameObserver(
613
+ observer: IMediaPlayerVideoFrameObserver
614
+ ): string {
615
+ return 'MediaPlayer_unregisterVideoFrameObserver';
616
+ }
617
+
534
618
  registerMediaPlayerAudioSpectrumObserver(
535
619
  observer: IAudioSpectrumObserver,
536
620
  intervalInMS: number
@@ -870,90 +954,6 @@ export class IMediaPlayerImpl implements IMediaPlayer {
870
954
  ): string {
871
955
  return 'MediaPlayer_setSoundPositionParams';
872
956
  }
873
-
874
- registerAudioFrameObserver(
875
- observer: IAudioPcmFrameSink,
876
- mode: RawAudioFrameOpModeType = RawAudioFrameOpModeType.RawAudioFrameOpModeReadOnly
877
- ): number {
878
- const apiType = this.getApiTypeFromRegisterAudioFrameObserver(
879
- observer,
880
- mode
881
- );
882
- const jsonParams = {
883
- observer: observer,
884
- mode: mode,
885
- toJSON: () => {
886
- return {
887
- mode: mode,
888
- };
889
- },
890
- };
891
- const jsonResults = callIrisApi.call(this, apiType, jsonParams);
892
- return jsonResults.result;
893
- }
894
-
895
- protected getApiTypeFromRegisterAudioFrameObserver(
896
- observer: IAudioPcmFrameSink,
897
- mode: RawAudioFrameOpModeType = RawAudioFrameOpModeType.RawAudioFrameOpModeReadOnly
898
- ): string {
899
- return 'MediaPlayer_registerAudioFrameObserver';
900
- }
901
-
902
- unregisterAudioFrameObserver(observer: IAudioPcmFrameSink): number {
903
- const apiType = this.getApiTypeFromUnregisterAudioFrameObserver(observer);
904
- const jsonParams = {
905
- observer: observer,
906
- toJSON: () => {
907
- return {};
908
- },
909
- };
910
- const jsonResults = callIrisApi.call(this, apiType, jsonParams);
911
- return jsonResults.result;
912
- }
913
-
914
- protected getApiTypeFromUnregisterAudioFrameObserver(
915
- observer: IAudioPcmFrameSink
916
- ): string {
917
- return 'MediaPlayer_unregisterAudioFrameObserver';
918
- }
919
-
920
- registerVideoFrameObserver(observer: IMediaPlayerVideoFrameObserver): number {
921
- const apiType = this.getApiTypeFromRegisterVideoFrameObserver(observer);
922
- const jsonParams = {
923
- observer: observer,
924
- toJSON: () => {
925
- return {};
926
- },
927
- };
928
- const jsonResults = callIrisApi.call(this, apiType, jsonParams);
929
- return jsonResults.result;
930
- }
931
-
932
- protected getApiTypeFromRegisterVideoFrameObserver(
933
- observer: IMediaPlayerVideoFrameObserver
934
- ): string {
935
- return 'MediaPlayer_registerVideoFrameObserver';
936
- }
937
-
938
- unregisterVideoFrameObserver(
939
- observer: IMediaPlayerVideoFrameObserver
940
- ): number {
941
- const apiType = this.getApiTypeFromUnregisterVideoFrameObserver(observer);
942
- const jsonParams = {
943
- observer: observer,
944
- toJSON: () => {
945
- return {};
946
- },
947
- };
948
- const jsonResults = callIrisApi.call(this, apiType, jsonParams);
949
- return jsonResults.result;
950
- }
951
-
952
- protected getApiTypeFromUnregisterVideoFrameObserver(
953
- observer: IMediaPlayerVideoFrameObserver
954
- ): string {
955
- return 'MediaPlayer_unregisterVideoFrameObserver';
956
- }
957
957
  }
958
958
 
959
959
  // @ts-ignore
@@ -5009,11 +5009,11 @@ export class IRtcEngineImpl implements IRtcEngine {
5009
5009
  return 'RtcEngine_startScreenCapture';
5010
5010
  }
5011
5011
 
5012
- startScreenCaptureDesktop(
5012
+ startScreenCaptureBySourceType(
5013
5013
  sourceType: VideoSourceType,
5014
5014
  config: ScreenCaptureConfiguration
5015
5015
  ): number {
5016
- const apiType = this.getApiTypeFromStartScreenCaptureDesktop(
5016
+ const apiType = this.getApiTypeFromStartScreenCaptureBySourceType(
5017
5017
  sourceType,
5018
5018
  config
5019
5019
  );
@@ -5031,11 +5031,11 @@ export class IRtcEngineImpl implements IRtcEngine {
5031
5031
  return jsonResults.result;
5032
5032
  }
5033
5033
 
5034
- protected getApiTypeFromStartScreenCaptureDesktop(
5034
+ protected getApiTypeFromStartScreenCaptureBySourceType(
5035
5035
  sourceType: VideoSourceType,
5036
5036
  config: ScreenCaptureConfiguration
5037
5037
  ): string {
5038
- return 'RtcEngine_startScreenCaptureDesktop';
5038
+ return 'RtcEngine_startScreenCaptureBySourceType';
5039
5039
  }
5040
5040
 
5041
5041
  updateScreenCapture(captureParams: ScreenCaptureParameters2): number {
@@ -5089,10 +5089,20 @@ export class IRtcEngineImpl implements IRtcEngine {
5089
5089
  return 'RtcEngine_setScreenCaptureScenario';
5090
5090
  }
5091
5091
 
5092
- stopScreenCapture(
5093
- sourceType: VideoSourceType = VideoSourceType.VideoSourceScreenPrimary
5094
- ): number {
5095
- const apiType = this.getApiTypeFromStopScreenCapture(sourceType);
5092
+ stopScreenCapture(): number {
5093
+ const apiType = this.getApiTypeFromStopScreenCapture();
5094
+ const jsonParams = {};
5095
+ const jsonResults = callIrisApi.call(this, apiType, jsonParams);
5096
+ return jsonResults.result;
5097
+ }
5098
+
5099
+ protected getApiTypeFromStopScreenCapture(): string {
5100
+ return 'RtcEngine_stopScreenCapture';
5101
+ }
5102
+
5103
+ stopScreenCaptureBySourceType(sourceType: VideoSourceType): number {
5104
+ const apiType =
5105
+ this.getApiTypeFromStopScreenCaptureBySourceType(sourceType);
5096
5106
  const jsonParams = {
5097
5107
  sourceType: sourceType,
5098
5108
  toJSON: () => {
@@ -5105,10 +5115,10 @@ export class IRtcEngineImpl implements IRtcEngine {
5105
5115
  return jsonResults.result;
5106
5116
  }
5107
5117
 
5108
- protected getApiTypeFromStopScreenCapture(
5109
- sourceType: VideoSourceType = VideoSourceType.VideoSourceScreenPrimary
5118
+ protected getApiTypeFromStopScreenCaptureBySourceType(
5119
+ sourceType: VideoSourceType
5110
5120
  ): string {
5111
- return 'RtcEngine_stopScreenCapture';
5121
+ return 'RtcEngine_stopScreenCaptureBySourceType';
5112
5122
  }
5113
5123
 
5114
5124
  getCallId(): string {
@@ -6593,65 +6603,15 @@ export class IRtcEngineImpl implements IRtcEngine {
6593
6603
  return 'RtcEngine_enableInstantMediaRendering';
6594
6604
  }
6595
6605
 
6596
- getNtpTimeInMs(): number {
6597
- const apiType = this.getApiTypeFromGetNtpTimeInMs();
6606
+ getNtpWallTimeInMs(): number {
6607
+ const apiType = this.getApiTypeFromGetNtpWallTimeInMs();
6598
6608
  const jsonParams = {};
6599
6609
  const jsonResults = callIrisApi.call(this, apiType, jsonParams);
6600
6610
  return jsonResults.result;
6601
6611
  }
6602
6612
 
6603
- protected getApiTypeFromGetNtpTimeInMs(): string {
6604
- return 'RtcEngine_getNtpTimeInMs';
6605
- }
6606
-
6607
- destroyRendererByView(view: any): void {
6608
- const apiType = this.getApiTypeFromDestroyRendererByView(view);
6609
- const jsonParams = {
6610
- view: view,
6611
- toJSON: () => {
6612
- return {
6613
- view: view,
6614
- };
6615
- },
6616
- };
6617
- callIrisApi.call(this, apiType, jsonParams);
6618
- }
6619
-
6620
- protected getApiTypeFromDestroyRendererByView(view: any): string {
6621
- return 'RtcEngine_destroyRendererByView';
6622
- }
6623
-
6624
- destroyRendererByConfig(
6625
- sourceType: VideoSourceType,
6626
- channelId?: string,
6627
- uid: number = 0
6628
- ): void {
6629
- const apiType = this.getApiTypeFromDestroyRendererByConfig(
6630
- sourceType,
6631
- channelId,
6632
- uid
6633
- );
6634
- const jsonParams = {
6635
- sourceType: sourceType,
6636
- channelId: channelId,
6637
- uid: uid,
6638
- toJSON: () => {
6639
- return {
6640
- sourceType: sourceType,
6641
- channelId: channelId,
6642
- uid: uid,
6643
- };
6644
- },
6645
- };
6646
- callIrisApi.call(this, apiType, jsonParams);
6647
- }
6648
-
6649
- protected getApiTypeFromDestroyRendererByConfig(
6650
- sourceType: VideoSourceType,
6651
- channelId?: string,
6652
- uid: number = 0
6653
- ): string {
6654
- return 'RtcEngine_destroyRendererByConfig';
6613
+ protected getApiTypeFromGetNtpWallTimeInMs(): string {
6614
+ return 'RtcEngine_getNtpWallTimeInMs';
6655
6615
  }
6656
6616
 
6657
6617
  getAudioDeviceManager(): IAudioDeviceManager {
@@ -6750,6 +6710,56 @@ export class IRtcEngineImpl implements IRtcEngine {
6750
6710
  return 'RtcEngine_setMaxMetadataSize';
6751
6711
  }
6752
6712
 
6713
+ destroyRendererByView(view: any): void {
6714
+ const apiType = this.getApiTypeFromDestroyRendererByView(view);
6715
+ const jsonParams = {
6716
+ view: view,
6717
+ toJSON: () => {
6718
+ return {
6719
+ view: view,
6720
+ };
6721
+ },
6722
+ };
6723
+ callIrisApi.call(this, apiType, jsonParams);
6724
+ }
6725
+
6726
+ protected getApiTypeFromDestroyRendererByView(view: any): string {
6727
+ return 'RtcEngine_destroyRendererByView';
6728
+ }
6729
+
6730
+ destroyRendererByConfig(
6731
+ sourceType: VideoSourceType,
6732
+ channelId?: string,
6733
+ uid: number = 0
6734
+ ): void {
6735
+ const apiType = this.getApiTypeFromDestroyRendererByConfig(
6736
+ sourceType,
6737
+ channelId,
6738
+ uid
6739
+ );
6740
+ const jsonParams = {
6741
+ sourceType: sourceType,
6742
+ channelId: channelId,
6743
+ uid: uid,
6744
+ toJSON: () => {
6745
+ return {
6746
+ sourceType: sourceType,
6747
+ channelId: channelId,
6748
+ uid: uid,
6749
+ };
6750
+ },
6751
+ };
6752
+ callIrisApi.call(this, apiType, jsonParams);
6753
+ }
6754
+
6755
+ protected getApiTypeFromDestroyRendererByConfig(
6756
+ sourceType: VideoSourceType,
6757
+ channelId?: string,
6758
+ uid: number = 0
6759
+ ): string {
6760
+ return 'RtcEngine_destroyRendererByConfig';
6761
+ }
6762
+
6753
6763
  unregisterAudioEncodedFrameObserver(
6754
6764
  observer: IAudioEncodedFrameObserver
6755
6765
  ): number {
@@ -317,7 +317,6 @@ function handleEvent(...[event, data, buffers]: any) {
317
317
  let processor: EventProcessor = EVENT_PROCESSORS.IRtcEngineEventHandler;
318
318
 
319
319
  Object.values(EVENT_PROCESSORS).some((it) => {
320
- // @ts-ignore
321
320
  const p = it as EventProcessor;
322
321
  if (
323
322
  _event.startsWith(p.suffix) &&
@@ -421,7 +420,6 @@ export function callIrisApi(funcName: string, params: any): any {
421
420
  buffers.push(params.data);
422
421
  break;
423
422
  case 'RtcEngine_destroyMediaPlayer':
424
- // @ts-ignore
425
423
  params.mediaPlayerId = params.media_player.getMediaPlayerId();
426
424
  params.toJSON = function () {
427
425
  return { playerId: params.mediaPlayerId };
@@ -1,6 +1,5 @@
1
1
  import { createCheckers } from 'ts-interface-checker';
2
2
 
3
- import { RendererManager } from '../../Renderer/RendererManager';
4
3
  import { Channel } from '../../Types';
5
4
  import { AgoraEnv } from '../../Utils';
6
5
 
@@ -61,11 +60,6 @@ import {
61
60
  import AgoraBaseTI from '../ti/AgoraBase-ti';
62
61
  import AgoraMediaBaseTI from '../ti/AgoraMediaBase-ti';
63
62
  import IAgoraRtcEngineTI from '../ti/IAgoraRtcEngine-ti';
64
- const checkers = createCheckers(
65
- AgoraBaseTI,
66
- AgoraMediaBaseTI,
67
- IAgoraRtcEngineTI
68
- );
69
63
 
70
64
  import { AudioDeviceManagerInternal } from './AudioDeviceManagerInternal';
71
65
  import { DeviceEventEmitter, EVENT_TYPE, callIrisApi } from './IrisApiEngine';
@@ -76,6 +70,12 @@ import { MediaRecorderInternal } from './MediaRecorderInternal';
76
70
  import { MusicContentCenterInternal } from './MusicContentCenterInternal';
77
71
  import type { EmitterSubscription } from './emitter/EventEmitter';
78
72
 
73
+ const checkers = createCheckers(
74
+ AgoraBaseTI,
75
+ AgoraMediaBaseTI,
76
+ IAgoraRtcEngineTI
77
+ );
78
+
79
79
  export class RtcEngineExInternal extends IRtcEngineExImpl {
80
80
  static _event_handlers: IRtcEngineEventHandler[] = [];
81
81
  static _direct_cdn_streaming_event_handler: IDirectCdnStreamingEventHandler[] =
@@ -107,8 +107,11 @@ export class RtcEngineExInternal extends IRtcEngineExImpl {
107
107
  >();
108
108
 
109
109
  initialize(context: RtcEngineContext): number {
110
- AgoraEnv.AgoraRendererManager = new RendererManager();
111
- AgoraEnv.AgoraRendererManager.enableRender();
110
+ if (AgoraEnv.webEnvReady) {
111
+ const { RendererManager } = require('../../Renderer/RendererManager');
112
+ AgoraEnv.AgoraRendererManager = new RendererManager();
113
+ }
114
+ AgoraEnv.AgoraRendererManager?.enableRender();
112
115
  const ret = super.initialize(context);
113
116
  callIrisApi.call(this, 'RtcEngine_setAppType', {
114
117
  appType: 3,
@@ -117,6 +120,7 @@ export class RtcEngineExInternal extends IRtcEngineExImpl {
117
120
  }
118
121
 
119
122
  release(sync: boolean = false) {
123
+ AgoraEnv.AgoraElectronBridge.ReleaseRenderer();
120
124
  AgoraEnv.AgoraRendererManager?.clear();
121
125
  AgoraEnv.AgoraRendererManager = undefined;
122
126
  this._audio_device_manager.release();
@@ -478,15 +482,15 @@ export class RtcEngineExInternal extends IRtcEngineExImpl {
478
482
  return 'RtcEngineEx_createDataStreamEx2';
479
483
  }
480
484
 
481
- protected getApiTypeFromStartScreenCaptureDesktop(
485
+ protected getApiTypeFromStartScreenCaptureBySourceType(
482
486
  sourceType: VideoSourceType,
483
487
  config: ScreenCaptureConfiguration
484
488
  ): string {
485
489
  return 'RtcEngine_startScreenCapture2';
486
490
  }
487
491
 
488
- protected getApiTypeFromStopScreenCapture(
489
- sourceType: VideoSourceType = VideoSourceType.VideoSourceScreenPrimary
492
+ protected getApiTypeFromStopScreenCaptureBySourceType(
493
+ sourceType: VideoSourceType
490
494
  ): string {
491
495
  return 'RtcEngine_stopScreenCapture2';
492
496
  }
@@ -583,13 +587,20 @@ export class RtcEngineExInternal extends IRtcEngineExImpl {
583
587
  }
584
588
 
585
589
  setupLocalVideo(canvas: VideoCanvas): number {
586
- const {
590
+ let {
587
591
  sourceType = VideoSourceType.VideoSourceCamera,
588
592
  uid,
593
+ mediaPlayerId,
589
594
  view,
590
595
  renderMode,
591
596
  mirrorMode,
592
597
  } = canvas;
598
+ if (
599
+ sourceType === VideoSourceType.VideoSourceMediaPlayer &&
600
+ mediaPlayerId !== undefined
601
+ ) {
602
+ uid = mediaPlayerId;
603
+ }
593
604
  return (
594
605
  AgoraEnv.AgoraRendererManager?.setupLocalVideo({
595
606
  videoSourceType: sourceType,
@@ -82,6 +82,7 @@ export default class AgoraView extends HTMLElement {
82
82
  this.removeAttribute(VIDEO_SOURCE_TYPE_STRING);
83
83
  }
84
84
  }
85
+
85
86
  get uid(): number {
86
87
  const number = Number(this.getAttribute(UID_STRING));
87
88
  return isNaN(number) ? 0 : number;
@@ -8,32 +8,30 @@ export type RenderFailCallback =
8
8
  | undefined
9
9
  | null;
10
10
 
11
- export class IRenderer {
11
+ export abstract class IRenderer {
12
12
  parentElement?: HTMLElement;
13
13
  canvas?: HTMLCanvasElement;
14
14
  event?: EventEmitter;
15
15
  contentMode = RenderModeType.RenderModeFit;
16
16
  mirror?: boolean;
17
17
 
18
- snapshot(fileType = 'image/png') {
18
+ public snapshot(fileType = 'image/png') {
19
19
  if (this.canvas && this.canvas.toDataURL) {
20
20
  return this.canvas.toDataURL(fileType);
21
21
  }
22
22
  return null;
23
23
  }
24
24
 
25
- bind(element: HTMLElement) {
25
+ public bind(element: HTMLElement) {
26
26
  if (!element) {
27
27
  throw new Error('You have pass a element');
28
28
  }
29
29
  this.parentElement = element;
30
30
  }
31
31
 
32
- unbind() {
33
- throw new Error('You have to declare your own custom render');
34
- }
32
+ abstract unbind(): void;
35
33
 
36
- equalsElement(element: Element): boolean {
34
+ public equalsElement(element: Element): boolean {
37
35
  if (!element) {
38
36
  throw new Error('You have pass a element');
39
37
  }
@@ -43,11 +41,9 @@ export class IRenderer {
43
41
  return element === this.parentElement;
44
42
  }
45
43
 
46
- drawFrame(imageData: ShareVideoFrame) {
47
- throw new Error('You have to declare your own custom render');
48
- }
44
+ abstract drawFrame(imageData: ShareVideoFrame): void;
49
45
 
50
- setRenderOption({ contentMode, mirror }: RendererOptions) {
46
+ public setRenderOption({ contentMode, mirror }: RendererOptions) {
51
47
  this.contentMode = contentMode ?? RenderModeType.RenderModeFit;
52
48
  this.mirror = mirror;
53
49
  Object.assign(this.parentElement!.style, {
@@ -55,7 +51,5 @@ export class IRenderer {
55
51
  });
56
52
  }
57
53
 
58
- refreshCanvas() {
59
- throw new Error('You have to declare your own custom render');
60
- }
54
+ abstract refreshCanvas(): void;
61
55
  }
@@ -0,0 +1,35 @@
1
+ import { RenderModeType, VideoSourceType } from '../Private/AgoraMediaBase';
2
+ import { Channel, RendererVideoConfig } from '../Types';
3
+
4
+ /**
5
+ * @ignore
6
+ */
7
+ export abstract class IRendererManager {
8
+ abstract get defaultRenderConfig(): RendererVideoConfig;
9
+
10
+ abstract enableRender(enabled?: boolean): void;
11
+
12
+ abstract clear(): void;
13
+
14
+ abstract setupVideo(rendererVideoConfig: RendererVideoConfig): number;
15
+
16
+ abstract setupLocalVideo(rendererConfig: RendererVideoConfig): number;
17
+
18
+ abstract setupRemoteVideo(rendererConfig: RendererVideoConfig): number;
19
+
20
+ abstract setRenderOptionByConfig(rendererConfig: RendererVideoConfig): number;
21
+
22
+ abstract destroyRendererByView(view: Element): void;
23
+
24
+ abstract destroyRenderersByConfig(
25
+ videoSourceType: VideoSourceType,
26
+ channelId?: Channel,
27
+ uid?: number
28
+ ): void;
29
+
30
+ abstract setRenderOption(
31
+ view: HTMLElement,
32
+ contentMode?: RenderModeType,
33
+ mirror?: boolean
34
+ ): void;
35
+ }
@@ -23,14 +23,15 @@ import {
23
23
  logWarn,
24
24
  } from '../Utils';
25
25
 
26
- import GlRenderer from './GlRenderer';
27
26
  import { IRenderer, RenderFailCallback } from './IRenderer';
27
+ import { IRendererManager } from './IRendererManager';
28
+ import WebGLRenderer from './WebGLRenderer';
28
29
  import { YUVCanvasRenderer } from './YUVCanvasRenderer';
29
30
 
30
31
  /**
31
32
  * @ignore
32
33
  */
33
- export class RendererManager {
34
+ export class RendererManager extends IRendererManager {
34
35
  /**
35
36
  * @ignore
36
37
  */
@@ -58,6 +59,7 @@ export class RendererManager {
58
59
  defaultRenderConfig: RendererVideoConfig;
59
60
 
60
61
  constructor() {
62
+ super();
61
63
  this.renderFps = 10;
62
64
  this.renderers = new Map();
63
65
  this.renderMode = this.checkWebglEnv()
@@ -183,7 +185,7 @@ export class RendererManager {
183
185
  const render = this.bindHTMLElementToRender(formatConfig, view!);
184
186
 
185
187
  // render config
186
- render.setRenderOption(rendererOptions);
188
+ render?.setRenderOption(rendererOptions);
187
189
 
188
190
  // enable iris videoFrame
189
191
  this.enableVideoFrameCache({
@@ -305,7 +307,6 @@ export class RendererManager {
305
307
  * @ignore
306
308
  */
307
309
  public clear(): void {
308
- AgoraEnv.AgoraElectronBridge.ReleaseRenderer();
309
310
  this.stopRender();
310
311
  this.removeAllRenderer();
311
312
  }
@@ -423,7 +424,7 @@ export class RendererManager {
423
424
  if (this.renderMode === RENDER_MODE.SOFTWARE) {
424
425
  return new YUVCanvasRenderer();
425
426
  } else {
426
- return new GlRenderer(failCallback);
427
+ return new WebGLRenderer(failCallback);
427
428
  }
428
429
  }
429
430
 
@@ -458,7 +459,7 @@ export class RendererManager {
458
459
  private bindHTMLElementToRender(
459
460
  config: FormatRendererVideoConfig,
460
461
  view: HTMLElement
461
- ): IRenderer {
462
+ ): IRenderer | undefined {
462
463
  this.ensureRendererConfig(config);
463
464
  const renders = this.getRenderers(config);
464
465
  const filterRenders =
@@ -611,14 +612,13 @@ export class RendererManager {
611
612
  /**
612
613
  * @ignore
613
614
  */
614
- private updateVideoFrameCacheInMap(
615
+ public updateVideoFrameCacheInMap(
615
616
  config: VideoFrameCacheConfig,
616
617
  shareVideoFrame: ShareVideoFrame
617
618
  ): void {
618
619
  let rendererConfigMap = this.ensureRendererConfig(config);
619
620
  rendererConfigMap
620
- ? // @ts-ignore
621
- Object.assign(rendererConfigMap.get(config.uid), {
621
+ ? Object.assign(rendererConfigMap.get(config.uid) ?? {}, {
622
622
  shareVideoFrame,
623
623
  })
624
624
  : logWarn(