agora-electron-sdk 4.1.1-rc.1 → 4.2.0-dev.13

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 (358) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +143 -143
  3. package/gulpfile.js +5 -4
  4. package/js/AgoraSdk.js +62 -60
  5. package/js/Private/AgoraBase.js +4575 -3269
  6. package/js/Private/AgoraMediaBase.js +968 -564
  7. package/js/Private/AgoraMediaPlayerTypes.js +422 -310
  8. package/js/Private/IAgoraLog.js +86 -74
  9. package/js/Private/IAgoraMediaEngine.js +32 -32
  10. package/js/Private/IAgoraMediaPlayer.js +16 -16
  11. package/js/Private/IAgoraMediaPlayerSource.js +3 -3
  12. package/js/Private/IAgoraMediaRecorder.js +12 -12
  13. package/js/Private/IAgoraMediaStreamingSource.js +84 -0
  14. package/js/Private/IAgoraMusicContentCenter.js +239 -81
  15. package/js/Private/IAgoraRhythmPlayer.js +70 -62
  16. package/js/Private/IAgoraRtcEngine.js +1807 -948
  17. package/js/Private/IAgoraRtcEngineEx.js +26 -18
  18. package/js/Private/IAgoraSpatialAudio.js +74 -30
  19. package/js/Private/IAudioDeviceManager.js +20 -20
  20. package/js/Private/extension/AgoraBaseExtension.js +2 -2
  21. package/js/Private/extension/AgoraMediaBaseExtension.js +2 -2
  22. package/js/Private/extension/AgoraMediaPlayerTypesExtension.js +2 -2
  23. package/js/Private/extension/IAgoraLogExtension.js +2 -2
  24. package/js/Private/extension/IAgoraMediaEngineExtension.js +2 -2
  25. package/js/Private/extension/IAgoraMediaPlayerExtension.js +2 -2
  26. package/js/Private/extension/IAgoraMediaPlayerSourceExtension.js +2 -2
  27. package/js/Private/extension/IAgoraMediaRecorderExtension.js +2 -2
  28. package/js/Private/extension/IAgoraMusicContentCenterExtension.js +2 -2
  29. package/js/Private/extension/IAgoraRhythmPlayerExtension.js +2 -2
  30. package/js/Private/extension/IAgoraRtcEngineExExtension.js +2 -2
  31. package/js/Private/extension/IAgoraRtcEngineExtension.js +2 -2
  32. package/js/Private/extension/IAgoraSpatialAudioExtension.js +2 -2
  33. package/js/Private/extension/IAudioDeviceManagerExtension.js +2 -2
  34. package/js/Private/impl/AgoraBaseImpl.js +23 -23
  35. package/js/Private/impl/AgoraMediaBaseImpl.js +118 -138
  36. package/js/Private/impl/IAgoraMediaEngineImpl.js +287 -325
  37. package/js/Private/impl/IAgoraMediaPlayerImpl.js +932 -938
  38. package/js/Private/impl/IAgoraMediaPlayerSourceImpl.js +63 -63
  39. package/js/Private/impl/IAgoraMediaRecorderImpl.js +47 -67
  40. package/js/Private/impl/IAgoraMusicContentCenterImpl.js +353 -323
  41. package/js/Private/impl/IAgoraRtcEngineExImpl.js +945 -907
  42. package/js/Private/impl/IAgoraRtcEngineImpl.js +4742 -4702
  43. package/js/Private/impl/IAgoraSpatialAudioImpl.js +362 -362
  44. package/js/Private/impl/IAudioDeviceManagerImpl.js +375 -375
  45. package/js/Private/internal/AudioDeviceManagerInternal.js +44 -44
  46. package/js/Private/internal/IrisApiEngine.js +391 -382
  47. package/js/Private/internal/LocalSpatialAudioEngineInternal.js +46 -46
  48. package/js/Private/internal/MediaEngineInternal.js +119 -123
  49. package/js/Private/internal/MediaPlayerInternal.js +215 -213
  50. package/js/Private/internal/MediaRecorderInternal.js +82 -81
  51. package/js/Private/internal/MusicContentCenterInternal.js +128 -130
  52. package/js/Private/internal/RtcEngineExInternal.js +422 -363
  53. package/js/Private/internal/emitter/EventEmitter.js +111 -111
  54. package/js/Private/ti/AgoraBase-ti.js +40 -40
  55. package/js/Private/ti/AgoraMediaBase-ti.js +71 -73
  56. package/js/Private/ti/AgoraMediaPlayerTypes-ti.js +5 -5
  57. package/js/Private/ti/IAgoraLog-ti.js +5 -5
  58. package/js/Private/ti/IAgoraMediaEngine-ti.js +5 -5
  59. package/js/Private/ti/IAgoraMediaPlayer-ti.js +38 -42
  60. package/js/Private/ti/IAgoraMediaPlayerSource-ti.js +48 -48
  61. package/js/Private/ti/IAgoraMediaRecorder-ti.js +5 -5
  62. package/js/Private/ti/IAgoraMediaStreamingSource-ti.js +5 -0
  63. package/js/Private/ti/IAgoraMusicContentCenter-ti.js +41 -41
  64. package/js/Private/ti/IAgoraRhythmPlayer-ti.js +5 -5
  65. package/js/Private/ti/IAgoraRtcEngine-ti.js +139 -139
  66. package/js/Private/ti/IAgoraRtcEngineEx-ti.js +5 -5
  67. package/js/Private/ti/IAgoraSpatialAudio-ti.js +5 -5
  68. package/js/Private/ti/IAudioDeviceManager-ti.js +5 -5
  69. package/js/Renderer/AgoraView.js +128 -131
  70. package/js/Renderer/IRenderer.js +40 -48
  71. package/js/Renderer/IRendererManager.js +9 -0
  72. package/js/Renderer/RendererManager.js +479 -392
  73. package/js/Renderer/{GlRenderer → WebGLRenderer}/index.js +469 -473
  74. package/js/Renderer/{GlRenderer → WebGLRenderer}/webgl-utils.js +1337 -1337
  75. package/js/Renderer/YUVCanvasRenderer/index.js +195 -185
  76. package/js/Renderer/index.js +18 -0
  77. package/js/Types.js +17 -29
  78. package/js/Utils.js +168 -173
  79. package/package.json +61 -103
  80. package/scripts/bootstrap.js +1 -1
  81. package/scripts/build.js +1 -0
  82. package/scripts/buildJS.js +3 -3
  83. package/scripts/clean.js +2 -1
  84. package/scripts/downloadPrebuild.js +5 -5
  85. package/scripts/getConfig.js +3 -2
  86. package/scripts/synclib.js +8 -5
  87. package/scripts/util.js +3 -2
  88. package/scripts/zipBuild.js +2 -1
  89. package/ts/AgoraSdk.ts +9 -6
  90. package/ts/Private/AgoraBase.ts +278 -173
  91. package/ts/Private/AgoraMediaBase.ts +167 -100
  92. package/ts/Private/AgoraMediaPlayerTypes.ts +1 -1
  93. package/ts/Private/IAgoraMediaEngine.ts +43 -56
  94. package/ts/Private/IAgoraMediaPlayer.ts +90 -104
  95. package/ts/Private/IAgoraMediaPlayerSource.ts +3 -8
  96. package/ts/Private/IAgoraMediaRecorder.ts +8 -35
  97. package/ts/Private/IAgoraMediaStreamingSource.ts +80 -0
  98. package/ts/Private/IAgoraMusicContentCenter.ts +93 -12
  99. package/ts/Private/IAgoraRtcEngine.ts +807 -910
  100. package/ts/Private/IAgoraRtcEngineEx.ts +187 -191
  101. package/ts/Private/IAgoraSpatialAudio.ts +40 -22
  102. package/ts/Private/IAudioDeviceManager.ts +35 -13
  103. package/ts/Private/extension/IAgoraMediaEngineExtension.ts +1 -1
  104. package/ts/Private/extension/IAgoraMediaPlayerExtension.ts +4 -7
  105. package/ts/Private/extension/IAgoraMediaRecorderExtension.ts +6 -1
  106. package/ts/Private/extension/IAgoraMusicContentCenterExtension.ts +1 -1
  107. package/ts/Private/extension/IAgoraRtcEngineExtension.ts +4 -4
  108. package/ts/Private/impl/AgoraBaseImpl.ts +3 -3
  109. package/ts/Private/impl/AgoraMediaBaseImpl.ts +36 -42
  110. package/ts/Private/impl/IAgoraMediaEngineImpl.ts +79 -127
  111. package/ts/Private/impl/IAgoraMediaPlayerImpl.ts +106 -106
  112. package/ts/Private/impl/IAgoraMediaRecorderImpl.ts +13 -45
  113. package/ts/Private/impl/IAgoraMusicContentCenterImpl.ts +61 -16
  114. package/ts/Private/impl/IAgoraRtcEngineExImpl.ts +129 -59
  115. package/ts/Private/impl/IAgoraRtcEngineImpl.ts +490 -416
  116. package/ts/Private/impl/IAgoraSpatialAudioImpl.ts +5 -3
  117. package/ts/Private/impl/IAudioDeviceManagerImpl.ts +4 -2
  118. package/ts/Private/internal/AudioDeviceManagerInternal.ts +6 -5
  119. package/ts/Private/internal/IrisApiEngine.ts +41 -32
  120. package/ts/Private/internal/LocalSpatialAudioEngineInternal.ts +17 -13
  121. package/ts/Private/internal/MediaEngineInternal.ts +9 -11
  122. package/ts/Private/internal/MediaPlayerInternal.ts +42 -31
  123. package/ts/Private/internal/MediaRecorderInternal.ts +24 -22
  124. package/ts/Private/internal/MusicContentCenterInternal.ts +16 -18
  125. package/ts/Private/internal/RtcEngineExInternal.ts +189 -66
  126. package/ts/Private/ti/AgoraMediaBase-ti.ts +9 -10
  127. package/ts/Private/ti/IAgoraMediaPlayer-ti.ts +0 -5
  128. package/{js/Private/ti/AgoraMediaPlayerTypes-ti.d.ts → ts/Private/ti/IAgoraMediaStreamingSource-ti.ts} +11 -6
  129. package/ts/Private/ti/IAgoraMusicContentCenter-ti.ts +4 -4
  130. package/ts/Private/ti/IAgoraRtcEngine-ti.ts +4 -4
  131. package/ts/Renderer/AgoraView.ts +12 -7
  132. package/ts/Renderer/IRenderer.ts +11 -16
  133. package/ts/Renderer/IRendererManager.ts +35 -0
  134. package/ts/Renderer/RendererManager.ts +146 -82
  135. package/ts/Renderer/{GlRenderer → WebGLRenderer}/index.ts +36 -51
  136. package/ts/Renderer/YUVCanvasRenderer/index.ts +41 -25
  137. package/ts/Renderer/index.ts +2 -0
  138. package/ts/Types.ts +43 -23
  139. package/ts/Utils.ts +7 -12
  140. package/types/AgoraSdk.d.ts +38 -36
  141. package/types/AgoraSdk.d.ts.map +1 -0
  142. package/types/Private/AgoraBase.d.ts +4455 -4358
  143. package/types/Private/AgoraBase.d.ts.map +1 -0
  144. package/types/Private/AgoraMediaBase.d.ts +1125 -1070
  145. package/types/Private/AgoraMediaBase.d.ts.map +1 -0
  146. package/types/Private/AgoraMediaPlayerTypes.d.ts +409 -408
  147. package/types/Private/AgoraMediaPlayerTypes.d.ts.map +1 -0
  148. package/types/Private/IAgoraLog.d.ts +81 -80
  149. package/types/Private/IAgoraLog.d.ts.map +1 -0
  150. package/types/Private/IAgoraMediaEngine.d.ts +184 -193
  151. package/types/Private/IAgoraMediaEngine.d.ts.map +1 -0
  152. package/types/Private/IAgoraMediaPlayer.d.ts +533 -546
  153. package/types/Private/IAgoraMediaPlayer.d.ts.map +1 -0
  154. package/types/Private/IAgoraMediaPlayerSource.d.ts +83 -88
  155. package/types/Private/IAgoraMediaPlayerSource.d.ts.map +1 -0
  156. package/types/Private/IAgoraMediaRecorder.d.ts +29 -49
  157. package/types/Private/IAgoraMediaRecorder.d.ts.map +1 -0
  158. package/types/Private/IAgoraMediaStreamingSource.d.ts +42 -0
  159. package/types/Private/IAgoraMediaStreamingSource.d.ts.map +1 -0
  160. package/types/Private/IAgoraMusicContentCenter.d.ts +336 -255
  161. package/types/Private/IAgoraMusicContentCenter.d.ts.map +1 -0
  162. package/types/Private/IAgoraRhythmPlayer.d.ts +65 -64
  163. package/types/Private/IAgoraRhythmPlayer.d.ts.map +1 -0
  164. package/types/Private/IAgoraRtcEngine.d.ts +4948 -5058
  165. package/types/Private/IAgoraRtcEngine.d.ts.map +1 -0
  166. package/types/Private/IAgoraRtcEngineEx.d.ts +554 -570
  167. package/types/Private/IAgoraRtcEngineEx.d.ts.map +1 -0
  168. package/types/Private/IAgoraSpatialAudio.d.ts +266 -248
  169. package/types/Private/IAgoraSpatialAudio.d.ts.map +1 -0
  170. package/types/Private/IAudioDeviceManager.d.ts +255 -233
  171. package/types/Private/IAudioDeviceManager.d.ts.map +1 -0
  172. package/types/Private/extension/AgoraBaseExtension.d.ts +2 -1
  173. package/types/Private/extension/AgoraBaseExtension.d.ts.map +1 -0
  174. package/types/Private/extension/AgoraMediaBaseExtension.d.ts +2 -1
  175. package/types/Private/extension/AgoraMediaBaseExtension.d.ts.map +1 -0
  176. package/types/Private/extension/AgoraMediaPlayerTypesExtension.d.ts +2 -1
  177. package/types/Private/extension/AgoraMediaPlayerTypesExtension.d.ts.map +1 -0
  178. package/types/Private/extension/IAgoraLogExtension.d.ts +2 -1
  179. package/types/Private/extension/IAgoraLogExtension.d.ts.map +1 -0
  180. package/types/Private/extension/IAgoraMediaEngineExtension.d.ts +41 -40
  181. package/types/Private/extension/IAgoraMediaEngineExtension.d.ts.map +1 -0
  182. package/types/Private/extension/IAgoraMediaPlayerExtension.d.ts +47 -46
  183. package/types/Private/extension/IAgoraMediaPlayerExtension.d.ts.map +1 -0
  184. package/types/Private/extension/IAgoraMediaPlayerSourceExtension.d.ts +2 -1
  185. package/types/Private/extension/IAgoraMediaPlayerSourceExtension.d.ts.map +1 -0
  186. package/types/Private/extension/IAgoraMediaRecorderExtension.d.ts +45 -40
  187. package/types/Private/extension/IAgoraMediaRecorderExtension.d.ts.map +1 -0
  188. package/types/Private/extension/IAgoraMusicContentCenterExtension.d.ts +21 -20
  189. package/types/Private/extension/IAgoraMusicContentCenterExtension.d.ts.map +1 -0
  190. package/types/Private/extension/IAgoraRhythmPlayerExtension.d.ts +2 -1
  191. package/types/Private/extension/IAgoraRhythmPlayerExtension.d.ts.map +1 -0
  192. package/types/Private/extension/IAgoraRtcEngineExExtension.d.ts +2 -1
  193. package/types/Private/extension/IAgoraRtcEngineExExtension.d.ts.map +1 -0
  194. package/types/Private/extension/IAgoraRtcEngineExtension.d.ts +43 -42
  195. package/types/Private/extension/IAgoraRtcEngineExtension.d.ts.map +1 -0
  196. package/types/Private/extension/IAgoraSpatialAudioExtension.d.ts +2 -1
  197. package/types/Private/extension/IAgoraSpatialAudioExtension.d.ts.map +1 -0
  198. package/types/Private/extension/IAudioDeviceManagerExtension.d.ts +2 -1
  199. package/types/Private/extension/IAudioDeviceManagerExtension.d.ts.map +1 -0
  200. package/types/Private/impl/AgoraBaseImpl.d.ts +3 -2
  201. package/types/Private/impl/AgoraBaseImpl.d.ts.map +1 -0
  202. package/types/Private/impl/AgoraMediaBaseImpl.d.ts +9 -7
  203. package/types/Private/impl/AgoraMediaBaseImpl.d.ts.map +1 -0
  204. package/types/Private/impl/IAgoraMediaEngineImpl.d.ts +40 -43
  205. package/types/Private/impl/IAgoraMediaEngineImpl.d.ts.map +1 -0
  206. package/types/Private/impl/IAgoraMediaPlayerImpl.d.ts +141 -141
  207. package/types/Private/impl/IAgoraMediaPlayerImpl.d.ts.map +1 -0
  208. package/types/Private/impl/IAgoraMediaPlayerSourceImpl.d.ts +3 -2
  209. package/types/Private/impl/IAgoraMediaPlayerSourceImpl.d.ts.map +1 -0
  210. package/types/Private/impl/IAgoraMediaRecorderImpl.d.ts +11 -13
  211. package/types/Private/impl/IAgoraMediaRecorderImpl.d.ts.map +1 -0
  212. package/types/Private/impl/IAgoraMusicContentCenterImpl.d.ts +59 -51
  213. package/types/Private/impl/IAgoraMusicContentCenterImpl.d.ts.map +1 -0
  214. package/types/Private/impl/IAgoraRtcEngineExImpl.d.ts +106 -101
  215. package/types/Private/impl/IAgoraRtcEngineExImpl.d.ts.map +1 -0
  216. package/types/Private/impl/IAgoraRtcEngineImpl.d.ts +570 -566
  217. package/types/Private/impl/IAgoraRtcEngineImpl.d.ts.map +1 -0
  218. package/types/Private/impl/IAgoraSpatialAudioImpl.d.ts +49 -48
  219. package/types/Private/impl/IAgoraSpatialAudioImpl.d.ts.map +1 -0
  220. package/types/Private/impl/IAudioDeviceManagerImpl.d.ts +65 -64
  221. package/types/Private/impl/IAudioDeviceManagerImpl.d.ts.map +1 -0
  222. package/types/Private/internal/AudioDeviceManagerInternal.d.ts +9 -8
  223. package/types/Private/internal/AudioDeviceManagerInternal.d.ts.map +1 -0
  224. package/types/Private/internal/IrisApiEngine.d.ts +148 -146
  225. package/types/Private/internal/IrisApiEngine.d.ts.map +1 -0
  226. package/types/Private/internal/LocalSpatialAudioEngineInternal.d.ts +19 -18
  227. package/types/Private/internal/LocalSpatialAudioEngineInternal.d.ts.map +1 -0
  228. package/types/Private/internal/MediaEngineInternal.d.ts +22 -21
  229. package/types/Private/internal/MediaEngineInternal.d.ts.map +1 -0
  230. package/types/Private/internal/MediaPlayerInternal.d.ts +34 -33
  231. package/types/Private/internal/MediaPlayerInternal.d.ts.map +1 -0
  232. package/types/Private/internal/MediaRecorderInternal.d.ts +18 -15
  233. package/types/Private/internal/MediaRecorderInternal.d.ts.map +1 -0
  234. package/types/Private/internal/MusicContentCenterInternal.d.ts +40 -39
  235. package/types/Private/internal/MusicContentCenterInternal.d.ts.map +1 -0
  236. package/types/Private/internal/RtcEngineExInternal.d.ts +80 -73
  237. package/types/Private/internal/RtcEngineExInternal.d.ts.map +1 -0
  238. package/{js → types}/Private/internal/emitter/EventEmitter.d.ts +60 -59
  239. package/types/Private/internal/emitter/EventEmitter.d.ts.map +1 -0
  240. package/types/Private/ti/AgoraBase-ti.d.ts +8 -7
  241. package/types/Private/ti/AgoraBase-ti.d.ts.map +1 -0
  242. package/types/Private/ti/AgoraMediaBase-ti.d.ts +14 -12
  243. package/types/Private/ti/AgoraMediaBase-ti.d.ts.map +1 -0
  244. package/types/Private/ti/AgoraMediaPlayerTypes-ti.d.ts +7 -6
  245. package/types/Private/ti/AgoraMediaPlayerTypes-ti.d.ts.map +1 -0
  246. package/types/Private/ti/IAgoraLog-ti.d.ts +7 -6
  247. package/types/Private/ti/IAgoraLog-ti.d.ts.map +1 -0
  248. package/types/Private/ti/IAgoraMediaEngine-ti.d.ts +7 -6
  249. package/types/Private/ti/IAgoraMediaEngine-ti.d.ts.map +1 -0
  250. package/types/Private/ti/IAgoraMediaPlayer-ti.d.ts +8 -8
  251. package/types/Private/ti/IAgoraMediaPlayer-ti.d.ts.map +1 -0
  252. package/types/Private/ti/IAgoraMediaPlayerSource-ti.d.ts +8 -7
  253. package/types/Private/ti/IAgoraMediaPlayerSource-ti.d.ts.map +1 -0
  254. package/types/Private/ti/IAgoraMediaRecorder-ti.d.ts +7 -6
  255. package/types/Private/ti/IAgoraMediaRecorder-ti.d.ts.map +1 -0
  256. package/{js/Private/ti/IAgoraMediaRecorder-ti.d.ts → types/Private/ti/IAgoraMediaStreamingSource-ti.d.ts} +7 -6
  257. package/types/Private/ti/IAgoraMediaStreamingSource-ti.d.ts.map +1 -0
  258. package/types/Private/ti/IAgoraMusicContentCenter-ti.d.ts +8 -7
  259. package/types/Private/ti/IAgoraMusicContentCenter-ti.d.ts.map +1 -0
  260. package/types/Private/ti/IAgoraRhythmPlayer-ti.d.ts +7 -6
  261. package/types/Private/ti/IAgoraRhythmPlayer-ti.d.ts.map +1 -0
  262. package/types/Private/ti/IAgoraRtcEngine-ti.d.ts +10 -9
  263. package/types/Private/ti/IAgoraRtcEngine-ti.d.ts.map +1 -0
  264. package/types/Private/ti/IAgoraRtcEngineEx-ti.d.ts +7 -6
  265. package/types/Private/ti/IAgoraRtcEngineEx-ti.d.ts.map +1 -0
  266. package/types/Private/ti/IAgoraSpatialAudio-ti.d.ts +7 -6
  267. package/types/Private/ti/IAgoraSpatialAudio-ti.d.ts.map +1 -0
  268. package/types/Private/ti/IAudioDeviceManager-ti.d.ts +7 -6
  269. package/types/Private/ti/IAudioDeviceManager-ti.d.ts.map +1 -0
  270. package/types/Renderer/AgoraView.d.ts +70 -70
  271. package/types/Renderer/AgoraView.d.ts.map +1 -0
  272. package/types/Renderer/IRenderer.d.ts +22 -21
  273. package/types/Renderer/IRenderer.d.ts.map +1 -0
  274. package/types/Renderer/IRendererManager.d.ts +18 -0
  275. package/types/Renderer/IRendererManager.d.ts.map +1 -0
  276. package/types/Renderer/RendererManager.d.ts +154 -71
  277. package/types/Renderer/RendererManager.d.ts.map +1 -0
  278. package/types/Renderer/{GlRenderer → WebGLRenderer}/index.d.ts +49 -59
  279. package/types/Renderer/WebGLRenderer/index.d.ts.map +1 -0
  280. package/types/Renderer/WebGLRenderer/webgl-utils.d.ts +1 -0
  281. package/types/Renderer/WebGLRenderer/webgl-utils.d.ts.map +1 -0
  282. package/types/Renderer/YUVCanvasRenderer/index.d.ts +16 -16
  283. package/types/Renderer/YUVCanvasRenderer/index.d.ts.map +1 -0
  284. package/types/Renderer/index.d.ts +3 -0
  285. package/types/Renderer/index.d.ts.map +1 -0
  286. package/types/Types.d.ts +280 -260
  287. package/types/Types.d.ts.map +1 -0
  288. package/types/Utils.d.ts +59 -58
  289. package/types/Utils.d.ts.map +1 -0
  290. package/js/AgoraSdk.d.ts +0 -36
  291. package/js/Private/AgoraBase.d.ts +0 -4358
  292. package/js/Private/AgoraMediaBase.d.ts +0 -1070
  293. package/js/Private/AgoraMediaPlayerTypes.d.ts +0 -408
  294. package/js/Private/IAgoraLog.d.ts +0 -80
  295. package/js/Private/IAgoraMediaEngine.d.ts +0 -193
  296. package/js/Private/IAgoraMediaPlayer.d.ts +0 -546
  297. package/js/Private/IAgoraMediaPlayerSource.d.ts +0 -88
  298. package/js/Private/IAgoraMediaRecorder.d.ts +0 -49
  299. package/js/Private/IAgoraMusicContentCenter.d.ts +0 -255
  300. package/js/Private/IAgoraRhythmPlayer.d.ts +0 -64
  301. package/js/Private/IAgoraRtcEngine.d.ts +0 -5058
  302. package/js/Private/IAgoraRtcEngineEx.d.ts +0 -570
  303. package/js/Private/IAgoraSpatialAudio.d.ts +0 -248
  304. package/js/Private/IAudioDeviceManager.d.ts +0 -233
  305. package/js/Private/extension/AgoraBaseExtension.d.ts +0 -1
  306. package/js/Private/extension/AgoraMediaBaseExtension.d.ts +0 -1
  307. package/js/Private/extension/AgoraMediaPlayerTypesExtension.d.ts +0 -1
  308. package/js/Private/extension/IAgoraLogExtension.d.ts +0 -1
  309. package/js/Private/extension/IAgoraMediaEngineExtension.d.ts +0 -40
  310. package/js/Private/extension/IAgoraMediaPlayerExtension.d.ts +0 -46
  311. package/js/Private/extension/IAgoraMediaPlayerSourceExtension.d.ts +0 -1
  312. package/js/Private/extension/IAgoraMediaRecorderExtension.d.ts +0 -40
  313. package/js/Private/extension/IAgoraMusicContentCenterExtension.d.ts +0 -20
  314. package/js/Private/extension/IAgoraRhythmPlayerExtension.d.ts +0 -1
  315. package/js/Private/extension/IAgoraRtcEngineExExtension.d.ts +0 -1
  316. package/js/Private/extension/IAgoraRtcEngineExtension.d.ts +0 -42
  317. package/js/Private/extension/IAgoraSpatialAudioExtension.d.ts +0 -1
  318. package/js/Private/extension/IAudioDeviceManagerExtension.d.ts +0 -1
  319. package/js/Private/impl/AgoraBaseImpl.d.ts +0 -2
  320. package/js/Private/impl/AgoraMediaBaseImpl.d.ts +0 -7
  321. package/js/Private/impl/IAgoraMediaEngineImpl.d.ts +0 -43
  322. package/js/Private/impl/IAgoraMediaPlayerImpl.d.ts +0 -141
  323. package/js/Private/impl/IAgoraMediaPlayerSourceImpl.d.ts +0 -2
  324. package/js/Private/impl/IAgoraMediaRecorderImpl.d.ts +0 -13
  325. package/js/Private/impl/IAgoraMusicContentCenterImpl.d.ts +0 -51
  326. package/js/Private/impl/IAgoraRtcEngineExImpl.d.ts +0 -101
  327. package/js/Private/impl/IAgoraRtcEngineImpl.d.ts +0 -566
  328. package/js/Private/impl/IAgoraSpatialAudioImpl.d.ts +0 -48
  329. package/js/Private/impl/IAudioDeviceManagerImpl.d.ts +0 -64
  330. package/js/Private/internal/AudioDeviceManagerInternal.d.ts +0 -8
  331. package/js/Private/internal/IrisApiEngine.d.ts +0 -146
  332. package/js/Private/internal/LocalSpatialAudioEngineInternal.d.ts +0 -18
  333. package/js/Private/internal/MediaEngineInternal.d.ts +0 -21
  334. package/js/Private/internal/MediaPlayerInternal.d.ts +0 -33
  335. package/js/Private/internal/MediaRecorderInternal.d.ts +0 -15
  336. package/js/Private/internal/MusicContentCenterInternal.d.ts +0 -39
  337. package/js/Private/internal/RtcEngineExInternal.d.ts +0 -73
  338. package/js/Private/ti/AgoraBase-ti.d.ts +0 -7
  339. package/js/Private/ti/AgoraMediaBase-ti.d.ts +0 -12
  340. package/js/Private/ti/IAgoraLog-ti.d.ts +0 -6
  341. package/js/Private/ti/IAgoraMediaEngine-ti.d.ts +0 -6
  342. package/js/Private/ti/IAgoraMediaPlayer-ti.d.ts +0 -8
  343. package/js/Private/ti/IAgoraMediaPlayerSource-ti.d.ts +0 -7
  344. package/js/Private/ti/IAgoraMusicContentCenter-ti.d.ts +0 -7
  345. package/js/Private/ti/IAgoraRhythmPlayer-ti.d.ts +0 -6
  346. package/js/Private/ti/IAgoraRtcEngine-ti.d.ts +0 -9
  347. package/js/Private/ti/IAgoraRtcEngineEx-ti.d.ts +0 -6
  348. package/js/Private/ti/IAgoraSpatialAudio-ti.d.ts +0 -6
  349. package/js/Private/ti/IAudioDeviceManager-ti.d.ts +0 -6
  350. package/js/Renderer/AgoraView.d.ts +0 -70
  351. package/js/Renderer/GlRenderer/index.d.ts +0 -59
  352. package/js/Renderer/GlRenderer/webgl-utils.d.ts +0 -0
  353. package/js/Renderer/IRenderer.d.ts +0 -21
  354. package/js/Renderer/RendererManager.d.ts +0 -71
  355. package/js/Renderer/YUVCanvasRenderer/index.d.ts +0 -16
  356. package/js/Types.d.ts +0 -260
  357. package/js/Utils.d.ts +0 -58
  358. /package/ts/Renderer/{GlRenderer → WebGLRenderer}/webgl-utils.js +0 -0
