@webex/plugin-meetings 2.60.0-next.9 → 2.60.1

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 (516) hide show
  1. package/README.md +8 -46
  2. package/dist/common/browser-detection.js +3 -2
  3. package/dist/common/browser-detection.js.map +1 -1
  4. package/dist/common/collection.js +4 -3
  5. package/dist/common/collection.js.map +1 -1
  6. package/dist/common/config.js +2 -1
  7. package/dist/common/config.js.map +1 -1
  8. package/dist/common/errors/captcha-error.js +2 -1
  9. package/dist/common/errors/captcha-error.js.map +1 -1
  10. package/dist/common/errors/intent-to-join.js +2 -1
  11. package/dist/common/errors/intent-to-join.js.map +1 -1
  12. package/dist/common/errors/join-meeting.js +2 -1
  13. package/dist/common/errors/join-meeting.js.map +1 -1
  14. package/dist/common/errors/media.js +2 -1
  15. package/dist/common/errors/media.js.map +1 -1
  16. package/dist/common/errors/parameter.js +4 -3
  17. package/dist/common/errors/parameter.js.map +1 -1
  18. package/dist/common/errors/password-error.js +2 -1
  19. package/dist/common/errors/password-error.js.map +1 -1
  20. package/dist/common/errors/permission.js +2 -1
  21. package/dist/common/errors/permission.js.map +1 -1
  22. package/dist/common/errors/{reclaim-host-role-errors.js → reclaim-host-role-error.js} +11 -7
  23. package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
  24. package/dist/common/errors/reconnection-in-progress.js +2 -1
  25. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  26. package/dist/common/errors/reconnection.js +2 -1
  27. package/dist/common/errors/reconnection.js.map +1 -1
  28. package/dist/common/errors/stats.js +2 -1
  29. package/dist/common/errors/stats.js.map +1 -1
  30. package/dist/common/errors/webex-errors.d.ts +8 -20
  31. package/dist/common/errors/webex-errors.js +28 -48
  32. package/dist/common/errors/webex-errors.js.map +1 -1
  33. package/dist/common/errors/webex-meetings-error.js +2 -1
  34. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  35. package/dist/common/events/events-scope.js +2 -1
  36. package/dist/common/events/events-scope.js.map +1 -1
  37. package/dist/common/events/events.js +2 -1
  38. package/dist/common/events/events.js.map +1 -1
  39. package/dist/common/events/trigger-proxy.js +2 -1
  40. package/dist/common/events/trigger-proxy.js.map +1 -1
  41. package/dist/common/events/util.js +2 -1
  42. package/dist/common/events/util.js.map +1 -1
  43. package/dist/common/logs/logger-config.js +2 -1
  44. package/dist/common/logs/logger-config.js.map +1 -1
  45. package/dist/common/logs/logger-proxy.js +3 -2
  46. package/dist/common/logs/logger-proxy.js.map +1 -1
  47. package/dist/common/logs/request.d.ts +1 -3
  48. package/dist/common/logs/request.js +5 -8
  49. package/dist/common/logs/request.js.map +1 -1
  50. package/dist/common/queue.d.ts +7 -9
  51. package/dist/common/queue.js +9 -22
  52. package/dist/common/queue.js.map +1 -1
  53. package/dist/config.d.ts +7 -5
  54. package/dist/config.js +11 -8
  55. package/dist/config.js.map +1 -1
  56. package/dist/constants.d.ts +97 -217
  57. package/dist/constants.js +441 -416
  58. package/dist/constants.js.map +1 -1
  59. package/dist/controls-options-manager/constants.js +6 -3
  60. package/dist/controls-options-manager/constants.js.map +1 -1
  61. package/dist/controls-options-manager/enums.d.ts +1 -11
  62. package/dist/controls-options-manager/enums.js +6 -15
  63. package/dist/controls-options-manager/enums.js.map +1 -1
  64. package/dist/controls-options-manager/index.d.ts +1 -17
  65. package/dist/controls-options-manager/index.js +38 -127
  66. package/dist/controls-options-manager/index.js.map +1 -1
  67. package/dist/controls-options-manager/util.d.ts +7 -1
  68. package/dist/controls-options-manager/util.js +19 -309
  69. package/dist/controls-options-manager/util.js.map +1 -1
  70. package/dist/index.d.ts +3 -6
  71. package/dist/index.js +4 -116
  72. package/dist/index.js.map +1 -1
  73. package/dist/locus-info/controlsUtils.js +11 -100
  74. package/dist/locus-info/controlsUtils.js.map +1 -1
  75. package/dist/locus-info/embeddedAppsUtils.js +4 -3
  76. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  77. package/dist/locus-info/fullState.js +2 -1
  78. package/dist/locus-info/fullState.js.map +1 -1
  79. package/dist/locus-info/hostUtils.js +2 -1
  80. package/dist/locus-info/hostUtils.js.map +1 -1
  81. package/dist/locus-info/index.d.ts +4 -57
  82. package/dist/locus-info/index.js +84 -425
  83. package/dist/locus-info/index.js.map +1 -1
  84. package/dist/locus-info/infoUtils.js +5 -13
  85. package/dist/locus-info/infoUtils.js.map +1 -1
  86. package/dist/locus-info/mediaSharesUtils.js +3 -58
  87. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  88. package/dist/locus-info/parser.d.ts +6 -66
  89. package/dist/locus-info/parser.js +80 -253
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +13 -97
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.d.ts +0 -2
  94. package/dist/media/index.js +319 -107
  95. package/dist/media/index.js.map +1 -1
  96. package/dist/media/properties.d.ts +53 -38
  97. package/dist/media/properties.js +153 -96
  98. package/dist/media/properties.js.map +1 -1
  99. package/dist/media/util.js +22 -1
  100. package/dist/media/util.js.map +1 -1
  101. package/dist/mediaQualityMetrics/config.d.ts +230 -234
  102. package/dist/mediaQualityMetrics/config.js +498 -302
  103. package/dist/mediaQualityMetrics/config.js.map +1 -1
  104. package/dist/meeting/effectsState.d.ts +42 -0
  105. package/dist/meeting/effectsState.js +260 -0
  106. package/dist/meeting/effectsState.js.map +1 -0
  107. package/dist/meeting/in-meeting-actions.d.ts +0 -88
  108. package/dist/meeting/in-meeting-actions.js +3 -94
  109. package/dist/meeting/in-meeting-actions.js.map +1 -1
  110. package/dist/meeting/index.d.ts +494 -591
  111. package/dist/meeting/index.js +2969 -4707
  112. package/dist/meeting/index.js.map +1 -1
  113. package/dist/meeting/muteState.d.ts +25 -93
  114. package/dist/meeting/muteState.js +133 -224
  115. package/dist/meeting/muteState.js.map +1 -1
  116. package/dist/meeting/request.d.ts +47 -82
  117. package/dist/meeting/request.js +199 -297
  118. package/dist/meeting/request.js.map +1 -1
  119. package/dist/meeting/state.js +2 -1
  120. package/dist/meeting/state.js.map +1 -1
  121. package/dist/meeting/util.d.ts +1 -102
  122. package/dist/meeting/util.js +435 -605
  123. package/dist/meeting/util.js.map +1 -1
  124. package/dist/meeting-info/collection.js +4 -3
  125. package/dist/meeting-info/collection.js.map +1 -1
  126. package/dist/meeting-info/index.d.ts +1 -13
  127. package/dist/meeting-info/index.js +7 -74
  128. package/dist/meeting-info/index.js.map +1 -1
  129. package/dist/meeting-info/meeting-info-v2.d.ts +1 -31
  130. package/dist/meeting-info/meeting-info-v2.js +63 -200
  131. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  132. package/dist/meeting-info/request.js +2 -1
  133. package/dist/meeting-info/request.js.map +1 -1
  134. package/dist/meeting-info/util.js +3 -2
  135. package/dist/meeting-info/util.js.map +1 -1
  136. package/dist/meeting-info/utilv2.js +41 -39
  137. package/dist/meeting-info/utilv2.js.map +1 -1
  138. package/dist/meetings/collection.d.ts +0 -17
  139. package/dist/meetings/collection.js +4 -42
  140. package/dist/meetings/collection.js.map +1 -1
  141. package/dist/meetings/index.d.ts +21 -103
  142. package/dist/meetings/index.js +124 -486
  143. package/dist/meetings/index.js.map +1 -1
  144. package/dist/meetings/request.js +3 -4
  145. package/dist/meetings/request.js.map +1 -1
  146. package/dist/meetings/util.js +6 -107
  147. package/dist/meetings/util.js.map +1 -1
  148. package/dist/member/index.d.ts +1 -13
  149. package/dist/member/index.js +2 -45
  150. package/dist/member/index.js.map +1 -1
  151. package/dist/member/member.types.js +4 -3
  152. package/dist/member/member.types.js.map +1 -1
  153. package/dist/member/util.js +29 -120
  154. package/dist/member/util.js.map +1 -1
  155. package/dist/members/collection.d.ts +0 -5
  156. package/dist/members/collection.js +2 -11
  157. package/dist/members/collection.js.map +1 -1
  158. package/dist/members/index.d.ts +11 -56
  159. package/dist/members/index.js +47 -174
  160. package/dist/members/index.js.map +1 -1
  161. package/dist/members/request.d.ts +11 -67
  162. package/dist/members/request.js +54 -102
  163. package/dist/members/request.js.map +1 -1
  164. package/dist/members/types.js +4 -3
  165. package/dist/members/types.js.map +1 -1
  166. package/dist/members/util.d.ts +1 -214
  167. package/dist/members/util.js +284 -327
  168. package/dist/members/util.js.map +1 -1
  169. package/dist/metrics/config.d.ts +169 -0
  170. package/dist/metrics/config.js +289 -0
  171. package/dist/metrics/config.js.map +1 -0
  172. package/dist/metrics/constants.d.ts +6 -15
  173. package/dist/metrics/constants.js +9 -17
  174. package/dist/metrics/constants.js.map +1 -1
  175. package/dist/metrics/index.d.ts +111 -4
  176. package/dist/metrics/index.js +452 -4
  177. package/dist/metrics/index.js.map +1 -1
  178. package/dist/networkQualityMonitor/index.js +4 -5
  179. package/dist/networkQualityMonitor/index.js.map +1 -1
  180. package/dist/peer-connection-manager/index.d.ts +6 -0
  181. package/dist/peer-connection-manager/index.js +671 -0
  182. package/dist/peer-connection-manager/index.js.map +1 -0
  183. package/dist/peer-connection-manager/util.d.ts +6 -0
  184. package/dist/peer-connection-manager/util.js +110 -0
  185. package/dist/peer-connection-manager/util.js.map +1 -0
  186. package/dist/personal-meeting-room/index.js +3 -2
  187. package/dist/personal-meeting-room/index.js.map +1 -1
  188. package/dist/personal-meeting-room/request.js +3 -2
  189. package/dist/personal-meeting-room/request.js.map +1 -1
  190. package/dist/personal-meeting-room/util.js +2 -1
  191. package/dist/personal-meeting-room/util.js.map +1 -1
  192. package/dist/reachability/index.d.ts +7 -62
  193. package/dist/reachability/index.js +72 -265
  194. package/dist/reachability/index.js.map +1 -1
  195. package/dist/reachability/request.d.ts +3 -7
  196. package/dist/reachability/request.js +10 -18
  197. package/dist/reachability/request.js.map +1 -1
  198. package/dist/reactions/reactions.d.ts +2 -2
  199. package/dist/reactions/reactions.js +6 -4
  200. package/dist/reactions/reactions.js.map +1 -1
  201. package/dist/reactions/reactions.type.d.ts +3 -23
  202. package/dist/reactions/reactions.type.js +23 -21
  203. package/dist/reactions/reactions.type.js.map +1 -1
  204. package/dist/reconnection-manager/index.d.ts +8 -32
  205. package/dist/reconnection-manager/index.js +231 -282
  206. package/dist/reconnection-manager/index.js.map +1 -1
  207. package/dist/recording-controller/enums.js +5 -4
  208. package/dist/recording-controller/enums.js.map +1 -1
  209. package/dist/recording-controller/index.d.ts +1 -15
  210. package/dist/recording-controller/index.js +46 -57
  211. package/dist/recording-controller/index.js.map +1 -1
  212. package/dist/recording-controller/util.d.ts +4 -5
  213. package/dist/recording-controller/util.js +10 -10
  214. package/dist/recording-controller/util.js.map +1 -1
  215. package/dist/roap/collection.d.ts +10 -0
  216. package/dist/roap/collection.js +63 -0
  217. package/dist/roap/collection.js.map +1 -0
  218. package/dist/roap/handler.d.ts +47 -0
  219. package/dist/roap/handler.js +279 -0
  220. package/dist/roap/handler.js.map +1 -0
  221. package/dist/roap/index.d.ts +47 -9
  222. package/dist/roap/index.js +235 -101
  223. package/dist/roap/index.js.map +1 -1
  224. package/dist/roap/request.d.ts +12 -18
  225. package/dist/roap/request.js +180 -126
  226. package/dist/roap/request.js.map +1 -1
  227. package/dist/roap/state.d.ts +9 -0
  228. package/dist/roap/state.js +127 -0
  229. package/dist/roap/state.js.map +1 -0
  230. package/dist/roap/turnDiscovery.d.ts +16 -27
  231. package/dist/roap/turnDiscovery.js +105 -115
  232. package/dist/roap/turnDiscovery.js.map +1 -1
  233. package/dist/roap/util.d.ts +2 -0
  234. package/dist/roap/util.js +76 -0
  235. package/dist/roap/util.js.map +1 -0
  236. package/dist/statsAnalyzer/global.d.ts +83 -1
  237. package/dist/statsAnalyzer/global.js +85 -2
  238. package/dist/statsAnalyzer/global.js.map +1 -1
  239. package/dist/statsAnalyzer/index.d.ts +30 -28
  240. package/dist/statsAnalyzer/index.js +509 -374
  241. package/dist/statsAnalyzer/index.js.map +1 -1
  242. package/dist/statsAnalyzer/mqaUtil.d.ts +6 -8
  243. package/dist/statsAnalyzer/mqaUtil.js +83 -116
  244. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  245. package/dist/transcription/index.js +2 -1
  246. package/dist/transcription/index.js.map +1 -1
  247. package/package.json +26 -35
  248. package/src/common/errors/webex-errors.ts +12 -36
  249. package/src/common/logs/logger-proxy.ts +1 -1
  250. package/src/common/logs/request.ts +1 -5
  251. package/src/common/queue.ts +8 -22
  252. package/src/config.ts +7 -5
  253. package/src/constants.ts +97 -244
  254. package/src/controls-options-manager/enums.ts +0 -12
  255. package/src/controls-options-manager/index.ts +21 -116
  256. package/src/controls-options-manager/util.ts +14 -294
  257. package/src/index.js +15 -0
  258. package/src/locus-info/controlsUtils.ts +0 -110
  259. package/src/locus-info/index.ts +61 -449
  260. package/src/locus-info/infoUtils.ts +2 -14
  261. package/src/locus-info/mediaSharesUtils.ts +0 -64
  262. package/src/locus-info/parser.ts +47 -258
  263. package/src/locus-info/selfUtils.ts +2 -85
  264. package/src/media/index.ts +370 -153
  265. package/src/media/properties.ts +136 -106
  266. package/src/media/util.ts +21 -0
  267. package/src/mediaQualityMetrics/config.ts +377 -244
  268. package/src/meeting/effectsState.ts +209 -0
  269. package/src/meeting/in-meeting-actions.ts +0 -176
  270. package/src/meeting/index.ts +2482 -3929
  271. package/src/meeting/muteState.ts +138 -224
  272. package/src/meeting/request.ts +127 -207
  273. package/src/meeting/util.ts +423 -590
  274. package/src/meeting-info/index.ts +8 -81
  275. package/src/meeting-info/meeting-info-v2.ts +13 -163
  276. package/src/meeting-info/util.ts +1 -1
  277. package/src/meeting-info/utilv2.ts +28 -28
  278. package/src/meetings/collection.ts +0 -33
  279. package/src/meetings/index.ts +126 -486
  280. package/src/meetings/request.ts +0 -2
  281. package/src/meetings/util.ts +5 -116
  282. package/src/member/index.ts +1 -43
  283. package/src/member/util.ts +28 -125
  284. package/src/members/collection.ts +0 -8
  285. package/src/members/index.ts +52 -187
  286. package/src/members/request.ts +27 -87
  287. package/src/members/util.ts +291 -332
  288. package/src/metrics/config.ts +485 -0
  289. package/src/metrics/constants.ts +6 -15
  290. package/src/metrics/index.ts +471 -1
  291. package/src/networkQualityMonitor/index.ts +6 -6
  292. package/src/peer-connection-manager/index.ts +847 -0
  293. package/src/peer-connection-manager/util.ts +119 -0
  294. package/src/reachability/index.ts +45 -238
  295. package/src/reachability/request.ts +8 -17
  296. package/src/reactions/reactions.ts +4 -4
  297. package/src/reactions/reactions.type.ts +4 -30
  298. package/src/reconnection-manager/index.ts +156 -168
  299. package/src/recording-controller/index.ts +3 -20
  300. package/src/recording-controller/util.ts +9 -26
  301. package/src/roap/collection.ts +62 -0
  302. package/src/roap/handler.ts +294 -0
  303. package/src/roap/index.ts +241 -98
  304. package/src/roap/request.ts +148 -74
  305. package/src/roap/state.ts +156 -0
  306. package/src/roap/turnDiscovery.ts +56 -62
  307. package/src/roap/util.ts +100 -0
  308. package/src/statsAnalyzer/global.ts +84 -1
  309. package/src/statsAnalyzer/index.ts +642 -413
  310. package/src/statsAnalyzer/mqaUtil.ts +114 -111
  311. package/test/integration/spec/journey.js +264 -320
  312. package/test/integration/spec/space-meeting.js +4 -77
  313. package/test/unit/spec/common/queue.js +2 -31
  314. package/test/unit/spec/controls-options-manager/index.js +0 -163
  315. package/test/unit/spec/controls-options-manager/util.js +60 -576
  316. package/test/unit/spec/fixture/locus.js +0 -1
  317. package/test/unit/spec/locus-info/controlsUtils.js +30 -323
  318. package/test/unit/spec/locus-info/index.js +15 -1389
  319. package/test/unit/spec/locus-info/infoUtils.js +16 -54
  320. package/test/unit/spec/locus-info/lib/SeqCmp.json +0 -16
  321. package/test/unit/spec/locus-info/lib/selfConstant.js +0 -48
  322. package/test/unit/spec/locus-info/parser.js +35 -116
  323. package/test/unit/spec/locus-info/selfUtils.js +0 -275
  324. package/test/unit/spec/media/properties.ts +84 -75
  325. package/test/unit/spec/meeting/effectsState.js +281 -0
  326. package/test/unit/spec/meeting/in-meeting-actions.ts +0 -86
  327. package/test/unit/spec/meeting/index.js +3136 -8547
  328. package/test/unit/spec/meeting/muteState.js +213 -409
  329. package/test/unit/spec/meeting/request.js +42 -512
  330. package/test/unit/spec/meeting/utils.js +24 -741
  331. package/test/unit/spec/meeting-info/meetinginfov2.js +5 -527
  332. package/test/unit/spec/meeting-info/utilv2.js +0 -21
  333. package/test/unit/spec/meetings/collection.js +0 -26
  334. package/test/unit/spec/meetings/index.js +211 -1278
  335. package/test/unit/spec/meetings/utils.js +2 -202
  336. package/test/unit/spec/member/index.js +9 -32
  337. package/test/unit/spec/member/util.js +61 -499
  338. package/test/unit/spec/members/index.js +5 -394
  339. package/test/unit/spec/members/request.js +27 -206
  340. package/test/unit/spec/members/utils.js +38 -173
  341. package/test/unit/spec/metrics/index.js +50 -1
  342. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  343. package/test/unit/spec/peerconnection-manager/index.js +218 -0
  344. package/test/unit/spec/peerconnection-manager/utils.js +49 -0
  345. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -0
  346. package/test/unit/spec/reachability/index.ts +24 -598
  347. package/test/unit/spec/reconnection-manager/index.js +24 -162
  348. package/test/unit/spec/recording-controller/index.js +218 -293
  349. package/test/unit/spec/recording-controller/util.js +96 -223
  350. package/test/unit/spec/roap/index.ts +76 -200
  351. package/test/unit/spec/roap/turnDiscovery.ts +48 -86
  352. package/test/unit/spec/roap/util.js +30 -0
  353. package/test/unit/spec/stats-analyzer/index.js +174 -188
  354. package/test/utils/testUtils.js +45 -0
  355. package/test/utils/webex-config.js +0 -4
  356. package/test/utils/webex-test-users.js +3 -7
  357. package/dist/annotation/annotation.types.d.ts +0 -42
  358. package/dist/annotation/annotation.types.js +0 -7
  359. package/dist/annotation/annotation.types.js.map +0 -1
  360. package/dist/annotation/constants.d.ts +0 -31
  361. package/dist/annotation/constants.js +0 -41
  362. package/dist/annotation/constants.js.map +0 -1
  363. package/dist/annotation/index.d.ts +0 -117
  364. package/dist/annotation/index.js +0 -357
  365. package/dist/annotation/index.js.map +0 -1
  366. package/dist/breakouts/breakout.d.ts +0 -8
  367. package/dist/breakouts/breakout.js +0 -215
  368. package/dist/breakouts/breakout.js.map +0 -1
  369. package/dist/breakouts/collection.d.ts +0 -5
  370. package/dist/breakouts/collection.js +0 -22
  371. package/dist/breakouts/collection.js.map +0 -1
  372. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  373. package/dist/breakouts/edit-lock-error.js +0 -51
  374. package/dist/breakouts/edit-lock-error.js.map +0 -1
  375. package/dist/breakouts/events.d.ts +0 -8
  376. package/dist/breakouts/events.js +0 -44
  377. package/dist/breakouts/events.js.map +0 -1
  378. package/dist/breakouts/index.d.ts +0 -5
  379. package/dist/breakouts/index.js +0 -1047
  380. package/dist/breakouts/index.js.map +0 -1
  381. package/dist/breakouts/request.d.ts +0 -22
  382. package/dist/breakouts/request.js +0 -77
  383. package/dist/breakouts/request.js.map +0 -1
  384. package/dist/breakouts/utils.d.ts +0 -15
  385. package/dist/breakouts/utils.js +0 -64
  386. package/dist/breakouts/utils.js.map +0 -1
  387. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  388. package/dist/common/errors/no-meeting-info.js +0 -50
  389. package/dist/common/errors/no-meeting-info.js.map +0 -1
  390. package/dist/common/errors/reclaim-host-role-errors.js.map +0 -1
  391. package/dist/controls-options-manager/types.d.ts +0 -43
  392. package/dist/controls-options-manager/types.js +0 -7
  393. package/dist/controls-options-manager/types.js.map +0 -1
  394. package/dist/interpretation/collection.d.ts +0 -5
  395. package/dist/interpretation/collection.js +0 -22
  396. package/dist/interpretation/collection.js.map +0 -1
  397. package/dist/interpretation/index.d.ts +0 -5
  398. package/dist/interpretation/index.js +0 -365
  399. package/dist/interpretation/index.js.map +0 -1
  400. package/dist/interpretation/siLanguage.d.ts +0 -5
  401. package/dist/interpretation/siLanguage.js +0 -24
  402. package/dist/interpretation/siLanguage.js.map +0 -1
  403. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  404. package/dist/meeting/locusMediaRequest.js +0 -291
  405. package/dist/meeting/locusMediaRequest.js.map +0 -1
  406. package/dist/meeting/request.type.d.ts +0 -11
  407. package/dist/meeting/request.type.js +0 -7
  408. package/dist/meeting/request.type.js.map +0 -1
  409. package/dist/meetings/meetings.types.d.ts +0 -4
  410. package/dist/meetings/meetings.types.js +0 -7
  411. package/dist/meetings/meetings.types.js.map +0 -1
  412. package/dist/member/types.d.ts +0 -32
  413. package/dist/member/types.js +0 -23
  414. package/dist/member/types.js.map +0 -1
  415. package/dist/multistream/mediaRequestManager.d.ts +0 -118
  416. package/dist/multistream/mediaRequestManager.js +0 -344
  417. package/dist/multistream/mediaRequestManager.js.map +0 -1
  418. package/dist/multistream/receiveSlot.d.ts +0 -68
  419. package/dist/multistream/receiveSlot.js +0 -200
  420. package/dist/multistream/receiveSlot.js.map +0 -1
  421. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  422. package/dist/multistream/receiveSlotManager.js +0 -174
  423. package/dist/multistream/receiveSlotManager.js.map +0 -1
  424. package/dist/multistream/remoteMedia.d.ts +0 -72
  425. package/dist/multistream/remoteMedia.js +0 -268
  426. package/dist/multistream/remoteMedia.js.map +0 -1
  427. package/dist/multistream/remoteMediaGroup.d.ts +0 -47
  428. package/dist/multistream/remoteMediaGroup.js +0 -267
  429. package/dist/multistream/remoteMediaGroup.js.map +0 -1
  430. package/dist/multistream/remoteMediaManager.d.ts +0 -285
  431. package/dist/multistream/remoteMediaManager.js +0 -1211
  432. package/dist/multistream/remoteMediaManager.js.map +0 -1
  433. package/dist/multistream/sendSlotManager.d.ts +0 -61
  434. package/dist/multistream/sendSlotManager.js +0 -236
  435. package/dist/multistream/sendSlotManager.js.map +0 -1
  436. package/dist/reactions/constants.d.ts +0 -3
  437. package/dist/reactions/constants.js +0 -12
  438. package/dist/reactions/constants.js.map +0 -1
  439. package/dist/rtcMetrics/constants.d.ts +0 -4
  440. package/dist/rtcMetrics/constants.js +0 -11
  441. package/dist/rtcMetrics/constants.js.map +0 -1
  442. package/dist/rtcMetrics/index.d.ts +0 -54
  443. package/dist/rtcMetrics/index.js +0 -140
  444. package/dist/rtcMetrics/index.js.map +0 -1
  445. package/dist/webinar/collection.d.ts +0 -16
  446. package/dist/webinar/collection.js +0 -43
  447. package/dist/webinar/collection.js.map +0 -1
  448. package/dist/webinar/index.d.ts +0 -5
  449. package/dist/webinar/index.js +0 -68
  450. package/dist/webinar/index.js.map +0 -1
  451. package/src/annotation/annotation.types.ts +0 -50
  452. package/src/annotation/constants.ts +0 -36
  453. package/src/annotation/index.ts +0 -328
  454. package/src/breakouts/README.md +0 -220
  455. package/src/breakouts/breakout.ts +0 -188
  456. package/src/breakouts/collection.ts +0 -19
  457. package/src/breakouts/edit-lock-error.ts +0 -25
  458. package/src/breakouts/events.ts +0 -56
  459. package/src/breakouts/index.ts +0 -925
  460. package/src/breakouts/request.ts +0 -55
  461. package/src/breakouts/utils.ts +0 -57
  462. package/src/common/errors/no-meeting-info.ts +0 -24
  463. package/src/controls-options-manager/types.ts +0 -59
  464. package/src/index.ts +0 -40
  465. package/src/interpretation/README.md +0 -60
  466. package/src/interpretation/collection.ts +0 -19
  467. package/src/interpretation/index.ts +0 -332
  468. package/src/interpretation/siLanguage.ts +0 -18
  469. package/src/meeting/locusMediaRequest.ts +0 -313
  470. package/src/meeting/request.type.ts +0 -13
  471. package/src/meetings/meetings.types.ts +0 -12
  472. package/src/member/types.ts +0 -38
  473. package/src/multistream/mediaRequestManager.ts +0 -440
  474. package/src/multistream/receiveSlot.ts +0 -184
  475. package/src/multistream/receiveSlotManager.ts +0 -166
  476. package/src/multistream/remoteMedia.ts +0 -254
  477. package/src/multistream/remoteMediaGroup.ts +0 -284
  478. package/src/multistream/remoteMediaManager.ts +0 -1145
  479. package/src/multistream/sendSlotManager.ts +0 -170
  480. package/src/reactions/constants.ts +0 -4
  481. package/src/rtcMetrics/constants.ts +0 -3
  482. package/src/rtcMetrics/index.ts +0 -124
  483. package/src/webinar/collection.ts +0 -31
  484. package/src/webinar/index.ts +0 -62
  485. package/test/integration/spec/converged-space-meetings.js +0 -233
  486. package/test/unit/spec/annotation/index.ts +0 -418
  487. package/test/unit/spec/breakouts/breakout.ts +0 -237
  488. package/test/unit/spec/breakouts/collection.ts +0 -15
  489. package/test/unit/spec/breakouts/edit-lock-error.ts +0 -30
  490. package/test/unit/spec/breakouts/events.ts +0 -89
  491. package/test/unit/spec/breakouts/index.ts +0 -1790
  492. package/test/unit/spec/breakouts/request.ts +0 -104
  493. package/test/unit/spec/breakouts/utils.js +0 -72
  494. package/test/unit/spec/interpretation/collection.ts +0 -15
  495. package/test/unit/spec/interpretation/index.ts +0 -589
  496. package/test/unit/spec/interpretation/siLanguage.ts +0 -28
  497. package/test/unit/spec/locus-info/mediaSharesUtils.ts +0 -32
  498. package/test/unit/spec/media/index.ts +0 -290
  499. package/test/unit/spec/meeting/locusMediaRequest.ts +0 -442
  500. package/test/unit/spec/meeting-info/index.js +0 -300
  501. package/test/unit/spec/multistream/mediaRequestManager.ts +0 -1418
  502. package/test/unit/spec/multistream/receiveSlot.ts +0 -163
  503. package/test/unit/spec/multistream/receiveSlotManager.ts +0 -203
  504. package/test/unit/spec/multistream/remoteMedia.ts +0 -255
  505. package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -662
  506. package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1924
  507. package/test/unit/spec/multistream/sendSlotManager.ts +0 -242
  508. package/test/unit/spec/reachability/request.js +0 -68
  509. package/test/unit/spec/roap/request.ts +0 -232
  510. package/test/unit/spec/rtcMetrics/index.ts +0 -93
  511. package/test/unit/spec/webinar/collection.ts +0 -13
  512. package/test/unit/spec/webinar/index.ts +0 -60
  513. package/test/utils/constants.js +0 -9
  514. package/test/utils/integrationTestUtils.js +0 -46
  515. /package/dist/common/errors/{reclaim-host-role-errors.d.ts → reclaim-host-role-error.d.ts} +0 -0
  516. /package/src/common/errors/{reclaim-host-role-errors.ts → reclaim-host-role-error.ts} +0 -0
