trtc-sdk-v5 5.20.2-beta.8 → 5.20.2-beta.9

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 (223) hide show
  1. package/package.json +1 -1
  2. package/plugins/audio-player/audio-player.esm.js +1 -1
  3. package/plugins/audio-player/package.json +1 -1
  4. package/plugins/cdn-streaming/package.json +1 -1
  5. package/plugins/chorus/package.json +1 -1
  6. package/plugins/cross-room/package.json +1 -1
  7. package/plugins/custom-encryption/package.json +1 -1
  8. package/plugins/device-detector/package.json +1 -1
  9. package/plugins/lebplayer/package.json +1 -1
  10. package/plugins/realtime-transcriber/package.json +1 -1
  11. package/plugins/small-stream-auto-switcher/package.json +1 -1
  12. package/plugins/video-decoder/package.json +1 -1
  13. package/plugins/video-effect/basic-beauty/package.json +1 -1
  14. package/plugins/video-effect/beauty/package.json +1 -1
  15. package/plugins/video-effect/face-detection/face-detection.esm.js +1 -1
  16. package/plugins/video-effect/face-detection/package.json +1 -1
  17. package/plugins/video-effect/video-mixer/package.json +1 -1
  18. package/plugins/video-effect/video-mixer/video-mixer.esm.js +1 -1
  19. package/plugins/video-effect/virtual-background/package.json +1 -1
  20. package/plugins/video-effect/watermark/package.json +1 -1
  21. package/plugins/voice-changer/package.json +1 -1
  22. package/plugins/whiteboard/package.json +1 -1
  23. package/plugins/whiteboard/whiteboard.esm.d.ts +76 -651
  24. package/plugins/whiteboard/whiteboard.esm.js +1 -4
  25. package/plugins/whiteboard/whiteboard.umd.js +2 -4
  26. package/trtc.esm.js +30 -30
  27. package/trtc.js +1 -1
  28. package/assets/whiteboard/manifest.json +0 -10
  29. package/assets/whiteboard/pdfjs-5.7.284/LICENSE +0 -177
  30. package/assets/whiteboard/pdfjs-5.7.284/cmaps/78-EUC-H.bcmap +0 -0
  31. package/assets/whiteboard/pdfjs-5.7.284/cmaps/78-EUC-V.bcmap +0 -0
  32. package/assets/whiteboard/pdfjs-5.7.284/cmaps/78-H.bcmap +0 -0
  33. package/assets/whiteboard/pdfjs-5.7.284/cmaps/78-RKSJ-H.bcmap +0 -0
  34. package/assets/whiteboard/pdfjs-5.7.284/cmaps/78-RKSJ-V.bcmap +0 -0
  35. package/assets/whiteboard/pdfjs-5.7.284/cmaps/78-V.bcmap +0 -0
  36. package/assets/whiteboard/pdfjs-5.7.284/cmaps/78ms-RKSJ-H.bcmap +0 -0
  37. package/assets/whiteboard/pdfjs-5.7.284/cmaps/78ms-RKSJ-V.bcmap +0 -0
  38. package/assets/whiteboard/pdfjs-5.7.284/cmaps/83pv-RKSJ-H.bcmap +0 -0
  39. package/assets/whiteboard/pdfjs-5.7.284/cmaps/90ms-RKSJ-H.bcmap +0 -0
  40. package/assets/whiteboard/pdfjs-5.7.284/cmaps/90ms-RKSJ-V.bcmap +0 -0
  41. package/assets/whiteboard/pdfjs-5.7.284/cmaps/90msp-RKSJ-H.bcmap +0 -0
  42. package/assets/whiteboard/pdfjs-5.7.284/cmaps/90msp-RKSJ-V.bcmap +0 -0
  43. package/assets/whiteboard/pdfjs-5.7.284/cmaps/90pv-RKSJ-H.bcmap +0 -0
  44. package/assets/whiteboard/pdfjs-5.7.284/cmaps/90pv-RKSJ-V.bcmap +0 -0
  45. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Add-H.bcmap +0 -0
  46. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Add-RKSJ-H.bcmap +0 -0
  47. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Add-RKSJ-V.bcmap +0 -0
  48. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Add-V.bcmap +0 -0
  49. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-CNS1-0.bcmap +0 -0
  50. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-CNS1-1.bcmap +0 -0
  51. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-CNS1-2.bcmap +0 -0
  52. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-CNS1-3.bcmap +0 -0
  53. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-CNS1-4.bcmap +0 -0
  54. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-CNS1-5.bcmap +0 -0
  55. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-CNS1-6.bcmap +0 -0
  56. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
  57. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-GB1-0.bcmap +0 -0
  58. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-GB1-1.bcmap +0 -0
  59. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-GB1-2.bcmap +0 -0
  60. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-GB1-3.bcmap +0 -0
  61. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-GB1-4.bcmap +0 -0
  62. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-GB1-5.bcmap +0 -0
  63. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
  64. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-Japan1-0.bcmap +0 -0
  65. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-Japan1-1.bcmap +0 -0
  66. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-Japan1-2.bcmap +0 -0
  67. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-Japan1-3.bcmap +0 -0
  68. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-Japan1-4.bcmap +0 -0
  69. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-Japan1-5.bcmap +0 -0
  70. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-Japan1-6.bcmap +0 -0
  71. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
  72. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-Korea1-0.bcmap +0 -0
  73. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-Korea1-1.bcmap +0 -0
  74. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-Korea1-2.bcmap +0 -0
  75. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
  76. package/assets/whiteboard/pdfjs-5.7.284/cmaps/B5-H.bcmap +0 -0
  77. package/assets/whiteboard/pdfjs-5.7.284/cmaps/B5-V.bcmap +0 -0
  78. package/assets/whiteboard/pdfjs-5.7.284/cmaps/B5pc-H.bcmap +0 -0
  79. package/assets/whiteboard/pdfjs-5.7.284/cmaps/B5pc-V.bcmap +0 -0
  80. package/assets/whiteboard/pdfjs-5.7.284/cmaps/CNS-EUC-H.bcmap +0 -0
  81. package/assets/whiteboard/pdfjs-5.7.284/cmaps/CNS-EUC-V.bcmap +0 -0
  82. package/assets/whiteboard/pdfjs-5.7.284/cmaps/CNS1-H.bcmap +0 -0
  83. package/assets/whiteboard/pdfjs-5.7.284/cmaps/CNS1-V.bcmap +0 -0
  84. package/assets/whiteboard/pdfjs-5.7.284/cmaps/CNS2-H.bcmap +0 -0
  85. package/assets/whiteboard/pdfjs-5.7.284/cmaps/CNS2-V.bcmap +0 -3
  86. package/assets/whiteboard/pdfjs-5.7.284/cmaps/ETHK-B5-H.bcmap +0 -0
  87. package/assets/whiteboard/pdfjs-5.7.284/cmaps/ETHK-B5-V.bcmap +0 -0
  88. package/assets/whiteboard/pdfjs-5.7.284/cmaps/ETen-B5-H.bcmap +0 -0
  89. package/assets/whiteboard/pdfjs-5.7.284/cmaps/ETen-B5-V.bcmap +0 -0
  90. package/assets/whiteboard/pdfjs-5.7.284/cmaps/ETenms-B5-H.bcmap +0 -3
  91. package/assets/whiteboard/pdfjs-5.7.284/cmaps/ETenms-B5-V.bcmap +0 -0
  92. package/assets/whiteboard/pdfjs-5.7.284/cmaps/EUC-H.bcmap +0 -0
  93. package/assets/whiteboard/pdfjs-5.7.284/cmaps/EUC-V.bcmap +0 -0
  94. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Ext-H.bcmap +0 -0
  95. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Ext-RKSJ-H.bcmap +0 -0
  96. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Ext-RKSJ-V.bcmap +0 -0
  97. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Ext-V.bcmap +0 -0
  98. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GB-EUC-H.bcmap +0 -0
  99. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GB-EUC-V.bcmap +0 -0
  100. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GB-H.bcmap +0 -4
  101. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GB-V.bcmap +0 -0
  102. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GBK-EUC-H.bcmap +0 -0
  103. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GBK-EUC-V.bcmap +0 -0
  104. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GBK2K-H.bcmap +0 -0
  105. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GBK2K-V.bcmap +0 -0
  106. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GBKp-EUC-H.bcmap +0 -0
  107. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GBKp-EUC-V.bcmap +0 -0
  108. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GBT-EUC-H.bcmap +0 -0
  109. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GBT-EUC-V.bcmap +0 -0
  110. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GBT-H.bcmap +0 -0
  111. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GBT-V.bcmap +0 -0
  112. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GBTpc-EUC-H.bcmap +0 -0
  113. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GBTpc-EUC-V.bcmap +0 -0
  114. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GBpc-EUC-H.bcmap +0 -0
  115. package/assets/whiteboard/pdfjs-5.7.284/cmaps/GBpc-EUC-V.bcmap +0 -0
  116. package/assets/whiteboard/pdfjs-5.7.284/cmaps/H.bcmap +0 -0
  117. package/assets/whiteboard/pdfjs-5.7.284/cmaps/HKdla-B5-H.bcmap +0 -0
  118. package/assets/whiteboard/pdfjs-5.7.284/cmaps/HKdla-B5-V.bcmap +0 -0
  119. package/assets/whiteboard/pdfjs-5.7.284/cmaps/HKdlb-B5-H.bcmap +0 -0
  120. package/assets/whiteboard/pdfjs-5.7.284/cmaps/HKdlb-B5-V.bcmap +0 -0
  121. package/assets/whiteboard/pdfjs-5.7.284/cmaps/HKgccs-B5-H.bcmap +0 -0
  122. package/assets/whiteboard/pdfjs-5.7.284/cmaps/HKgccs-B5-V.bcmap +0 -0
  123. package/assets/whiteboard/pdfjs-5.7.284/cmaps/HKm314-B5-H.bcmap +0 -0
  124. package/assets/whiteboard/pdfjs-5.7.284/cmaps/HKm314-B5-V.bcmap +0 -0
  125. package/assets/whiteboard/pdfjs-5.7.284/cmaps/HKm471-B5-H.bcmap +0 -0
  126. package/assets/whiteboard/pdfjs-5.7.284/cmaps/HKm471-B5-V.bcmap +0 -0
  127. package/assets/whiteboard/pdfjs-5.7.284/cmaps/HKscs-B5-H.bcmap +0 -0
  128. package/assets/whiteboard/pdfjs-5.7.284/cmaps/HKscs-B5-V.bcmap +0 -0
  129. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Hankaku.bcmap +0 -0
  130. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Hiragana.bcmap +0 -0
  131. package/assets/whiteboard/pdfjs-5.7.284/cmaps/KSC-EUC-H.bcmap +0 -0
  132. package/assets/whiteboard/pdfjs-5.7.284/cmaps/KSC-EUC-V.bcmap +0 -0
  133. package/assets/whiteboard/pdfjs-5.7.284/cmaps/KSC-H.bcmap +0 -0
  134. package/assets/whiteboard/pdfjs-5.7.284/cmaps/KSC-Johab-H.bcmap +0 -0
  135. package/assets/whiteboard/pdfjs-5.7.284/cmaps/KSC-Johab-V.bcmap +0 -0
  136. package/assets/whiteboard/pdfjs-5.7.284/cmaps/KSC-V.bcmap +0 -0
  137. package/assets/whiteboard/pdfjs-5.7.284/cmaps/KSCms-UHC-H.bcmap +0 -0
  138. package/assets/whiteboard/pdfjs-5.7.284/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
  139. package/assets/whiteboard/pdfjs-5.7.284/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
  140. package/assets/whiteboard/pdfjs-5.7.284/cmaps/KSCms-UHC-V.bcmap +0 -0
  141. package/assets/whiteboard/pdfjs-5.7.284/cmaps/KSCpc-EUC-H.bcmap +0 -0
  142. package/assets/whiteboard/pdfjs-5.7.284/cmaps/KSCpc-EUC-V.bcmap +0 -0
  143. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Katakana.bcmap +0 -0
  144. package/assets/whiteboard/pdfjs-5.7.284/cmaps/LICENSE +0 -36
  145. package/assets/whiteboard/pdfjs-5.7.284/cmaps/NWP-H.bcmap +0 -0
  146. package/assets/whiteboard/pdfjs-5.7.284/cmaps/NWP-V.bcmap +0 -0
  147. package/assets/whiteboard/pdfjs-5.7.284/cmaps/RKSJ-H.bcmap +0 -0
  148. package/assets/whiteboard/pdfjs-5.7.284/cmaps/RKSJ-V.bcmap +0 -0
  149. package/assets/whiteboard/pdfjs-5.7.284/cmaps/Roman.bcmap +0 -0
  150. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniCNS-UCS2-H.bcmap +0 -0
  151. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniCNS-UCS2-V.bcmap +0 -0
  152. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniCNS-UTF16-H.bcmap +0 -0
  153. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniCNS-UTF16-V.bcmap +0 -0
  154. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniCNS-UTF32-H.bcmap +0 -0
  155. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniCNS-UTF32-V.bcmap +0 -0
  156. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniCNS-UTF8-H.bcmap +0 -0
  157. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniCNS-UTF8-V.bcmap +0 -0
  158. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniGB-UCS2-H.bcmap +0 -0
  159. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniGB-UCS2-V.bcmap +0 -0
  160. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniGB-UTF16-H.bcmap +0 -0
  161. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniGB-UTF16-V.bcmap +0 -0
  162. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniGB-UTF32-H.bcmap +0 -0
  163. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniGB-UTF32-V.bcmap +0 -0
  164. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniGB-UTF8-H.bcmap +0 -0
  165. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniGB-UTF8-V.bcmap +0 -0
  166. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJIS-UCS2-H.bcmap +0 -0
  167. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
  168. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
  169. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJIS-UCS2-V.bcmap +0 -0
  170. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJIS-UTF16-H.bcmap +0 -0
  171. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJIS-UTF16-V.bcmap +0 -0
  172. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJIS-UTF32-H.bcmap +0 -0
  173. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJIS-UTF32-V.bcmap +0 -0
  174. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJIS-UTF8-H.bcmap +0 -0
  175. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJIS-UTF8-V.bcmap +0 -0
  176. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
  177. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
  178. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
  179. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
  180. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
  181. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
  182. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
  183. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
  184. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
  185. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
  186. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
  187. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
  188. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
  189. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniKS-UCS2-H.bcmap +0 -0
  190. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniKS-UCS2-V.bcmap +0 -0
  191. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniKS-UTF16-H.bcmap +0 -0
  192. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniKS-UTF16-V.bcmap +0 -0
  193. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniKS-UTF32-H.bcmap +0 -0
  194. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniKS-UTF32-V.bcmap +0 -0
  195. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniKS-UTF8-H.bcmap +0 -0
  196. package/assets/whiteboard/pdfjs-5.7.284/cmaps/UniKS-UTF8-V.bcmap +0 -0
  197. package/assets/whiteboard/pdfjs-5.7.284/cmaps/V.bcmap +0 -0
  198. package/assets/whiteboard/pdfjs-5.7.284/cmaps/WP-Symbol.bcmap +0 -0
  199. package/assets/whiteboard/pdfjs-5.7.284/iccs/CGATS001Compat-v2-micro.icc +0 -0
  200. package/assets/whiteboard/pdfjs-5.7.284/iccs/LICENSE +0 -116
  201. package/assets/whiteboard/pdfjs-5.7.284/pdf.min.js +0 -28
  202. package/assets/whiteboard/pdfjs-5.7.284/pdf.worker.min.js +0 -31
  203. package/assets/whiteboard/pdfjs-5.7.284/standard_fonts/FoxitDingbats.pfb +0 -0
  204. package/assets/whiteboard/pdfjs-5.7.284/standard_fonts/FoxitSymbol.pfb +0 -0
  205. package/assets/whiteboard/pdfjs-5.7.284/standard_fonts/LICENSE_FOXIT +0 -27
  206. package/assets/whiteboard/pdfjs-5.7.284/standard_fonts/LICENSE_LIBERATION +0 -102
  207. package/assets/whiteboard/pdfjs-5.7.284/standard_fonts/LiberationSans-Bold.ttf +0 -0
  208. package/assets/whiteboard/pdfjs-5.7.284/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
  209. package/assets/whiteboard/pdfjs-5.7.284/standard_fonts/LiberationSans-Italic.ttf +0 -0
  210. package/assets/whiteboard/pdfjs-5.7.284/standard_fonts/LiberationSans-Regular.ttf +0 -0
  211. package/assets/whiteboard/pdfjs-5.7.284/wasm/LICENSE_JBIG2 +0 -196
  212. package/assets/whiteboard/pdfjs-5.7.284/wasm/LICENSE_OPENJPEG +0 -39
  213. package/assets/whiteboard/pdfjs-5.7.284/wasm/LICENSE_PDFJS_JBIG2 +0 -13
  214. package/assets/whiteboard/pdfjs-5.7.284/wasm/LICENSE_PDFJS_OPENJPEG +0 -22
  215. package/assets/whiteboard/pdfjs-5.7.284/wasm/LICENSE_PDFJS_QCMS +0 -22
  216. package/assets/whiteboard/pdfjs-5.7.284/wasm/LICENSE_QCMS +0 -21
  217. package/assets/whiteboard/pdfjs-5.7.284/wasm/jbig2.wasm +0 -0
  218. package/assets/whiteboard/pdfjs-5.7.284/wasm/openjpeg.wasm +0 -0
  219. package/assets/whiteboard/pdfjs-5.7.284/wasm/qcms_bg.wasm +0 -0
  220. package/assets/whiteboard/ppt-sdk-1.0.0/fonts/NotoSansMonoCJKsc-ASCII.woff2 +0 -0
  221. package/assets/whiteboard/ppt-sdk-1.0.0/fonts/NotoSansMonoCJKsc-Bold-ASCII.woff2 +0 -0
  222. package/assets/whiteboard/ppt-sdk-1.0.0/ppt-sdk.es.js +0 -9216
  223. package/plugins/whiteboard/whiteboard.umd.d.ts +0 -931
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trtc-sdk-v5",
3
- "version": "5.20.2-beta.8",
3
+ "version": "5.20.2-beta.9",
4
4
  "description": "Tencent Cloud RTC SDK for Web",
5
5
  "main": "trtc.js",
6
6
  "types": "index.d.ts",