@@ -1,392 +1,479 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.RendererManager = void 0;
7
- const AgoraBase_1 = require("../Private/AgoraBase");
8
- const AgoraMediaBase_1 = require("../Private/AgoraMediaBase");
9
- const Types_1 = require("../Types");
10
- const Utils_1 = require("../Utils");
11
- const GlRenderer_1 = __importDefault(require("./GlRenderer"));
12
- const YUVCanvasRenderer_1 = require("./YUVCanvasRenderer");
13
- /**
14
- * @ignore
15
- */
16
- class RendererManager {
17
- /**
18
- * @ignore
19
- */
20
- constructor() {
21
- /**
22
- * @ignore
23
- */
24
- this.isRendering = false;
25
- this.renderFps = 10;
26
- this.renderers = new Map();
27
- this.renderMode = this.checkWebglEnv()
28
- ? Types_1.RENDER_MODE.WEBGL
29
- : Types_1.RENDER_MODE.SOFTWARE;
30
- this.msgBridge = Utils_1.AgoraEnv.AgoraElectronBridge;
31
- }
32
- /**
33
- * Registers an audio frame observer object.
34
- *
35
- * @param mode The use mode of the audio frame. See RawAudioFrameOpModeType .
36
- */
37
- setRenderMode(mode) {
38
- this.renderMode = mode;
39
- (0, Utils_1.logInfo)('setRenderMode: new render mode will take effect only if new view bind to render');
40
- }
41
- /**
42
- * @ignore
43
- */
44
- setFPS(fps) {
45
- this.renderFps = fps;
46
- this.restartRender();
47
- }
48
- setRenderOption(view, contentMode = AgoraMediaBase_1.RenderModeType.RenderModeFit, mirror = false) {
49
- if (!view) {
50
- /**
51
- * @ignore
52
- */
53
- (0, Utils_1.logError)('setRenderOption: view not exist', view);
54
- }
55
- this.forEachStream(({ renders }) => {
56
- renders === null || renders === void 0 ? void 0 : renders.forEach((render) => {
57
- if (render.equalsElement(view)) {
58
- render.setRenderOption({ contentMode, mirror });
59
- }
60
- });
61
- });
62
- }
63
- setRenderOptionByConfig(rendererConfig) {
64
- const { uid, channelId, rendererOptions, videoSourceType, } =
65
- /**
66
- * @ignore
67
- */
68
- (0, Utils_1.getDefaultRendererVideoConfig)(rendererConfig);
69
- if (!rendererConfig.view) {
70
- (0, Utils_1.logError)('setRenderOptionByView: view not exist');
71
- return -1;
72
- }
73
- const renderList = this.getRenderers({ uid, channelId, videoSourceType });
74
- renderList
75
- ? renderList
76
- .filter((renderItem) => renderItem.equalsElement(rendererConfig.view))
77
- .forEach((renderItem) => renderItem.setRenderOption(rendererOptions))
78
- : (0, Utils_1.logWarn)(`RenderStreamType: ${videoSourceType} channelId:${channelId} uid:${uid} have no render view, you need to call this api after setView`);
79
- return 0;
80
- }
81
- checkWebglEnv() {
82
- let gl;
83
- const canvas = document.createElement('canvas');
84
- try {
85
- gl =
86
- canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
87
- /**
88
- * @ignore
89
- */
90
- (0, Utils_1.logInfo)('Your browser support webGL');
91
- }
92
- catch (e) {
93
- (0, Utils_1.logWarn)('Your browser may not support webGL');
94
- return false;
95
- }
96
- if (gl) {
97
- return true;
98
- }
99
- else {
100
- return false;
101
- }
102
- }
103
- setupVideo(rendererVideoConfig) {
104
- const formatConfig = (0, Utils_1.getDefaultRendererVideoConfig)(rendererVideoConfig);
105
- const { uid, channelId, videoSourceType, rendererOptions, view } = formatConfig;
106
- if (!formatConfig.view) {
107
- (0, Utils_1.logWarn)('setupVideo->destroyRenderersByConfig, because of view is null');
108
- AgoraRendererManager.destroyRenderersByConfig(videoSourceType, channelId, uid);
109
- return -1;
110
- }
111
- // ensure a render to RenderMap
112
- const render = this.bindHTMLElementToRender(formatConfig, view);
113
- // render config
114
- render.setRenderOption(rendererOptions);
115
- // enable iris videoFrame
116
- this.enableVideoFrameCache({
117
- uid,
118
- channelId,
119
- videoSourceType,
120
- });
121
- // enable render
122
- this.enableRender(true);
123
- return 0;
124
- }
125
- setupLocalVideo(rendererConfig) {
126
- const { videoSourceType } = rendererConfig;
127
- if (videoSourceType === AgoraBase_1.VideoSourceType.VideoSourceRemote) {
128
- (0, Utils_1.logError)('setupLocalVideo videoSourceType error', videoSourceType);
129
- return -1;
130
- }
131
- this.setupVideo(Object.assign({}, rendererConfig));
132
- return 0;
133
- }
134
- setupRemoteVideo(rendererConfig) {
135
- const { videoSourceType } = rendererConfig;
136
- if (videoSourceType !== AgoraBase_1.VideoSourceType.VideoSourceRemote) {
137
- (0, Utils_1.logError)('setupRemoteVideo videoSourceType error', videoSourceType);
138
- return -1;
139
- }
140
- this.setupVideo(Object.assign(Object.assign({}, rendererConfig), { videoSourceType: AgoraBase_1.VideoSourceType.VideoSourceRemote }));
141
- return 0;
142
- }
143
- destroyRendererByView(view) {
144
- const renders = this.renderers;
145
- renders.forEach((channelMap, videoSourceType) => {
146
- channelMap.forEach((uidMap, channelId) => {
147
- uidMap.forEach((renderConfig, uid) => {
148
- var _a;
149
- let hasRender = false;
150
- const remainRenders = (_a = renderConfig.renders) === null || _a === void 0 ? void 0 : _a.filter((render) => {
151
- const isFilter = render.equalsElement(view);
152
- if (isFilter) {
153
- hasRender = true;
154
- render.unbind();
155
- }
156
- return !isFilter;
157
- });
158
- if (!hasRender) {
159
- return;
160
- }
161
- if ((remainRenders === null || remainRenders === void 0 ? void 0 : remainRenders.length) === 0 || !remainRenders) {
162
- this.disableVideoFrameCache({ uid, channelId, videoSourceType });
163
- }
164
- renderConfig.renders = remainRenders;
165
- });
166
- });
167
- });
168
- }
169
- destroyRenderersByConfig(videoSourceType, channelId, uid) {
170
- var _a, _b;
171
- const config = (0, Utils_1.formatConfigByVideoSourceType)(videoSourceType, channelId, uid);
172
- videoSourceType = config.videoSourceType;
173
- channelId = config.channelId;
174
- uid = config.uid;
175
- this.disableVideoFrameCache(config);
176
- const uidMap = (_a = this.renderers.get(videoSourceType)) === null || _a === void 0 ? void 0 : _a.get(channelId);
177
- const renderMap = uidMap === null || uidMap === void 0 ? void 0 : uidMap.get(uid);
178
- if (!renderMap) {
179
- return;
180
- }
181
- (_b = renderMap.renders) === null || _b === void 0 ? void 0 : _b.forEach((renderItem) => {
182
- renderItem.unbind();
183
- });
184
- renderMap.renders = [];
185
- }
186
- removeAllRenderer() {
187
- const renderMap = this.forEachStream((renderConfig, videoFrameCacheConfig) => {
188
- var _a;
189
- this.disableVideoFrameCache(videoFrameCacheConfig);
190
- (_a = renderConfig.renders) === null || _a === void 0 ? void 0 : _a.forEach((renderItem) => {
191
- renderItem.unbind();
192
- });
193
- renderConfig.renders = [];
194
- });
195
- renderMap.clear();
196
- }
197
- clear() {
198
- this.stopRender();
199
- this.removeAllRenderer();
200
- }
201
- enableRender(enabled = true) {
202
- if (enabled && this.isRendering) {
203
- //is already _isRendering
204
- }
205
- else if (enabled && !this.isRendering) {
206
- this.startRenderer();
207
- }
208
- else {
209
- this.stopRender();
210
- }
211
- }
212
- startRenderer() {
213
- this.isRendering = true;
214
- const renderFunc = (rendererItem, { videoSourceType, channelId, uid }) => {
215
- const { renders } = rendererItem;
216
- if (!renders || (renders === null || renders === void 0 ? void 0 : renders.length) === 0) {
217
- return;
218
- }
219
- let finalResult = this.msgBridge.GetVideoFrame(rendererItem.shareVideoFrame);
220
- switch (finalResult.ret) {
221
- case 0:
222
- // IRIS_VIDEO_PROCESS_ERR::ERR_OK = 0,
223
- // everything is ok
224
- break;
225
- case 1:
226
- // IRIS_VIDEO_PROCESS_ERR::ERR_NULL_POINTER = 1,
227
- break;
228
- case 2: {
229
- // IRIS_VIDEO_PROCESS_ERR::ERR_SIZE_NOT_MATCHING
230
- const { width, height } = finalResult;
231
- const newShareVideoFrame = this.resizeShareVideoFrame(videoSourceType, channelId, uid, width, height);
232
- rendererItem.shareVideoFrame = newShareVideoFrame;
233
- finalResult = this.msgBridge.GetVideoFrame(newShareVideoFrame);
234
- break;
235
- }
236
- case 5:
237
- // IRIS_VIDEO_PROCESS_ERR::ERR_BUFFER_EMPTY
238
- // setupVideo/AgoraView render before initialize
239
- this.enableVideoFrameCache({ videoSourceType, channelId, uid });
240
- return;
241
- default:
242
- return;
243
- }
244
- if (finalResult.ret !== 0) {
245
- (0, Utils_1.logWarn)('GetVideoFrame ret is', finalResult.ret, rendererItem);
246
- return;
247
- }
248
- if (!finalResult.isNewFrame) {
249
- (0, Utils_1.logDebug)('GetVideoFrame isNewFrame is false', rendererItem);
250
- return;
251
- }
252
- const renderVideoFrame = rendererItem.shareVideoFrame;
253
- if (renderVideoFrame.width > 0 && renderVideoFrame.height > 0) {
254
- renders.forEach((renderItem) => {
255
- renderItem.drawFrame(rendererItem.shareVideoFrame);
256
- });
257
- }
258
- };
259
- this.videoFrameUpdateInterval = setInterval(() => {
260
- this.forEachStream(renderFunc);
261
- }, 1000 / this.renderFps);
262
- }
263
- stopRender() {
264
- this.isRendering = false;
265
- if (this.videoFrameUpdateInterval) {
266
- clearInterval(this.videoFrameUpdateInterval);
267
- this.videoFrameUpdateInterval = undefined;
268
- }
269
- }
270
- restartRender() {
271
- if (this.videoFrameUpdateInterval) {
272
- this.stopRender();
273
- this.startRenderer();
274
- (0, Utils_1.logInfo)(`restartRender: Fps: ${this.renderFps} restartInterval`);
275
- }
276
- }
277
- createRenderer(failCallback) {
278
- if (this.renderMode === Types_1.RENDER_MODE.SOFTWARE) {
279
- return new YUVCanvasRenderer_1.YUVCanvasRenderer();
280
- }
281
- else {
282
- return new GlRenderer_1.default(failCallback);
283
- }
284
- }
285
- getRender({ videoSourceType, channelId, uid, }) {
286
- var _a, _b;
287
- return (_b = (_a = this.renderers.get(videoSourceType)) === null || _a === void 0 ? void 0 : _a.get(channelId)) === null || _b === void 0 ? void 0 : _b.get(uid);
288
- }
289
- getRenderers({ videoSourceType, channelId, uid, }) {
290
- var _a, _b, _c;
291
- return (((_c = (_b = (_a = this.renderers.get(videoSourceType)) === null || _a === void 0 ? void 0 : _a.get(channelId)) === null || _b === void 0 ? void 0 : _b.get(uid)) === null || _c === void 0 ? void 0 : _c.renders) ||
292
- []);
293
- }
294
- bindHTMLElementToRender(config, view) {
295
- this.ensureRendererConfig(config);
296
- const renders = this.getRenderers(config);
297
- const filterRenders = (renders === null || renders === void 0 ? void 0 : renders.filter((render) => render.equalsElement(view))) || [];
298
- const hasBeenAdd = filterRenders.length > 0;
299
- if (hasBeenAdd) {
300
- (0, Utils_1.logWarn)('bindHTMLElementToRender: this view has bind to render', filterRenders);
301
- return filterRenders[0];
302
- }
303
- const renderer = this.createRenderer(() => {
304
- const renderConfig = this.getRender(config);
305
- if (!renderConfig) {
306
- return;
307
- }
308
- renderConfig.renders = renders.filter((r) => r !== renderer);
309
- const contentMode = renderer.contentMode;
310
- renderer.unbind();
311
- this.setRenderMode(Types_1.RENDER_MODE.SOFTWARE);
312
- const newRender = this.createRenderer();
313
- newRender.contentMode = contentMode;
314
- newRender.bind(view);
315
- renderConfig.renders.push(newRender);
316
- });
317
- renderer.bind(view);
318
- renders.push(renderer);
319
- return renderer;
320
- }
321
- forEachStream(callbackfn) {
322
- const renders = this.renderers;
323
- renders.forEach((channelMap, videoSourceType) => {
324
- channelMap.forEach((uidMap, channelId) => {
325
- uidMap.forEach((renderConfig, uid) => {
326
- callbackfn(renderConfig, { videoSourceType, channelId, uid }, { channelMap, uidMap });
327
- });
328
- });
329
- });
330
- return renders;
331
- }
332
- enableVideoFrameCache(videoFrameCacheConfig) {
333
- (0, Utils_1.logDebug)(`enableVideoFrameCache ${JSON.stringify(videoFrameCacheConfig)}`);
334
- this.msgBridge.EnableVideoFrameCache(videoFrameCacheConfig);
335
- }
336
- disableVideoFrameCache(videoFrameCacheConfig) {
337
- (0, Utils_1.logDebug)(`disableVideoFrameCache ${JSON.stringify(videoFrameCacheConfig)}`);
338
- this.msgBridge.DisableVideoFrameCache(videoFrameCacheConfig);
339
- }
340
- ensureRendererConfig(config) {
341
- const { videoSourceType, uid, channelId } = config;
342
- const emptyRenderConfig = {
343
- renders: [],
344
- shareVideoFrame: this.resizeShareVideoFrame(videoSourceType, channelId, uid),
345
- };
346
- const emptyUidMap = new Map([[uid, emptyRenderConfig]]);
347
- const emptyChannelMap = new Map([[channelId, emptyUidMap]]);
348
- const renderers = this.renderers;
349
- const videoSourceMap = renderers.get(videoSourceType);
350
- if (!videoSourceMap) {
351
- renderers.set(videoSourceType, emptyChannelMap);
352
- return emptyUidMap;
353
- }
354
- const channelMap = videoSourceMap.get(channelId);
355
- if (!channelMap) {
356
- videoSourceMap.set(channelId, emptyUidMap);
357
- return emptyUidMap;
358
- }
359
- const renderConfig = channelMap === null || channelMap === void 0 ? void 0 : channelMap.get(uid);
360
- if (!renderConfig) {
361
- channelMap === null || channelMap === void 0 ? void 0 : channelMap.set(uid, emptyRenderConfig);
362
- (0, Utils_1.logWarn)(`ensureRendererMap uid map for channelId:${channelId} uid:${uid}`);
363
- return emptyUidMap;
364
- }
365
- return channelMap;
366
- }
367
- resizeShareVideoFrame(videoSourceType, channelId, uid, width = 0, height = 0) {
368
- return {
369
- videoSourceType,
370
- channelId,
371
- uid,
372
- yBuffer: Buffer.alloc(width * height),
373
- uBuffer: Buffer.alloc((width * height) / 4),
374
- vBuffer: Buffer.alloc((width * height) / 4),
375
- width,
376
- height,
377
- };
378
- }
379
- updateVideoFrameCacheInMap(config, shareVideoFrame) {
380
- let rendererConfigMap = this.ensureRendererConfig(config);
381
- rendererConfigMap
382
- ? // @ts-ignore
383
- Object.assign(rendererConfigMap.get(config.uid), {
384
- shareVideoFrame,
385
- })
386
- : (0, Utils_1.logWarn)(`updateVideoFrameCacheInMap videoSourceType:${config.videoSourceType} channelId:${config.channelId} uid:${config.uid} rendererConfigMap is null`);
387
- }
388
- }
389
- exports.RendererManager = RendererManager;
390
- const AgoraRendererManager = new RendererManager();
391
- Utils_1.AgoraEnv.AgoraRendererManager = AgoraRendererManager;
392
- exports.default = AgoraRendererManager;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RendererManager = void 0;
7
+ const AgoraBase_1 = require("../Private/AgoraBase");
8
+ const AgoraMediaBase_1 = require("../Private/AgoraMediaBase");
9
+ const Types_1 = require("../Types");
10
+ const Utils_1 = require("../Utils");
11
+ const IRendererManager_1 = require("./IRendererManager");
12
+ const WebGLRenderer_1 = __importDefault(require("./WebGLRenderer"));
13
+ const YUVCanvasRenderer_1 = require("./YUVCanvasRenderer");
14
+ /**
15
+ * @ignore
16
+ */
17
+ class RendererManager extends IRendererManager_1.IRendererManager {
18
+ /**
19
+ * @ignore
20
+ */
21
+ isRendering = false;
22
+ renderFps;
23
+ /**
24
+ * @ignore
25
+ */
26
+ videoFrameUpdateInterval;
27
+ /**
28
+ * @ignore
29
+ */
30
+ renderers;
31
+ /**
32
+ * @ignore
33
+ */
34
+ renderMode;
35
+ /**
36
+ * @ignore
37
+ */
38
+ msgBridge;
39
+ /**
40
+ * @ignore
41
+ */
42
+ defaultRenderConfig;
43
+ constructor() {
44
+ super();
45
+ this.renderFps = 10;
46
+ this.renderers = new Map();
47
+ this.renderMode = this.checkWebglEnv()
48
+ ? Types_1.RENDER_MODE.WEBGL
49
+ : Types_1.RENDER_MODE.SOFTWARE;
50
+ this.msgBridge = Utils_1.AgoraEnv.AgoraElectronBridge;
51
+ this.defaultRenderConfig = {
52
+ rendererOptions: {
53
+ contentMode: AgoraMediaBase_1.RenderModeType.RenderModeFit,
54
+ mirror: false,
55
+ },
56
+ };
57
+ }
58
+ /**
59
+ * Sets the channel mode of the current audio file.
60
+ * In a stereo music file, the left and right channels can store different audio data. According to your needs, you can set the channel mode to original mode, left channel mode, right channel mode, or mixed channel mode. For example, in the KTV scenario, the left channel of the music file stores the musical accompaniment, and the right channel stores the singing voice. If you only need to listen to the accompaniment, call this method to set the channel mode of the music file to left channel mode; if you need to listen to the accompaniment and the singing voice at the same time, call this method to set the channel mode to mixed channel mode.Call this method after calling open .This method only applies to stereo audio files.
61
+ *
62
+ * @param mode The channel mode. See AudioDualMonoMode .
63
+ *
64
+ * @returns
65
+ * 0: Success.< 0: Failure.
66
+ */
67
+ setRenderMode(mode) {
68
+ this.renderMode = mode;
69
+ (0, Utils_1.logInfo)('setRenderMode: new render mode will take effect only if new view bind to render');
70
+ }
71
+ /**
72
+ * @ignore
73
+ */
74
+ setFPS(fps) {
75
+ this.renderFps = fps;
76
+ this.restartRender();
77
+ }
78
+ /**
79
+ * @ignore
80
+ */
81
+ setRenderOption(view, contentMode = AgoraMediaBase_1.RenderModeType.RenderModeFit, mirror = false) {
82
+ if (!view) {
83
+ (0, Utils_1.logError)('setRenderOption: view not exist', view);
84
+ }
85
+ this.forEachStream(({ renders }) => {
86
+ renders?.forEach((render) => {
87
+ if (render.equalsElement(view)) {
88
+ render.setRenderOption({ contentMode, mirror });
89
+ }
90
+ });
91
+ });
92
+ }
93
+ /**
94
+ * @ignore
95
+ */
96
+ setRenderOptionByConfig(rendererConfig) {
97
+ const { uid, channelId, rendererOptions, videoSourceType, } = (0, Utils_1.getDefaultRendererVideoConfig)(rendererConfig);
98
+ const renderList = this.getRenderers({ uid, channelId, videoSourceType });
99
+ renderList
100
+ ? renderList
101
+ .filter((renderItem) => {
102
+ if (rendererConfig.view) {
103
+ return renderItem.equalsElement(rendererConfig.view);
104
+ }
105
+ else {
106
+ return true;
107
+ }
108
+ })
109
+ .forEach((renderItem) => renderItem.setRenderOption(rendererOptions))
110
+ : (0, Utils_1.logWarn)(`RenderStreamType: ${videoSourceType} channelId:${channelId} uid:${uid} have no render view, you need to call this api after setView`);
111
+ return AgoraBase_1.ErrorCodeType.ErrOk;
112
+ }
113
+ /**
114
+ * @ignore
115
+ */
116
+ checkWebglEnv() {
117
+ let gl;
118
+ let canvas = document.createElement('canvas');
119
+ try {
120
+ gl =
121
+ canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
122
+ (0, Utils_1.logInfo)('Your browser support webGL');
123
+ }
124
+ catch (e) {
125
+ (0, Utils_1.logWarn)('Your browser may not support webGL');
126
+ return false;
127
+ }
128
+ return !!gl;
129
+ }
130
+ /**
131
+ * @ignore
132
+ */
133
+ setupVideo(rendererVideoConfig) {
134
+ const formatConfig = (0, Utils_1.getDefaultRendererVideoConfig)(rendererVideoConfig);
135
+ const { uid, channelId, videoSourceType, rendererOptions, view } = formatConfig;
136
+ if (!formatConfig.view) {
137
+ (0, Utils_1.logWarn)('setupVideo->destroyRenderersByConfig, because of view is null');
138
+ this.destroyRenderersByConfig(videoSourceType, channelId, uid);
139
+ return -AgoraBase_1.ErrorCodeType.ErrInvalidArgument;
140
+ }
141
+ // ensure a render to RenderMap
142
+ const render = this.bindHTMLElementToRender(formatConfig, view);
143
+ // render config
144
+ render?.setRenderOption(rendererOptions);
145
+ // enable iris videoFrame
146
+ this.enableVideoFrameCache({
147
+ uid,
148
+ channelId,
149
+ videoSourceType,
150
+ });
151
+ // enable render
152
+ this.enableRender(true);
153
+ return AgoraBase_1.ErrorCodeType.ErrOk;
154
+ }
155
+ /**
156
+ * @ignore
157
+ */
158
+ setupLocalVideo(rendererConfig) {
159
+ const { videoSourceType } = rendererConfig;
160
+ if (videoSourceType === AgoraMediaBase_1.VideoSourceType.VideoSourceRemote) {
161
+ (0, Utils_1.logError)('setupLocalVideo videoSourceType error', videoSourceType);
162
+ return -AgoraBase_1.ErrorCodeType.ErrInvalidArgument;
163
+ }
164
+ this.setupVideo({ ...rendererConfig });
165
+ return AgoraBase_1.ErrorCodeType.ErrOk;
166
+ }
167
+ /**
168
+ * @ignore
169
+ */
170
+ setupRemoteVideo(rendererConfig) {
171
+ const { videoSourceType } = rendererConfig;
172
+ if (videoSourceType !== AgoraMediaBase_1.VideoSourceType.VideoSourceRemote) {
173
+ (0, Utils_1.logError)('setupRemoteVideo videoSourceType error', videoSourceType);
174
+ return -AgoraBase_1.ErrorCodeType.ErrInvalidArgument;
175
+ }
176
+ this.setupVideo({ ...rendererConfig });
177
+ return AgoraBase_1.ErrorCodeType.ErrOk;
178
+ }
179
+ /**
180
+ * Destroys a video renderer object.
181
+ *
182
+ * @param view The HTMLElement object to be destroyed.
183
+ */
184
+ destroyRendererByView(view) {
185
+ const renders = this.renderers;
186
+ renders.forEach((channelMap, videoSourceType) => {
187
+ channelMap.forEach((uidMap, channelId) => {
188
+ uidMap.forEach((renderConfig, uid) => {
189
+ let hasRender = false;
190
+ const remainRenders = renderConfig.renders?.filter((render) => {
191
+ const isFilter = render.equalsElement(view);
192
+ if (isFilter) {
193
+ hasRender = true;
194
+ render.unbind();
195
+ }
196
+ return !isFilter;
197
+ });
198
+ if (!hasRender) {
199
+ return;
200
+ }
201
+ if (remainRenders?.length === 0 || !remainRenders) {
202
+ this.disableVideoFrameCache({ uid, channelId, videoSourceType });
203
+ }
204
+ renderConfig.renders = remainRenders;
205
+ });
206
+ });
207
+ });
208
+ }
209
+ /**
210
+ * @ignore
211
+ */
212
+ destroyRenderersByConfig(videoSourceType, channelId, uid) {
213
+ const config = (0, Utils_1.formatConfigByVideoSourceType)(videoSourceType, channelId, uid);
214
+ videoSourceType = config.videoSourceType;
215
+ channelId = config.channelId;
216
+ uid = config.uid;
217
+ this.disableVideoFrameCache(config);
218
+ const uidMap = this.renderers.get(videoSourceType)?.get(channelId);
219
+ const renderMap = uidMap?.get(uid);
220
+ if (!renderMap) {
221
+ return;
222
+ }
223
+ renderMap.renders?.forEach((renderItem) => {
224
+ renderItem.unbind();
225
+ });
226
+ renderMap.renders = [];
227
+ }
228
+ /**
229
+ * @ignore
230
+ */
231
+ removeAllRenderer() {
232
+ const renderMap = this.forEachStream((renderConfig, videoFrameCacheConfig) => {
233
+ this.disableVideoFrameCache(videoFrameCacheConfig);
234
+ renderConfig.renders?.forEach((renderItem) => {
235
+ renderItem.unbind();
236
+ });
237
+ renderConfig.renders = [];
238
+ });
239
+ renderMap.clear();
240
+ }
241
+ /**
242
+ * @ignore
243
+ */
244
+ clear() {
245
+ this.stopRender();
246
+ this.removeAllRenderer();
247
+ }
248
+ /**
249
+ * Enables/Disables the local video capture.
250
+ * This method disables or re-enables the local video capture, and does not affect receiving the remote video stream.After calling enableVideo , the local video capture is enabled by default. You can call enableLocalVideo (false) to disable the local video capture. If you want to re-enable the local video capture, call enableLocalVideo(true).After the local video capturer is successfully disabled or re-enabled, the SDK triggers the onRemoteVideoStateChanged callback on the remote client.You can call this method either before or after joining a channel.This method enables the internal engine and is valid after leaving the channel.
251
+ *
252
+ * @param enabled Whether to enable the local video capture.true: (Default) Enable the local video capture.false: Disable the local video capture. Once the local video is disabled, the remote users cannot receive the video stream of the local user, while the local user can still receive the video streams of remote users. When set to false, this method does not require a local camera.
253
+ *
254
+ * @returns
255
+ * 0: Success.< 0: Failure.
256
+ */
257
+ enableRender(enabled = true) {
258
+ if (enabled && this.isRendering) {
259
+ //is already _isRendering
260
+ }
261
+ else if (enabled && !this.isRendering) {
262
+ this.startRenderer();
263
+ }
264
+ else {
265
+ this.stopRender();
266
+ }
267
+ }
268
+ /**
269
+ * @ignore
270
+ */
271
+ startRenderer() {
272
+ this.isRendering = true;
273
+ const renderFunc = (rendererItem, { videoSourceType, channelId, uid }) => {
274
+ const { renders } = rendererItem;
275
+ if (!renders || renders?.length === 0) {
276
+ return;
277
+ }
278
+ let finalResult = this.msgBridge.GetVideoFrame(rendererItem.shareVideoFrame);
279
+ switch (finalResult.ret) {
280
+ case 0:
281
+ // GET_VIDEO_FRAME_CACHE_RETURN_TYPE::OK = 0,
282
+ // everything is ok
283
+ break;
284
+ case 1: {
285
+ // GET_VIDEO_FRAME_CACHE_RETURN_TYPE::RESIZED
286
+ const { width, height, yStride } = finalResult;
287
+ const newShareVideoFrame = this.resizeShareVideoFrame(videoSourceType, channelId, uid, width, height, yStride);
288
+ rendererItem.shareVideoFrame = newShareVideoFrame;
289
+ finalResult = this.msgBridge.GetVideoFrame(newShareVideoFrame);
290
+ break;
291
+ }
292
+ case 2:
293
+ // GET_VIDEO_FRAME_CACHE_RETURN_TYPE::NO_CACHE
294
+ // setupVideo/AgoraView render before initialize
295
+ // this.enableVideoFrameCache({ videoSourceType, channelId, uid });
296
+ break;
297
+ default:
298
+ break;
299
+ }
300
+ if (finalResult.ret !== 0) {
301
+ (0, Utils_1.logWarn)('GetVideoFrame ret is', finalResult.ret, rendererItem);
302
+ return;
303
+ }
304
+ if (!finalResult.isNewFrame) {
305
+ (0, Utils_1.logDebug)('GetVideoFrame isNewFrame is false', rendererItem);
306
+ return;
307
+ }
308
+ const renderVideoFrame = rendererItem.shareVideoFrame;
309
+ if (renderVideoFrame.width > 0 && renderVideoFrame.height > 0) {
310
+ renders.forEach((renderItem) => {
311
+ renderItem.drawFrame(rendererItem.shareVideoFrame);
312
+ });
313
+ }
314
+ };
315
+ this.videoFrameUpdateInterval = setInterval(() => {
316
+ this.forEachStream(renderFunc);
317
+ }, 1000 / this.renderFps);
318
+ }
319
+ /**
320
+ * @ignore
321
+ */
322
+ stopRender() {
323
+ this.isRendering = false;
324
+ if (this.videoFrameUpdateInterval) {
325
+ clearInterval(this.videoFrameUpdateInterval);
326
+ this.videoFrameUpdateInterval = undefined;
327
+ }
328
+ }
329
+ /**
330
+ * @ignore
331
+ */
332
+ restartRender() {
333
+ if (this.videoFrameUpdateInterval) {
334
+ this.stopRender();
335
+ this.startRenderer();
336
+ (0, Utils_1.logInfo)(`restartRender: Fps: ${this.renderFps} restartInterval`);
337
+ }
338
+ }
339
+ /**
340
+ * @ignore
341
+ */
342
+ createRenderer(failCallback) {
343
+ if (this.renderMode === Types_1.RENDER_MODE.SOFTWARE) {
344
+ return new YUVCanvasRenderer_1.YUVCanvasRenderer();
345
+ }
346
+ else {
347
+ return new WebGLRenderer_1.default(failCallback);
348
+ }
349
+ }
350
+ /**
351
+ * @ignore
352
+ */
353
+ getRender({ videoSourceType, channelId, uid, }) {
354
+ return this.renderers.get(videoSourceType)?.get(channelId)?.get(uid);
355
+ }
356
+ /**
357
+ * @ignore
358
+ */
359
+ getRenderers({ videoSourceType, channelId, uid, }) {
360
+ return (this.renderers.get(videoSourceType)?.get(channelId)?.get(uid)?.renders ||
361
+ []);
362
+ }
363
+ /**
364
+ * @ignore
365
+ */
366
+ bindHTMLElementToRender(config, view) {
367
+ this.ensureRendererConfig(config);
368
+ const renders = this.getRenderers(config);
369
+ const filterRenders = renders?.filter((render) => render.equalsElement(view)) || [];
370
+ const hasBeenAdd = filterRenders.length > 0;
371
+ if (hasBeenAdd) {
372
+ (0, Utils_1.logWarn)('bindHTMLElementToRender: this view has bind to render', filterRenders);
373
+ return filterRenders[0];
374
+ }
375
+ const renderer = this.createRenderer(() => {
376
+ const renderConfig = this.getRender(config);
377
+ if (!renderConfig) {
378
+ return;
379
+ }
380
+ renderConfig.renders = renders.filter((r) => r !== renderer);
381
+ const contentMode = renderer.contentMode;
382
+ renderer.unbind();
383
+ this.setRenderMode(Types_1.RENDER_MODE.SOFTWARE);
384
+ const newRender = this.createRenderer();
385
+ newRender.contentMode = contentMode;
386
+ newRender.bind(view);
387
+ renderConfig.renders.push(newRender);
388
+ });
389
+ renderer.bind(view);
390
+ renders.push(renderer);
391
+ return renderer;
392
+ }
393
+ /**
394
+ * @ignore
395
+ */
396
+ forEachStream(callbackfn) {
397
+ const renders = this.renderers;
398
+ renders.forEach((channelMap, videoSourceType) => {
399
+ channelMap.forEach((uidMap, channelId) => {
400
+ uidMap.forEach((renderConfig, uid) => {
401
+ callbackfn(renderConfig, { videoSourceType, channelId, uid }, { channelMap, uidMap });
402
+ });
403
+ });
404
+ });
405
+ return renders;
406
+ }
407
+ /**
408
+ * @ignore
409
+ */
410
+ enableVideoFrameCache(videoFrameCacheConfig) {
411
+ (0, Utils_1.logDebug)(`enableVideoFrameCache ${JSON.stringify(videoFrameCacheConfig)}`);
412
+ this.msgBridge.EnableVideoFrameCache(videoFrameCacheConfig);
413
+ }
414
+ /**
415
+ * @ignore
416
+ */
417
+ disableVideoFrameCache(videoFrameCacheConfig) {
418
+ (0, Utils_1.logDebug)(`disableVideoFrameCache ${JSON.stringify(videoFrameCacheConfig)}`);
419
+ this.msgBridge.DisableVideoFrameCache(videoFrameCacheConfig);
420
+ }
421
+ /**
422
+ * @ignore
423
+ */
424
+ ensureRendererConfig(config) {
425
+ const { videoSourceType, uid, channelId } = config;
426
+ const emptyRenderConfig = {
427
+ renders: [],
428
+ shareVideoFrame: this.resizeShareVideoFrame(videoSourceType, channelId, uid),
429
+ };
430
+ const emptyUidMap = new Map([[uid, emptyRenderConfig]]);
431
+ const emptyChannelMap = new Map([[channelId, emptyUidMap]]);
432
+ const renderers = this.renderers;
433
+ const videoSourceMap = renderers.get(videoSourceType);
434
+ if (!videoSourceMap) {
435
+ renderers.set(videoSourceType, emptyChannelMap);
436
+ return emptyUidMap;
437
+ }
438
+ const channelMap = videoSourceMap.get(channelId);
439
+ if (!channelMap) {
440
+ videoSourceMap.set(channelId, emptyUidMap);
441
+ return emptyUidMap;
442
+ }
443
+ const renderConfig = channelMap?.get(uid);
444
+ if (!renderConfig) {
445
+ channelMap?.set(uid, emptyRenderConfig);
446
+ (0, Utils_1.logWarn)(`ensureRendererMap uid map for channelId:${channelId} uid:${uid}`);
447
+ return emptyUidMap;
448
+ }
449
+ return channelMap;
450
+ }
451
+ /**
452
+ * @ignore
453
+ */
454
+ resizeShareVideoFrame(videoSourceType, channelId, uid, width = 0, height = 0, yStride = 0) {
455
+ return {
456
+ videoSourceType,
457
+ channelId,
458
+ uid,
459
+ yBuffer: Buffer.alloc(yStride * height),
460
+ uBuffer: Buffer.alloc((yStride * height) / 4),
461
+ vBuffer: Buffer.alloc((yStride * height) / 4),
462
+ width,
463
+ height,
464
+ yStride,
465
+ };
466
+ }
467
+ /**
468
+ * @ignore
469
+ */
470
+ updateVideoFrameCacheInMap(config, shareVideoFrame) {
471
+ let rendererConfigMap = this.ensureRendererConfig(config);
472
+ rendererConfigMap
473
+ ? Object.assign(rendererConfigMap.get(config.uid) ?? {}, {
474
+ shareVideoFrame,
475
+ })
476
+ : (0, Utils_1.logWarn)(`updateVideoFrameCacheInMap videoSourceType:${config.videoSourceType} channelId:${config.channelId} uid:${config.uid} rendererConfigMap is null`);
477
+ }
478
+ }
479
+ exports.RendererManager = RendererManager;