@@ -0,0 +1,218 @@
1
+ import 'jsdom-global/register';
2
+ import {assert} from '@webex/test-helper-chai';
3
+ import sinon from 'sinon';
4
+
5
+ import PeerConnectionManager from '@webex/plugin-meetings/src/peer-connection-manager/index';
6
+ import StaticConfig from '@webex/plugin-meetings/src/common/config';
7
+ import {InvalidSdpError} from '@webex/plugin-meetings/src/common/errors/webex-errors';
8
+
9
+ describe('Peerconnection Manager', () => {
10
+ describe('Methods', () => {
11
+ let peerConnection = null;
12
+ let sdp = null;
13
+
14
+ beforeEach(() => {
15
+ sdp =
16
+ 'v=0\r\no=- 1026633665396855335 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1 2\r\nr\na=msid-semantic: WMS\r\nm=audio 40903 UDP/TLS/RTP/SAVPF 111 63 103 104 9 0 8 106 105 13 110 112 113 126\r\nb=TIAS:64000\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:602151403 1 udp 2122262783 2401:4900:2301:c2cb:5ea9:46d5:7321:2531 47974 typ host generation 0 network-id 2 network-cost 900\r\na=candidate:675071982 1 udp 2122197247 2401:4900:33fc:314c:ad57:3e1d:befe:34b7 41234 typ host generation 0 network-id 3 network-cost 900\r\na=candidate:1835525403 1 tcp 1518283007 2401:4900:2301:c2cb:5ea9:46d5:7321:2531 9 typ host tcptype active generation 0 network-id 2 network-cost 900\r\na=candidate:1723808542 1 tcp 1518217471 2401:4900:33fc:314c:ad57:3e1d:befe:34b7 9 typ host tcptype active generation 0 network-id 3 network-cost 900\r\na=ice-ufrag:zK3G\r\na=ice-pwd:e9xgQIGnRsJvaFpvTAenr5JQ\r\na=ice-options:trickle\r\nm=video 43875 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 122 121 127\r\nb=TIAS:4000000\r\nc=IN IP4 0.0.0.0\r\na=periodic-keyframes:20\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:602151403 1 udp 2122262783 2401:4900:2301:c2cb:5ea9:46d5:7321:2531 41619 typ host generation 0 network-id 2 network-cost 900\r\na=candidate:675071982 1 udp 2122197247 2401:4900:33fc:314c:ad57:3e1d:befe:34b7 47098 typ host generation 0 network-id 3 network-cost 900\r\na=candidate:1835525403 1 tcp 1518283007 2401:4900:2301:c2cb:5ea9:46d5:7321:2531 9 typ host tcptype active generation 0 network-id 2 network-cost 900\r\na=candidate:1723808542 1 tcp 1518217471 2401:4900:33fc:314c:ad57:3e1d:befe:34b7 9 typ host tcptype active generation 0 network-id 3 network-cost 900\r\na=ice-ufrag:zK3G\r\na=ice-pwd:e9xgQIGnRsJvaFpvTAenr5JQ\r\na=ice-options:trickle\r\na=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\nm=video 49298 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 122 121 127\r\nb=TIAS:4000000\r\nc=IN IP4 0.0.0.0\r\na=periodic-keyframes:20\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:602151403 1 udp 2122262783 2401:4900:2301:c2cb:5ea9:46d5:7321:2531 37670 typ host generation 0 network-id 2 network-cost 900\r\na=candidate:675071982 1 udp 2122197247 2401:4900:33fc:314c:ad57:3e1d:befe:34b7 37790 typ host generation 0 network-id 3 network-cost 900\r\na=candidate:1835525403 1 tcp 1518283007 2401:4900:2301:c2cb:5ea9:46d5:7321:2531 9 typ host tcptype active generation 0 network-id 2 network-cost 900\r\na=candidate:1723808542 1 tcp 1518217471 2401:4900:33fc:314c:ad57:3e1d:befe:34b7 9 typ host tcptype active generation 0 network-id 3 network-cost 900\r\na=ice-ufrag:zK3G\r\na=ice-pwd:e9xgQIGnRsJvaFpvTAenr5JQ\r\na=ice-options:trickle\r\na=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f;\r\na=content:slides\r\n';
17
+
18
+ peerConnection = {
19
+ iceGatheringState: 'new',
20
+ onicecandidate: null,
21
+ onicecandidateerror: null,
22
+ localDescription: {sdp},
23
+ };
24
+
25
+ Object.defineProperty(global.window, 'RTCSessionDescription', {
26
+ writable: true,
27
+ value: class {
28
+ constructor(options) {
29
+ this.type = options.type;
30
+ this.sdp = options.sdp;
31
+ }
32
+ },
33
+ });
34
+ });
35
+ describe('setRemoteSessionDetails', () => {
36
+ it('change the start bitrate on remoteSDP and remove extmap', async () => {
37
+ StaticConfig.set({bandwidth: {audio: 50, video: 500, startBitrate: 2000}});
38
+ let result = null;
39
+ const setRemoteDescription = sinon.stub().callsFake((args) => {
40
+ result = args;
41
+
42
+ return Promise.resolve();
43
+ });
44
+ const remoteSdp =
45
+ 'v=0\r\n' +
46
+ 'm=video 5004 UDP/TLS/RTP/SAVPF 102 127 97 99\r\n' +
47
+ 'a=fmtp:102 profile-level-id=42e016;packetization-mode=1;max-mbps=244800;max-fs=8160;max-fps=3000;max-dpb=12240;max-rcmd-nalu-size=196608;level-asymmetry-allowed=1\r\n' +
48
+ 'a=rtpmap:127 H264/90000\r\n' +
49
+ 'a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\n' +
50
+ 'a=fmtp:127 profile-level-id=42e016;max-mbps=244800;max-fs=8160;max-fps=3000;max-dpb=12240;max-rcmd-nalu-size=196608;level-asymmetry-allowed=1\r\n';
51
+
52
+ const resultSdp =
53
+ 'v=0\r\n' +
54
+ 'm=video 5004 UDP/TLS/RTP/SAVPF 102 127 97 99\r\n' +
55
+ 'a=fmtp:102 profile-level-id=42e016;packetization-mode=1;max-mbps=244800;max-fs=8160;max-fps=3000;max-dpb=12240;max-rcmd-nalu-size=196608;level-asymmetry-allowed=1;x-google-start-bitrate=2000\r\n' +
56
+ 'a=rtpmap:127 H264/90000\r\r\n' +
57
+ 'a=fmtp:127 profile-level-id=42e016;max-mbps=244800;max-fs=8160;max-fps=3000;max-dpb=12240;max-rcmd-nalu-size=196608;level-asymmetry-allowed=1;x-google-start-bitrate=2000\r\n';
58
+ const peerConnection = {
59
+ signalingState: 'have-local-offer',
60
+ setRemoteDescription,
61
+ enableExtmap: false,
62
+ };
63
+
64
+ await PeerConnectionManager.setRemoteSessionDetails(
65
+ peerConnection,
66
+ 'answer',
67
+ remoteSdp,
68
+ {}
69
+ );
70
+
71
+ assert.equal(result.sdp, resultSdp);
72
+ });
73
+
74
+ it('dont change the start bitrate on remoteSDP if default value is 0', async () => {
75
+ StaticConfig.set({bandwidth: {audio: 50, video: 500, startBitrate: 0}});
76
+ let result = null;
77
+ const setRemoteDescription = sinon.stub().callsFake((args) => {
78
+ result = args;
79
+
80
+ return Promise.resolve();
81
+ });
82
+ const remoteSdp =
83
+ 'v=0\r\n' +
84
+ 'm=video 5004 UDP/TLS/RTP/SAVPF 102 127 97 99\r\n' +
85
+ 'a=fmtp:102 profile-level-id=42e016;packetization-mode=1;max-mbps=244800;max-fs=8160;max-fps=3000;max-dpb=12240;max-rcmd-nalu-size=196608;level-asymmetry-allowed=1\r\n' +
86
+ 'a=rtpmap:127 H264/90000\r\n' +
87
+ 'a=fmtp:127 profile-level-id=42e016;max-mbps=244800;max-fs=8160;max-fps=3000;max-dpb=12240;max-rcmd-nalu-size=196608;level-asymmetry-allowed=1\r\n';
88
+
89
+ const peerConnection = {
90
+ signalingState: 'have-local-offer',
91
+ setRemoteDescription,
92
+ };
93
+
94
+ await PeerConnectionManager.setRemoteSessionDetails(
95
+ peerConnection,
96
+ 'answer',
97
+ remoteSdp,
98
+ {}
99
+ );
100
+
101
+ assert.equal(result.sdp, remoteSdp);
102
+ });
103
+
104
+ it('removes xTLS candidates from the remote sdp', async () => {
105
+ StaticConfig.set({bandwidth: {}});
106
+
107
+ const remoteSdpWithXtlsCandidates =
108
+ 'v=0\r\n' +
109
+ 'm=video 5004 UDP/TLS/RTP/SAVPF 102 127 97 99\r\n' +
110
+ 'a=candidate:1 1 UDP 2130706175 18.206.82.54 9000 typ host\r\n' +
111
+ 'a=candidate:2 1 TCP 1962934271 18.206.82.54 5004 typ host tcptype passive\r\n' +
112
+ 'a=candidate:3 1 TCP 1962934015 18.206.82.54 9000 typ host tcptype passive\r\n' +
113
+ 'a=candidate:4 1 xTLS 1795162111 external-media2.aintm-a-6.int.infra.webex.com 443 typ host tcptype passive fingerprint sha-1;55:B8:1D:94:BC:9D:B2:A5:5E:82:E7:84:C6:C8:10:AC:D3:FD:96:26\r\n' +
114
+ 'a=rtpmap:127 H264/90000\r\n' +
115
+ 'a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\n' +
116
+ 'm=video 9000 UDP/TLS/RTP/SAVPF 102 127 97 99\r\n' +
117
+ 'a=candidate:1 1 xTLS 1795162111 external-media2.aintm-a-6.int.infra.webex.com 443 typ host tcptype passive fingerprint sha-1;55:B8:1D:94:BC:9D:B2:A5:5E:82:E7:84:C6:C8:10:AC:D3:FD:96:26\r\n' +
118
+ 'a=candidate:2 1 TCP 1962934271 18.206.82.54 5004 typ host tcptype passive\r\n' +
119
+ 'a=fmtp:127 profile-level-id=42e016;max-mbps=244800;max-fs=8160;max-fps=3000;max-dpb=12240;max-rcmd-nalu-size=196608;level-asymmetry-allowed=1\r\n';
120
+
121
+ // same as remoteSdpWithXtlsCandidates but without the xtls candidates
122
+ const resultSdp =
123
+ 'v=0\r\n' +
124
+ 'm=video 5004 UDP/TLS/RTP/SAVPF 102 127 97 99\r\n' +
125
+ 'a=candidate:1 1 UDP 2130706175 18.206.82.54 9000 typ host\r\n' +
126
+ 'a=candidate:2 1 TCP 1962934271 18.206.82.54 5004 typ host tcptype passive\r\n' +
127
+ 'a=candidate:3 1 TCP 1962934015 18.206.82.54 9000 typ host tcptype passive\r\n' +
128
+ 'a=rtpmap:127 H264/90000\r\n' +
129
+ 'a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\n' +
130
+ 'm=video 9000 UDP/TLS/RTP/SAVPF 102 127 97 99\r\n' +
131
+ 'a=candidate:2 1 TCP 1962934271 18.206.82.54 5004 typ host tcptype passive\r\n' +
132
+ 'a=fmtp:127 profile-level-id=42e016;max-mbps=244800;max-fs=8160;max-fps=3000;max-dpb=12240;max-rcmd-nalu-size=196608;level-asymmetry-allowed=1\r\n';
133
+
134
+ const peerConnection = {
135
+ signalingState: 'have-local-offer',
136
+ setRemoteDescription: sinon.stub().resolves(),
137
+ enableExtmap: true,
138
+ };
139
+
140
+ await PeerConnectionManager.setRemoteSessionDetails(
141
+ peerConnection,
142
+ 'answer',
143
+ remoteSdpWithXtlsCandidates,
144
+ ''
145
+ );
146
+
147
+ assert.calledWith(
148
+ peerConnection.setRemoteDescription,
149
+ new global.window.RTCSessionDescription({sdp: resultSdp, type: 'answer'})
150
+ );
151
+ });
152
+ });
153
+
154
+ describe('iceCandidate', () => {
155
+ beforeEach(() => {
156
+ StaticConfig.set({bandwidth: {audio: 50, video: 500, startBitrate: 0}});
157
+ peerConnection.sdp = null;
158
+ });
159
+ it('ice gathering already completed', async () => {
160
+ peerConnection.iceGatheringState = 'complete';
161
+
162
+ await PeerConnectionManager.iceCandidate(peerConnection, {remoteQualityLevel: 'HIGH'});
163
+ console.error('Came her with sdp resolved');
164
+ assert(peerConnection.sdp.search('max-fs:8192'), true);
165
+ });
166
+
167
+ it('listen onIceCandidate,onicecandidateerror and onIceGatheringStateChange', async () => {
168
+ peerConnection.iceGatheringState = 'none';
169
+ setTimeout(() => {
170
+ peerConnection.onicecandidate({candidate: null});
171
+ }, 1000);
172
+ await PeerConnectionManager.iceCandidate(peerConnection, {remoteQualityLevel: 'HIGH'});
173
+ assert.isFunction(peerConnection.onIceGatheringStateChange);
174
+ assert.isFunction(peerConnection.onicecandidate);
175
+ assert.isFunction(peerConnection.onicecandidateerror);
176
+ });
177
+
178
+ it('generate sdp with iceGatheringstate is `complet`', async () => {
179
+ peerConnection.iceGatheringState = 'none';
180
+ setTimeout(() => {
181
+ peerConnection.iceGatheringState = 'complete';
182
+ peerConnection.onIceGatheringStateChange();
183
+ }, 1000);
184
+ await PeerConnectionManager.iceCandidate(peerConnection, {remoteQualityLevel: 'HIGH'}).then(
185
+ () => {
186
+ assert(peerConnection.sdp.search('max-fs:8192'), true);
187
+ }
188
+ );
189
+ });
190
+
191
+ it('should still generate sdp even if onicecandidateerror is called ', async () => {
192
+ peerConnection.iceGatheringState = 'none';
193
+ setTimeout(() => {
194
+ peerConnection.onicecandidateerror();
195
+ peerConnection.onicecandidate({candidate: null});
196
+ }, 1000);
197
+ await PeerConnectionManager.iceCandidate(peerConnection, {remoteQualityLevel: 'HIGH'}).then(
198
+ () => {
199
+ assert(peerConnection.sdp.search('max-fs:8192'), true);
200
+ }
201
+ );
202
+ });
203
+
204
+ it('should throw generated SDP does not have candidates ', async () => {
205
+ peerConnection.iceGatheringState = 'none';
206
+ peerConnection.localDescription.sdp =
207
+ 'v=0\r\no=- 1026633665396855335 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1 2\r\nr\na=msid-semantic: WMS\r\nm=audio 40903 UDP/TLS/RTP/SAVPF 111 63 103 104 9 0 8 106 105 13 110 112 113 126\r\nb=TIAS:64000\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:zK3G\r\na=ice-pwd:e9xgQIGnRsJvaFpvTAenr5JQ\r\na=ice-options:trickle\r\nm=video 43875 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 122 121 127\r\nb=TIAS:4000000\r\nc=IN IP4 0.0.0.0\r\na=periodic-keyframes:20\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:zK3G\r\na=ice-pwd:e9xgQIGnRsJvaFpvTAenr5JQ\r\na=ice-options:trickle\r\na=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\nm=video 49298 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 122 121 127\r\nb=TIAS:4000000\r\nc=IN IP4 0.0.0.0\r\na=periodic-keyframes:20\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:zK3G\r\na=ice-pwd:e9xgQIGnRsJvaFpvTAenr5JQ\r\na=ice-options:trickle\r\na=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f;\r\na=content:slides\r\n';
208
+ setTimeout(() => {
209
+ peerConnection.onicecandidate({candidate: null});
210
+ }, 1000);
211
+ await assert.isRejected(
212
+ PeerConnectionManager.iceCandidate(peerConnection, {remoteQualityLevel: 'HIGH'}),
213
+ InvalidSdpError
214
+ );
215
+ });
216
+ });
217
+ });
218
+ });
@@ -0,0 +1,49 @@
1
+ import {assert} from '@webex/test-helper-chai';
2
+ import PeerConnectionUtils from '@webex/plugin-meetings/src/peer-connection-manager/util';
3
+
4
+ import {
5
+ SDP_MULTIPLE_VIDEO_CODECS,
6
+ SDP_MULTIPLE_VIDEO_CODECS_WITH_LOWERED_H264_PROFILE_LEVEL,
7
+ SDP_MULTIPLE_VIDEO_CODECS_WITH_MAX_FS,
8
+ } from './utils.test-fixtures';
9
+
10
+ describe('Peerconnection Manager', () => {
11
+ describe('Utils', () => {
12
+ describe('convertCLineToIpv4', () => {
13
+ it('changes ipv6 to ipv4 default', () => {
14
+ const localSdp =
15
+ 'v=0\r\n' +
16
+ 'm=video 5004 UDP/TLS/RTP/SAVPF 102 127 97 99\r\n' +
17
+ 'c=IN IP6 2607:fb90:d27c:b314:211a:32dd:c47f:ffe\r\n' +
18
+ 'a=rtpmap:127 H264/90000\r\n';
19
+ const resultSdp =
20
+ 'v=0\r\n' +
21
+ 'm=video 5004 UDP/TLS/RTP/SAVPF 102 127 97 99\r\n' +
22
+ 'c=IN IP4 0.0.0.0\r\n' +
23
+ 'a=rtpmap:127 H264/90000\r\n';
24
+
25
+ const temp = PeerConnectionUtils.convertCLineToIpv4(localSdp);
26
+
27
+ assert.equal(temp, resultSdp);
28
+ });
29
+ });
30
+
31
+ describe('adjustH264Profile', () => {
32
+ it('appends max-fs and max-mbps to h264 fmtp lines when h264MaxFs value is higher than the value from the profile', () => {
33
+ const modifiedSdp = PeerConnectionUtils.adjustH264Profile(SDP_MULTIPLE_VIDEO_CODECS, 8192);
34
+
35
+ assert.equal(modifiedSdp, SDP_MULTIPLE_VIDEO_CODECS_WITH_MAX_FS);
36
+ });
37
+ it('keeps fmtp lines the same when h264MaxFs value matches the value from the profile', () => {
38
+ const modifiedSdp = PeerConnectionUtils.adjustH264Profile(SDP_MULTIPLE_VIDEO_CODECS, 3600);
39
+
40
+ assert.equal(modifiedSdp, SDP_MULTIPLE_VIDEO_CODECS);
41
+ });
42
+ it('changes the profile level in h264 fmtp lines when h264MaxFs value is lower than the value from the profile', () => {
43
+ const modifiedSdp = PeerConnectionUtils.adjustH264Profile(SDP_MULTIPLE_VIDEO_CODECS, 1620);
44
+
45
+ assert.equal(modifiedSdp, SDP_MULTIPLE_VIDEO_CODECS_WITH_LOWERED_H264_PROFILE_LEVEL);
46
+ });
47
+ });
48
+ });
49
+ });
@@ -0,0 +1,388 @@
1
+ // SDPs generated by browsers always have CRLF (\r\n) endings,
2
+ // here we're using tagged template literals to ensures that our SDP fixtures also have CRLF endings
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ const ensureCRLF = (strings: any, ...tags: string[]) => {
5
+ const stringsWithCRLF = strings.raw.map((str: string) => str.replace(/\n/g, '\r\n'));
6
+
7
+ // now construct the output the same way as it's done by default for template literals
8
+ let output = stringsWithCRLF[0];
9
+
10
+ tags.forEach((tag, index) => {
11
+ output += tag + stringsWithCRLF[index + 1];
12
+ });
13
+
14
+ return output;
15
+ };
16
+
17
+ // example SDP that has an audio and 2 video m-lines, video contains multiple codecs
18
+ // it's basically a trimmed down version of an SDP example from Chrome
19
+ export const SDP_MULTIPLE_VIDEO_CODECS = ensureCRLF`v=0
20
+ o=- 3328550572590672467 2 IN IP4 127.0.0.1
21
+ s=-
22
+ t=0 0
23
+ a=group:BUNDLE 0 1 2
24
+ a=extmap-allow-mixed
25
+ a=msid-semantic: WMS 38872d1a-f4c3-4234-b162-bb47bc55ec57
26
+ m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 106
27
+ c=IN IP4 0.0.0.0
28
+ a=ice-ufrag:vPie
29
+ a=ice-pwd:QWp1jfvbc4iUBXfLVSxhDFIN
30
+ a=ice-options:trickle
31
+ a=candidate:1 1 udp 2130706431 10.50.173.46 56821 typ host
32
+ a=fingerprint:sha-256 60:00:B9:57:5D:EC:CE:C7:7D:57:EA:EF:AF:37:23:64:63:39:F7:F3:D5:01:C7:18:C7:6E:B9:B4:46:19:40:06
33
+ a=setup:actpass
34
+ a=mid:0
35
+ a=rtcp-mux
36
+ a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
37
+ a=sendrecv
38
+ a=rtpmap:111 opus/48000/2
39
+ a=rtcp-fb:111 transport-cc
40
+ a=fmtp:111 minptime=10;useinbandfec=1
41
+ a=rtpmap:63 red/48000/2
42
+ a=fmtp:63 111/111
43
+ a=rtpmap:9 G722/8000
44
+ a=rtpmap:0 PCMU/8000
45
+ a=rtpmap:8 PCMA/8000
46
+ a=rtpmap:106 CN/32000
47
+ a=rtcp:9 IN IP4 0.0.0.0
48
+ a=msid:38872d1a-f4c3-4234-b162-bb47bc55ec57 0283c960-c78d-4164-a6f3-394342273ad4
49
+ a=ssrc:3693867886 cname:TGydLcYyPoQiRBlB
50
+ a=ssrc:3693867886 msid:38872d1a-f4c3-4234-b162-bb47bc55ec57 0283c960-c78d-4164-a6f3-394342273ad4
51
+ m=video 9 UDP/TLS/RTP/SAVPF 100 101 127 121 114 115 116 117 118
52
+ c=IN IP4 0.0.0.0
53
+ a=ice-ufrag:vPie
54
+ a=ice-pwd:QWp1jfvbc4iUBXfLVSxhDFIN
55
+ a=ice-options:trickle
56
+ a=candidate:1 1 udp 2130706431 10.50.173.46 56821 typ host
57
+ a=fingerprint:sha-256 60:00:B9:57:5D:EC:CE:C7:7D:57:EA:EF:AF:37:23:64:63:39:F7:F3:D5:01:C7:18:C7:6E:B9:B4:46:19:40:06
58
+ a=setup:actpass
59
+ a=mid:1
60
+ a=rtcp-mux
61
+ a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
62
+ a=sendrecv
63
+ a=rtpmap:100 VP9/90000
64
+ a=rtcp-fb:100 goog-remb
65
+ a=rtcp-fb:100 transport-cc
66
+ a=rtcp-fb:100 ccm fir
67
+ a=rtcp-fb:100 nack
68
+ a=rtcp-fb:100 nack pli
69
+ a=fmtp:100 profile-id=2
70
+ a=rtpmap:101 rtx/90000
71
+ a=fmtp:101 apt=100
72
+ a=rtpmap:127 H264/90000
73
+ a=rtcp-fb:127 goog-remb
74
+ a=rtcp-fb:127 transport-cc
75
+ a=rtcp-fb:127 ccm fir
76
+ a=rtcp-fb:127 nack
77
+ a=rtcp-fb:127 nack pli
78
+ a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
79
+ a=rtpmap:121 rtx/90000
80
+ a=fmtp:121 apt=127
81
+ a=rtpmap:114 H264/90000
82
+ a=rtcp-fb:114 goog-remb
83
+ a=rtcp-fb:114 transport-cc
84
+ a=rtcp-fb:114 ccm fir
85
+ a=rtcp-fb:114 nack
86
+ a=rtcp-fb:114 nack pli
87
+ a=fmtp:114 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f
88
+ a=rtpmap:115 rtx/90000
89
+ a=fmtp:115 apt=114
90
+ a=rtpmap:116 red/90000
91
+ a=rtpmap:117 rtx/90000
92
+ a=fmtp:117 apt=116
93
+ a=rtpmap:118 ulpfec/90000
94
+ a=rtcp-rsize
95
+ a=rtcp:9 IN IP4 0.0.0.0
96
+ a=msid:38872d1a-f4c3-4234-b162-bb47bc55ec57 c0ea0a74-c991-4005-ab6a-3a29f23e67b7
97
+ a=ssrc:597013044 cname:TGydLcYyPoQiRBlB
98
+ a=ssrc:597013044 msid:38872d1a-f4c3-4234-b162-bb47bc55ec57 c0ea0a74-c991-4005-ab6a-3a29f23e67b7
99
+ m=video 9 UDP/TLS/RTP/SAVPF 102 122 127 121 108 109
100
+ c=IN IP4 0.0.0.0
101
+ a=ice-ufrag:vPie
102
+ a=ice-pwd:QWp1jfvbc4iUBXfLVSxhDFIN
103
+ a=ice-options:trickle
104
+ a=candidate:1 1 udp 2130706431 10.50.173.46 56821 typ host
105
+ a=fingerprint:sha-256 60:00:B9:57:5D:EC:CE:C7:7D:57:EA:EF:AF:37:23:64:63:39:F7:F3:D5:01:C7:18:C7:6E:B9:B4:46:19:40:06
106
+ a=setup:actpass
107
+ a=mid:2
108
+ a=rtcp-mux
109
+ a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
110
+ a=recvonly
111
+ a=rtpmap:102 VP9/90000
112
+ a=rtcp-fb:102 goog-remb
113
+ a=rtcp-fb:102 transport-cc
114
+ a=rtcp-fb:102 ccm fir
115
+ a=rtcp-fb:102 nack
116
+ a=rtcp-fb:102 nack pli
117
+ a=fmtp:102 profile-id=1
118
+ a=rtpmap:122 rtx/90000
119
+ a=fmtp:122 apt=102
120
+ a=rtpmap:127 H264/90000
121
+ a=rtcp-fb:127 goog-remb
122
+ a=rtcp-fb:127 transport-cc
123
+ a=rtcp-fb:127 ccm fir
124
+ a=rtcp-fb:127 nack
125
+ a=rtcp-fb:127 nack pli
126
+ a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
127
+ a=rtpmap:121 rtx/90000
128
+ a=fmtp:121 apt=127
129
+ a=rtpmap:108 H264/90000
130
+ a=rtcp-fb:108 goog-remb
131
+ a=rtcp-fb:108 transport-cc
132
+ a=rtcp-fb:108 ccm fir
133
+ a=rtcp-fb:108 nack
134
+ a=rtcp-fb:108 nack pli
135
+ a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
136
+ a=rtpmap:109 rtx/90000
137
+ a=fmtp:109 apt=108
138
+ a=rtcp-rsize
139
+ a=rtcp:9 IN IP4 0.0.0.0
140
+ `;
141
+
142
+ // same as SDP_MULTIPLE_VIDEO_CODECS but with h264 profile level changed from 3.1 to 3.0
143
+ export const SDP_MULTIPLE_VIDEO_CODECS_WITH_LOWERED_H264_PROFILE_LEVEL = ensureCRLF`v=0
144
+ o=- 3328550572590672467 2 IN IP4 127.0.0.1
145
+ s=-
146
+ t=0 0
147
+ a=group:BUNDLE 0 1 2
148
+ a=extmap-allow-mixed
149
+ a=msid-semantic: WMS 38872d1a-f4c3-4234-b162-bb47bc55ec57
150
+ m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 106
151
+ c=IN IP4 0.0.0.0
152
+ a=ice-ufrag:vPie
153
+ a=ice-pwd:QWp1jfvbc4iUBXfLVSxhDFIN
154
+ a=ice-options:trickle
155
+ a=candidate:1 1 udp 2130706431 10.50.173.46 56821 typ host
156
+ a=fingerprint:sha-256 60:00:B9:57:5D:EC:CE:C7:7D:57:EA:EF:AF:37:23:64:63:39:F7:F3:D5:01:C7:18:C7:6E:B9:B4:46:19:40:06
157
+ a=setup:actpass
158
+ a=mid:0
159
+ a=rtcp-mux
160
+ a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
161
+ a=sendrecv
162
+ a=rtpmap:111 opus/48000/2
163
+ a=rtcp-fb:111 transport-cc
164
+ a=fmtp:111 minptime=10;useinbandfec=1
165
+ a=rtpmap:63 red/48000/2
166
+ a=fmtp:63 111/111
167
+ a=rtpmap:9 G722/8000
168
+ a=rtpmap:0 PCMU/8000
169
+ a=rtpmap:8 PCMA/8000
170
+ a=rtpmap:106 CN/32000
171
+ a=rtcp:9 IN IP4 0.0.0.0
172
+ a=msid:38872d1a-f4c3-4234-b162-bb47bc55ec57 0283c960-c78d-4164-a6f3-394342273ad4
173
+ a=ssrc:3693867886 cname:TGydLcYyPoQiRBlB
174
+ a=ssrc:3693867886 msid:38872d1a-f4c3-4234-b162-bb47bc55ec57 0283c960-c78d-4164-a6f3-394342273ad4
175
+ m=video 9 UDP/TLS/RTP/SAVPF 100 101 127 121 114 115 116 117 118
176
+ c=IN IP4 0.0.0.0
177
+ a=ice-ufrag:vPie
178
+ a=ice-pwd:QWp1jfvbc4iUBXfLVSxhDFIN
179
+ a=ice-options:trickle
180
+ a=candidate:1 1 udp 2130706431 10.50.173.46 56821 typ host
181
+ a=fingerprint:sha-256 60:00:B9:57:5D:EC:CE:C7:7D:57:EA:EF:AF:37:23:64:63:39:F7:F3:D5:01:C7:18:C7:6E:B9:B4:46:19:40:06
182
+ a=setup:actpass
183
+ a=mid:1
184
+ a=rtcp-mux
185
+ a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
186
+ a=sendrecv
187
+ a=rtpmap:100 VP9/90000
188
+ a=rtcp-fb:100 goog-remb
189
+ a=rtcp-fb:100 transport-cc
190
+ a=rtcp-fb:100 ccm fir
191
+ a=rtcp-fb:100 nack
192
+ a=rtcp-fb:100 nack pli
193
+ a=fmtp:100 profile-id=2
194
+ a=rtpmap:101 rtx/90000
195
+ a=fmtp:101 apt=100
196
+ a=rtpmap:127 H264/90000
197
+ a=rtcp-fb:127 goog-remb
198
+ a=rtcp-fb:127 transport-cc
199
+ a=rtcp-fb:127 ccm fir
200
+ a=rtcp-fb:127 nack
201
+ a=rtcp-fb:127 nack pli
202
+ a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001e;max-mbps=48600
203
+ a=rtpmap:121 rtx/90000
204
+ a=fmtp:121 apt=127
205
+ a=rtpmap:114 H264/90000
206
+ a=rtcp-fb:114 goog-remb
207
+ a=rtcp-fb:114 transport-cc
208
+ a=rtcp-fb:114 ccm fir
209
+ a=rtcp-fb:114 nack
210
+ a=rtcp-fb:114 nack pli
211
+ a=fmtp:114 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001e;max-mbps=48600
212
+ a=rtpmap:115 rtx/90000
213
+ a=fmtp:115 apt=114
214
+ a=rtpmap:116 red/90000
215
+ a=rtpmap:117 rtx/90000
216
+ a=fmtp:117 apt=116
217
+ a=rtpmap:118 ulpfec/90000
218
+ a=rtcp-rsize
219
+ a=rtcp:9 IN IP4 0.0.0.0
220
+ a=msid:38872d1a-f4c3-4234-b162-bb47bc55ec57 c0ea0a74-c991-4005-ab6a-3a29f23e67b7
221
+ a=ssrc:597013044 cname:TGydLcYyPoQiRBlB
222
+ a=ssrc:597013044 msid:38872d1a-f4c3-4234-b162-bb47bc55ec57 c0ea0a74-c991-4005-ab6a-3a29f23e67b7
223
+ m=video 9 UDP/TLS/RTP/SAVPF 102 122 127 121 108 109
224
+ c=IN IP4 0.0.0.0
225
+ a=ice-ufrag:vPie
226
+ a=ice-pwd:QWp1jfvbc4iUBXfLVSxhDFIN
227
+ a=ice-options:trickle
228
+ a=candidate:1 1 udp 2130706431 10.50.173.46 56821 typ host
229
+ a=fingerprint:sha-256 60:00:B9:57:5D:EC:CE:C7:7D:57:EA:EF:AF:37:23:64:63:39:F7:F3:D5:01:C7:18:C7:6E:B9:B4:46:19:40:06
230
+ a=setup:actpass
231
+ a=mid:2
232
+ a=rtcp-mux
233
+ a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
234
+ a=recvonly
235
+ a=rtpmap:102 VP9/90000
236
+ a=rtcp-fb:102 goog-remb
237
+ a=rtcp-fb:102 transport-cc
238
+ a=rtcp-fb:102 ccm fir
239
+ a=rtcp-fb:102 nack
240
+ a=rtcp-fb:102 nack pli
241
+ a=fmtp:102 profile-id=1
242
+ a=rtpmap:122 rtx/90000
243
+ a=fmtp:122 apt=102
244
+ a=rtpmap:127 H264/90000
245
+ a=rtcp-fb:127 goog-remb
246
+ a=rtcp-fb:127 transport-cc
247
+ a=rtcp-fb:127 ccm fir
248
+ a=rtcp-fb:127 nack
249
+ a=rtcp-fb:127 nack pli
250
+ a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001e;max-mbps=48600
251
+ a=rtpmap:121 rtx/90000
252
+ a=fmtp:121 apt=127
253
+ a=rtpmap:108 H264/90000
254
+ a=rtcp-fb:108 goog-remb
255
+ a=rtcp-fb:108 transport-cc
256
+ a=rtcp-fb:108 ccm fir
257
+ a=rtcp-fb:108 nack
258
+ a=rtcp-fb:108 nack pli
259
+ a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01e;max-mbps=48600
260
+ a=rtpmap:109 rtx/90000
261
+ a=fmtp:109 apt=108
262
+ a=rtcp-rsize
263
+ a=rtcp:9 IN IP4 0.0.0.0
264
+ `;
265
+
266
+ // same as SDP_MULTIPLE_VIDEO_CODECS, but has max-fs appended to all H264 fmtp lines
267
+ export const SDP_MULTIPLE_VIDEO_CODECS_WITH_MAX_FS = ensureCRLF`v=0
268
+ o=- 3328550572590672467 2 IN IP4 127.0.0.1
269
+ s=-
270
+ t=0 0
271
+ a=group:BUNDLE 0 1 2
272
+ a=extmap-allow-mixed
273
+ a=msid-semantic: WMS 38872d1a-f4c3-4234-b162-bb47bc55ec57
274
+ m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 106
275
+ c=IN IP4 0.0.0.0
276
+ a=ice-ufrag:vPie
277
+ a=ice-pwd:QWp1jfvbc4iUBXfLVSxhDFIN
278
+ a=ice-options:trickle
279
+ a=candidate:1 1 udp 2130706431 10.50.173.46 56821 typ host
280
+ a=fingerprint:sha-256 60:00:B9:57:5D:EC:CE:C7:7D:57:EA:EF:AF:37:23:64:63:39:F7:F3:D5:01:C7:18:C7:6E:B9:B4:46:19:40:06
281
+ a=setup:actpass
282
+ a=mid:0
283
+ a=rtcp-mux
284
+ a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
285
+ a=sendrecv
286
+ a=rtpmap:111 opus/48000/2
287
+ a=rtcp-fb:111 transport-cc
288
+ a=fmtp:111 minptime=10;useinbandfec=1
289
+ a=rtpmap:63 red/48000/2
290
+ a=fmtp:63 111/111
291
+ a=rtpmap:9 G722/8000
292
+ a=rtpmap:0 PCMU/8000
293
+ a=rtpmap:8 PCMA/8000
294
+ a=rtpmap:106 CN/32000
295
+ a=rtcp:9 IN IP4 0.0.0.0
296
+ a=msid:38872d1a-f4c3-4234-b162-bb47bc55ec57 0283c960-c78d-4164-a6f3-394342273ad4
297
+ a=ssrc:3693867886 cname:TGydLcYyPoQiRBlB
298
+ a=ssrc:3693867886 msid:38872d1a-f4c3-4234-b162-bb47bc55ec57 0283c960-c78d-4164-a6f3-394342273ad4
299
+ m=video 9 UDP/TLS/RTP/SAVPF 100 101 127 121 114 115 116 117 118
300
+ c=IN IP4 0.0.0.0
301
+ a=ice-ufrag:vPie
302
+ a=ice-pwd:QWp1jfvbc4iUBXfLVSxhDFIN
303
+ a=ice-options:trickle
304
+ a=candidate:1 1 udp 2130706431 10.50.173.46 56821 typ host
305
+ a=fingerprint:sha-256 60:00:B9:57:5D:EC:CE:C7:7D:57:EA:EF:AF:37:23:64:63:39:F7:F3:D5:01:C7:18:C7:6E:B9:B4:46:19:40:06
306
+ a=setup:actpass
307
+ a=mid:1
308
+ a=rtcp-mux
309
+ a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
310
+ a=sendrecv
311
+ a=rtpmap:100 VP9/90000
312
+ a=rtcp-fb:100 goog-remb
313
+ a=rtcp-fb:100 transport-cc
314
+ a=rtcp-fb:100 ccm fir
315
+ a=rtcp-fb:100 nack
316
+ a=rtcp-fb:100 nack pli
317
+ a=fmtp:100 profile-id=2
318
+ a=rtpmap:101 rtx/90000
319
+ a=fmtp:101 apt=100
320
+ a=rtpmap:127 H264/90000
321
+ a=rtcp-fb:127 goog-remb
322
+ a=rtcp-fb:127 transport-cc
323
+ a=rtcp-fb:127 ccm fir
324
+ a=rtcp-fb:127 nack
325
+ a=rtcp-fb:127 nack pli
326
+ a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f;max-fs=8192;max-mbps=245760
327
+ a=rtpmap:121 rtx/90000
328
+ a=fmtp:121 apt=127
329
+ a=rtpmap:114 H264/90000
330
+ a=rtcp-fb:114 goog-remb
331
+ a=rtcp-fb:114 transport-cc
332
+ a=rtcp-fb:114 ccm fir
333
+ a=rtcp-fb:114 nack
334
+ a=rtcp-fb:114 nack pli
335
+ a=fmtp:114 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f;max-fs=8192;max-mbps=245760
336
+ a=rtpmap:115 rtx/90000
337
+ a=fmtp:115 apt=114
338
+ a=rtpmap:116 red/90000
339
+ a=rtpmap:117 rtx/90000
340
+ a=fmtp:117 apt=116
341
+ a=rtpmap:118 ulpfec/90000
342
+ a=rtcp-rsize
343
+ a=rtcp:9 IN IP4 0.0.0.0
344
+ a=msid:38872d1a-f4c3-4234-b162-bb47bc55ec57 c0ea0a74-c991-4005-ab6a-3a29f23e67b7
345
+ a=ssrc:597013044 cname:TGydLcYyPoQiRBlB
346
+ a=ssrc:597013044 msid:38872d1a-f4c3-4234-b162-bb47bc55ec57 c0ea0a74-c991-4005-ab6a-3a29f23e67b7
347
+ m=video 9 UDP/TLS/RTP/SAVPF 102 122 127 121 108 109
348
+ c=IN IP4 0.0.0.0
349
+ a=ice-ufrag:vPie
350
+ a=ice-pwd:QWp1jfvbc4iUBXfLVSxhDFIN
351
+ a=ice-options:trickle
352
+ a=candidate:1 1 udp 2130706431 10.50.173.46 56821 typ host
353
+ a=fingerprint:sha-256 60:00:B9:57:5D:EC:CE:C7:7D:57:EA:EF:AF:37:23:64:63:39:F7:F3:D5:01:C7:18:C7:6E:B9:B4:46:19:40:06
354
+ a=setup:actpass
355
+ a=mid:2
356
+ a=rtcp-mux
357
+ a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
358
+ a=recvonly
359
+ a=rtpmap:102 VP9/90000
360
+ a=rtcp-fb:102 goog-remb
361
+ a=rtcp-fb:102 transport-cc
362
+ a=rtcp-fb:102 ccm fir
363
+ a=rtcp-fb:102 nack
364
+ a=rtcp-fb:102 nack pli
365
+ a=fmtp:102 profile-id=1
366
+ a=rtpmap:122 rtx/90000
367
+ a=fmtp:122 apt=102
368
+ a=rtpmap:127 H264/90000
369
+ a=rtcp-fb:127 goog-remb
370
+ a=rtcp-fb:127 transport-cc
371
+ a=rtcp-fb:127 ccm fir
372
+ a=rtcp-fb:127 nack
373
+ a=rtcp-fb:127 nack pli
374
+ a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f;max-fs=8192;max-mbps=245760
375
+ a=rtpmap:121 rtx/90000
376
+ a=fmtp:121 apt=127
377
+ a=rtpmap:108 H264/90000
378
+ a=rtcp-fb:108 goog-remb
379
+ a=rtcp-fb:108 transport-cc
380
+ a=rtcp-fb:108 ccm fir
381
+ a=rtcp-fb:108 nack
382
+ a=rtcp-fb:108 nack pli
383
+ a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f;max-fs=8192;max-mbps=245760
384
+ a=rtpmap:109 rtx/90000
385
+ a=fmtp:109 apt=108
386
+ a=rtcp-rsize
387
+ a=rtcp:9 IN IP4 0.0.0.0
388
+ `;