@@ -1 +1 @@
1
- var __defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,i)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,__spreadValues=(e,t)=>{for(var i in t||(t={}))__hasOwnProp.call(t,i)&&__defNormalProp(e,i,t[i]);if(__getOwnPropSymbols)for(var i of __getOwnPropSymbols(t))__propIsEnum.call(t,i)&&__defNormalProp(e,i,t[i]);return e},__objRest=(e,t)=>{var i={};for(var s in e)__hasOwnProp.call(e,s)&&t.indexOf(s)<0&&(i[s]=e[s]);if(null!=e&&__getOwnPropSymbols)for(var s of __getOwnPropSymbols(e))t.indexOf(s)<0&&__propIsEnum.call(e,s)&&(i[s]=e[s]);return i},__publicField=(e,t,i)=>__defNormalProp(e,"symbol"!=typeof t?t+"":t,i),TARGET_SAMPLE_RATE=48e3;function isValidAudioUrl(e){var t;const i=e.split("?")[0],s=null==(t=i.split(".").pop())?void 0:t.toLowerCase(),r=!!s&&["mp3","ogg","wav","flac"].includes(s),l=i.startsWith("blob"),o=i.startsWith("data");return r||l||o}var pcmPlayerWorkletString='class PCMPlayerWorklet extends AudioWorkletProcessor{constructor(){super(),this.capacity=480000,this.ringBuf=new Float32Array(this.capacity),this.writePos=0,this.readPos=0,this.buffered=0,this.isStop=!1,this.isPause=!1,this.playedSamples=0,this.totalSamples=0,this.msgCounter=0,this.isRealtime=!0,this.dataStart=0,this.port.onmessage=e=>{var t=e.data;switch(t.name){case"input":{var p=t.pcm,l=p.length;if(this.buffered+l>this.capacity){if(this.isRealtime){var c=Math.max(this.capacity*2,this.buffered+l),n=new Float32Array(c);for(var i=0;i<this.buffered;i++)n[i]=this.ringBuf[(this.readPos+i)%this.capacity];this.ringBuf=n,this.readPos=0,this.writePos=this.buffered,this.dataStart=0,this.capacity=c}else{var c=Math.max(this.capacity*2,this.totalSamples+l),n=new Float32Array(c);for(var i=0;i<this.totalSamples;i++)n[i]=this.ringBuf[(this.dataStart+i)%this.capacity];this.readPos=this.playedSamples,this.writePos=this.totalSamples,this.dataStart=0,this.ringBuf=n,this.capacity=c}}for(i=0;i<l;i++)this.ringBuf[this.writePos]=p[i],this.writePos=(this.writePos+1)%this.capacity;this.buffered+=l,this.totalSamples+=l;break}case"clear":{var s=this.buffered;this.readPos=0,this.writePos=0,this.buffered=0,this.playedSamples=0,this.totalSamples=0,this.dataStart=0,this.port.postMessage({type:"cleared",length:s});break}case"pause":this.isPause=!0;break;case"resume":this.isPause=!1;break;case"discard":this.readPos=0,this.writePos=0,this.buffered=0,this.playedSamples=0,this.totalSamples=0,this.dataStart=0;break;case"reset-playback":this.readPos=this.dataStart,this.playedSamples=0,this.buffered=this.totalSamples;break;case"set-mode":this.isRealtime=!!t.realtime;break;case"stop":this.isStop=!0}}}process(e,t){if(this.isStop)return!1;var s=t[0];if(!s||!s[0])return!0;var o=s[0];if(this.isPause)return o.fill(0),!0;var a=o.length;if(this.buffered>=a){for(var i=0;i<a;i++)o[i]=this.ringBuf[this.readPos],this.readPos=(this.readPos+1)%this.capacity;return this.buffered-=a,this.playedSamples+=a,this.msgCounter++,this.msgCounter>=8&&(this.msgCounter=0,this.port.postMessage({type:"played",playedSamples:this.playedSamples,bufferLength:this.buffered})),!0}if(this.buffered>0){var n=this.buffered;for(i=0;i<n;i++)o[i]=this.ringBuf[this.readPos],this.readPos=(this.readPos+1)%this.capacity;for(i=n;i<a;i++)o[i]=0;return this.buffered=0,this.playedSamples+=n,this.port.postMessage({type:"played",playedSamples:this.playedSamples,bufferLength:0}),!0}return o.fill(0),this.port.postMessage({type:"starving",playedSamples:this.playedSamples,bufferLength:0}),!0}}registerProcessor("pcm-player",PCMPlayerWorklet);';function startValidateRule(e){return{type:"object",required:!0,properties:{id:{type:"string",required:!0},sourceType:{type:"string",required:!0,values:["pcm","url","track"]},url:{type:"string"},loop:{type:"boolean"},volume:{type:"number"},playbackRate:{type:"number"},publish:{type:"boolean"},realtime:{type:["boolean","object"],properties:{maxDelay:{type:"number"},discardAll:{type:"boolean"}}},onInputError:{type:"function"},onDurationChange:{type:"function"},onTimeUpdate:{type:"function"},onEnded:{type:"function"}},validate(t,i,s){const{RtcError:r,ErrorCode:l}=e.errorModule,{sourceType:o,url:a,track:n}=t;if("url"===o){if(!a)throw new r({code:l.INVALID_PARAMETER,message:`${s}: url is required when sourceType is 'url'.`});if("*"!==a&&!isValidAudioUrl(a))throw new r({code:l.INVALID_PARAMETER,message:`${s}: audio url is invalid, supported formats: mp3, ogg, wav, flac, blob, data.`})}if("track"===o&&!n)throw new r({code:l.INVALID_PARAMETER,message:`${s}: track is required when sourceType is 'track'.`})}}}function updateValidateRule(e){return{type:"object",required:!0,properties:{id:{type:"string",required:!0},publish:{type:"boolean"},realtime:{type:["boolean","object"],properties:{maxDelay:{type:"number"},discardAll:{type:"boolean"}}},loop:{type:"boolean"},volume:{type:"number"},playbackRate:{type:"number"},seekFrom:{type:"number"},operation:{type:"string",values:["pause","resume","stop"]},onInputError:{type:"function"},onDurationChange:{type:"function"},onTimeUpdate:{type:"function"},onEnded:{type:"function"}}}}function stopValidateRule(e){return{type:"object",required:!0,properties:{id:{type:"string",required:!0}}}}var MAX_DELAY_MS=300,workletReadyMap=new WeakMap,PCMPlayer=class{constructor(e,t){__publicField(this,"_ctx"),__publicField(this,"_options"),__publicField(this,"_workletNode",null),__publicField(this,"_pcmInitialized",!1),__publicField(this,"_pcmState","idle"),__publicField(this,"_pendingInputs",[]),__publicField(this,"_processQueue",Promise.resolve()),__publicField(this,"_playedSamples",0),__publicField(this,"_totalInputSamples",0),__publicField(this,"_isPlayEnd",!1),__publicField(this,"_playEndStartTime",0),__publicField(this,"_resampleState",{lastSample:0,nextInputIndex:0}),__publicField(this,"_channels",1),__publicField(this,"_mediaDestination",null),__publicField(this,"_audioElement",null),__publicField(this,"_startPromise",null),__publicField(this,"_recoveryContext",null),__publicField(this,"_recoveryHandler",null),this._ctx=e,this._options=__spreadValues({},t),void 0===this._options.realtime&&(this._options.realtime=!0),this._channels=this._options.channels&&this._options.channels>0?this._options.channels:1}get currentTime(){return Math.round(this._playedSamples/TARGET_SAMPLE_RATE*100)/100}get duration(){return Math.round(this._totalInputSamples/TARGET_SAMPLE_RATE*100)/100}get isStop(){return"stopped"===this._pcmState||"idle"===this._pcmState}get isPause(){return"paused"===this._pcmState}get isPlayEnd(){return this._isPlayEnd}get state(){return this._pcmState}getWorkletNode(){return this._workletNode}updateOptions(e){void 0!==e.realtime&&(this._options.realtime=e.realtime,this._workletNode&&this._workletNode.port.postMessage({name:"set-mode",realtime:!!e.realtime})),void 0!==e.channels&&e.channels>0&&(this._channels=e.channels),e.onInputError&&(this._options.onInputError=e.onInputError),e.onTimeUpdate&&(this._options.onTimeUpdate=e.onTimeUpdate),e.onEnded&&(this._options.onEnded=e.onEnded),e.onDurationChange&&(this._options.onDurationChange=e.onDurationChange)}async init(){for(let e=1;e<=2;e++)try{return void await this._initInternal()}catch(t){if(this._workletNode&&(this._workletNode.port.onmessage=null,this._workletNode.disconnect(),this._workletNode=null),e>=2)throw t;this._ctx._log.warn(`init failed (attempt ${e}/2), retrying...`,t),await new Promise(e=>setTimeout(e,200))}}async _initInternal(){var e,t;const i=this._ctx._audioContext;await this._ensureContextRunning(i);let s=workletReadyMap.get(i);s||(s=i.audioWorklet.addModule(URL.createObjectURL(new Blob([pcmPlayerWorkletString],{type:"application/javascript"}))),workletReadyMap.set(i,s));try{await s}catch(e){throw workletReadyMap.delete(i),this._ctx._log.error("failed to load pcm-player worklet module:",e),e}try{this._workletNode=new AudioWorkletNode(i,"pcm-player",{numberOfInputs:0,numberOfOutputs:1,outputChannelCount:[1]})}catch(e){throw this._ctx._log.error(`failed to create AudioWorkletNode (context state: ${i.state}):`,e),this._workletNode=null,e}if(!(null==(e=this._workletNode)?void 0:e.port)){null==(t=this._workletNode)||t.disconnect(),this._workletNode=null;const e="AudioWorkletNode created but port is not available (iOS compatibility issue)";throw this._ctx._log.error(e),new Error(e)}this._workletNode.port.postMessage({name:"set-mode",realtime:!!this._options.realtime}),this._workletNode.port.postMessage({name:"pause"}),this._workletNode.port.onmessage=e=>{var t,i,s,r,l,o;const{data:a}=e;switch(a.type){case"played":this._playedSamples=a.playedSamples,this._isPlayEnd=!1,this._playEndStartTime=0,null==(i=(t=this._options).onTimeUpdate)||i.call(t,this.currentTime,this.duration);break;case"starving":this._playedSamples=a.playedSamples,this._handlePlayEnd();break;case"cleared":this._totalInputSamples-=a.length,this._totalInputSamples<0&&(this._totalInputSamples=0),null==(r=(s=this._options).onDurationChange)||r.call(s,this.duration),null==(o=(l=this._options).onTimeUpdate)||o.call(l,this.currentTime,this.duration)}},this._pcmInitialized=!0,this._pcmState="idle",this._resetResampleState(),this._ctx._log.info("PCM engine initialized")}input(e,t){var i,s,r,l;if("destroyed"===this._pcmState)return this._ctx._log.warn("player is destroyed"),void(null==(s=(i=this._options).onInputError)||s.call(i,"player is destroyed",0));if(!t||t<=0)return this._ctx._log.warn("invalid sampleRate"),void(null==(l=(r=this._options).onInputError)||l.call(r,"invalid sampleRate",0));let o;if(e instanceof Int16Array){o=new Float32Array(e.length);for(let t=0;t<e.length;t++)o[t]=e[t]/32767}else o=e;this._channels>1&&(o=this._downmixToMono(o,this._channels)),this._processQueue=this._processQueue.then(async()=>{"destroyed"!==this._pcmState&&(this._workletNode?this._sendToWorklet(o,t):this._pendingInputs.push({pcm:o,sampleRate:t}))}).catch(e=>{var t,i;this._ctx._log.error("input error:",e),null==(i=(t=this._options).onInputError)||i.call(t,e instanceof Error?e.message:String(e),0)})}clearInput(){var e,t,i,s;this._workletNode&&(this._workletNode.port.postMessage({name:"clear"}),this._resetResampleState(),this._pendingInputs=[],this._playedSamples=0,this._totalInputSamples=0,null==(t=(e=this._options).onDurationChange)||t.call(e,0),null==(s=(i=this._options).onTimeUpdate)||s.call(i,0,0))}async start(){if(this._startPromise)return this._startPromise;this._startPromise=this._startInternal();try{await this._startPromise}finally{this._startPromise=null}}async _startInternal(){if(!this._pcmInitialized)return void this._ctx._log.warn("PCM not initialized");if("playing"===this._pcmState)return void this._ctx._log.debug("PCM already playing");const e=this._ctx._audioContext;if(await this._ensureContextRunning(e),"stopped"===this._pcmState||"paused"===this._pcmState)this._workletNode&&("stopped"===this._pcmState&&this._workletNode.port.postMessage({name:"reset-playback"}),this._workletNode.port.postMessage({name:"resume"})),"stopped"===this._pcmState&&(this._playedSamples=0);else{if(!this._workletNode)return void this._ctx._log.warn("worklet not available");if(this._ctx._core.environment.IS_IOS){this._mediaDestination=e.createMediaStreamDestination(),this._workletNode.connect(this._mediaDestination);const t=new Audio;t.srcObject=this._mediaDestination.stream,t.setAttribute("autoplay","autoplay"),t.setAttribute("playsinline","playsinline"),this._audioElement=t;try{await t.play()}catch(e){this._ctx._log.warn("iOS audio element play failed:",e)}}else this._workletNode.connect(e.destination);if("destroyed"===this._pcmState||!this._workletNode)return void this._ctx._log.warn("player destroyed during start(), abort");this._workletNode.port.postMessage({name:"resume"})}this._pcmState="playing",this._isPlayEnd=!1,this._playEndStartTime=0,this._resetResampleState(),this._processQueue=this._processQueue.then(async()=>{for(const e of this._pendingInputs)this._sendToWorklet(e.pcm,e.sampleRate);this._pendingInputs=[]}),this._ctx._log.info("PCM playback started")}pause(){var e,t,i,s;"playing"===this._pcmState&&(this._pcmState="paused",this._workletNode&&(this._workletNode.port.postMessage({name:"pause"}),this._options.realtime&&(this._workletNode.port.postMessage({name:"discard"}),this._pendingInputs=[],this._totalInputSamples=0,this._playedSamples=0,null==(t=(e=this._options).onDurationChange)||t.call(e,0))),null==(s=(i=this._options).onTimeUpdate)||s.call(i,this.currentTime,this.duration))}resume(){var e,t;"paused"===this._pcmState&&(this._pcmState="playing",this._workletNode&&this._workletNode.port.postMessage({name:"resume"}),"suspended"===this._ctx._audioContext.state&&this._ctx._audioContext.resume().catch(e=>this._ctx._log.warn("AudioContext resume failed:",e)),null==(t=(e=this._options).onTimeUpdate)||t.call(e,this.currentTime,this.duration))}stop(){var e,t,i,s;this._pcmInitialized&&("playing"!==this._pcmState&&"paused"!==this._pcmState||(this._workletNode&&(this._workletNode.port.postMessage({name:"pause"}),this._options.realtime?(this._workletNode.port.postMessage({name:"discard"}),this._totalInputSamples=0,this._playedSamples=0,null==(t=(e=this._options).onDurationChange)||t.call(e,0)):this._playedSamples=0),this._pcmState="stopped",this._pendingInputs=[],this._processQueue=Promise.resolve(),this._resetResampleState(),this._isPlayEnd=!0,this._playEndStartTime=0,null==(s=(i=this._options).onTimeUpdate)||s.call(i,this.currentTime,this.duration),this._ctx._log.info("PCM playback stopped")))}destroy(){var e,t;null==(t=(e=this._options).onDurationChange)||t.call(e,0),this._removeContextRecovery(),this._pendingInputs=[],this._processQueue=Promise.resolve(),this._resetResampleState(),this._playedSamples=0,this._totalInputSamples=0,this._workletNode&&(this._workletNode.port.postMessage({name:"stop"}),this._workletNode.disconnect(),this._workletNode.port.onmessage=null,this._workletNode=null),this._audioElement&&(this._audioElement.pause(),this._audioElement.srcObject=null,this._audioElement=null),this._mediaDestination&&(this._mediaDestination.disconnect(),this._mediaDestination=null),this._isPlayEnd=!0,this._playEndStartTime=0,this._pcmState="destroyed",this._pcmInitialized=!1}async _ensureContextRunning(e){if("running"!==e.state){try{await e.resume()}catch(t){this._ctx._log.error(`AudioContext resume failed, state=${e.state}, likely cause: ${"interrupted"===e.state?"audio device interrupted/occupied (system call, Siri, another app, or host app on a call)":"no user gesture (autoplay policy)"}. Audio will remain silent until the context recovers to running; auto-recovery is armed.`,t)}this._registerContextRecovery(e)}}_registerContextRecovery(e){if("running"===e.state)return;if(this._recoveryContext===e&&this._recoveryHandler)return;this._removeContextRecovery();const t=()=>{"running"===e.state&&(this._removeContextRecovery(),this._ctx._log.info("AudioContext recovered to running, resuming playback automatically"),this._recoverPlayback())};this._recoveryContext=e,this._recoveryHandler=t,e.addEventListener("statechange",t)}_removeContextRecovery(){this._recoveryContext&&this._recoveryHandler&&this._recoveryContext.removeEventListener("statechange",this._recoveryHandler),this._recoveryContext=null,this._recoveryHandler=null}_recoverPlayback(){"playing"===this._pcmState&&(this._workletNode&&this._workletNode.port.postMessage({name:"resume"}),this._audioElement&&this._audioElement.paused&&this._audioElement.play().catch(e=>{this._ctx._log.warn("iOS audio element play failed during recovery:",e)}))}_resetResampleState(){this._resampleState={lastSample:0,nextInputIndex:0}}_downmixToMono(e,t){const i=Math.floor(e.length/t),s=new Float32Array(i);for(let r=0;r<i;r++){let i=0;for(let s=0;s<t;s++)i+=e[r*t+s];s[r]=i/t}return s}_resampleStream(e,t,i){if(t===i)return this._resampleState.lastSample=e[e.length-1],this._resampleState.nextInputIndex=0,e;const s=t/i,r=[];let l=this._resampleState.nextInputIndex;const o=e.length;for(;;){const t=Math.floor(l);if(t>=o-1)break;const i=l-t;let a,n;-1===t?(a=this._resampleState.lastSample,n=e[0]):(a=e[t],n=e[t+1]),r.push(a+(n-a)*i),l+=s}return this._resampleState.lastSample=e[o-1],this._resampleState.nextInputIndex=l-o,new Float32Array(r)}_sendToWorklet(e,t){var i,s,r,l,o,a;if(!this._workletNode||"destroyed"===this._pcmState)return;if("paused"===this._pcmState&&this._options.realtime)return;const n=this._resampleStream(e,t,TARGET_SAMPLE_RATE);if(this._options.realtime){const e="object"==typeof this._options.realtime?this._options.realtime:{},t=(e.maxDelay||MAX_DELAY_MS)/1e3*TARGET_SAMPLE_RATE;this._totalInputSamples-this._playedSamples>t&&e.discardAll&&(this._workletNode.port.postMessage({name:"discard"}),this._totalInputSamples=this._playedSamples,null==(s=(i=this._options).onDurationChange)||s.call(i,this.duration))}this._totalInputSamples+=n.length,this._isPlayEnd=!1,this._playEndStartTime=0,this._workletNode.port.postMessage({name:"input",pcm:n}),null==(l=(r=this._options).onDurationChange)||l.call(r,this.duration),null==(a=(o=this._options).onTimeUpdate)||a.call(o,this.currentTime,this.duration)}_handlePlayEnd(){var e,t,i,s;"paused"===this._pcmState||this._isPlayEnd||(this._playEndStartTime?Date.now()-this._playEndStartTime>500&&(this._playEndStartTime=0,this._isPlayEnd=!0,this._totalInputSamples>0&&(null==(t=(e=this._options).onEnded)||t.call(e)),null==(s=(i=this._options).onTimeUpdate)||s.call(i,this.currentTime,this.duration)):this._playEndStartTime=Date.now())}},ErrorCode=(e=>(e[e.INVALID_PARAMETER=4096]="INVALID_PARAMETER",e[e.INVALID_OPERATION=4097]="INVALID_OPERATION",e[e.NOT_SUPPORTED=4098]="NOT_SUPPORTED",e[e.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",e[e.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",e[e.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",e[e.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",e[e.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",e[e.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",e[e.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",e[e.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",e[e.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",e[e.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",e[e.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",e[e.CLIENT_BANNED=16448]="CLIENT_BANNED",e[e.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",e[e.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",e[e.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",e[e.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",e[e.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",e[e.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",e[e.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",e[e.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",e[e.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",e[e.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",e[e.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",e[e.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",e[e.API_CALL_ABORTED=16461]="API_CALL_ABORTED",e[e.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",e[e.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",e[e.SWITCH_ROOM_FAILED=16464]="SWITCH_ROOM_FAILED",e[e.VIDEO_ENCODE_FAILED=16465]="VIDEO_ENCODE_FAILED",e[e.AUDIO_ENCODE_FAILED=16466]="AUDIO_ENCODE_FAILED",e[e.WHIP_REQUEST_FAILED=16467]="WHIP_REQUEST_FAILED",e[e.UNKNOWN=65535]="UNKNOWN",e))(ErrorCode||{}),error_code_default=ErrorCode;function isAutoPlayBlockedError(e){var t;return"NotAllowedError"===e.name||(e.code===error_code_default.PLAY_NOT_ALLOWED||!!(null==(t=e.message)?void 0:t.includes("NotAllowedError")))}var URLPlayer=class{constructor(e,t){__publicField(this,"_ctx"),__publicField(this,"_options"),__publicField(this,"_urlPlayer",null),__publicField(this,"_urlPublisher",null),__publicField(this,"_audioObjectURL",null),__publicField(this,"_urlInitSettings",{}),__publicField(this,"_urlEventsBound",!1),__publicField(this,"_destroyed",!1),__publicField(this,"_localGainNode",null),__publicField(this,"_localSourceNode",null),__publicField(this,"_isLocalPipelineActive",!1),__publicField(this,"_localPipelineFailed",!1),this._ctx=e,this._options=__spreadValues({},t)}get volume(){var e,t;return this._isLocalPipelineActive&&this._localGainNode?this._localGainNode.gain.value:(null==(e=this._urlPlayer)?void 0:e.element)?this._urlPlayer.element.volume:null!=(t=this._options.volume)?t:1}set volume(e){this._options.volume=e,this._setVolume(e)}get loop(){var e,t;return(null==(e=this._urlPlayer)?void 0:e.element)?this._urlPlayer.element.loop:null!=(t=this._options.loop)&&t}set loop(e){this._options.loop=e,this._setLoop(e)}get playbackRate(){var e,t;return(null==(e=this._urlPlayer)?void 0:e.element)?this._urlPlayer.element.playbackRate:null!=(t=this._options.playbackRate)?t:1}set playbackRate(e){this._options.playbackRate=e,this._setPlaybackRate(e)}get currentTime(){return this._urlPlayer?Math.round(this._urlPlayer.currentTime/10)/100:0}get duration(){if(this._urlPlayer){const e=this._urlPlayer.duration;return Number.isFinite(e)?Math.round(e/10)/100:0}return 0}get isStop(){var e;return!(null==(e=this._urlPlayer)?void 0:e.element)||this._urlPlayer.element.paused&&0===this._urlPlayer.element.currentTime}get isPause(){var e;return!!(null==(e=this._urlPlayer)?void 0:e.element)&&this._urlPlayer.element.paused}get isPlayEnd(){var e;return!!(null==(e=this._urlPlayer)?void 0:e.element)&&this._urlPlayer.element.ended}getPublisherElement(){var e;return(null==(e=this._urlPublisher)?void 0:e.element)||null}getPublisher(){return this._urlPublisher}updateOptions(e){void 0!==e.volume&&this._setVolume(e.volume),void 0!==e.loop&&this._setLoop(e.loop),void 0!==e.playbackRate&&this._setPlaybackRate(e.playbackRate),void 0!==e.seekFrom&&this.seek(e.seekFrom),e.operation&&this._setOperation(e.operation),e.onDurationChange&&(this._options.onDurationChange=e.onDurationChange,this._bindDurationChange(e.onDurationChange)),e.onTimeUpdate&&(this._options.onTimeUpdate=e.onTimeUpdate,this._bindTimeUpdate(e.onTimeUpdate)),e.onEnded&&(this._options.onEnded=e.onEnded,this._bindEnded(e.onEnded))}async init(){const{url:e,loop:t,volume:i,playbackRate:s,publish:r}=this._options;if(!e)return;let l=e;if(r)try{l=await this._preloadURL(e)}catch(t){this._ctx._log.warn(`preload failed, falling back to original URL: ${t}`),l=e}this._urlPlayer=new this._ctx._core.AudioPlayer({id:`${this._ctx._id}-player`,url:l,track:null,container:null,muted:!1,log:this._ctx._log,enableTimeupdateEvent:!0}),r&&(this._urlPublisher=new this._ctx._core.AudioPlayer({id:`${this._ctx._id}-publisher`,url:l,track:null,container:null,muted:!1,log:this._ctx._log,enableTimeupdateEvent:!1})),this._urlInitSettings={loop:t,volume:i,playbackRate:s},this._destroyed=!1,this._ctx._log.info(`URL engine initialized, publish=${r}`)}async start(){if(this._urlPlayer)try{const e=[this._urlPlayer.play()];this._urlPublisher&&e.push(this._urlPublisher.play()),await Promise.all(e),this._ctx._core.environment.isRealIOS()&&this._urlPlayer.element&&this._setupLocalPipeline(),this._applyURLSettings(),this._bindURLEvents(),this._ctx._log.info("URL playback started")}catch(e){await this._handleAutoPlayFailed(e)}}pause(){var e,t;null==(e=this._urlPlayer)||e.pause(),null==(t=this._urlPublisher)||t.pause()}resume(){var e,t;null==(e=this._urlPlayer)||e.play(),null==(t=this._urlPublisher)||t.play()}stop(){this._urlPlayer&&(this._urlPlayer.pause(),this._urlPlayer.currentTime=0,this._urlPublisher&&(this._urlPublisher.pause(),this._urlPublisher.currentTime=0),this._ctx._log.info("URL playback stopped"))}seek(e){if(!this._urlPlayer)return;const t=1e3*e;t<0||t>this._urlPlayer.duration||(this._urlPlayer.currentTime=t,this._urlPublisher&&(this._urlPublisher.currentTime=t))}async createPublisher(e){if(this._urlPublisher)return this._urlPublisher.element;if(!this._urlPlayer)return null;let t=e||this._audioObjectURL||this._options.url||"";if(!e&&!this._audioObjectURL&&this._options.url)try{t=await this._preloadURL(this._options.url)}catch(e){this._ctx._log.warn(`preload for publish toggle failed, using original URL: ${e}`),t=this._options.url}if(this._urlPublisher=new this._ctx._core.AudioPlayer({id:`${this._ctx._id}-publisher`,url:t,track:null,container:null,muted:!1,log:this._ctx._log,enableTimeupdateEvent:!1}),this._urlPlayer.element&&!this._urlPlayer.element.paused)try{await this._urlPublisher.play(),this._urlPublisher.element&&this._urlPlayer.element&&(this._urlPublisher.element.loop=this._urlPlayer.element.loop,this._urlPublisher.element.playbackRate=this._urlPlayer.element.playbackRate,this._urlPublisher.element.currentTime=this._urlPlayer.element.currentTime)}catch(e){this._ctx._log.warn(`publisher play failed during publish toggle: ${e}`)}return this._urlPublisher.element}destroyPublisher(){this._urlPublisher&&(this._urlPublisher.stop(),this._urlPublisher=null)}destroy(){this._destroyLocalPipeline(),this._urlPlayer&&(this._urlPlayer.stop(),this._urlPlayer=null),this._urlPublisher&&(this._urlPublisher.stop(),this._urlPublisher=null),this._audioObjectURL&&(URL.revokeObjectURL(this._audioObjectURL),this._audioObjectURL=null),this._urlEventsBound=!1,this._destroyed=!0}_applyURLSettings(){const{loop:e,volume:t,playbackRate:i}=this._urlInitSettings;void 0!==e&&this._setLoop(e),void 0!==t&&this._setVolume(t),void 0!==i&&this._setPlaybackRate(i),this._urlInitSettings={}}_bindURLEvents(){this._urlEventsBound||(this._urlEventsBound=!0,this._options.onDurationChange&&this._bindDurationChange(this._options.onDurationChange),this._options.onTimeUpdate&&this._bindTimeUpdate(this._options.onTimeUpdate),this._options.onEnded&&this._bindEnded(this._options.onEnded),this._bindErrorHandlers())}async _handleAutoPlayFailed(e){var t;if("NotSupportedError"===e.name)this._ctx._log.warn(`play failed, try to reload source. error: ${e}`),await this._reloadURL(),await(null==(t=this._urlPlayer)?void 0:t.play()),this._urlPublisher&&await this._urlPublisher.play();else{if(!isAutoPlayBlockedError(e))throw e;{this._ctx._log.warn("autoplay blocked by browser policy, user interaction required");const{room:e}=this._ctx._core;if(null==e?void 0:e.enableAutoPlayDialog)this._ctx._core.showAutoPlayDialog();else{const e=async()=>{var e,t;if(this._destroyed)return;const i=[];this._urlPlayer&&i.push(this._urlPlayer.play()),this._urlPublisher&&i.push(this._urlPublisher.play()),await Promise.all(i),null==(t=(e=this._options).onAutoPlayResume)||t.call(e)};this._ctx._core.trtc.emit("autoplay-failed",{userId:"",mediaType:"audio",resume:e})}}}}async _preloadURL(e){var t,i;this._ctx._log.info(`preloading URL resource: ${e}`);try{const t=await this._ctx._core.fileDownloader.download(e,{retries:3,type:"blob"});if(!t||0===t.size)throw new Error(`Downloaded resource is empty (size=0), url: ${e}`);return this._audioObjectURL&&URL.revokeObjectURL(this._audioObjectURL),this._audioObjectURL=URL.createObjectURL(t),this._ctx._log.info(`preload complete, blobUrl created, size=${t.size}`),this._audioObjectURL}catch(s){if(s instanceof TypeError&&(null==(t=s.message)?void 0:t.includes("Failed to fetch")))throw this._ctx._log.error(`CORS error detected when loading audio resource: ${e}. Please check the server's CORS configuration (Access-Control-Allow-Origin header).`),new Error(`CORS error: Failed to fetch audio resource. Ensure the server allows cross-origin requests for: ${e}`);const r=null==(i=s.message)?void 0:i.match(/(\d{3})/);if(r){const t=parseInt(r[1]);if(t>=400&&t<600)throw this._ctx._log.error(`HTTP ${t} error when loading audio resource: ${e}`),new Error(`HTTP ${t}: Failed to load audio resource: ${e}`)}throw this._ctx._log.error(`Failed to preload audio resource after retries: ${e}, error: ${s.message||s}`),s}}async _reloadURL(){var e,t;const{url:i}=this._options;if(!i)return;const s=await this._preloadURL(i);(null==(e=this._urlPlayer)?void 0:e.element)&&(this._urlPlayer.element.src=s),(null==(t=this._urlPublisher)?void 0:t.element)&&(this._urlPublisher.element.src=s)}_setVolume(e){this._urlPlayer&&(this._ctx._core.environment.isRealIOS()?this._localPipelineFailed?this._urlPlayer.setVolume(e):(!this._isLocalPipelineActive&&this._urlPlayer.element&&this._setupLocalPipeline(),this._localGainNode&&(this._localGainNode.gain.value=e)):this._urlPlayer.setVolume(e))}_setLoop(e){this._urlPlayer&&this._urlPlayer.setLoop(e),this._urlPublisher&&this._urlPublisher.setLoop(e)}_setPlaybackRate(e){var t,i;(null==(t=this._urlPlayer)?void 0:t.element)&&(this._urlPlayer.element.playbackRate=e),(null==(i=this._urlPublisher)?void 0:i.element)&&(this._urlPublisher.element.playbackRate=e)}_setOperation(e){"pause"===e&&this.pause(),"resume"===e&&this.resume(),"stop"===e&&this.stop()}_bindDurationChange(e){var t;(null==(t=this._urlPlayer)?void 0:t.element)&&(this._urlPlayer.element.ondurationchange=()=>e(this.duration))}_bindTimeUpdate(e){var t;(null==(t=this._urlPlayer)?void 0:t.element)&&(this._urlPlayer.element.ontimeupdate=()=>e(this.currentTime,this.duration))}_bindEnded(e){var t;(null==(t=this._urlPlayer)?void 0:t.element)&&(this._urlPlayer.element.onended=e)}_setupLocalPipeline(){var e,t,i;if(this._localPipelineFailed)return;const s=this._ctx._audioContext;if(this._isLocalPipelineActive)return void("suspended"===s.state&&s.resume().catch(e=>{this._ctx._log.warn(`AudioContext resume failed: ${e}`)}));const r=null==(e=this._urlPlayer)?void 0:e.element;if(r)try{"suspended"===s.state&&s.resume().catch(e=>{this._ctx._log.warn(`AudioContext resume failed during local pipeline setup: ${e}`)});const e=this._ctx._core.createAudioNode(r);this._localSourceNode=e;const i=s.createGain();i.gain.value=null!=(t=this._options.volume)?t:1,this._localGainNode=i,e.connect(i),i.connect(s.destination),this._isLocalPipelineActive=!0,this._ctx._log.info("iOS local playback pipeline established")}catch(e){this._localPipelineFailed=!0,this._ctx._log.warn(`Failed to setup iOS local playback pipeline, falling back to element.volume: ${e.message||e}`),this._urlPlayer&&this._urlPlayer.setVolume(null!=(i=this._options.volume)?i:1)}}_destroyLocalPipeline(){if(this._localGainNode){try{this._localGainNode.disconnect()}catch(e){}this._localGainNode=null}if(this._localSourceNode){try{this._localSourceNode.disconnect()}catch(e){}this._localSourceNode=null}this._isLocalPipelineActive=!1,this._localPipelineFailed=!1}_bindErrorHandlers(){var e,t;(null==(e=this._urlPlayer)?void 0:e.element)&&(this._urlPlayer.element.onerror=()=>{var e,t;const i=null==(t=null==(e=this._urlPlayer)?void 0:e.element)?void 0:t.error;(null==i?void 0:i.code)===MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED?(this._ctx._log.warn("player source not supported, triggering reload"),this._reloadURL().catch(e=>this._ctx._log.error("reload after player error failed:",e))):i&&this._ctx._log.error(`player media error: code=${i.code}, message=${i.message}`)}),(null==(t=this._urlPublisher)?void 0:t.element)&&(this._urlPublisher.element.onerror=()=>{var e,t;const i=null==(t=null==(e=this._urlPublisher)?void 0:e.element)?void 0:t.error;(null==i?void 0:i.code)===MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED?(this._ctx._log.warn("publisher source not supported, triggering reload"),this._reloadURL().catch(e=>this._ctx._log.warn("reload after publisher error failed:",e))):i&&this._ctx._log.warn(`publisher media error (non-fatal): code=${i.code}, message=${i.message}`)})}},TrackPlayer=class{constructor(e,t){__publicField(this,"_ctx"),__publicField(this,"_options"),__publicField(this,"_trackSource",null),__publicField(this,"_trackPlaying",!1),this._ctx=e,this._options=__spreadValues({},t)}get isPlaying(){return this._trackPlaying}get isStop(){return!this._trackPlaying}get isPause(){return!!this._options.track&&!this._options.track.enabled}get track(){return this._options.track||null}init(){this._ctx._log.info("Track engine initialized")}async start(){const{track:e}=this._options;if(!e)return;if(this._trackPlaying)return void this._ctx._log.warn("Track already playing");const t=this._ctx._audioContext;"suspended"===t.state&&await t.resume(),this._trackSource=t.createMediaStreamSource(new MediaStream([e])),this._trackSource.connect(t.destination),this._trackPlaying=!0,this._ctx._log.info("Track playback started")}pause(){this._options.track&&(this._options.track.enabled=!1)}resume(){this._options.track&&(this._options.track.enabled=!0)}stop(){this._trackPlaying&&(this._trackSource&&(this._trackSource.disconnect(),this._trackSource=null),this._trackPlaying=!1,this._ctx._log.info("Track playback stopped"))}destroy(){this.stop(),this._trackSource=null}},AudioRefChangeType={ADD:"add",REMOVE:"remove"},AUDIO_PLAYER_REF_PREFIX="aup",AudioPlayerContext=class{constructor(e,t,i,s,r,l){__publicField(this,"_id"),__publicField(this,"_sourceType"),__publicField(this,"_log"),__publicField(this,"_core"),__publicField(this,"_audioContext"),__publicField(this,"_options"),__publicField(this,"_destroyed",!1),__publicField(this,"_pcmPlayer",null),__publicField(this,"_urlPlayer",null),__publicField(this,"_trackPlayer",null),__publicField(this,"_mixPipeline",null),__publicField(this,"_publish",!1),this._id=e,this._sourceType=t,this._audioContext=i,this._core=s,this._log=r,this._options=__spreadValues({},l),this._publish=l.publish||!1}get id(){return this._id}get sourceType(){return this._sourceType}get volume(){var e;return"url"===this._sourceType&&this._urlPlayer?this._urlPlayer.volume:null!=(e=this._options.volume)?e:1}set volume(e){"url"===this._sourceType&&(this._options.volume=e,this._urlPlayer&&(this._urlPlayer.volume=e),this._mixPipeline&&this._mixPipeline.setVolume(e))}get loop(){var e;return"url"===this._sourceType&&this._urlPlayer?this._urlPlayer.loop:null!=(e=this._options.loop)&&e}set loop(e){"url"===this._sourceType&&(this._options.loop=e,this._urlPlayer&&(this._urlPlayer.loop=e))}get playbackRate(){var e;return"url"===this._sourceType&&this._urlPlayer?this._urlPlayer.playbackRate:null!=(e=this._options.playbackRate)?e:1}set playbackRate(e){"url"===this._sourceType&&(this._options.playbackRate=e,this._urlPlayer&&(this._urlPlayer.playbackRate=e))}get publish(){return this._publish}set publish(e){e!==this._publish&&this.updateOptions({publish:e})}get currentTime(){return"pcm"===this._sourceType&&this._pcmPlayer?this._pcmPlayer.currentTime:"url"===this._sourceType&&this._urlPlayer?this._urlPlayer.currentTime:0}get duration(){return"pcm"===this._sourceType&&this._pcmPlayer?this._pcmPlayer.duration:"url"===this._sourceType&&this._urlPlayer?this._urlPlayer.duration:0}get isStop(){return"pcm"===this._sourceType&&this._pcmPlayer?this._pcmPlayer.isStop:"url"===this._sourceType&&this._urlPlayer?this._urlPlayer.isStop:"track"!==this._sourceType||!this._trackPlayer||this._trackPlayer.isStop}get isPause(){return"pcm"===this._sourceType&&this._pcmPlayer?this._pcmPlayer.isPause:"url"===this._sourceType&&this._urlPlayer?this._urlPlayer.isPause:!("track"!==this._sourceType||!this._trackPlayer)&&this._trackPlayer.isPause}get isPlayEnd(){return"pcm"===this._sourceType&&this._pcmPlayer?this._pcmPlayer.isPlayEnd:!("url"!==this._sourceType||!this._urlPlayer)&&this._urlPlayer.isPlayEnd}input(e,t){var i,s,r;if("pcm"===this._sourceType)return this._destroyed?(this._log.warn("player is destroyed"),void(null==(s=(i=this._options).onInputError)||s.call(i,"player is destroyed",0))):void(null==(r=this._pcmPlayer)||r.input(e,t));this._log.warn("input() is only available for PCM source type")}clearInput(){var e;"pcm"===this._sourceType&&(this._destroyed||null==(e=this._pcmPlayer)||e.clearInput())}async start(){var e,t,i,s;if(this._destroyed)this._log.warn("player is destroyed");else switch(this._sourceType){case"pcm":if(await(null==(e=this._pcmPlayer)?void 0:e.start()),this._destroyed)return;this._publish&&this._connectMixPipeline();break;case"url":if(await(null==(t=this._urlPlayer)?void 0:t.start()),this._destroyed)return;this._publish&&(null==(i=this._urlPlayer)?void 0:i.getPublisherElement())&&(this._connectMixPipeline(),this._mixPipeline&&void 0!==this._options.volume&&this._mixPipeline.setVolume(this._options.volume));break;case"track":if(await(null==(s=this._trackPlayer)?void 0:s.start()),this._destroyed)return;this._publish&&this._connectMixPipeline()}}pause(){var e,t,i;switch(this._sourceType){case"pcm":null==(e=this._pcmPlayer)||e.pause();break;case"url":null==(t=this._urlPlayer)||t.pause();break;case"track":null==(i=this._trackPlayer)||i.pause()}}resume(){var e,t,i,s,r;switch(this._sourceType){case"pcm":if(null==(e=this._pcmPlayer)||e.resume(),this._publish&&!this._mixPipeline){(null==(t=this._pcmPlayer)?void 0:t.getWorkletNode())&&this._connectMixPipeline()}break;case"url":null==(i=this._urlPlayer)||i.resume(),this._publish&&!this._mixPipeline&&(null==(s=this._urlPlayer)?void 0:s.getPublisherElement())&&(this._connectMixPipeline(),this._mixPipeline&&void 0!==this._options.volume&&this._mixPipeline.setVolume(this._options.volume));break;case"track":null==(r=this._trackPlayer)||r.resume(),this._publish&&!this._mixPipeline&&this._connectMixPipeline()}}stop(){var e,t,i;switch(this._sourceType){case"pcm":null==(e=this._pcmPlayer)||e.stop(),this._publish&&this._disconnectMixPipeline();break;case"url":null==(t=this._urlPlayer)||t.stop(),this._disconnectMixPipeline();break;case"track":null==(i=this._trackPlayer)||i.stop(),this._disconnectMixPipeline()}}seek(e){var t;"url"===this._sourceType&&(null==(t=this._urlPlayer)||t.seek(e))}async init(){var e;switch(this._log.info(`init: sourceType=${this._sourceType}, id=${this._id}, publish=${this._publish}`),this._sourceType){case"pcm":this._pcmPlayer=new PCMPlayer(this,{channels:this._options.channels,realtime:null==(e=this._options.realtime)||e,onInputError:this._options.onInputError,onDurationChange:this._options.onDurationChange,onTimeUpdate:this._options.onTimeUpdate,onEnded:this._options.onEnded}),await this._pcmPlayer.init();break;case"url":this._urlPlayer=new URLPlayer(this,{url:this._options.url||"",publish:this._publish,loop:this._options.loop,volume:this._options.volume,playbackRate:this._options.playbackRate,onDurationChange:this._options.onDurationChange,onTimeUpdate:this._options.onTimeUpdate,onEnded:this._options.onEnded,onAutoPlayResume:()=>{var e;this._publish&&(null==(e=this._urlPlayer)?void 0:e.getPublisher())&&this._connectMixPipeline()}}),await this._urlPlayer.init();break;case"track":this._trackPlayer=new TrackPlayer(this,{track:this._options.track,onEnded:this._options.onEnded}),this._trackPlayer.init()}this._destroyed=!1}async updateOptions(e){if(this._log.info(`update: ${JSON.stringify(e)}`),void 0!==e.publish&&e.publish!==this._publish){this._publish;this._publish=e.publish,this._publish?"url"===this._sourceType&&this._urlPlayer?(await this._urlPlayer.createPublisher(),this._urlPlayer.isStop||this._urlPlayer.isPause||this._connectMixPipeline()):"url"!==this._sourceType&&this._connectMixPipeline():(this._disconnectMixPipeline(),"url"===this._sourceType&&this._urlPlayer&&this._urlPlayer.destroyPublisher())}if("url"===this._sourceType&&this._urlPlayer){const t={};void 0!==e.volume&&(t.volume=e.volume),void 0!==e.loop&&(t.loop=e.loop),void 0!==e.playbackRate&&(t.playbackRate=e.playbackRate),void 0!==e.seekFrom&&(t.seekFrom=e.seekFrom),e.operation&&(t.operation=e.operation),e.onDurationChange&&(t.onDurationChange=e.onDurationChange),e.onTimeUpdate&&(t.onTimeUpdate=e.onTimeUpdate),e.onEnded&&(t.onEnded=e.onEnded),Object.keys(t).length>0&&this._urlPlayer.updateOptions(t),void 0!==e.volume&&this._mixPipeline&&this._mixPipeline.setVolume(e.volume)}if("pcm"===this._sourceType&&this._pcmPlayer){const t={};void 0!==e.realtime&&(t.realtime=e.realtime),void 0!==e.channels&&(t.channels=e.channels),e.onInputError&&(t.onInputError=e.onInputError),e.onTimeUpdate&&(t.onTimeUpdate=e.onTimeUpdate),e.onEnded&&(t.onEnded=e.onEnded),e.onDurationChange&&(t.onDurationChange=e.onDurationChange),Object.keys(t).length>0&&this._pcmPlayer.updateOptions(t)}}destroy(){var e,t,i;if(!this._destroyed){switch(this._log.info(`destroy: id=${this._id}`),this._disconnectMixPipeline(),this._sourceType){case"pcm":null==(e=this._pcmPlayer)||e.destroy(),this._pcmPlayer=null;break;case"url":null==(t=this._urlPlayer)||t.destroy(),this._urlPlayer=null;break;case"track":null==(i=this._trackPlayer)||i.destroy(),this._trackPlayer=null}this._destroyed=!0}}_connectMixPipeline(){var e;if(!this._mixPipeline)try{const{room:t}=this._core;if(!(null==t?void 0:t.audioManager))return void this._log.warn("cannot connect mix pipeline: room or audioManager not available");this._core.validateSourceNode();const i=t.audioManager;if(this._mixPipeline=new this._core.MixAudioPipeline(i),"url"===this._sourceType&&this._urlPlayer){const e=this._urlPlayer.getPublisherElement();e?this._mixPipeline.replaceSource(e):this._log.warn("publisher element not available, mix pipeline source not connected")}else if("track"===this._sourceType&&(null==(e=this._trackPlayer)?void 0:e.track))this._mixPipeline.replaceSource(this._trackPlayer.track);else if("pcm"===this._sourceType&&this._pcmPlayer){const e=this._pcmPlayer.getWorkletNode();e&&this._mixPipeline.source.replaceNode(e)}this._mixPipeline.connect(),this._mixPipeline.source.node&&t.audioManager.updateAudioReference({type:AudioRefChangeType.ADD,audioReference:this._mixPipeline.source.node,refId:`${AUDIO_PLAYER_REF_PREFIX}-${this._id}`}),this._log.info("mix pipeline connected")}catch(e){this._log.error("failed to connect mix pipeline:",e)}}_disconnectMixPipeline(){if(this._mixPipeline){try{const{room:e}=this._core;(null==e?void 0:e.audioManager)&&this._mixPipeline.source.node&&e.audioManager.updateAudioReference({type:AudioRefChangeType.REMOVE,audioReference:this._mixPipeline.source.node,refId:`${AUDIO_PLAYER_REF_PREFIX}-${this._id}`})}catch(e){this._log.warn("failed to remove audio reference:",e)}this._mixPipeline.disconnect(),this._mixPipeline=null,this._log.info("mix pipeline disconnected")}}},contextSeqId=0,_AudioPlayer=class e{constructor(e){this.core=e,__publicField(this,"_core"),__publicField(this,"_log"),__publicField(this,"_audioContext"),__publicField(this,"_instances",new Map),this._core=e,this._log=e.log.createChild({id:"aup"}),this._audioContext=e.audioContext,this._log.info("plugin registered")}getName(){return e.Name}getAlias(){return"aup-"}getGroup(e){return(null==e?void 0:e.id)||"*"}getValidateRule(e){switch(e){case"start":return startValidateRule(this._core);case"update":return updateValidateRule(this._core);case"stop":return stopValidateRule(this._core)}}async start(e){const{id:t,sourceType:i}=e,s=i;if(this._checkBrowserSupport(t,s,this._audioContext),this._instances.has(t)){this._log.warn(`instance with id=${t} already exists, destroying old instance`);this._instances.get(t).destroy(),this._instances.delete(t)}const r="aup-"+ ++contextSeqId,l=this._core.log.createChild({id:r}),o=new AudioPlayerContext(t,s,this._audioContext,this._core,l,e);return await o.init(),this._instances.set(t,o),this._log.info(`player created id=${t}, total=${this._instances.size}`),"url"===s&&e.publish&&this._core.kvStatManager.addEnum({key:502700,value:3}),"pcm"===s&&e.publish&&this._core.kvStatManager.addEnum({key:502700,value:4}),o}async update(e){const{id:t}=e,i=this._instances.get(t);if(!i)return void this._log.warn(`update: instance not found id=${t}`);const s=e,{id:r}=s,l=__objRest(s,["id"]);return await i.updateOptions(l),"url"===i.sourceType&&e.publish&&this._core.kvStatManager.addEnum({key:502700,value:3}),"pcm"===i.sourceType&&e.publish&&this._core.kvStatManager.addEnum({key:502700,value:4}),i}async stop(e){const{id:t}=e;if("*"===t)return void this._destroyAll();const i=this._instances.get(t);i?(i.destroy(),this._instances.delete(t),this._log.info(`instance destroyed id=${t}, remaining=${this._instances.size}`)):this._log.warn(`stop: instance not found id=${t}`)}destroy(){this._destroyAll(),this._log.info("all instances destroyed")}_destroyAll(){for(const[e,t]of this._instances)t.destroy(),this._log.info(`instance destroyed id=${e}`);this._instances.clear()}_checkBrowserSupport(e,t,i){const{RtcError:s,ErrorCode:r}=this._core.errorModule;if("pcm"===t){const t=[];if(i.audioWorklet&&"function"==typeof i.audioWorklet.addModule||t.push("AudioWorklet (audioContext.audioWorklet.addModule)"),"undefined"==typeof AudioWorkletNode&&t.push("AudioWorkletNode"),"undefined"==typeof Blob&&t.push("Blob"),"undefined"!=typeof URL&&"function"==typeof URL.createObjectURL||t.push("URL.createObjectURL"),t.length>0)throw new s({code:r.NOT_SUPPORTED,message:`AudioPlayer [${e}]: PCM sourceType is not supported in this browser. Missing: ${t.join(", ")}.`})}}};__publicField(_AudioPlayer,"TYPE",{}),__publicField(_AudioPlayer,"Name","AudioPlayer");var AudioPlayer=_AudioPlayer,index_default=AudioPlayer;export{index_default as default};export{AudioPlayer};
1
+ var __defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,i)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,__spreadValues=(e,t)=>{for(var i in t||(t={}))__hasOwnProp.call(t,i)&&__defNormalProp(e,i,t[i]);if(__getOwnPropSymbols)for(var i of __getOwnPropSymbols(t))__propIsEnum.call(t,i)&&__defNormalProp(e,i,t[i]);return e},__objRest=(e,t)=>{var i={};for(var s in e)__hasOwnProp.call(e,s)&&t.indexOf(s)<0&&(i[s]=e[s]);if(null!=e&&__getOwnPropSymbols)for(var s of __getOwnPropSymbols(e))t.indexOf(s)<0&&__propIsEnum.call(e,s)&&(i[s]=e[s]);return i},__publicField=(e,t,i)=>__defNormalProp(e,"symbol"!=typeof t?t+"":t,i),TARGET_SAMPLE_RATE=48e3;function isValidAudioUrl(e){var t;const i=e.split("?")[0],s=null==(t=i.split(".").pop())?void 0:t.toLowerCase(),r=!!s&&["mp3","ogg","wav","flac"].includes(s),l=i.startsWith("blob"),o=i.startsWith("data");return r||l||o}var pcmPlayerWorkletString='class PCMPlayerWorklet extends AudioWorkletProcessor{constructor(){super(),this.capacity=480000,this.ringBuf=new Float32Array(this.capacity),this.writePos=0,this.readPos=0,this.buffered=0,this.isStop=!1,this.isPause=!1,this.playedSamples=0,this.totalSamples=0,this.msgCounter=0,this.isRealtime=!0,this.dataStart=0,this.port.onmessage=e=>{var t=e.data;switch(t.name){case"input":{var p=t.pcm,l=p.length;if(this.buffered+l>this.capacity){if(this.isRealtime){var c=Math.max(this.capacity*2,this.buffered+l),n=new Float32Array(c);for(var i=0;i<this.buffered;i++)n[i]=this.ringBuf[(this.readPos+i)%this.capacity];this.ringBuf=n,this.readPos=0,this.writePos=this.buffered,this.dataStart=0,this.capacity=c}else{var c=Math.max(this.capacity*2,this.totalSamples+l),n=new Float32Array(c);for(var i=0;i<this.totalSamples;i++)n[i]=this.ringBuf[(this.dataStart+i)%this.capacity];this.readPos=this.playedSamples,this.writePos=this.totalSamples,this.dataStart=0,this.ringBuf=n,this.capacity=c}}for(i=0;i<l;i++)this.ringBuf[this.writePos]=p[i],this.writePos=(this.writePos+1)%this.capacity;this.buffered+=l,this.totalSamples+=l;break}case"clear":{var s=this.buffered;this.readPos=0,this.writePos=0,this.buffered=0,this.playedSamples=0,this.totalSamples=0,this.dataStart=0,this.port.postMessage({type:"cleared",length:s});break}case"pause":this.isPause=!0;break;case"resume":this.isPause=!1;break;case"discard":this.readPos=0,this.writePos=0,this.buffered=0,this.playedSamples=0,this.totalSamples=0,this.dataStart=0;break;case"reset-playback":this.readPos=this.dataStart,this.playedSamples=0,this.buffered=this.totalSamples;break;case"set-mode":this.isRealtime=!!t.realtime;break;case"stop":this.isStop=!0}}}process(e,t){if(this.isStop)return!1;var s=t[0];if(!s||!s[0])return!0;var o=s[0];if(this.isPause)return o.fill(0),!0;var a=o.length;if(this.buffered>=a){for(var i=0;i<a;i++)o[i]=this.ringBuf[this.readPos],this.readPos=(this.readPos+1)%this.capacity;return this.buffered-=a,this.playedSamples+=a,this.msgCounter++,this.msgCounter>=8&&(this.msgCounter=0,this.port.postMessage({type:"played",playedSamples:this.playedSamples,bufferLength:this.buffered})),!0}if(this.buffered>0){var n=this.buffered;for(i=0;i<n;i++)o[i]=this.ringBuf[this.readPos],this.readPos=(this.readPos+1)%this.capacity;for(i=n;i<a;i++)o[i]=0;return this.buffered=0,this.playedSamples+=n,this.port.postMessage({type:"played",playedSamples:this.playedSamples,bufferLength:0}),!0}return o.fill(0),this.port.postMessage({type:"starving",playedSamples:this.playedSamples,bufferLength:0}),!0}}registerProcessor("pcm-player",PCMPlayerWorklet);';function startValidateRule(e){return{type:"object",required:!0,properties:{id:{type:"string",required:!0},sourceType:{type:"string",required:!0,values:["pcm","url","track"]},url:{type:"string"},loop:{type:"boolean"},volume:{type:"number"},playbackRate:{type:"number"},publish:{type:"boolean"},realtime:{type:["boolean","object"],properties:{maxDelay:{type:"number"},discardAll:{type:"boolean"}}},onInputError:{type:"function"},onDurationChange:{type:"function"},onTimeUpdate:{type:"function"},onEnded:{type:"function"}},validate(t,i,s){const{RtcError:r,ErrorCode:l}=e.errorModule,{sourceType:o,url:a,track:n}=t;if("url"===o){if(!a)throw new r({code:l.INVALID_PARAMETER,message:`${s}: url is required when sourceType is 'url'.`});if("*"!==a&&!isValidAudioUrl(a))throw new r({code:l.INVALID_PARAMETER,message:`${s}: audio url is invalid, supported formats: mp3, ogg, wav, flac, blob, data.`})}if("track"===o&&!n)throw new r({code:l.INVALID_PARAMETER,message:`${s}: track is required when sourceType is 'track'.`})}}}function updateValidateRule(e){return{type:"object",required:!0,properties:{id:{type:"string",required:!0},publish:{type:"boolean"},realtime:{type:["boolean","object"],properties:{maxDelay:{type:"number"},discardAll:{type:"boolean"}}},loop:{type:"boolean"},volume:{type:"number"},playbackRate:{type:"number"},seekFrom:{type:"number"},operation:{type:"string",values:["pause","resume","stop"]},onInputError:{type:"function"},onDurationChange:{type:"function"},onTimeUpdate:{type:"function"},onEnded:{type:"function"}}}}function stopValidateRule(e){return{type:"object",required:!0,properties:{id:{type:"string",required:!0}}}}var MAX_DELAY_MS=300,workletReadyMap=new WeakMap,PCMPlayer=class{constructor(e,t){__publicField(this,"_ctx"),__publicField(this,"_options"),__publicField(this,"_workletNode",null),__publicField(this,"_pcmInitialized",!1),__publicField(this,"_pcmState","idle"),__publicField(this,"_pendingInputs",[]),__publicField(this,"_processQueue",Promise.resolve()),__publicField(this,"_playedSamples",0),__publicField(this,"_totalInputSamples",0),__publicField(this,"_isPlayEnd",!1),__publicField(this,"_playEndStartTime",0),__publicField(this,"_resampleState",{lastSample:0,nextInputIndex:0}),__publicField(this,"_channels",1),__publicField(this,"_mediaDestination",null),__publicField(this,"_audioElement",null),__publicField(this,"_startPromise",null),__publicField(this,"_recoveryContext",null),__publicField(this,"_recoveryHandler",null),this._ctx=e,this._options=__spreadValues({},t),void 0===this._options.realtime&&(this._options.realtime=!0),this._channels=this._options.channels&&this._options.channels>0?this._options.channels:1}get currentTime(){return Math.round(this._playedSamples/TARGET_SAMPLE_RATE*100)/100}get duration(){return Math.round(this._totalInputSamples/TARGET_SAMPLE_RATE*100)/100}get isStop(){return"stopped"===this._pcmState||"idle"===this._pcmState}get isPause(){return"paused"===this._pcmState}get isPlayEnd(){return this._isPlayEnd}get state(){return this._pcmState}getWorkletNode(){return this._workletNode}updateOptions(e){void 0!==e.realtime&&(this._options.realtime=e.realtime,this._workletNode&&this._workletNode.port.postMessage({name:"set-mode",realtime:!!e.realtime})),void 0!==e.channels&&e.channels>0&&(this._channels=e.channels),e.onInputError&&(this._options.onInputError=e.onInputError),e.onTimeUpdate&&(this._options.onTimeUpdate=e.onTimeUpdate),e.onEnded&&(this._options.onEnded=e.onEnded),e.onDurationChange&&(this._options.onDurationChange=e.onDurationChange)}async init(){for(let e=1;e<=2;e++)try{return void await this._initInternal()}catch(t){if(this._workletNode&&(this._workletNode.port.onmessage=null,this._workletNode.disconnect(),this._workletNode=null),e>=2)throw t;this._ctx._log.warn(`init failed (attempt ${e}/2), retrying...`,t),await new Promise(e=>setTimeout(e,200))}}async _initInternal(){var e,t;const i=this._ctx._audioContext;await this._ensureContextRunning(i);let s=workletReadyMap.get(i);s||(s=i.audioWorklet.addModule(URL.createObjectURL(new Blob([pcmPlayerWorkletString],{type:"application/javascript"}))),workletReadyMap.set(i,s));try{await s}catch(e){throw workletReadyMap.delete(i),this._ctx._log.error("failed to load pcm-player worklet module:",e),e}try{this._workletNode=new AudioWorkletNode(i,"pcm-player",{numberOfInputs:0,numberOfOutputs:1,outputChannelCount:[1]})}catch(e){throw this._ctx._log.error(`failed to create AudioWorkletNode (context state: ${i.state}):`,e),this._workletNode=null,e}if(!(null==(e=this._workletNode)?void 0:e.port)){null==(t=this._workletNode)||t.disconnect(),this._workletNode=null;const e="AudioWorkletNode created but port is not available (iOS compatibility issue)";throw this._ctx._log.error(e),new Error(e)}this._workletNode.port.postMessage({name:"set-mode",realtime:!!this._options.realtime}),this._workletNode.port.postMessage({name:"pause"}),this._workletNode.port.onmessage=e=>{var t,i,s,r,l,o;const{data:a}=e;switch(a.type){case"played":this._playedSamples=a.playedSamples,this._isPlayEnd=!1,this._playEndStartTime=0,null==(i=(t=this._options).onTimeUpdate)||i.call(t,this.currentTime,this.duration);break;case"starving":this._playedSamples=a.playedSamples,this._handlePlayEnd();break;case"cleared":this._totalInputSamples-=a.length,this._totalInputSamples<0&&(this._totalInputSamples=0),null==(r=(s=this._options).onDurationChange)||r.call(s,this.duration),null==(o=(l=this._options).onTimeUpdate)||o.call(l,this.currentTime,this.duration)}},this._pcmInitialized=!0,this._pcmState="idle",this._resetResampleState(),this._ctx._log.info("PCM engine initialized")}input(e,t){var i,s,r,l;if("destroyed"===this._pcmState)return this._ctx._log.warn("player is destroyed"),void(null==(s=(i=this._options).onInputError)||s.call(i,"player is destroyed",0));if(!t||t<=0)return this._ctx._log.warn("invalid sampleRate"),void(null==(l=(r=this._options).onInputError)||l.call(r,"invalid sampleRate",0));let o;if(e instanceof Int16Array){o=new Float32Array(e.length);for(let t=0;t<e.length;t++)o[t]=e[t]/32767}else o=e;this._channels>1&&(o=this._downmixToMono(o,this._channels)),this._processQueue=this._processQueue.then(async()=>{"destroyed"!==this._pcmState&&(this._workletNode?this._sendToWorklet(o,t):this._pendingInputs.push({pcm:o,sampleRate:t}))}).catch(e=>{var t,i;this._ctx._log.error("input error:",e),null==(i=(t=this._options).onInputError)||i.call(t,e instanceof Error?e.message:String(e),0)})}clearInput(){var e,t,i,s;this._workletNode&&(this._workletNode.port.postMessage({name:"clear"}),this._resetResampleState(),this._pendingInputs=[],this._playedSamples=0,this._totalInputSamples=0,null==(t=(e=this._options).onDurationChange)||t.call(e,0),null==(s=(i=this._options).onTimeUpdate)||s.call(i,0,0))}async start(){if(this._startPromise)return this._startPromise;this._startPromise=this._startInternal();try{await this._startPromise}finally{this._startPromise=null}}async _startInternal(){if(!this._pcmInitialized)return void this._ctx._log.warn("PCM not initialized");if("playing"===this._pcmState)return void this._ctx._log.debug("PCM already playing");const e=this._ctx._audioContext;if(await this._ensureContextRunning(e),"stopped"===this._pcmState||"paused"===this._pcmState)this._workletNode&&("stopped"===this._pcmState&&this._workletNode.port.postMessage({name:"reset-playback"}),this._workletNode.port.postMessage({name:"resume"})),"stopped"===this._pcmState&&(this._playedSamples=0);else{if(!this._workletNode)return void this._ctx._log.warn("worklet not available");if(this._ctx._core.environment.IS_IOS){this._mediaDestination=e.createMediaStreamDestination(),this._workletNode.connect(this._mediaDestination);const t=new Audio;t.srcObject=this._mediaDestination.stream,t.setAttribute("autoplay","autoplay"),t.setAttribute("playsinline","playsinline"),this._audioElement=t;try{await t.play()}catch(e){this._ctx._log.warn("iOS audio element play failed:",e)}}else this._workletNode.connect(e.destination);if("destroyed"===this._pcmState||!this._workletNode)return void this._ctx._log.warn("player destroyed during start(), abort");this._workletNode.port.postMessage({name:"resume"})}this._pcmState="playing",this._isPlayEnd=!1,this._playEndStartTime=0,this._resetResampleState(),this._processQueue=this._processQueue.then(async()=>{for(const e of this._pendingInputs)this._sendToWorklet(e.pcm,e.sampleRate);this._pendingInputs=[]}),this._ctx._log.info("PCM playback started")}pause(){var e,t,i,s;"playing"===this._pcmState&&(this._pcmState="paused",this._workletNode&&(this._workletNode.port.postMessage({name:"pause"}),this._options.realtime&&(this._workletNode.port.postMessage({name:"discard"}),this._pendingInputs=[],this._totalInputSamples=0,this._playedSamples=0,null==(t=(e=this._options).onDurationChange)||t.call(e,0))),null==(s=(i=this._options).onTimeUpdate)||s.call(i,this.currentTime,this.duration))}resume(){var e,t;"paused"===this._pcmState&&(this._pcmState="playing",this._workletNode&&this._workletNode.port.postMessage({name:"resume"}),"suspended"===this._ctx._audioContext.state&&this._ctx._audioContext.resume().catch(e=>this._ctx._log.warn("AudioContext resume failed:",e)),null==(t=(e=this._options).onTimeUpdate)||t.call(e,this.currentTime,this.duration))}stop(){var e,t,i,s;this._pcmInitialized&&("playing"!==this._pcmState&&"paused"!==this._pcmState||(this._workletNode&&(this._workletNode.port.postMessage({name:"pause"}),this._options.realtime?(this._workletNode.port.postMessage({name:"discard"}),this._totalInputSamples=0,this._playedSamples=0,null==(t=(e=this._options).onDurationChange)||t.call(e,0)):this._playedSamples=0),this._pcmState="stopped",this._pendingInputs=[],this._processQueue=Promise.resolve(),this._resetResampleState(),this._isPlayEnd=!0,this._playEndStartTime=0,null==(s=(i=this._options).onTimeUpdate)||s.call(i,this.currentTime,this.duration),this._ctx._log.info("PCM playback stopped")))}destroy(){var e,t;null==(t=(e=this._options).onDurationChange)||t.call(e,0),this._removeContextRecovery(),this._pendingInputs=[],this._processQueue=Promise.resolve(),this._resetResampleState(),this._playedSamples=0,this._totalInputSamples=0,this._workletNode&&(this._workletNode.port.postMessage({name:"stop"}),this._workletNode.disconnect(),this._workletNode.port.onmessage=null,this._workletNode=null),this._audioElement&&(this._audioElement.pause(),this._audioElement.srcObject=null,this._audioElement=null),this._mediaDestination&&(this._mediaDestination.disconnect(),this._mediaDestination=null),this._isPlayEnd=!0,this._playEndStartTime=0,this._pcmState="destroyed",this._pcmInitialized=!1}async _ensureContextRunning(e){if("running"!==e.state){try{await e.resume()}catch(t){this._ctx._log.error(`AudioContext resume failed, state=${e.state}, likely cause: ${"interrupted"===e.state?"audio device interrupted/occupied (system call, Siri, another app, or host app on a call)":"no user gesture (autoplay policy)"}. Audio will remain silent until the context recovers to running; auto-recovery is armed.`,t)}this._registerContextRecovery(e)}}_registerContextRecovery(e){if("running"===e.state)return;if(this._recoveryContext===e&&this._recoveryHandler)return;this._removeContextRecovery();const t=()=>{"running"===e.state&&(this._removeContextRecovery(),this._ctx._log.info("AudioContext recovered to running, resuming playback automatically"),this._recoverPlayback())};this._recoveryContext=e,this._recoveryHandler=t,e.addEventListener("statechange",t)}_removeContextRecovery(){this._recoveryContext&&this._recoveryHandler&&this._recoveryContext.removeEventListener("statechange",this._recoveryHandler),this._recoveryContext=null,this._recoveryHandler=null}_recoverPlayback(){"playing"===this._pcmState&&(this._workletNode&&this._workletNode.port.postMessage({name:"resume"}),this._audioElement&&this._audioElement.paused&&this._audioElement.play().catch(e=>{this._ctx._log.warn("iOS audio element play failed during recovery:",e)}))}_resetResampleState(){this._resampleState={lastSample:0,nextInputIndex:0}}_downmixToMono(e,t){const i=Math.floor(e.length/t),s=new Float32Array(i);for(let r=0;r<i;r++){let i=0;for(let s=0;s<t;s++)i+=e[r*t+s];s[r]=i/t}return s}_resampleStream(e,t,i){if(t===i)return this._resampleState.lastSample=e[e.length-1],this._resampleState.nextInputIndex=0,e;const s=t/i,r=[];let l=this._resampleState.nextInputIndex;const o=e.length;for(;;){const t=Math.floor(l);if(t>=o-1)break;const i=l-t;let a,n;-1===t?(a=this._resampleState.lastSample,n=e[0]):(a=e[t],n=e[t+1]),r.push(a+(n-a)*i),l+=s}return this._resampleState.lastSample=e[o-1],this._resampleState.nextInputIndex=l-o,new Float32Array(r)}_sendToWorklet(e,t){var i,s,r,l,o,a;if(!this._workletNode||"destroyed"===this._pcmState)return;if("paused"===this._pcmState&&this._options.realtime)return;const n=this._resampleStream(e,t,TARGET_SAMPLE_RATE);if(this._options.realtime){const e="object"==typeof this._options.realtime?this._options.realtime:{},t=(e.maxDelay||MAX_DELAY_MS)/1e3*TARGET_SAMPLE_RATE;this._totalInputSamples-this._playedSamples>t&&e.discardAll&&(this._workletNode.port.postMessage({name:"discard"}),this._totalInputSamples=this._playedSamples,null==(s=(i=this._options).onDurationChange)||s.call(i,this.duration))}this._totalInputSamples+=n.length,this._isPlayEnd=!1,this._playEndStartTime=0,this._workletNode.port.postMessage({name:"input",pcm:n}),null==(l=(r=this._options).onDurationChange)||l.call(r,this.duration),null==(a=(o=this._options).onTimeUpdate)||a.call(o,this.currentTime,this.duration)}_handlePlayEnd(){var e,t,i,s;"paused"===this._pcmState||this._isPlayEnd||(this._playEndStartTime?Date.now()-this._playEndStartTime>500&&(this._playEndStartTime=0,this._isPlayEnd=!0,this._totalInputSamples>0&&(null==(t=(e=this._options).onEnded)||t.call(e)),null==(s=(i=this._options).onTimeUpdate)||s.call(i,this.currentTime,this.duration)):this._playEndStartTime=Date.now())}},ErrorCode=(e=>(e[e.INVALID_PARAMETER=4096]="INVALID_PARAMETER",e[e.INVALID_OPERATION=4097]="INVALID_OPERATION",e[e.NOT_SUPPORTED=4098]="NOT_SUPPORTED",e[e.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",e[e.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",e[e.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",e[e.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",e[e.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",e[e.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",e[e.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",e[e.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",e[e.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",e[e.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",e[e.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",e[e.CLIENT_BANNED=16448]="CLIENT_BANNED",e[e.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",e[e.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",e[e.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",e[e.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",e[e.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",e[e.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",e[e.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",e[e.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",e[e.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",e[e.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",e[e.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",e[e.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",e[e.API_CALL_ABORTED=16461]="API_CALL_ABORTED",e[e.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",e[e.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",e[e.SWITCH_ROOM_FAILED=16464]="SWITCH_ROOM_FAILED",e[e.VIDEO_ENCODE_FAILED=16465]="VIDEO_ENCODE_FAILED",e[e.AUDIO_ENCODE_FAILED=16466]="AUDIO_ENCODE_FAILED",e[e.WHIP_REQUEST_FAILED=16467]="WHIP_REQUEST_FAILED",e[e.UNKNOWN=65535]="UNKNOWN",e))(ErrorCode||{}),error_code_default=ErrorCode;function isAutoPlayBlockedError(e){var t;return"NotAllowedError"===e.name||(e.code===error_code_default.PLAY_NOT_ALLOWED||!!(null==(t=e.message)?void 0:t.includes("NotAllowedError")))}var URLPlayer=class{constructor(e,t){__publicField(this,"_ctx"),__publicField(this,"_options"),__publicField(this,"_urlPlayer",null),__publicField(this,"_urlPublisher",null),__publicField(this,"_audioObjectURL",null),__publicField(this,"_urlInitSettings",{}),__publicField(this,"_urlEventsBound",!1),__publicField(this,"_destroyed",!1),__publicField(this,"_localGainNode",null),__publicField(this,"_localSourceNode",null),__publicField(this,"_isLocalPipelineActive",!1),__publicField(this,"_localPipelineFailed",!1),this._ctx=e,this._options=__spreadValues({},t)}get volume(){var e,t;return this._isLocalPipelineActive&&this._localGainNode?this._localGainNode.gain.value:(null==(e=this._urlPlayer)?void 0:e.element)?this._urlPlayer.element.volume:null!=(t=this._options.volume)?t:1}set volume(e){this._options.volume=e,this._setVolume(e)}get loop(){var e,t;return(null==(e=this._urlPlayer)?void 0:e.element)?this._urlPlayer.element.loop:null!=(t=this._options.loop)&&t}set loop(e){this._options.loop=e,this._setLoop(e)}get playbackRate(){var e,t;return(null==(e=this._urlPlayer)?void 0:e.element)?this._urlPlayer.element.playbackRate:null!=(t=this._options.playbackRate)?t:1}set playbackRate(e){this._options.playbackRate=e,this._setPlaybackRate(e)}get currentTime(){return this._urlPlayer?Math.round(this._urlPlayer.currentTime/10)/100:0}get duration(){if(this._urlPlayer){const e=this._urlPlayer.duration;return Number.isFinite(e)?Math.round(e/10)/100:0}return 0}get isStop(){var e;return!(null==(e=this._urlPlayer)?void 0:e.element)||this._urlPlayer.element.paused&&0===this._urlPlayer.element.currentTime}get isPause(){var e;return!!(null==(e=this._urlPlayer)?void 0:e.element)&&this._urlPlayer.element.paused}get isPlayEnd(){var e;return!!(null==(e=this._urlPlayer)?void 0:e.element)&&this._urlPlayer.element.ended}getPublisherElement(){var e;return(null==(e=this._urlPublisher)?void 0:e.element)||null}getPublisher(){return this._urlPublisher}updateOptions(e){void 0!==e.volume&&this._setVolume(e.volume),void 0!==e.loop&&this._setLoop(e.loop),void 0!==e.playbackRate&&this._setPlaybackRate(e.playbackRate),void 0!==e.seekFrom&&this.seek(e.seekFrom),e.operation&&this._setOperation(e.operation),e.onDurationChange&&(this._options.onDurationChange=e.onDurationChange,this._bindDurationChange(e.onDurationChange)),e.onTimeUpdate&&(this._options.onTimeUpdate=e.onTimeUpdate,this._bindTimeUpdate(e.onTimeUpdate)),e.onEnded&&(this._options.onEnded=e.onEnded,this._bindEnded(e.onEnded))}async init(){const{url:e,loop:t,volume:i,playbackRate:s,publish:r}=this._options;if(!e)return;let l=e;if(r)try{l=await this._preloadURL(e)}catch(t){this._ctx._log.warn(`preload failed, falling back to original URL: ${t}`),l=e}this._urlPlayer=new this._ctx._core.AudioPlayer({id:`${this._ctx._id}-player`,url:l,track:null,container:null,muted:!1,log:this._ctx._log,enableTimeupdateEvent:!0}),r&&(this._urlPublisher=new this._ctx._core.AudioPlayer({id:`${this._ctx._id}-publisher`,url:l,track:null,container:null,muted:!1,log:this._ctx._log,enableTimeupdateEvent:!1})),this._urlInitSettings={loop:t,volume:i,playbackRate:s},this._destroyed=!1,this._ctx._log.info(`URL engine initialized, publish=${r}`)}async start(){if(this._urlPlayer)try{const e=[this._urlPlayer.play()];this._urlPublisher&&e.push(this._urlPublisher.play()),await Promise.all(e),this._ctx._core.environment.isRealIOS()&&this._urlPlayer.element&&this._setupLocalPipeline(),this._applyURLSettings(),this._bindURLEvents(),this._ctx._log.info("URL playback started")}catch(e){await this._handleAutoPlayFailed(e)}}pause(){var e,t;null==(e=this._urlPlayer)||e.pause(),null==(t=this._urlPublisher)||t.pause()}resume(){var e,t;null==(e=this._urlPlayer)||e.play(),null==(t=this._urlPublisher)||t.play()}stop(){this._urlPlayer&&(this._urlPlayer.pause(),this._urlPlayer.currentTime=0,this._urlPublisher&&(this._urlPublisher.pause(),this._urlPublisher.currentTime=0),this._ctx._log.info("URL playback stopped"))}seek(e){if(!this._urlPlayer)return;const t=1e3*e;t<0||t>this._urlPlayer.duration||(this._urlPlayer.currentTime=t,this._urlPublisher&&(this._urlPublisher.currentTime=t))}async createPublisher(e){if(this._urlPublisher)return this._urlPublisher.element;if(!this._urlPlayer)return null;let t=e||this._audioObjectURL||this._options.url||"";if(!e&&!this._audioObjectURL&&this._options.url)try{t=await this._preloadURL(this._options.url)}catch(e){this._ctx._log.warn(`preload for publish toggle failed, using original URL: ${e}`),t=this._options.url}if(this._urlPublisher=new this._ctx._core.AudioPlayer({id:`${this._ctx._id}-publisher`,url:t,track:null,container:null,muted:!1,log:this._ctx._log,enableTimeupdateEvent:!1}),this._urlPlayer.element&&!this._urlPlayer.element.paused)try{await this._urlPublisher.play(),this._urlPublisher.element&&this._urlPlayer.element&&(this._urlPublisher.element.loop=this._urlPlayer.element.loop,this._urlPublisher.element.playbackRate=this._urlPlayer.element.playbackRate,this._urlPublisher.element.currentTime=this._urlPlayer.element.currentTime)}catch(e){this._ctx._log.warn(`publisher play failed during publish toggle: ${e}`)}return this._urlPublisher.element}destroyPublisher(){this._urlPublisher&&(this._urlPublisher.stop(),this._urlPublisher=null)}destroy(){this._destroyLocalPipeline(),this._urlPlayer&&(this._urlPlayer.stop(),this._urlPlayer=null),this._urlPublisher&&(this._urlPublisher.stop(),this._urlPublisher=null),this._audioObjectURL&&(URL.revokeObjectURL(this._audioObjectURL),this._audioObjectURL=null),this._urlEventsBound=!1,this._destroyed=!0}_applyURLSettings(){const{loop:e,volume:t,playbackRate:i}=this._urlInitSettings;void 0!==e&&this._setLoop(e),void 0!==t&&this._setVolume(t),void 0!==i&&this._setPlaybackRate(i),this._urlInitSettings={}}_bindURLEvents(){this._urlEventsBound||(this._urlEventsBound=!0,this._options.onDurationChange&&this._bindDurationChange(this._options.onDurationChange),this._options.onTimeUpdate&&this._bindTimeUpdate(this._options.onTimeUpdate),this._options.onEnded&&this._bindEnded(this._options.onEnded),this._bindErrorHandlers())}async _handleAutoPlayFailed(e){var t;if("NotSupportedError"===e.name)this._ctx._log.warn(`play failed, try to reload source. error: ${e}`),await this._reloadURL(),await(null==(t=this._urlPlayer)?void 0:t.play()),this._urlPublisher&&await this._urlPublisher.play();else{if(!isAutoPlayBlockedError(e))throw e;{this._ctx._log.warn("autoplay blocked by browser policy, user interaction required");const e=this._ctx._core.room;if(null==e?void 0:e.enableAutoPlayDialog)this._ctx._core.showAutoPlayDialog();else{const e=async()=>{var e,t;if(this._destroyed)return;const i=[];this._urlPlayer&&i.push(this._urlPlayer.play()),this._urlPublisher&&i.push(this._urlPublisher.play()),await Promise.all(i),null==(t=(e=this._options).onAutoPlayResume)||t.call(e)};this._ctx._core.trtc.emit("autoplay-failed",{userId:"",mediaType:"audio",resume:e})}}}}async _preloadURL(e){var t,i;this._ctx._log.info(`preloading URL resource: ${e}`);try{const t=await this._ctx._core.fileDownloader.download(e,{retries:3,type:"blob"});if(!t||0===t.size)throw new Error(`Downloaded resource is empty (size=0), url: ${e}`);return this._audioObjectURL&&URL.revokeObjectURL(this._audioObjectURL),this._audioObjectURL=URL.createObjectURL(t),this._ctx._log.info(`preload complete, blobUrl created, size=${t.size}`),this._audioObjectURL}catch(s){if(s instanceof TypeError&&(null==(t=s.message)?void 0:t.includes("Failed to fetch")))throw this._ctx._log.error(`CORS error detected when loading audio resource: ${e}. Please check the server's CORS configuration (Access-Control-Allow-Origin header).`),new Error(`CORS error: Failed to fetch audio resource. Ensure the server allows cross-origin requests for: ${e}`);const r=null==(i=s.message)?void 0:i.match(/(\d{3})/);if(r){const t=parseInt(r[1]);if(t>=400&&t<600)throw this._ctx._log.error(`HTTP ${t} error when loading audio resource: ${e}`),new Error(`HTTP ${t}: Failed to load audio resource: ${e}`)}throw this._ctx._log.error(`Failed to preload audio resource after retries: ${e}, error: ${s.message||s}`),s}}async _reloadURL(){var e,t;const{url:i}=this._options;if(!i)return;const s=await this._preloadURL(i);(null==(e=this._urlPlayer)?void 0:e.element)&&(this._urlPlayer.element.src=s),(null==(t=this._urlPublisher)?void 0:t.element)&&(this._urlPublisher.element.src=s)}_setVolume(e){this._urlPlayer&&(this._ctx._core.environment.isRealIOS()?this._localPipelineFailed?this._urlPlayer.setVolume(e):(!this._isLocalPipelineActive&&this._urlPlayer.element&&this._setupLocalPipeline(),this._localGainNode&&(this._localGainNode.gain.value=e)):this._urlPlayer.setVolume(e))}_setLoop(e){this._urlPlayer&&this._urlPlayer.setLoop(e),this._urlPublisher&&this._urlPublisher.setLoop(e)}_setPlaybackRate(e){var t,i;(null==(t=this._urlPlayer)?void 0:t.element)&&(this._urlPlayer.element.playbackRate=e),(null==(i=this._urlPublisher)?void 0:i.element)&&(this._urlPublisher.element.playbackRate=e)}_setOperation(e){"pause"===e&&this.pause(),"resume"===e&&this.resume(),"stop"===e&&this.stop()}_bindDurationChange(e){var t;(null==(t=this._urlPlayer)?void 0:t.element)&&(this._urlPlayer.element.ondurationchange=()=>e(this.duration))}_bindTimeUpdate(e){var t;(null==(t=this._urlPlayer)?void 0:t.element)&&(this._urlPlayer.element.ontimeupdate=()=>e(this.currentTime,this.duration))}_bindEnded(e){var t;(null==(t=this._urlPlayer)?void 0:t.element)&&(this._urlPlayer.element.onended=e)}_setupLocalPipeline(){var e,t,i;if(this._localPipelineFailed)return;const s=this._ctx._audioContext;if(this._isLocalPipelineActive)return void("suspended"===s.state&&s.resume().catch(e=>{this._ctx._log.warn(`AudioContext resume failed: ${e}`)}));const r=null==(e=this._urlPlayer)?void 0:e.element;if(r)try{"suspended"===s.state&&s.resume().catch(e=>{this._ctx._log.warn(`AudioContext resume failed during local pipeline setup: ${e}`)});const e=this._ctx._core.createAudioNode(r);this._localSourceNode=e;const i=s.createGain();i.gain.value=null!=(t=this._options.volume)?t:1,this._localGainNode=i,e.connect(i),i.connect(s.destination),this._isLocalPipelineActive=!0,this._ctx._log.info("iOS local playback pipeline established")}catch(e){this._localPipelineFailed=!0,this._ctx._log.warn(`Failed to setup iOS local playback pipeline, falling back to element.volume: ${e.message||e}`),this._urlPlayer&&this._urlPlayer.setVolume(null!=(i=this._options.volume)?i:1)}}_destroyLocalPipeline(){if(this._localGainNode){try{this._localGainNode.disconnect()}catch(e){}this._localGainNode=null}if(this._localSourceNode){try{this._localSourceNode.disconnect()}catch(e){}this._localSourceNode=null}this._isLocalPipelineActive=!1,this._localPipelineFailed=!1}_bindErrorHandlers(){var e,t;(null==(e=this._urlPlayer)?void 0:e.element)&&(this._urlPlayer.element.onerror=()=>{var e,t;const i=null==(t=null==(e=this._urlPlayer)?void 0:e.element)?void 0:t.error;(null==i?void 0:i.code)===MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED?(this._ctx._log.warn("player source not supported, triggering reload"),this._reloadURL().catch(e=>this._ctx._log.error("reload after player error failed:",e))):i&&this._ctx._log.error(`player media error: code=${i.code}, message=${i.message}`)}),(null==(t=this._urlPublisher)?void 0:t.element)&&(this._urlPublisher.element.onerror=()=>{var e,t;const i=null==(t=null==(e=this._urlPublisher)?void 0:e.element)?void 0:t.error;(null==i?void 0:i.code)===MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED?(this._ctx._log.warn("publisher source not supported, triggering reload"),this._reloadURL().catch(e=>this._ctx._log.warn("reload after publisher error failed:",e))):i&&this._ctx._log.warn(`publisher media error (non-fatal): code=${i.code}, message=${i.message}`)})}},TrackPlayer=class{constructor(e,t){__publicField(this,"_ctx"),__publicField(this,"_options"),__publicField(this,"_trackSource",null),__publicField(this,"_trackPlaying",!1),this._ctx=e,this._options=__spreadValues({},t)}get isPlaying(){return this._trackPlaying}get isStop(){return!this._trackPlaying}get isPause(){return!!this._options.track&&!this._options.track.enabled}get track(){return this._options.track||null}init(){this._ctx._log.info("Track engine initialized")}async start(){const{track:e}=this._options;if(!e)return;if(this._trackPlaying)return void this._ctx._log.warn("Track already playing");const t=this._ctx._audioContext;"suspended"===t.state&&await t.resume(),this._trackSource=t.createMediaStreamSource(new MediaStream([e])),this._trackSource.connect(t.destination),this._trackPlaying=!0,this._ctx._log.info("Track playback started")}pause(){this._options.track&&(this._options.track.enabled=!1)}resume(){this._options.track&&(this._options.track.enabled=!0)}stop(){this._trackPlaying&&(this._trackSource&&(this._trackSource.disconnect(),this._trackSource=null),this._trackPlaying=!1,this._ctx._log.info("Track playback stopped"))}destroy(){this.stop(),this._trackSource=null}},AudioRefChangeType={ADD:"add",REMOVE:"remove"},AUDIO_PLAYER_REF_PREFIX="aup",AudioPlayerContext=class{constructor(e,t,i,s,r,l){__publicField(this,"_id"),__publicField(this,"_sourceType"),__publicField(this,"_log"),__publicField(this,"_core"),__publicField(this,"_audioContext"),__publicField(this,"_options"),__publicField(this,"_destroyed",!1),__publicField(this,"_pcmPlayer",null),__publicField(this,"_urlPlayer",null),__publicField(this,"_trackPlayer",null),__publicField(this,"_mixPipeline",null),__publicField(this,"_publish",!1),this._id=e,this._sourceType=t,this._audioContext=i,this._core=s,this._log=r,this._options=__spreadValues({},l),this._publish=l.publish||!1}get id(){return this._id}get sourceType(){return this._sourceType}get volume(){var e;return"url"===this._sourceType&&this._urlPlayer?this._urlPlayer.volume:null!=(e=this._options.volume)?e:1}set volume(e){"url"===this._sourceType&&(this._options.volume=e,this._urlPlayer&&(this._urlPlayer.volume=e),this._mixPipeline&&this._mixPipeline.setVolume(e))}get loop(){var e;return"url"===this._sourceType&&this._urlPlayer?this._urlPlayer.loop:null!=(e=this._options.loop)&&e}set loop(e){"url"===this._sourceType&&(this._options.loop=e,this._urlPlayer&&(this._urlPlayer.loop=e))}get playbackRate(){var e;return"url"===this._sourceType&&this._urlPlayer?this._urlPlayer.playbackRate:null!=(e=this._options.playbackRate)?e:1}set playbackRate(e){"url"===this._sourceType&&(this._options.playbackRate=e,this._urlPlayer&&(this._urlPlayer.playbackRate=e))}get publish(){return this._publish}set publish(e){e!==this._publish&&this.updateOptions({publish:e})}get currentTime(){return"pcm"===this._sourceType&&this._pcmPlayer?this._pcmPlayer.currentTime:"url"===this._sourceType&&this._urlPlayer?this._urlPlayer.currentTime:0}get duration(){return"pcm"===this._sourceType&&this._pcmPlayer?this._pcmPlayer.duration:"url"===this._sourceType&&this._urlPlayer?this._urlPlayer.duration:0}get isStop(){return"pcm"===this._sourceType&&this._pcmPlayer?this._pcmPlayer.isStop:"url"===this._sourceType&&this._urlPlayer?this._urlPlayer.isStop:"track"!==this._sourceType||!this._trackPlayer||this._trackPlayer.isStop}get isPause(){return"pcm"===this._sourceType&&this._pcmPlayer?this._pcmPlayer.isPause:"url"===this._sourceType&&this._urlPlayer?this._urlPlayer.isPause:!("track"!==this._sourceType||!this._trackPlayer)&&this._trackPlayer.isPause}get isPlayEnd(){return"pcm"===this._sourceType&&this._pcmPlayer?this._pcmPlayer.isPlayEnd:!("url"!==this._sourceType||!this._urlPlayer)&&this._urlPlayer.isPlayEnd}input(e,t){var i,s,r;if("pcm"===this._sourceType)return this._destroyed?(this._log.warn("player is destroyed"),void(null==(s=(i=this._options).onInputError)||s.call(i,"player is destroyed",0))):void(null==(r=this._pcmPlayer)||r.input(e,t));this._log.warn("input() is only available for PCM source type")}clearInput(){var e;"pcm"===this._sourceType&&(this._destroyed||null==(e=this._pcmPlayer)||e.clearInput())}async start(){var e,t,i,s;if(this._destroyed)this._log.warn("player is destroyed");else switch(this._sourceType){case"pcm":if(await(null==(e=this._pcmPlayer)?void 0:e.start()),this._destroyed)return;this._publish&&this._connectMixPipeline();break;case"url":if(await(null==(t=this._urlPlayer)?void 0:t.start()),this._destroyed)return;this._publish&&(null==(i=this._urlPlayer)?void 0:i.getPublisherElement())&&(this._connectMixPipeline(),this._mixPipeline&&void 0!==this._options.volume&&this._mixPipeline.setVolume(this._options.volume));break;case"track":if(await(null==(s=this._trackPlayer)?void 0:s.start()),this._destroyed)return;this._publish&&this._connectMixPipeline()}}pause(){var e,t,i;switch(this._sourceType){case"pcm":null==(e=this._pcmPlayer)||e.pause();break;case"url":null==(t=this._urlPlayer)||t.pause();break;case"track":null==(i=this._trackPlayer)||i.pause()}}resume(){var e,t,i,s,r;switch(this._sourceType){case"pcm":if(null==(e=this._pcmPlayer)||e.resume(),this._publish&&!this._mixPipeline){(null==(t=this._pcmPlayer)?void 0:t.getWorkletNode())&&this._connectMixPipeline()}break;case"url":null==(i=this._urlPlayer)||i.resume(),this._publish&&!this._mixPipeline&&(null==(s=this._urlPlayer)?void 0:s.getPublisherElement())&&(this._connectMixPipeline(),this._mixPipeline&&void 0!==this._options.volume&&this._mixPipeline.setVolume(this._options.volume));break;case"track":null==(r=this._trackPlayer)||r.resume(),this._publish&&!this._mixPipeline&&this._connectMixPipeline()}}stop(){var e,t,i;switch(this._sourceType){case"pcm":null==(e=this._pcmPlayer)||e.stop(),this._publish&&this._disconnectMixPipeline();break;case"url":null==(t=this._urlPlayer)||t.stop(),this._disconnectMixPipeline();break;case"track":null==(i=this._trackPlayer)||i.stop(),this._disconnectMixPipeline()}}seek(e){var t;"url"===this._sourceType&&(null==(t=this._urlPlayer)||t.seek(e))}async init(){var e;switch(this._log.info(`init: sourceType=${this._sourceType}, id=${this._id}, publish=${this._publish}`),this._sourceType){case"pcm":this._pcmPlayer=new PCMPlayer(this,{channels:this._options.channels,realtime:null==(e=this._options.realtime)||e,onInputError:this._options.onInputError,onDurationChange:this._options.onDurationChange,onTimeUpdate:this._options.onTimeUpdate,onEnded:this._options.onEnded}),await this._pcmPlayer.init();break;case"url":this._urlPlayer=new URLPlayer(this,{url:this._options.url||"",publish:this._publish,loop:this._options.loop,volume:this._options.volume,playbackRate:this._options.playbackRate,onDurationChange:this._options.onDurationChange,onTimeUpdate:this._options.onTimeUpdate,onEnded:this._options.onEnded,onAutoPlayResume:()=>{var e;this._publish&&(null==(e=this._urlPlayer)?void 0:e.getPublisher())&&this._connectMixPipeline()}}),await this._urlPlayer.init();break;case"track":this._trackPlayer=new TrackPlayer(this,{track:this._options.track,onEnded:this._options.onEnded}),this._trackPlayer.init()}this._destroyed=!1}async updateOptions(e){if(this._log.info(`update: ${JSON.stringify(e)}`),void 0!==e.publish&&e.publish!==this._publish){this._publish;this._publish=e.publish,this._publish?"url"===this._sourceType&&this._urlPlayer?(await this._urlPlayer.createPublisher(),this._urlPlayer.isStop||this._urlPlayer.isPause||this._connectMixPipeline()):"url"!==this._sourceType&&this._connectMixPipeline():(this._disconnectMixPipeline(),"url"===this._sourceType&&this._urlPlayer&&this._urlPlayer.destroyPublisher())}if("url"===this._sourceType&&this._urlPlayer){const t={};void 0!==e.volume&&(t.volume=e.volume),void 0!==e.loop&&(t.loop=e.loop),void 0!==e.playbackRate&&(t.playbackRate=e.playbackRate),void 0!==e.seekFrom&&(t.seekFrom=e.seekFrom),e.operation&&(t.operation=e.operation),e.onDurationChange&&(t.onDurationChange=e.onDurationChange),e.onTimeUpdate&&(t.onTimeUpdate=e.onTimeUpdate),e.onEnded&&(t.onEnded=e.onEnded),Object.keys(t).length>0&&this._urlPlayer.updateOptions(t),void 0!==e.volume&&this._mixPipeline&&this._mixPipeline.setVolume(e.volume)}if("pcm"===this._sourceType&&this._pcmPlayer){const t={};void 0!==e.realtime&&(t.realtime=e.realtime),void 0!==e.channels&&(t.channels=e.channels),e.onInputError&&(t.onInputError=e.onInputError),e.onTimeUpdate&&(t.onTimeUpdate=e.onTimeUpdate),e.onEnded&&(t.onEnded=e.onEnded),e.onDurationChange&&(t.onDurationChange=e.onDurationChange),Object.keys(t).length>0&&this._pcmPlayer.updateOptions(t)}}destroy(){var e,t,i;if(!this._destroyed){switch(this._log.info(`destroy: id=${this._id}`),this._disconnectMixPipeline(),this._sourceType){case"pcm":null==(e=this._pcmPlayer)||e.destroy(),this._pcmPlayer=null;break;case"url":null==(t=this._urlPlayer)||t.destroy(),this._urlPlayer=null;break;case"track":null==(i=this._trackPlayer)||i.destroy(),this._trackPlayer=null}this._destroyed=!0}}_connectMixPipeline(){var e;if(!this._mixPipeline)try{const t=this._core.room;if(!(null==t?void 0:t.audioManager))return void this._log.warn("cannot connect mix pipeline: room or audioManager not available");this._core.validateSourceNode();const i=t.audioManager;if(this._mixPipeline=new this._core.MixAudioPipeline(i),"url"===this._sourceType&&this._urlPlayer){const e=this._urlPlayer.getPublisherElement();e?this._mixPipeline.replaceSource(e):this._log.warn("publisher element not available, mix pipeline source not connected")}else if("track"===this._sourceType&&(null==(e=this._trackPlayer)?void 0:e.track))this._mixPipeline.replaceSource(this._trackPlayer.track);else if("pcm"===this._sourceType&&this._pcmPlayer){const e=this._pcmPlayer.getWorkletNode();e&&this._mixPipeline.source.replaceNode(e)}this._mixPipeline.connect(),this._mixPipeline.source.node&&t.audioManager.updateAudioReference({type:AudioRefChangeType.ADD,audioReference:this._mixPipeline.source.node,refId:`${AUDIO_PLAYER_REF_PREFIX}-${this._id}`}),this._log.info("mix pipeline connected")}catch(e){this._log.error("failed to connect mix pipeline:",e)}}_disconnectMixPipeline(){if(this._mixPipeline){try{const e=this._core.room;(null==e?void 0:e.audioManager)&&this._mixPipeline.source.node&&e.audioManager.updateAudioReference({type:AudioRefChangeType.REMOVE,audioReference:this._mixPipeline.source.node,refId:`${AUDIO_PLAYER_REF_PREFIX}-${this._id}`})}catch(e){this._log.warn("failed to remove audio reference:",e)}this._mixPipeline.disconnect(),this._mixPipeline=null,this._log.info("mix pipeline disconnected")}}},contextSeqId=0,_AudioPlayer=class e{constructor(e){this.core=e,__publicField(this,"_core"),__publicField(this,"_log"),__publicField(this,"_audioContext"),__publicField(this,"_instances",new Map),this._core=e,this._log=e.log.createChild({id:"aup"}),this._audioContext=e.audioContext,this._log.info("plugin registered")}getName(){return e.Name}getAlias(){return"aup-"}getGroup(e){return(null==e?void 0:e.id)||"*"}getValidateRule(e){switch(e){case"start":return startValidateRule(this._core);case"update":return updateValidateRule(this._core);case"stop":return stopValidateRule(this._core)}}async start(e){const{id:t,sourceType:i}=e,s=i;if(this._checkBrowserSupport(t,s,this._audioContext),this._instances.has(t)){this._log.warn(`instance with id=${t} already exists, destroying old instance`);this._instances.get(t).destroy(),this._instances.delete(t)}const r="aup-"+ ++contextSeqId,l=this._core.log.createChild({id:r}),o=new AudioPlayerContext(t,s,this._audioContext,this._core,l,e);return await o.init(),this._instances.set(t,o),this._log.info(`player created id=${t}, total=${this._instances.size}`),"url"===s&&e.publish&&this._core.kvStatManager.addEnum({key:502700,value:3}),"pcm"===s&&e.publish&&this._core.kvStatManager.addEnum({key:502700,value:4}),o}async update(e){const{id:t}=e,i=this._instances.get(t);if(!i)return void this._log.warn(`update: instance not found id=${t}`);const s=e,{id:r}=s,l=__objRest(s,["id"]);return await i.updateOptions(l),"url"===i.sourceType&&e.publish&&this._core.kvStatManager.addEnum({key:502700,value:3}),"pcm"===i.sourceType&&e.publish&&this._core.kvStatManager.addEnum({key:502700,value:4}),i}async stop(e){const{id:t}=e;if("*"===t)return void this._destroyAll();const i=this._instances.get(t);i?(i.destroy(),this._instances.delete(t),this._log.info(`instance destroyed id=${t}, remaining=${this._instances.size}`)):this._log.warn(`stop: instance not found id=${t}`)}destroy(){this._destroyAll(),this._log.info("all instances destroyed")}_destroyAll(){for(const[e,t]of this._instances)t.destroy(),this._log.info(`instance destroyed id=${e}`);this._instances.clear()}_checkBrowserSupport(e,t,i){const{RtcError:s,ErrorCode:r}=this._core.errorModule;if("pcm"===t){const t=[];if(i.audioWorklet&&"function"==typeof i.audioWorklet.addModule||t.push("AudioWorklet (audioContext.audioWorklet.addModule)"),"undefined"==typeof AudioWorkletNode&&t.push("AudioWorkletNode"),"undefined"==typeof Blob&&t.push("Blob"),"undefined"!=typeof URL&&"function"==typeof URL.createObjectURL||t.push("URL.createObjectURL"),t.length>0)throw new s({code:r.NOT_SUPPORTED,message:`AudioPlayer [${e}]: PCM sourceType is not supported in this browser. Missing: ${t.join(", ")}.`})}}};__publicField(_AudioPlayer,"TYPE",{}),__publicField(_AudioPlayer,"Name","AudioPlayer");var AudioPlayer=_AudioPlayer,index_default=AudioPlayer;export{index_default as default};export{AudioPlayer};
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/audio-player",
3
- "version": "5.20.2-beta.8",
3
+ "version": "5.20.2-beta.9",
4
4
  "description": "TRTC Web SDK AudioPlayer plugin - unified audio player supporting PCM, URL, and Track sources",
5
5
  "main": "./audio-player.esm.js",
6
6
  "module": "./audio-player.esm.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/cdn-streaming",
3
- "version": "5.20.2-beta.8",
3
+ "version": "5.20.2-beta.9",
4
4
  "description": "TRTC Web SDK 5.x CDN streaming plugin",
5
5
  "main": "./cdn-streaming.esm.js",
6
6
  "module": "./cdn-streaming.esm.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/chorus",
3
- "version": "5.20.2-beta.8",
3
+ "version": "5.20.2-beta.9",
4
4
  "description": "TRTC Web SDK 5.x Chorus plugin",
5
5
  "main": "./chorus.esm.js",
6
6
  "module": "./chorus.esm.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/cross-room",
3
- "version": "5.20.2-beta.8",
3
+ "version": "5.20.2-beta.9",
4
4
  "description": "TRTC Web SDK 5.x Cross Room plugin",
5
5
  "main": "./cross-room.esm.js",
6
6
  "module": "./cross-room.esm.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/custom-encryption",
3
- "version": "5.20.2-beta.8",
3
+ "version": "5.20.2-beta.9",
4
4
  "main": "./custom-encryption.esm.js",
5
5
  "module": "./custom-encryption.esm.js",
6
6
  "types": "./custom-encryption.esm.d.ts"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/device-detector",
3
- "version": "5.20.2-beta.8",
3
+ "version": "5.20.2-beta.9",
4
4
  "description": "TRTC Web SDK 5.x device detector plugin",
5
5
  "main": "./device-detector.esm.js",
6
6
  "module": "./device-detector.esm.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/lebplayer",
3
- "version": "5.20.2-beta.8",
3
+ "version": "5.20.2-beta.9",
4
4
  "description": "TRTC Web SDK 5.x LEBPlayer plugin",
5
5
  "main": "./lebplayer.esm.js",
6
6
  "module": "./lebplayer.esm.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/realtime-transcriber",
3
- "version": "5.20.2-beta.8",
3
+ "version": "5.20.2-beta.9",
4
4
  "description": "TRTC Web SDK 5.x Realtime Transcriber plugin",
5
5
  "main": "./realtime-transcriber.esm.js",
6
6
  "module": "./realtime-transcriber.esm.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/small-stream-auto-switcher",
3
- "version": "5.20.2-beta.8",
3
+ "version": "5.20.2-beta.9",
4
4
  "description": "",
5
5
  "main": "./small-stream-auto-switcher.esm.js",
6
6
  "keywords": [],
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/video-decoder",
3
- "version": "5.20.2-beta.8",
3
+ "version": "5.20.2-beta.9",
4
4
  "description": "Video decoder plugin for TRTC",
5
5
  "main": "./video-decoder.esm.js",
6
6
  "module": "./video-decoder.esm.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/basic-beauty",
3
- "version": "5.20.2-beta.8",
3
+ "version": "5.20.2-beta.9",
4
4
  "description": "TRTC Web SDK 5.x basic-beauty plugin",
5
5
  "main": "./basic-beauty.esm.js",
6
6
  "module": "./basic-beauty.esm.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/beauty",
3
- "version": "5.20.2-beta.8",
3
+ "version": "5.20.2-beta.9",
4
4
  "description": "TRTC Web SDK 5.x beauty plugin",
5
5
  "main": "./beauty.esm.js",
6
6
  "module": "./beauty.esm.js",
@@ -1 +1 @@
1
- var __defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,i)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,__spreadValues=(e,t)=>{for(var i in t||(t={}))__hasOwnProp.call(t,i)&&__defNormalProp(e,i,t[i]);if(__getOwnPropSymbols)for(var i of __getOwnPropSymbols(t))__propIsEnum.call(t,i)&&__defNormalProp(e,i,t[i]);return e},__publicField=(e,t,i)=>__defNormalProp(e,"symbol"!=typeof t?t+"":t,i),BASE_FACE_DETECTION_RULES={detectionInterval:{type:"number",required:!1,min:100,max:5e3},minConfidence:{type:"number",required:!1,min:0,max:1},missingTimeout:{type:"number",required:!1,min:0,max:5e3}},faceDetectionOptions=__spreadValues({onFaceDetectionStateChanged:{required:!0}},BASE_FACE_DETECTION_RULES),updateFaceDetectionOptions=__spreadValues({onFaceDetectionStateChanged:{required:!1}},BASE_FACE_DETECTION_RULES);function startValidateRule(e){return{type:"object",required:!0,properties:faceDetectionOptions,validate(t,i,s,r){const{RtcError:a,ErrorCode:o,ErrorCodeDictionary:n}=e.errorModule,{onFaceDetectionStateChanged:_}=t;if(_&&!e.utils.isFunction(_))throw new a({code:o.INVALID_PARAMETER,extraCode:n.INVALID_PARAMETER_TYPE,fnName:s,messageParams:{key:"onFaceDetectionStateChanged",value:typeof _,rule:{type:"Function"}}})}}}function updateValidateRule(e){return{type:"object",required:!0,properties:updateFaceDetectionOptions,validate(t,i,s,r){const{RtcError:a,ErrorCode:o,ErrorCodeDictionary:n}=e.errorModule,{onFaceDetectionStateChanged:_}=t;if(_&&!e.utils.isFunction(_))throw new a({code:o.INVALID_PARAMETER,extraCode:n.INVALID_PARAMETER_TYPE,fnName:s,messageParams:{key:"onFaceDetectionStateChanged",value:typeof _,rule:{type:"Function"}}})}}}function stopValidateRule(e){return{name:"StopFaceDetectionOptions",required:!1}}var USER_AGENT="undefined"==typeof navigator?"":navigator.userAgent,isUserAgentMatch=e=>new RegExp(e,"i").test(USER_AGENT),getBrowserVersion=e=>{if(isUserAgentMatch(e)){const t=new RegExp(`${e}\\/([\\d.]+)`),i=USER_AGENT.match(t);if(i&&i[1])return i[1]}return""},getBrowserMajorVersion=e=>{if(isUserAgentMatch(e)){const t=new RegExp(`${e}\\/(\\d+)`),i=USER_AGENT.match(t);if(i&&i[1])return parseFloat(i[1])}return NaN},webkitVersionMap=/AppleWebKit\/([\d.]+)/i.exec(USER_AGENT),appleWebkitVersion=webkitVersionMap?parseFloat(webkitVersionMap[1]):NaN,IS_IPAD=isUserAgentMatch("iPad"),IS_IPAD_PRO="undefined"!=typeof navigator&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&isUserAgentMatch("Macintosh"),IS_IPHONE=isUserAgentMatch("iPhone")&&!IS_IPAD,IS_IPOD=isUserAgentMatch("iPod"),IS_IOS=IS_IPHONE||IS_IPAD||IS_IPOD||IS_IPAD_PRO,IS_ANDROID=isUserAgentMatch("Android"),ANDROID_VERSION=function(){if(IS_ANDROID){const e=USER_AGENT.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(e){const t=e[1]&&parseFloat(e[1]),i=e[2]&&parseFloat(e[2]);if(t&&i)return parseFloat(`${e[1]}.${e[2]}`);if(t)return t}}return NaN}(),IS_OLD_ANDROID=IS_ANDROID&&isUserAgentMatch("webkit")&&ANDROID_VERSION<2.3,IS_NATIVE_ANDROID=IS_ANDROID&&ANDROID_VERSION<5&&appleWebkitVersion<537,IS_FIREFOX=isUserAgentMatch("Firefox"),FIREFOX_VERSION=getBrowserVersion("Firefox"),FIREFOX_MAJOR_VERSION=getBrowserMajorVersion("Firefox"),IS_EDGE=isUserAgentMatch("Edge"),EDGE_VERSION=getBrowserVersion("Edge"),IS_EDG=isUserAgentMatch("Edg"),EDG_VERSION=getBrowserVersion("Edg"),EDG_MAJOR_VERSION=getBrowserMajorVersion("Edg"),IS_SOGOUM=isUserAgentMatch("SogouMobileBrowser"),SOGOUM_VERSION=getBrowserVersion("SogouMobileBrowser"),IS_SOGOU=isUserAgentMatch("MetaSr\\s"),SOGOU_VERSION=getBrowserVersion("MetaSr\\s"),IS_TBS=isUserAgentMatch("TBS"),TBS_VERSION=getBrowserVersion("TBS"),IS_XWEB=isUserAgentMatch("XWEB"),XWEB_VERSION=getBrowserVersion("XWEB"),IS_IE8=isUserAgentMatch("MSIE\\s8\\.0"),IS_IE=isUserAgentMatch("MSIE\\/\\d+"),IE_VERSION=function(){if(IS_IE){const e=/MSIE\s(\d+)\.\d/.exec(USER_AGENT);let t=e&&parseFloat(e[1]);return!t&&/Trident\/7.0/i.test(USER_AGENT)&&/rv:11.0/.test(USER_AGENT)&&(t=11),t}return NaN}(),IS_WECHAT=isUserAgentMatch("(micromessenger|webbrowser)"),WECHAT_VERSION=getBrowserVersion("MicroMessenger"),IS_X5MQQB=!IS_TBS&&isUserAgentMatch("MQQBrowser")&&isUserAgentMatch("COVC"),IS_MQQB=!IS_TBS&&isUserAgentMatch("MQQBrowser")&&!isUserAgentMatch("COVC"),MQQB_VERSION=IS_MQQB||IS_X5MQQB?getBrowserVersion("MQQBrowser"):"",IS_WQQB=!IS_TBS&&isUserAgentMatch(" QQBrowser"),WQQB_VERSION=getBrowserVersion(" QQBrowser"),IS_MACQQB=!IS_TBS&&isUserAgentMatch("QQBrowserLite"),MACQQB_VERSION=getBrowserVersion("QQBrowserLite"),IS_IPADQQB=!IS_TBS&&isUserAgentMatch("MQBHD"),IPADQQB_VERSION=getBrowserVersion("MQBHD"),IS_WIN=isUserAgentMatch("Windows"),IS_MAC=!IS_IOS&&isUserAgentMatch("MAC OS X"),IS_LINUX=!IS_ANDROID&&isUserAgentMatch("Linux"),IS_CHROME_OS=isUserAgentMatch("CrOS"),IS_WX=isUserAgentMatch("MicroMessenger"),IS_UCBROWSER=isUserAgentMatch("UCBrowser"),IS_ELECTRON=isUserAgentMatch("Electron"),IS_MIBROWSER=isUserAgentMatch("MiuiBrowser"),MI_VERSION=getBrowserVersion("MiuiBrowser"),IS_HUAWEIBROWSER=isUserAgentMatch("HuaweiBrowser"),IS_HUAWEI=isUserAgentMatch("Huawei")||isUserAgentMatch("HUAWEI"),IS_HONOR=isUserAgentMatch("Honor")||isUserAgentMatch("HONOR"),HUAWEI_VERSION=getBrowserVersion("HuaweiBrowser"),IS_SAMSUNGBROWSER=isUserAgentMatch("SamsungBrowser"),SAMSUNG_VERSION=getBrowserVersion("SamsungBrowser"),IS_OPPOBROWSER=isUserAgentMatch("HeyTapBrowser"),OPPO_VERSION=getBrowserVersion("HeyTapBrowser"),IS_VIVOBROWSER=isUserAgentMatch("VivoBrowser"),VIVO_VERSION=getBrowserVersion("VivoBrowser"),IS_OPENHARMONY=isUserAgentMatch("OpenHarmony"),OPENHARMONY_VERSION=getBrowserVersion("OpenHarmony"),getChromeMajorVersion=()=>getBrowserMajorVersion("Chrome"),IS_IOS_CHROME=isUserAgentMatch("CriOS"),IS_CHROMIUM_BASE=isUserAgentMatch("Chrome"),IS_CHROME=!IS_EDGE&&!IS_SOGOU&&!IS_SOGOUM&&!IS_TBS&&!IS_XWEB&&!IS_EDG&&!IS_WQQB&&!IS_MIBROWSER&&!IS_HUAWEIBROWSER&&!IS_SAMSUNGBROWSER&&!IS_OPPOBROWSER&&!IS_VIVOBROWSER&&IS_CHROMIUM_BASE,IS_HEADLESS_CHROME=isUserAgentMatch("HeadlessChrome"),CHROME_MAJOR_VERSION=getChromeMajorVersion(),IS_CHROMIUM_128_TO_143=IS_CHROMIUM_BASE&&CHROME_MAJOR_VERSION>=128&&CHROME_MAJOR_VERSION<=143,CHROME_VERSION=getBrowserVersion("Chrome"),ELECTRON_MAJOR_VERSION=getBrowserMajorVersion("Electron"),IS_SAFARI=!IS_CHROMIUM_BASE&&!IS_MQQB&&!IS_X5MQQB&&!IS_MACQQB&&!IS_IPADQQB&&isUserAgentMatch("Safari"),SAFARI_VERSION=getBrowserVersion("Version"),IS_ANDROID_WEBVIEW=/Android.*(wv|.0.0.0)/.test(USER_AGENT),IOS_VERSION=(()=>{if(IS_IPAD_PRO)return SAFARI_VERSION;if(IS_IOS){const e=USER_AGENT.match(/OS (\d+)_(\d+)/i);if(e&&e[1]){let t=e[1];return e[2]&&(t+=`.${e[2]}`),t}}return""})(),IOS_MAIN_VERSION=Number(IOS_VERSION.split(".")[0]),IS_IOS_13_OR_14=(()=>{const e=Number(IOS_VERSION.split(".")[0]);return 14===e||13===e})(),IS_LOCAL="undefined"!=typeof location&&("file:"===location.protocol||"localhost"===location.hostname||"127.0.0.1"===location.hostname),browserInfo=getBrowserInfo();function getBrowserInfo(){const e=new Map([[IS_FIREFOX,["Firefox",FIREFOX_VERSION]],[IS_EDG,["Edg",EDG_VERSION]],[IS_CHROME,["Chrome",CHROME_VERSION]],[IS_IOS_CHROME,["ChiOS",getBrowserVersion("CriOS")]],[IS_SAFARI&&!IS_IOS_CHROME,["Safari",SAFARI_VERSION]],[IS_TBS,["TBS",TBS_VERSION]],[IS_XWEB,["XWEB",XWEB_VERSION]],[IS_WECHAT&&IS_IPHONE,["WeChat",WECHAT_VERSION]],[IS_WQQB,["QQ(Win)",WQQB_VERSION]],[IS_MQQB,["QQ(Mobile)",MQQB_VERSION]],[IS_X5MQQB,["QQ(Mobile X5)",MQQB_VERSION]],[IS_MACQQB,["QQ(Mac)",MACQQB_VERSION]],[IS_IPADQQB,["QQ(iPad)",IPADQQB_VERSION]],[IS_MIBROWSER,["MI",MI_VERSION]],[IS_HUAWEIBROWSER,["HW",HUAWEI_VERSION]],[IS_SAMSUNGBROWSER,["Samsung",SAMSUNG_VERSION]],[IS_OPPOBROWSER,["OPPO",OPPO_VERSION]],[IS_VIVOBROWSER,["VIVO",VIVO_VERSION]],[IS_EDGE,["EDGE",EDGE_VERSION]],[IS_SOGOUM,["SogouMobile",SOGOUM_VERSION]],[IS_SOGOU,["Sogou",SOGOU_VERSION]]]);let t="unknown",i="unknown";return e.has(!0)&&([t,i]=e.get(!0)),{name:t,version:i}}var faceDetectionSeq=0,_FaceDetection=class e{constructor(e){this.core=e,__publicField(this,"seq"),__publicField(this,"log"),__publicField(this,"preLoadPromise"),__publicField(this,"_faceDetectorHash"),__publicField(this,"_visionTaskRegistry"),__publicField(this,"_faceStatus",!1),__publicField(this,"_lastStatus",!1),__publicField(this,"_startMissing"),__publicField(this,"_minConfidence",.8),__publicField(this,"_missingTimeout",1e3),__publicField(this,"_detectionInterval",300),__publicField(this,"_lastDetectTime",0),__publicField(this,"_videoFrameCallBackId"),__publicField(this,"_frameGeneration",0),__publicField(this,"_video"),__publicField(this,"_videoPlayer"),__publicField(this,"_onFaceDetectionStateChanged"),__publicField(this,"_running",!1),faceDetectionSeq+=1,this.seq=faceDetectionSeq,this.log=e.log.createChild({id:`${this.getAlias()}${faceDetectionSeq}`}),this.log.info("created"),e.assetsPath&&(this.preLoadPromise=this.preload(e.assetsPath))}static isSupported(){var e;if(CHROME_MAJOR_VERSION<90)return!1;const t=document.createElement("canvas").getContext("webgl2"),i=!!(t&&t instanceof WebGL2RenderingContext);return null==(e=null==t?void 0:t.getExtension("WEBGL_lose_context"))||e.loseContext(),i}resetState(){this._faceStatus=!1,this._lastStatus=!1,this._startMissing=null,this._lastDetectTime=0}async preload(e){try{await this.core.initVisionTaskRegistry(e,["FaceDetector"])}catch(e){const{RtcError:t,ErrorCode:i}=this.core.errorModule;throw new t({code:i.INVALID_OPERATION,message:`FaceDetection preload error, please redeploy the assets of the npm package. detail: ${e}`})}}getGroup(){return"fd"}getName(){return e.Name}getAlias(){return"fd"}getValidateRule(e){switch(e){case"start":return startValidateRule(this.core);case"update":return updateValidateRule(this.core);case"stop":return stopValidateRule(this.core)}}getCurrentStatus(){const{detections:e}=this._visionTaskRegistry.getResult(this._faceDetectorHash);this._visionTaskRegistry.resetHashResults();let t=e.length>0;if(t){const i=[];for(const t of e){const{categories:e}=t;for(const t of e)i.push(t.score)}t&&(t=!!i.find(e=>e>=this._minConfidence))}return t}detectFace(e){Date.now()-this._lastDetectTime>=this._detectionInterval&&(this._lastStatus=this.getCurrentStatus(),this._lastDetectTime=Date.now());const t=this._lastStatus;t&&(this._startMissing=null),this._startMissing&&Date.now()-this._startMissing>=this._missingTimeout&&t!==this._faceStatus?(this._onFaceDetectionStateChanged(t),this._faceStatus=t,this._startMissing=null):this._faceStatus!==t&&(t||0===this._missingTimeout?(this._onFaceDetectionStateChanged(t),this._faceStatus=t):this._startMissing||(this._startMissing=Date.now())),this._video&&e===this._frameGeneration&&(this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this,e)))}async initFaceDetection(){this._visionTaskRegistry=await window.VisionTaskRegistry.getInstance();const{videoContext:e}=this.core.room.videoManager,t=(null==e?void 0:e.ctx)instanceof WebGL2RenderingContext&&!e._canvas2d?e.canvas:void 0,i=await this._visionTaskRegistry.register(window.VisionTaskType.FaceDetector,t?{canvas:t}:void 0);i&&(this._faceDetectorHash=i,this._video&&this._visionTaskRegistry.setVideo(this._faceDetectorHash,this._video))}updateOptions(e){e.onFaceDetectionStateChanged&&(this._onFaceDetectionStateChanged=e.onFaceDetectionStateChanged),e.detectionInterval&&(this._detectionInterval=e.detectionInterval),e.minConfidence&&(this._minConfidence=e.minConfidence),(0===e.missingTimeout||e.missingTimeout)&&(this._missingTimeout=e.missingTimeout)}async start(e){if(this.updateOptions(e),!this.preLoadPromise){const{RtcError:e,ErrorCode:t}=this.core.errorModule;if(!this.core.assetsPath)throw new e({code:t.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});this.preLoadPromise=this.preload(this.core.assetsPath)}await this.preLoadPromise,this._running=!0,this.bindCameraEvents(),await this.attachCamera(),this.core.kvStatManager.addEnum({key:575700,value:1})}async attachCamera(){var e,t;const i=null==(e=this.core.room.videoManager.cameraTrack)?void 0:e.mediaTrack;if(i){if(this._videoPlayer&&this._faceDetectorHash)this._videoPlayer.setTrack(i);else{null==(t=this._videoPlayer)||t.stop(),this._videoPlayer=new this.core.VideoPlayer({id:"fd",track:i,muted:!1,container:null,log:this.core.log}),this._videoPlayer.play(),this._video=this._videoPlayer.element;const{RtcError:e,ErrorCode:s}=this.core.errorModule;await this.initFaceDetection().catch(t=>{var i;throw null==(i=this._videoPlayer)||i.stop(),this._videoPlayer=void 0,this._video=void 0,new e({code:s.UNKNOWN_ERROR,message:t.message})})}this.startFrameCallback()}}startFrameCallback(){this.stopFrameCallback(),this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this,this._frameGeneration))}stopFrameCallback(){var e;this._frameGeneration+=1,null==(e=this._video)||e.cancelVideoFrameCallback(this._videoFrameCallBackId)}bindCameraEvents(e=!1){const{innerEmitter:t,INNER_EVENT:i}=this.core,s=e?"off":"on";t[s](i.LOCAL_TRACK_STOPPED,this.handleCameraStopped,this),t[s](i.TRACK_MUTED,this.handleCameraStopped,this),t[s](i.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleCameraRecover,this),t[s](i.TRACK_UNMUTED,this.handleCameraRecover,this)}isCameraTrack(e){return!e.isRemote&&"video"===e.kind&&!e.isScreen}handleCameraStopped({track:e}){this.isCameraTrack(e)&&this.pauseDetection()}async handleCameraRecover({track:e}){this.isCameraTrack(e)&&this._running&&await this.attachCamera().catch(e=>this.log.error("camera recover failed",e))}pauseDetection(){this._faceStatus&&(this._faceStatus=!1,this._onFaceDetectionStateChanged(!1)),this.stopFrameCallback()}async update(e){this.updateOptions(e),this.core.kvStatManager.addEnum({key:575701,value:1})}async stop(){var e;this._running=!1,this.bindCameraEvents(!0),this.pauseDetection(),this.resetState(),null==(e=this._videoPlayer)||e.stop(),this._videoPlayer=void 0,this._video=void 0,this.core.kvStatManager.addEnum({key:575702,value:1})}destroy(){this.stop()}};__publicField(_FaceDetection,"Name","FaceDetection");var FaceDetection=_FaceDetection,index_default=FaceDetection;export{index_default as default};export{FaceDetection};
1
+ var __defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,i)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,__spreadValues=(e,t)=>{for(var i in t||(t={}))__hasOwnProp.call(t,i)&&__defNormalProp(e,i,t[i]);if(__getOwnPropSymbols)for(var i of __getOwnPropSymbols(t))__propIsEnum.call(t,i)&&__defNormalProp(e,i,t[i]);return e},__publicField=(e,t,i)=>__defNormalProp(e,"symbol"!=typeof t?t+"":t,i),BASE_FACE_DETECTION_RULES={detectionInterval:{type:"number",required:!1,min:100,max:5e3},minConfidence:{type:"number",required:!1,min:0,max:1},missingTimeout:{type:"number",required:!1,min:0,max:5e3}},faceDetectionOptions=__spreadValues({onFaceDetectionStateChanged:{required:!0}},BASE_FACE_DETECTION_RULES),updateFaceDetectionOptions=__spreadValues({onFaceDetectionStateChanged:{required:!1}},BASE_FACE_DETECTION_RULES);function startValidateRule(e){return{type:"object",required:!0,properties:faceDetectionOptions,validate(t,i,s,r){const{RtcError:a,ErrorCode:o,ErrorCodeDictionary:n}=e.errorModule,{onFaceDetectionStateChanged:_}=t;if(_&&!e.utils.isFunction(_))throw new a({code:o.INVALID_PARAMETER,extraCode:n.INVALID_PARAMETER_TYPE,fnName:s,messageParams:{key:"onFaceDetectionStateChanged",value:typeof _,rule:{type:"Function"}}})}}}function updateValidateRule(e){return{type:"object",required:!0,properties:updateFaceDetectionOptions,validate(t,i,s,r){const{RtcError:a,ErrorCode:o,ErrorCodeDictionary:n}=e.errorModule,{onFaceDetectionStateChanged:_}=t;if(_&&!e.utils.isFunction(_))throw new a({code:o.INVALID_PARAMETER,extraCode:n.INVALID_PARAMETER_TYPE,fnName:s,messageParams:{key:"onFaceDetectionStateChanged",value:typeof _,rule:{type:"Function"}}})}}}function stopValidateRule(e){return{name:"StopFaceDetectionOptions",required:!1}}var USER_AGENT="undefined"==typeof navigator?"":navigator.userAgent,isUserAgentMatch=e=>new RegExp(e,"i").test(USER_AGENT),getBrowserVersion=e=>{if(isUserAgentMatch(e)){const t=new RegExp(`${e}\\/([\\d.]+)`),i=USER_AGENT.match(t);if(i&&i[1])return i[1]}return""},getBrowserMajorVersion=e=>{if(isUserAgentMatch(e)){const t=new RegExp(`${e}\\/(\\d+)`),i=USER_AGENT.match(t);if(i&&i[1])return parseFloat(i[1])}return NaN},webkitVersionMap=/AppleWebKit\/([\d.]+)/i.exec(USER_AGENT),appleWebkitVersion=webkitVersionMap?parseFloat(webkitVersionMap[1]):NaN,IS_IPAD=isUserAgentMatch("iPad"),IS_IPAD_PRO="undefined"!=typeof navigator&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&isUserAgentMatch("Macintosh"),IS_IPHONE=isUserAgentMatch("iPhone")&&!IS_IPAD,IS_IPOD=isUserAgentMatch("iPod"),IS_IOS=IS_IPHONE||IS_IPAD||IS_IPOD||IS_IPAD_PRO,IS_ANDROID=isUserAgentMatch("Android"),ANDROID_VERSION=function(){if(IS_ANDROID){const e=USER_AGENT.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(e){const t=e[1]&&parseFloat(e[1]),i=e[2]&&parseFloat(e[2]);if(t&&i)return parseFloat(`${e[1]}.${e[2]}`);if(t)return t}}return NaN}(),IS_OLD_ANDROID=IS_ANDROID&&isUserAgentMatch("webkit")&&ANDROID_VERSION<2.3,IS_NATIVE_ANDROID=IS_ANDROID&&ANDROID_VERSION<5&&appleWebkitVersion<537,IS_FIREFOX=isUserAgentMatch("Firefox"),FIREFOX_VERSION=getBrowserVersion("Firefox"),FIREFOX_MAJOR_VERSION=getBrowserMajorVersion("Firefox"),IS_EDGE=isUserAgentMatch("Edge"),EDGE_VERSION=getBrowserVersion("Edge"),IS_EDG=isUserAgentMatch("Edg"),EDG_VERSION=getBrowserVersion("Edg"),EDG_MAJOR_VERSION=getBrowserMajorVersion("Edg"),IS_SOGOUM=isUserAgentMatch("SogouMobileBrowser"),SOGOUM_VERSION=getBrowserVersion("SogouMobileBrowser"),IS_SOGOU=isUserAgentMatch("MetaSr\\s"),SOGOU_VERSION=getBrowserVersion("MetaSr\\s"),IS_TBS=isUserAgentMatch("TBS"),TBS_VERSION=getBrowserVersion("TBS"),IS_XWEB=isUserAgentMatch("XWEB"),XWEB_VERSION=getBrowserVersion("XWEB"),IS_IE8=isUserAgentMatch("MSIE\\s8\\.0"),IS_IE=isUserAgentMatch("MSIE\\/\\d+"),IE_VERSION=function(){if(IS_IE){const e=/MSIE\s(\d+)\.\d/.exec(USER_AGENT);let t=e&&parseFloat(e[1]);return!t&&/Trident\/7.0/i.test(USER_AGENT)&&/rv:11.0/.test(USER_AGENT)&&(t=11),t}return NaN}(),IS_WECHAT=isUserAgentMatch("(micromessenger|webbrowser)"),WECHAT_VERSION=getBrowserVersion("MicroMessenger"),IS_X5MQQB=!IS_TBS&&isUserAgentMatch("MQQBrowser")&&isUserAgentMatch("COVC"),IS_MQQB=!IS_TBS&&isUserAgentMatch("MQQBrowser")&&!isUserAgentMatch("COVC"),MQQB_VERSION=IS_MQQB||IS_X5MQQB?getBrowserVersion("MQQBrowser"):"",IS_WQQB=!IS_TBS&&isUserAgentMatch(" QQBrowser"),WQQB_VERSION=getBrowserVersion(" QQBrowser"),IS_MACQQB=!IS_TBS&&isUserAgentMatch("QQBrowserLite"),MACQQB_VERSION=getBrowserVersion("QQBrowserLite"),IS_IPADQQB=!IS_TBS&&isUserAgentMatch("MQBHD"),IPADQQB_VERSION=getBrowserVersion("MQBHD"),IS_WIN=isUserAgentMatch("Windows"),IS_MAC=!IS_IOS&&isUserAgentMatch("MAC OS X"),IS_LINUX=!IS_ANDROID&&isUserAgentMatch("Linux"),IS_CHROME_OS=isUserAgentMatch("CrOS"),IS_WX=isUserAgentMatch("MicroMessenger"),IS_UCBROWSER=isUserAgentMatch("UCBrowser"),IS_ELECTRON=isUserAgentMatch("Electron"),IS_MIBROWSER=isUserAgentMatch("MiuiBrowser"),MI_VERSION=getBrowserVersion("MiuiBrowser"),IS_HUAWEIBROWSER=isUserAgentMatch("HuaweiBrowser"),IS_HUAWEI=isUserAgentMatch("Huawei")||isUserAgentMatch("HUAWEI"),IS_HONOR=isUserAgentMatch("Honor")||isUserAgentMatch("HONOR"),HUAWEI_VERSION=getBrowserVersion("HuaweiBrowser"),IS_SAMSUNGBROWSER=isUserAgentMatch("SamsungBrowser"),SAMSUNG_VERSION=getBrowserVersion("SamsungBrowser"),IS_OPPOBROWSER=isUserAgentMatch("HeyTapBrowser"),OPPO_VERSION=getBrowserVersion("HeyTapBrowser"),IS_VIVOBROWSER=isUserAgentMatch("VivoBrowser"),VIVO_VERSION=getBrowserVersion("VivoBrowser"),IS_OPENHARMONY=isUserAgentMatch("OpenHarmony"),OPENHARMONY_VERSION=getBrowserVersion("OpenHarmony"),getChromeMajorVersion=()=>getBrowserMajorVersion("Chrome"),IS_IOS_CHROME=isUserAgentMatch("CriOS"),IS_CHROMIUM_BASE=isUserAgentMatch("Chrome"),IS_CHROME=!IS_EDGE&&!IS_SOGOU&&!IS_SOGOUM&&!IS_TBS&&!IS_XWEB&&!IS_EDG&&!IS_WQQB&&!IS_MIBROWSER&&!IS_HUAWEIBROWSER&&!IS_SAMSUNGBROWSER&&!IS_OPPOBROWSER&&!IS_VIVOBROWSER&&IS_CHROMIUM_BASE,IS_HEADLESS_CHROME=isUserAgentMatch("HeadlessChrome"),CHROME_MAJOR_VERSION=getChromeMajorVersion(),IS_CHROMIUM_128_TO_143=IS_CHROMIUM_BASE&&CHROME_MAJOR_VERSION>=128&&CHROME_MAJOR_VERSION<=143,CHROME_VERSION=getBrowserVersion("Chrome"),ELECTRON_MAJOR_VERSION=getBrowserMajorVersion("Electron"),IS_SAFARI=!IS_CHROMIUM_BASE&&!IS_MQQB&&!IS_X5MQQB&&!IS_MACQQB&&!IS_IPADQQB&&isUserAgentMatch("Safari"),SAFARI_VERSION=getBrowserVersion("Version"),IS_ANDROID_WEBVIEW=/Android.*(wv|.0.0.0)/.test(USER_AGENT),IOS_VERSION=(()=>{if(IS_IPAD_PRO)return SAFARI_VERSION;if(IS_IOS){const e=USER_AGENT.match(/OS (\d+)_(\d+)/i);if(e&&e[1]){let t=e[1];return e[2]&&(t+=`.${e[2]}`),t}}return""})(),IOS_MAIN_VERSION=Number(IOS_VERSION.split(".")[0]),IS_IOS_13_OR_14=(()=>{const e=Number(IOS_VERSION.split(".")[0]);return 14===e||13===e})(),IS_LOCAL="undefined"!=typeof location&&("file:"===location.protocol||"localhost"===location.hostname||"127.0.0.1"===location.hostname),browserInfo=getBrowserInfo();function getBrowserInfo(){const e=new Map([[IS_FIREFOX,["Firefox",FIREFOX_VERSION]],[IS_EDG,["Edg",EDG_VERSION]],[IS_CHROME,["Chrome",CHROME_VERSION]],[IS_IOS_CHROME,["ChiOS",getBrowserVersion("CriOS")]],[IS_SAFARI&&!IS_IOS_CHROME,["Safari",SAFARI_VERSION]],[IS_TBS,["TBS",TBS_VERSION]],[IS_XWEB,["XWEB",XWEB_VERSION]],[IS_WECHAT&&IS_IPHONE,["WeChat",WECHAT_VERSION]],[IS_WQQB,["QQ(Win)",WQQB_VERSION]],[IS_MQQB,["QQ(Mobile)",MQQB_VERSION]],[IS_X5MQQB,["QQ(Mobile X5)",MQQB_VERSION]],[IS_MACQQB,["QQ(Mac)",MACQQB_VERSION]],[IS_IPADQQB,["QQ(iPad)",IPADQQB_VERSION]],[IS_MIBROWSER,["MI",MI_VERSION]],[IS_HUAWEIBROWSER,["HW",HUAWEI_VERSION]],[IS_SAMSUNGBROWSER,["Samsung",SAMSUNG_VERSION]],[IS_OPPOBROWSER,["OPPO",OPPO_VERSION]],[IS_VIVOBROWSER,["VIVO",VIVO_VERSION]],[IS_EDGE,["EDGE",EDGE_VERSION]],[IS_SOGOUM,["SogouMobile",SOGOUM_VERSION]],[IS_SOGOU,["Sogou",SOGOU_VERSION]]]);let t="unknown",i="unknown";return e.has(!0)&&([t,i]=e.get(!0)),{name:t,version:i}}var faceDetectionSeq=0,_FaceDetection=class e{constructor(e){this.core=e,__publicField(this,"seq"),__publicField(this,"log"),__publicField(this,"preLoadPromise"),__publicField(this,"_faceDetectorHash"),__publicField(this,"_visionTaskRegistry"),__publicField(this,"_faceStatus",!1),__publicField(this,"_lastStatus",!1),__publicField(this,"_startMissing"),__publicField(this,"_minConfidence",.8),__publicField(this,"_missingTimeout",1e3),__publicField(this,"_detectionInterval",300),__publicField(this,"_lastDetectTime",0),__publicField(this,"_videoFrameCallBackId"),__publicField(this,"_frameGeneration",0),__publicField(this,"_video"),__publicField(this,"_videoPlayer"),__publicField(this,"_onFaceDetectionStateChanged"),__publicField(this,"_running",!1),faceDetectionSeq+=1,this.seq=faceDetectionSeq,this.log=e.log.createChild({id:`${this.getAlias()}${faceDetectionSeq}`}),this.log.info("created"),e.assetsPath&&(this.preLoadPromise=this.preload(e.assetsPath))}static isSupported(){var e;if(CHROME_MAJOR_VERSION<90)return!1;const t=document.createElement("canvas").getContext("webgl2"),i=!!(t&&t instanceof WebGL2RenderingContext);return null==(e=null==t?void 0:t.getExtension("WEBGL_lose_context"))||e.loseContext(),i}resetState(){this._faceStatus=!1,this._lastStatus=!1,this._startMissing=null,this._lastDetectTime=0}async preload(e){try{await this.core.initVisionTaskRegistry(e,["FaceDetector"])}catch(e){const{RtcError:t,ErrorCode:i}=this.core.errorModule;throw new t({code:i.INVALID_OPERATION,message:`FaceDetection preload error, please redeploy the assets of the npm package. detail: ${e}`})}}getGroup(){return"fd"}getName(){return e.Name}getAlias(){return"fd"}getValidateRule(e){switch(e){case"start":return startValidateRule(this.core);case"update":return updateValidateRule(this.core);case"stop":return stopValidateRule(this.core)}}getCurrentStatus(){const e=this._visionTaskRegistry.getResult(this._faceDetectorHash).detections;this._visionTaskRegistry.resetHashResults();let t=e.length>0;if(t){const i=[];for(const t of e){const e=t.categories;for(const t of e)i.push(t.score)}t&&(t=!!i.find(e=>e>=this._minConfidence))}return t}detectFace(e){Date.now()-this._lastDetectTime>=this._detectionInterval&&(this._lastStatus=this.getCurrentStatus(),this._lastDetectTime=Date.now());const t=this._lastStatus;t&&(this._startMissing=null),this._startMissing&&Date.now()-this._startMissing>=this._missingTimeout&&t!==this._faceStatus?(this._onFaceDetectionStateChanged(t),this._faceStatus=t,this._startMissing=null):this._faceStatus!==t&&(t||0===this._missingTimeout?(this._onFaceDetectionStateChanged(t),this._faceStatus=t):this._startMissing||(this._startMissing=Date.now())),this._video&&e===this._frameGeneration&&(this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this,e)))}async initFaceDetection(){this._visionTaskRegistry=await window.VisionTaskRegistry.getInstance();const e=this.core.room.videoManager.videoContext,t=(null==e?void 0:e.ctx)instanceof WebGL2RenderingContext&&!e._canvas2d?e.canvas:void 0,i=await this._visionTaskRegistry.register(window.VisionTaskType.FaceDetector,t?{canvas:t}:void 0);i&&(this._faceDetectorHash=i,this._video&&this._visionTaskRegistry.setVideo(this._faceDetectorHash,this._video))}updateOptions(e){e.onFaceDetectionStateChanged&&(this._onFaceDetectionStateChanged=e.onFaceDetectionStateChanged),e.detectionInterval&&(this._detectionInterval=e.detectionInterval),e.minConfidence&&(this._minConfidence=e.minConfidence),(0===e.missingTimeout||e.missingTimeout)&&(this._missingTimeout=e.missingTimeout)}async start(e){if(this.updateOptions(e),!this.preLoadPromise){const{RtcError:e,ErrorCode:t}=this.core.errorModule;if(!this.core.assetsPath)throw new e({code:t.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});this.preLoadPromise=this.preload(this.core.assetsPath)}await this.preLoadPromise,this._running=!0,this.bindCameraEvents(),await this.attachCamera(),this.core.kvStatManager.addEnum({key:575700,value:1})}async attachCamera(){var e,t;const i=null==(e=this.core.room.videoManager.cameraTrack)?void 0:e.mediaTrack;if(i){if(this._videoPlayer&&this._faceDetectorHash)this._videoPlayer.setTrack(i);else{null==(t=this._videoPlayer)||t.stop(),this._videoPlayer=new this.core.VideoPlayer({id:"fd",track:i,muted:!1,container:null,log:this.core.log}),this._videoPlayer.play(),this._video=this._videoPlayer.element;const{RtcError:e,ErrorCode:s}=this.core.errorModule;await this.initFaceDetection().catch(t=>{var i;throw null==(i=this._videoPlayer)||i.stop(),this._videoPlayer=void 0,this._video=void 0,new e({code:s.UNKNOWN_ERROR,message:t.message})})}this.startFrameCallback()}}startFrameCallback(){this.stopFrameCallback(),this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this,this._frameGeneration))}stopFrameCallback(){var e;this._frameGeneration+=1,null==(e=this._video)||e.cancelVideoFrameCallback(this._videoFrameCallBackId)}bindCameraEvents(e=!1){const{innerEmitter:t,INNER_EVENT:i}=this.core,s=e?"off":"on";t[s](i.LOCAL_TRACK_STOPPED,this.handleCameraStopped,this),t[s](i.TRACK_MUTED,this.handleCameraStopped,this),t[s](i.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleCameraRecover,this),t[s](i.TRACK_UNMUTED,this.handleCameraRecover,this)}isCameraTrack(e){return!e.isRemote&&"video"===e.kind&&!e.isScreen}handleCameraStopped({track:e}){this.isCameraTrack(e)&&this.pauseDetection()}async handleCameraRecover({track:e}){this.isCameraTrack(e)&&this._running&&await this.attachCamera().catch(e=>this.log.error("camera recover failed",e))}pauseDetection(){this._faceStatus&&(this._faceStatus=!1,this._onFaceDetectionStateChanged(!1)),this.stopFrameCallback()}async update(e){this.updateOptions(e),this.core.kvStatManager.addEnum({key:575701,value:1})}async stop(){var e;this._running=!1,this.bindCameraEvents(!0),this.pauseDetection(),this.resetState(),null==(e=this._videoPlayer)||e.stop(),this._videoPlayer=void 0,this._video=void 0,this.core.kvStatManager.addEnum({key:575702,value:1})}destroy(){this.stop()}};__publicField(_FaceDetection,"Name","FaceDetection");var FaceDetection=_FaceDetection,index_default=FaceDetection;export{index_default as default};export{FaceDetection};
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/face-detection",
3
- "version": "5.20.2-beta.8",
3
+ "version": "5.20.2-beta.9",
4
4
  "description": "TRTC Web SDK 5.x face detection plugin",
5
5
  "main": "./face-detection.esm.js",
6
6
  "module": "./face-detection.esm.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/video-mixer",
3
- "version": "5.20.2-beta.8",
3
+ "version": "5.20.2-beta.9",
4
4
  "description": "TRTC Web SDK 5.x videoMixer plugin",
5
5
  "main": "./video-mixer.esm.js",
6
6
  "module": "./video-mixer.esm.js",