werift 0.18.17 → 0.19.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 (400) hide show
  1. package/lib/common/src/binary.js.map +1 -1
  2. package/lib/common/src/network.js.map +1 -1
  3. package/lib/common/src/promise.js.map +1 -1
  4. package/lib/dtls/src/cipher/const.d.ts +8 -0
  5. package/lib/dtls/src/cipher/const.js +10 -2
  6. package/lib/dtls/src/cipher/const.js.map +1 -1
  7. package/lib/dtls/src/cipher/create.js +10 -10
  8. package/lib/dtls/src/cipher/create.js.map +1 -1
  9. package/lib/dtls/src/cipher/ec.d.ts +9 -0
  10. package/lib/dtls/src/cipher/ec.js +22 -0
  11. package/lib/dtls/src/cipher/ec.js.map +1 -0
  12. package/lib/dtls/src/cipher/namedCurve.js +6 -29
  13. package/lib/dtls/src/cipher/namedCurve.js.map +1 -1
  14. package/lib/dtls/src/cipher/prf.js +7 -32
  15. package/lib/dtls/src/cipher/prf.js.map +1 -1
  16. package/lib/dtls/src/cipher/suites/aead.d.ts +1 -1
  17. package/lib/dtls/src/cipher/suites/aead.js.map +1 -1
  18. package/lib/dtls/src/client.js.map +1 -1
  19. package/lib/dtls/src/context/cipher.js +2 -2
  20. package/lib/dtls/src/context/cipher.js.map +1 -1
  21. package/lib/dtls/src/context/dtls.js.map +1 -1
  22. package/lib/dtls/src/context/srtp.js.map +1 -1
  23. package/lib/dtls/src/flight/client/flight5.js +8 -6
  24. package/lib/dtls/src/flight/client/flight5.js.map +1 -1
  25. package/lib/dtls/src/flight/flight.js +1 -1
  26. package/lib/dtls/src/flight/flight.js.map +1 -1
  27. package/lib/dtls/src/flight/server/flight2.js +1 -1
  28. package/lib/dtls/src/flight/server/flight2.js.map +1 -1
  29. package/lib/dtls/src/flight/server/flight4.js +1 -7
  30. package/lib/dtls/src/flight/server/flight4.js.map +1 -1
  31. package/lib/dtls/src/flight/server/flight6.js.map +1 -1
  32. package/lib/dtls/src/handshake/const.js +1 -1
  33. package/lib/dtls/src/handshake/const.js.map +1 -1
  34. package/lib/dtls/src/handshake/extensions/ellipticCurves.js +1 -1
  35. package/lib/dtls/src/handshake/extensions/ellipticCurves.js.map +1 -1
  36. package/lib/dtls/src/handshake/extensions/extendedMasterSecret.js +1 -1
  37. package/lib/dtls/src/handshake/extensions/extendedMasterSecret.js.map +1 -1
  38. package/lib/dtls/src/handshake/extensions/renegotiationIndication.js +1 -1
  39. package/lib/dtls/src/handshake/extensions/renegotiationIndication.js.map +1 -1
  40. package/lib/dtls/src/handshake/extensions/signature.js +1 -1
  41. package/lib/dtls/src/handshake/extensions/signature.js.map +1 -1
  42. package/lib/dtls/src/handshake/extensions/useSrtp.js +1 -1
  43. package/lib/dtls/src/handshake/extensions/useSrtp.js.map +1 -1
  44. package/lib/dtls/src/handshake/message/alert.js +1 -1
  45. package/lib/dtls/src/handshake/message/alert.js.map +1 -1
  46. package/lib/dtls/src/handshake/message/certificate.js +1 -1
  47. package/lib/dtls/src/handshake/message/certificate.js.map +1 -1
  48. package/lib/dtls/src/handshake/message/changeCipherSpec.js +1 -1
  49. package/lib/dtls/src/handshake/message/changeCipherSpec.js.map +1 -1
  50. package/lib/dtls/src/handshake/message/client/certificateVerify.js +1 -1
  51. package/lib/dtls/src/handshake/message/client/certificateVerify.js.map +1 -1
  52. package/lib/dtls/src/handshake/message/client/hello.js +1 -1
  53. package/lib/dtls/src/handshake/message/client/hello.js.map +1 -1
  54. package/lib/dtls/src/handshake/message/client/keyExchange.js +1 -1
  55. package/lib/dtls/src/handshake/message/client/keyExchange.js.map +1 -1
  56. package/lib/dtls/src/handshake/message/server/certificateRequest.js +1 -1
  57. package/lib/dtls/src/handshake/message/server/certificateRequest.js.map +1 -1
  58. package/lib/dtls/src/handshake/message/server/hello.js +1 -1
  59. package/lib/dtls/src/handshake/message/server/hello.js.map +1 -1
  60. package/lib/dtls/src/handshake/message/server/helloDone.js +1 -1
  61. package/lib/dtls/src/handshake/message/server/helloDone.js.map +1 -1
  62. package/lib/dtls/src/handshake/message/server/helloVerifyRequest.js +1 -1
  63. package/lib/dtls/src/handshake/message/server/helloVerifyRequest.js.map +1 -1
  64. package/lib/dtls/src/handshake/message/server/keyExchange.js +1 -1
  65. package/lib/dtls/src/handshake/message/server/keyExchange.js.map +1 -1
  66. package/lib/dtls/src/handshake/random.js +2 -2
  67. package/lib/dtls/src/handshake/random.js.map +1 -1
  68. package/lib/dtls/src/helper.d.ts +1 -1
  69. package/lib/dtls/src/helper.js.map +1 -1
  70. package/lib/dtls/src/record/const.js +2 -2
  71. package/lib/dtls/src/record/const.js.map +1 -1
  72. package/lib/dtls/src/record/message/fragment.d.ts +1 -1
  73. package/lib/dtls/src/record/message/fragment.js +3 -3
  74. package/lib/dtls/src/record/message/fragment.js.map +1 -1
  75. package/lib/dtls/src/record/message/header.js +2 -2
  76. package/lib/dtls/src/record/message/header.js.map +1 -1
  77. package/lib/dtls/src/record/message/plaintext.js +1 -1
  78. package/lib/dtls/src/record/message/plaintext.js.map +1 -1
  79. package/lib/dtls/src/record/receive.js.map +1 -1
  80. package/lib/dtls/src/server.js.map +1 -1
  81. package/lib/dtls/src/socket.js +1 -4
  82. package/lib/dtls/src/socket.js.map +1 -1
  83. package/lib/dtls/src/transport.js.map +1 -1
  84. package/lib/ice/src/candidate.js +1 -1
  85. package/lib/ice/src/candidate.js.map +1 -1
  86. package/lib/ice/src/dns/lookup.js.map +1 -1
  87. package/lib/ice/src/exceptions.js.map +1 -1
  88. package/lib/ice/src/helper.js.map +1 -1
  89. package/lib/ice/src/ice.d.ts +5 -13
  90. package/lib/ice/src/ice.js +57 -154
  91. package/lib/ice/src/ice.js.map +1 -1
  92. package/lib/ice/src/stun/attributes.js.map +1 -1
  93. package/lib/ice/src/stun/const.d.ts +1 -1
  94. package/lib/ice/src/stun/const.js +2 -2
  95. package/lib/ice/src/stun/const.js.map +1 -1
  96. package/lib/ice/src/stun/message.js +1 -1
  97. package/lib/ice/src/stun/message.js.map +1 -1
  98. package/lib/ice/src/stun/protocol.js.map +1 -1
  99. package/lib/ice/src/stun/transaction.js.map +1 -1
  100. package/lib/ice/src/transport.js +1 -1
  101. package/lib/ice/src/transport.js.map +1 -1
  102. package/lib/ice/src/turn/protocol.js.map +1 -1
  103. package/lib/ice/src/utils.d.ts +1 -0
  104. package/lib/ice/src/utils.js +72 -1
  105. package/lib/ice/src/utils.js.map +1 -1
  106. package/lib/rtp/src/codec/av1.js +1 -1
  107. package/lib/rtp/src/codec/av1.js.map +1 -1
  108. package/lib/rtp/src/codec/h264.js.map +1 -1
  109. package/lib/rtp/src/codec/index.js.map +1 -1
  110. package/lib/rtp/src/codec/opus.js.map +1 -1
  111. package/lib/rtp/src/codec/vp8.js.map +1 -1
  112. package/lib/rtp/src/codec/vp9.js.map +1 -1
  113. package/lib/rtp/src/extra/container/index.js.map +1 -0
  114. package/lib/rtp/src/extra/container/mp4/container.js.map +1 -0
  115. package/lib/rtp/src/extra/container/mp4/exp-golomb.js.map +1 -0
  116. package/lib/rtp/src/{container → extra/container}/mp4/h264.js +1 -1
  117. package/lib/rtp/src/extra/container/mp4/h264.js.map +1 -0
  118. package/lib/rtp/src/extra/container/mp4/index.js.map +1 -0
  119. package/lib/rtp/src/extra/container/mp4/mp4box.js.map +1 -0
  120. package/lib/rtp/src/{container → extra/container}/mp4/sps-parser.js +4 -4
  121. package/lib/rtp/src/extra/container/mp4/sps-parser.js.map +1 -0
  122. package/lib/rtp/src/extra/container/ogg/index.js.map +1 -0
  123. package/lib/rtp/src/extra/container/ogg/parser.js.map +1 -0
  124. package/lib/rtp/src/{container → extra/container}/webm/container.js +3 -3
  125. package/lib/rtp/src/extra/container/webm/container.js.map +1 -0
  126. package/lib/rtp/src/{container → extra/container}/webm/ebml/ebml.js +1 -1
  127. package/lib/rtp/src/extra/container/webm/ebml/ebml.js.map +1 -0
  128. package/lib/rtp/src/extra/container/webm/ebml/id.js.map +1 -0
  129. package/lib/rtp/src/extra/container/webm/ebml/index.js.map +1 -0
  130. package/lib/rtp/src/extra/container/webm/ebml/typedArrayUtils.js.map +1 -0
  131. package/lib/rtp/src/extra/container/webm/index.js.map +1 -0
  132. package/lib/rtp/src/extra/index.d.ts +2 -0
  133. package/lib/rtp/src/extra/index.js +19 -0
  134. package/lib/rtp/src/extra/index.js.map +1 -0
  135. package/lib/rtp/src/{processor → extra/processor}/depacketizer.d.ts +1 -1
  136. package/lib/rtp/src/{processor → extra/processor}/depacketizer.js +1 -1
  137. package/lib/rtp/src/extra/processor/depacketizer.js.map +1 -0
  138. package/lib/rtp/src/extra/processor/depacketizerCallback.js.map +1 -0
  139. package/lib/rtp/src/{processor → extra/processor}/depacketizerTransformer.d.ts +1 -1
  140. package/lib/rtp/src/extra/processor/depacketizerTransformer.js.map +1 -0
  141. package/lib/rtp/src/extra/processor/dtx.js.map +1 -0
  142. package/lib/rtp/src/extra/processor/dtxCallback.js.map +1 -0
  143. package/lib/rtp/src/extra/processor/index.js.map +1 -0
  144. package/lib/rtp/src/extra/processor/interface.js.map +1 -0
  145. package/lib/rtp/src/{processor → extra/processor}/jitterBuffer.js +1 -1
  146. package/lib/rtp/src/extra/processor/jitterBuffer.js.map +1 -0
  147. package/lib/rtp/src/extra/processor/jitterBufferCallback.js.map +1 -0
  148. package/lib/rtp/src/extra/processor/jitterBufferTransformer.js.map +1 -0
  149. package/lib/rtp/src/{processor → extra/processor}/lipsync.js +1 -1
  150. package/lib/rtp/src/extra/processor/lipsync.js.map +1 -0
  151. package/lib/rtp/src/{processor → extra/processor}/lipsyncCallback.d.ts +1 -1
  152. package/lib/rtp/src/extra/processor/lipsyncCallback.js.map +1 -0
  153. package/lib/rtp/src/{processor → extra/processor}/mp4.d.ts +1 -1
  154. package/lib/rtp/src/{processor → extra/processor}/mp4.js +4 -3
  155. package/lib/rtp/src/extra/processor/mp4.js.map +1 -0
  156. package/lib/rtp/src/{processor → extra/processor}/mp4Callback.js +2 -2
  157. package/lib/rtp/src/extra/processor/mp4Callback.js.map +1 -0
  158. package/lib/rtp/src/{processor → extra/processor}/mute.js +1 -1
  159. package/lib/rtp/src/extra/processor/mute.js.map +1 -0
  160. package/lib/rtp/src/extra/processor/muteCallback.js.map +1 -0
  161. package/lib/rtp/src/{processor → extra/processor}/nack.d.ts +1 -1
  162. package/lib/rtp/src/{processor → extra/processor}/nack.js +1 -1
  163. package/lib/rtp/src/extra/processor/nack.js.map +1 -0
  164. package/lib/rtp/src/extra/processor/nackHandlerCallback.js.map +1 -0
  165. package/lib/rtp/src/{processor → extra/processor}/ntpTime.d.ts +2 -1
  166. package/lib/rtp/src/{processor → extra/processor}/ntpTime.js +4 -3
  167. package/lib/rtp/src/extra/processor/ntpTime.js.map +1 -0
  168. package/lib/rtp/src/extra/processor/ntpTimeCallback.js.map +1 -0
  169. package/lib/rtp/src/{processor → extra/processor}/rtcpCallback.d.ts +1 -1
  170. package/lib/rtp/src/extra/processor/rtcpCallback.js.map +1 -0
  171. package/lib/rtp/src/{processor → extra/processor}/rtpCallback.d.ts +1 -1
  172. package/lib/rtp/src/{processor → extra/processor}/rtpCallback.js +1 -1
  173. package/lib/rtp/src/extra/processor/rtpCallback.js.map +1 -0
  174. package/lib/rtp/src/{processor → extra/processor}/rtpStream.d.ts +1 -1
  175. package/lib/rtp/src/{processor → extra/processor}/rtpStream.js +1 -1
  176. package/lib/rtp/src/extra/processor/rtpStream.js.map +1 -0
  177. package/lib/rtp/src/{processor → extra/processor}/rtpTime.d.ts +1 -1
  178. package/lib/rtp/src/{processor → extra/processor}/rtpTime.js +4 -3
  179. package/lib/rtp/src/extra/processor/rtpTime.js.map +1 -0
  180. package/lib/rtp/src/extra/processor/rtpTimeCallback.js.map +1 -0
  181. package/lib/rtp/src/{processor → extra/processor}/webm.js +4 -4
  182. package/lib/rtp/src/extra/processor/webm.js.map +1 -0
  183. package/lib/rtp/src/{processor → extra/processor}/webmCallback.js +1 -1
  184. package/lib/rtp/src/extra/processor/webmCallback.js.map +1 -0
  185. package/lib/rtp/src/extra/processor/webmStream.js.map +1 -0
  186. package/lib/rtp/src/index.d.ts +1 -2
  187. package/lib/rtp/src/index.js +0 -2
  188. package/lib/rtp/src/index.js.map +1 -1
  189. package/lib/rtp/src/rtcp/header.js.map +1 -1
  190. package/lib/rtp/src/rtcp/psfb/fullIntraRequest.js +1 -1
  191. package/lib/rtp/src/rtcp/psfb/fullIntraRequest.js.map +1 -1
  192. package/lib/rtp/src/rtcp/psfb/index.js +1 -1
  193. package/lib/rtp/src/rtcp/psfb/index.js.map +1 -1
  194. package/lib/rtp/src/rtcp/psfb/pictureLossIndication.js +1 -1
  195. package/lib/rtp/src/rtcp/psfb/pictureLossIndication.js.map +1 -1
  196. package/lib/rtp/src/rtcp/psfb/remb.js +1 -1
  197. package/lib/rtp/src/rtcp/psfb/remb.js.map +1 -1
  198. package/lib/rtp/src/rtcp/rr.js +1 -1
  199. package/lib/rtp/src/rtcp/rr.js.map +1 -1
  200. package/lib/rtp/src/rtcp/rtcp.js.map +1 -1
  201. package/lib/rtp/src/rtcp/rtpfb/index.js +1 -1
  202. package/lib/rtp/src/rtcp/rtpfb/index.js.map +1 -1
  203. package/lib/rtp/src/rtcp/rtpfb/nack.js +2 -2
  204. package/lib/rtp/src/rtcp/rtpfb/nack.js.map +1 -1
  205. package/lib/rtp/src/rtcp/rtpfb/twcc.js +3 -3
  206. package/lib/rtp/src/rtcp/rtpfb/twcc.js.map +1 -1
  207. package/lib/rtp/src/rtcp/sdes.js +1 -1
  208. package/lib/rtp/src/rtcp/sdes.js.map +1 -1
  209. package/lib/rtp/src/rtcp/sr.js +1 -1
  210. package/lib/rtp/src/rtcp/sr.js.map +1 -1
  211. package/lib/rtp/src/rtp/headerExtension.js.map +1 -1
  212. package/lib/rtp/src/rtp/red/encoder.js.map +1 -1
  213. package/lib/rtp/src/rtp/red/handler.js.map +1 -1
  214. package/lib/rtp/src/rtp/red/packet.js +0 -1
  215. package/lib/rtp/src/rtp/red/packet.js.map +1 -1
  216. package/lib/rtp/src/rtp/rtp.js +3 -2
  217. package/lib/rtp/src/rtp/rtp.js.map +1 -1
  218. package/lib/rtp/src/srtp/cipher/ctr.d.ts +1 -1
  219. package/lib/rtp/src/srtp/cipher/ctr.js +1 -1
  220. package/lib/rtp/src/srtp/cipher/ctr.js.map +1 -1
  221. package/lib/rtp/src/srtp/cipher/gcm.d.ts +1 -1
  222. package/lib/rtp/src/srtp/cipher/gcm.js +1 -1
  223. package/lib/rtp/src/srtp/cipher/gcm.js.map +1 -1
  224. package/lib/rtp/src/srtp/const.js.map +1 -1
  225. package/lib/rtp/src/srtp/context/context.js +1 -1
  226. package/lib/rtp/src/srtp/context/context.js.map +1 -1
  227. package/lib/rtp/src/srtp/context/srtcp.js.map +1 -1
  228. package/lib/sctp/src/chunk.js +17 -17
  229. package/lib/sctp/src/chunk.js.map +1 -1
  230. package/lib/sctp/src/const.js +2 -2
  231. package/lib/sctp/src/const.js.map +1 -1
  232. package/lib/sctp/src/param.js +5 -5
  233. package/lib/sctp/src/param.js.map +1 -1
  234. package/lib/sctp/src/sctp.js +5 -1
  235. package/lib/sctp/src/sctp.js.map +1 -1
  236. package/lib/sctp/src/transport.js.map +1 -1
  237. package/lib/webrtc/src/dataChannel.d.ts +1 -1
  238. package/lib/webrtc/src/dataChannel.js +1 -1
  239. package/lib/webrtc/src/dataChannel.js.map +1 -1
  240. package/lib/webrtc/src/helper.js.map +1 -1
  241. package/lib/webrtc/src/index.d.ts +0 -2
  242. package/lib/webrtc/src/index.js +0 -2
  243. package/lib/webrtc/src/index.js.map +1 -1
  244. package/lib/webrtc/src/media/parameters.d.ts +1 -2
  245. package/lib/webrtc/src/media/parameters.js.map +1 -1
  246. package/lib/webrtc/src/media/receiver/nack.js.map +1 -1
  247. package/lib/webrtc/src/media/receiver/receiverTwcc.js.map +1 -1
  248. package/lib/webrtc/src/media/receiver/statistics.js.map +1 -1
  249. package/lib/webrtc/src/media/router.js +4 -2
  250. package/lib/webrtc/src/media/router.js.map +1 -1
  251. package/lib/webrtc/src/media/rtpReceiver.d.ts +1 -1
  252. package/lib/webrtc/src/media/rtpReceiver.js +1 -1
  253. package/lib/webrtc/src/media/rtpReceiver.js.map +1 -1
  254. package/lib/webrtc/src/media/rtpSender.js +1 -1
  255. package/lib/webrtc/src/media/rtpSender.js.map +1 -1
  256. package/lib/webrtc/src/media/rtpTransceiver.js.map +1 -1
  257. package/lib/webrtc/src/media/sender/cumulativeResult.js.map +1 -1
  258. package/lib/webrtc/src/media/sender/senderBWE.js.map +1 -1
  259. package/lib/webrtc/src/media/track.js.map +1 -1
  260. package/lib/webrtc/src/nonstandard/index.d.ts +2 -0
  261. package/lib/webrtc/src/nonstandard/index.js +19 -0
  262. package/lib/webrtc/src/nonstandard/index.js.map +1 -0
  263. package/lib/webrtc/src/nonstandard/recorder/index.js.map +1 -1
  264. package/lib/webrtc/src/nonstandard/recorder/writer/index.d.ts +1 -1
  265. package/lib/webrtc/src/nonstandard/recorder/writer/index.js.map +1 -1
  266. package/lib/webrtc/src/nonstandard/recorder/writer/webm.d.ts +2 -1
  267. package/lib/webrtc/src/nonstandard/recorder/writer/webm.js +11 -10
  268. package/lib/webrtc/src/nonstandard/recorder/writer/webm.js.map +1 -1
  269. package/lib/webrtc/src/nonstandard/userMedia.js.map +1 -1
  270. package/lib/webrtc/src/peerConnection.d.ts +2 -2
  271. package/lib/webrtc/src/peerConnection.js +11 -8
  272. package/lib/webrtc/src/peerConnection.js.map +1 -1
  273. package/lib/webrtc/src/sdp.js +47 -37
  274. package/lib/webrtc/src/sdp.js.map +1 -1
  275. package/lib/webrtc/src/transport/dtls.js.map +1 -1
  276. package/lib/webrtc/src/transport/ice.js.map +1 -1
  277. package/lib/webrtc/src/transport/sctp.js +9 -7
  278. package/lib/webrtc/src/transport/sctp.js.map +1 -1
  279. package/lib/webrtc/src/utils.js +1 -1
  280. package/lib/webrtc/src/utils.js.map +1 -1
  281. package/package.json +20 -19
  282. package/src/dataChannel.ts +1 -1
  283. package/src/index.ts +0 -2
  284. package/src/media/parameters.ts +2 -2
  285. package/src/media/receiver/nack.ts +4 -7
  286. package/src/media/router.ts +36 -40
  287. package/src/media/rtpReceiver.ts +12 -15
  288. package/src/media/rtpSender.ts +69 -82
  289. package/src/nonstandard/index.ts +2 -0
  290. package/src/nonstandard/recorder/writer/index.ts +1 -1
  291. package/src/nonstandard/recorder/writer/webm.ts +5 -6
  292. package/src/nonstandard/userMedia.ts +1 -3
  293. package/src/peerConnection.ts +28 -24
  294. package/src/sdp.ts +49 -55
  295. package/src/transport/dtls.ts +3 -6
  296. package/src/transport/ice.ts +1 -1
  297. package/src/transport/sctp.ts +60 -66
  298. package/src/utils.ts +1 -1
  299. package/lib/rtp/src/container/index.js.map +0 -1
  300. package/lib/rtp/src/container/mp4/container.js.map +0 -1
  301. package/lib/rtp/src/container/mp4/exp-golomb.js.map +0 -1
  302. package/lib/rtp/src/container/mp4/h264.js.map +0 -1
  303. package/lib/rtp/src/container/mp4/index.js.map +0 -1
  304. package/lib/rtp/src/container/mp4/mp4box.js.map +0 -1
  305. package/lib/rtp/src/container/mp4/sps-parser.js.map +0 -1
  306. package/lib/rtp/src/container/ogg/index.js.map +0 -1
  307. package/lib/rtp/src/container/ogg/parser.js.map +0 -1
  308. package/lib/rtp/src/container/webm/container.js.map +0 -1
  309. package/lib/rtp/src/container/webm/ebml/ebml.js.map +0 -1
  310. package/lib/rtp/src/container/webm/ebml/id.js.map +0 -1
  311. package/lib/rtp/src/container/webm/ebml/index.js.map +0 -1
  312. package/lib/rtp/src/container/webm/ebml/typedArrayUtils.js.map +0 -1
  313. package/lib/rtp/src/container/webm/index.js.map +0 -1
  314. package/lib/rtp/src/processor/depacketizer.js.map +0 -1
  315. package/lib/rtp/src/processor/depacketizerCallback.js.map +0 -1
  316. package/lib/rtp/src/processor/depacketizerTransformer.js.map +0 -1
  317. package/lib/rtp/src/processor/dtx.js.map +0 -1
  318. package/lib/rtp/src/processor/dtxCallback.js.map +0 -1
  319. package/lib/rtp/src/processor/index.js.map +0 -1
  320. package/lib/rtp/src/processor/interface.js.map +0 -1
  321. package/lib/rtp/src/processor/jitterBuffer.js.map +0 -1
  322. package/lib/rtp/src/processor/jitterBufferCallback.js.map +0 -1
  323. package/lib/rtp/src/processor/jitterBufferTransformer.js.map +0 -1
  324. package/lib/rtp/src/processor/lipsync.js.map +0 -1
  325. package/lib/rtp/src/processor/lipsyncCallback.js.map +0 -1
  326. package/lib/rtp/src/processor/mp4.js.map +0 -1
  327. package/lib/rtp/src/processor/mp4Callback.js.map +0 -1
  328. package/lib/rtp/src/processor/mute.js.map +0 -1
  329. package/lib/rtp/src/processor/muteCallback.js.map +0 -1
  330. package/lib/rtp/src/processor/nack.js.map +0 -1
  331. package/lib/rtp/src/processor/nackHandlerCallback.js.map +0 -1
  332. package/lib/rtp/src/processor/ntpTime.js.map +0 -1
  333. package/lib/rtp/src/processor/ntpTimeCallback.js.map +0 -1
  334. package/lib/rtp/src/processor/rtcpCallback.js.map +0 -1
  335. package/lib/rtp/src/processor/rtpCallback.js.map +0 -1
  336. package/lib/rtp/src/processor/rtpStream.js.map +0 -1
  337. package/lib/rtp/src/processor/rtpTime.js.map +0 -1
  338. package/lib/rtp/src/processor/rtpTimeCallback.js.map +0 -1
  339. package/lib/rtp/src/processor/webm.js.map +0 -1
  340. package/lib/rtp/src/processor/webmCallback.js.map +0 -1
  341. package/lib/rtp/src/processor/webmStream.js.map +0 -1
  342. /package/lib/rtp/src/{container → extra/container}/index.d.ts +0 -0
  343. /package/lib/rtp/src/{container → extra/container}/index.js +0 -0
  344. /package/lib/rtp/src/{container → extra/container}/mp4/container.d.ts +0 -0
  345. /package/lib/rtp/src/{container → extra/container}/mp4/container.js +0 -0
  346. /package/lib/rtp/src/{container → extra/container}/mp4/exp-golomb.d.ts +0 -0
  347. /package/lib/rtp/src/{container → extra/container}/mp4/exp-golomb.js +0 -0
  348. /package/lib/rtp/src/{container → extra/container}/mp4/h264.d.ts +0 -0
  349. /package/lib/rtp/src/{container → extra/container}/mp4/index.d.ts +0 -0
  350. /package/lib/rtp/src/{container → extra/container}/mp4/index.js +0 -0
  351. /package/lib/rtp/src/{container → extra/container}/mp4/mp4box.d.ts +0 -0
  352. /package/lib/rtp/src/{container → extra/container}/mp4/mp4box.js +0 -0
  353. /package/lib/rtp/src/{container → extra/container}/mp4/sps-parser.d.ts +0 -0
  354. /package/lib/rtp/src/{container → extra/container}/ogg/index.d.ts +0 -0
  355. /package/lib/rtp/src/{container → extra/container}/ogg/index.js +0 -0
  356. /package/lib/rtp/src/{container → extra/container}/ogg/parser.d.ts +0 -0
  357. /package/lib/rtp/src/{container → extra/container}/ogg/parser.js +0 -0
  358. /package/lib/rtp/src/{container → extra/container}/webm/container.d.ts +0 -0
  359. /package/lib/rtp/src/{container → extra/container}/webm/ebml/ebml.d.ts +0 -0
  360. /package/lib/rtp/src/{container → extra/container}/webm/ebml/id.d.ts +0 -0
  361. /package/lib/rtp/src/{container → extra/container}/webm/ebml/id.js +0 -0
  362. /package/lib/rtp/src/{container → extra/container}/webm/ebml/index.d.ts +0 -0
  363. /package/lib/rtp/src/{container → extra/container}/webm/ebml/index.js +0 -0
  364. /package/lib/rtp/src/{container → extra/container}/webm/ebml/typedArrayUtils.d.ts +0 -0
  365. /package/lib/rtp/src/{container → extra/container}/webm/ebml/typedArrayUtils.js +0 -0
  366. /package/lib/rtp/src/{container → extra/container}/webm/index.d.ts +0 -0
  367. /package/lib/rtp/src/{container → extra/container}/webm/index.js +0 -0
  368. /package/lib/rtp/src/{processor → extra/processor}/depacketizerCallback.d.ts +0 -0
  369. /package/lib/rtp/src/{processor → extra/processor}/depacketizerCallback.js +0 -0
  370. /package/lib/rtp/src/{processor → extra/processor}/depacketizerTransformer.js +0 -0
  371. /package/lib/rtp/src/{processor → extra/processor}/dtx.d.ts +0 -0
  372. /package/lib/rtp/src/{processor → extra/processor}/dtx.js +0 -0
  373. /package/lib/rtp/src/{processor → extra/processor}/dtxCallback.d.ts +0 -0
  374. /package/lib/rtp/src/{processor → extra/processor}/dtxCallback.js +0 -0
  375. /package/lib/rtp/src/{processor → extra/processor}/index.d.ts +0 -0
  376. /package/lib/rtp/src/{processor → extra/processor}/index.js +0 -0
  377. /package/lib/rtp/src/{processor → extra/processor}/interface.d.ts +0 -0
  378. /package/lib/rtp/src/{processor → extra/processor}/interface.js +0 -0
  379. /package/lib/rtp/src/{processor → extra/processor}/jitterBuffer.d.ts +0 -0
  380. /package/lib/rtp/src/{processor → extra/processor}/jitterBufferCallback.d.ts +0 -0
  381. /package/lib/rtp/src/{processor → extra/processor}/jitterBufferCallback.js +0 -0
  382. /package/lib/rtp/src/{processor → extra/processor}/jitterBufferTransformer.d.ts +0 -0
  383. /package/lib/rtp/src/{processor → extra/processor}/jitterBufferTransformer.js +0 -0
  384. /package/lib/rtp/src/{processor → extra/processor}/lipsync.d.ts +0 -0
  385. /package/lib/rtp/src/{processor → extra/processor}/lipsyncCallback.js +0 -0
  386. /package/lib/rtp/src/{processor → extra/processor}/mp4Callback.d.ts +0 -0
  387. /package/lib/rtp/src/{processor → extra/processor}/mute.d.ts +0 -0
  388. /package/lib/rtp/src/{processor → extra/processor}/muteCallback.d.ts +0 -0
  389. /package/lib/rtp/src/{processor → extra/processor}/muteCallback.js +0 -0
  390. /package/lib/rtp/src/{processor → extra/processor}/nackHandlerCallback.d.ts +0 -0
  391. /package/lib/rtp/src/{processor → extra/processor}/nackHandlerCallback.js +0 -0
  392. /package/lib/rtp/src/{processor → extra/processor}/ntpTimeCallback.d.ts +0 -0
  393. /package/lib/rtp/src/{processor → extra/processor}/ntpTimeCallback.js +0 -0
  394. /package/lib/rtp/src/{processor → extra/processor}/rtcpCallback.js +0 -0
  395. /package/lib/rtp/src/{processor → extra/processor}/rtpTimeCallback.d.ts +0 -0
  396. /package/lib/rtp/src/{processor → extra/processor}/rtpTimeCallback.js +0 -0
  397. /package/lib/rtp/src/{processor → extra/processor}/webm.d.ts +0 -0
  398. /package/lib/rtp/src/{processor → extra/processor}/webmCallback.d.ts +0 -0
  399. /package/lib/rtp/src/{processor → extra/processor}/webmStream.d.ts +0 -0
  400. /package/lib/rtp/src/{processor → extra/processor}/webmStream.js +0 -0
@@ -3,8 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WebmFactory = void 0;
4
4
  const promises_1 = require("fs/promises");
5
5
  const rx_mini_1 = require("rx.mini");
6
- const __1 = require("../../..");
7
6
  const _1 = require(".");
7
+ const __1 = require("../../..");
8
+ const extra_1 = require("../../../../../rtp/src/extra");
8
9
  const sourcePath = "packages/webrtc/src/nonstandard/recorder/writer/webm.ts";
9
10
  class WebmFactory extends _1.MediaWriter {
10
11
  constructor() {
@@ -67,13 +68,13 @@ class WebmFactory extends _1.MediaWriter {
67
68
  };
68
69
  }
69
70
  });
70
- const webm = new __1.WebmCallback(inputTracks, {
71
+ const webm = new extra_1.WebmCallback(inputTracks, {
71
72
  duration: this.options.defaultDuration ?? 1000 * 60 * 60 * 24,
72
73
  });
73
- const lipsync = new __1.LipsyncCallback();
74
+ const lipsync = new extra_1.LipsyncCallback();
74
75
  this.rtpSources = inputTracks.map(({ track, clockRate, codec }) => {
75
- const rtpSource = new __1.RtpSourceCallback();
76
- const rtcpSource = new __1.RtcpSourceCallback();
76
+ const rtpSource = new extra_1.RtpSourceCallback();
77
+ const rtcpSource = new extra_1.RtcpSourceCallback();
77
78
  track.onReceiveRtp
78
79
  .subscribe((rtp) => {
79
80
  rtpSource.input(rtp.clone());
@@ -84,12 +85,12 @@ class WebmFactory extends _1.MediaWriter {
84
85
  rtcpSource.input(rtcp);
85
86
  })
86
87
  .disposer(this.unSubscribers);
87
- const ntpTime = new __1.NtpTimeCallback(clockRate);
88
+ const ntpTime = new extra_1.NtpTimeCallback(clockRate);
88
89
  if (track.kind === "video") {
89
- const depacketizer = new __1.DepacketizeCallback(codec, {
90
+ const depacketizer = new extra_1.DepacketizeCallback(codec, {
90
91
  isFinalPacketInSequence: (h) => h.marker,
91
92
  });
92
- const jitterBuffer = new __1.JitterBufferCallback(clockRate);
93
+ const jitterBuffer = new extra_1.JitterBufferCallback(clockRate);
93
94
  rtpSource.pipe(jitterBuffer.input);
94
95
  rtcpSource.pipe(ntpTime.input);
95
96
  jitterBuffer.pipe(ntpTime.input);
@@ -98,7 +99,7 @@ class WebmFactory extends _1.MediaWriter {
98
99
  lipsync.pipeVideo(webm.inputVideo);
99
100
  }
100
101
  else {
101
- const depacketizer = new __1.DepacketizeCallback(codec);
102
+ const depacketizer = new extra_1.DepacketizeCallback(codec);
102
103
  rtpSource.pipe(ntpTime.input);
103
104
  rtcpSource.pipe(ntpTime.input);
104
105
  ntpTime.pipe(depacketizer.input);
@@ -107,7 +108,7 @@ class WebmFactory extends _1.MediaWriter {
107
108
  }
108
109
  return rtpSource;
109
110
  });
110
- webm.pipe((0, __1.saveToFileSystem)(this.path));
111
+ webm.pipe((0, extra_1.saveToFileSystem)(this.path));
111
112
  }
112
113
  async stop() {
113
114
  await Promise.all(this.rtpSources.map((r) => r.stop()));
@@ -1 +1 @@
1
- {"version":3,"file":"webm.js","sourceRoot":"","sources":["../../../../../../src/nonstandard/recorder/writer/webm.ts"],"names":[],"mappings":"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","sourcesContent":["import { unlink } from \"fs/promises\";\nimport { EventDisposer } from \"rx.mini\";\n\nimport { SupportedCodec } from \"../../../../../rtp/src/container/webm/container\";\nimport {\n DepacketizeCallback,\n JitterBufferCallback,\n LipsyncCallback,\n MediaStreamTrack,\n NtpTimeCallback,\n RtcpSourceCallback,\n RtpSourceCallback,\n saveToFileSystem,\n WebmCallback,\n WeriftError,\n} from \"../../..\";\nimport { MediaWriter } from \".\";\n\nconst sourcePath = \"packages/webrtc/src/nonstandard/recorder/writer/webm.ts\";\n\nexport class WebmFactory extends MediaWriter {\n rtpSources: RtpSourceCallback[] = [];\n\n unSubscribers = new EventDisposer();\n\n async start(tracks: MediaStreamTrack[]) {\n await unlink(this.path).catch((e) => e);\n\n const inputTracks = tracks.map((track, i) => {\n const trackNumber = i + 1;\n const payloadType = track.codec!.payloadType;\n\n if (track.kind === \"video\") {\n const codec = ((): SupportedCodec => {\n switch (track.codec?.name.toLowerCase() as SupportedVideoCodec) {\n case \"vp8\":\n return \"VP8\";\n case \"vp9\":\n return \"VP9\";\n case \"h264\":\n return \"MPEG4/ISO/AVC\";\n case \"av1x\":\n return \"AV1\";\n default:\n throw new WeriftError({\n message: \"unsupported codec\",\n payload: { track, path: sourcePath },\n });\n }\n })();\n return {\n kind: \"video\" as const,\n codec,\n clockRate: 90000,\n trackNumber,\n width: this.options.width,\n height: this.options.height,\n payloadType,\n track,\n };\n } else {\n return {\n kind: \"audio\" as const,\n codec: \"OPUS\" as const,\n clockRate: 48000,\n trackNumber,\n payloadType,\n track,\n };\n }\n });\n\n const webm = new WebmCallback(inputTracks, {\n duration: this.options.defaultDuration ?? 1000 * 60 * 60 * 24,\n });\n const lipsync = new LipsyncCallback();\n\n this.rtpSources = inputTracks.map(({ track, clockRate, codec }) => {\n const rtpSource = new RtpSourceCallback();\n const rtcpSource = new RtcpSourceCallback();\n track.onReceiveRtp\n .subscribe((rtp) => {\n rtpSource.input(rtp.clone());\n })\n .disposer(this.unSubscribers);\n track.onReceiveRtcp\n .subscribe((rtcp) => {\n rtcpSource.input(rtcp);\n })\n .disposer(this.unSubscribers);\n const ntpTime = new NtpTimeCallback(clockRate);\n\n if (track.kind === \"video\") {\n const depacketizer = new DepacketizeCallback(codec, {\n isFinalPacketInSequence: (h) => h.marker,\n });\n const jitterBuffer = new JitterBufferCallback(clockRate);\n\n rtpSource.pipe(jitterBuffer.input);\n rtcpSource.pipe(ntpTime.input);\n\n jitterBuffer.pipe(ntpTime.input);\n ntpTime.pipe(depacketizer.input);\n depacketizer.pipe(lipsync.inputVideo);\n lipsync.pipeVideo(webm.inputVideo);\n } else {\n const depacketizer = new DepacketizeCallback(codec);\n\n rtpSource.pipe(ntpTime.input);\n rtcpSource.pipe(ntpTime.input);\n\n ntpTime.pipe(depacketizer.input);\n depacketizer.pipe(lipsync.inputAudio);\n lipsync.pipeAudio(webm.inputAudio);\n }\n\n return rtpSource;\n });\n webm.pipe(saveToFileSystem(this.path));\n }\n\n async stop() {\n await Promise.all(this.rtpSources.map((r) => r.stop()));\n this.unSubscribers.dispose();\n }\n}\n\nconst supportedVideoCodecs = [\"h264\", \"vp8\", \"vp9\", \"av1x\"] as const;\ntype SupportedVideoCodec = (typeof supportedVideoCodecs)[number];\n"]}
1
+ {"version":3,"file":"webm.js","sourceRoot":"","sources":["../../../../../../src/nonstandard/recorder/writer/webm.ts"],"names":[],"mappings":"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","sourcesContent":["import { unlink } from \"fs/promises\";\nimport { EventDisposer } from \"rx.mini\";\n\nimport { MediaWriter } from \".\";\nimport { MediaStreamTrack, WeriftError } from \"../../..\";\nimport {\n DepacketizeCallback,\n JitterBufferCallback,\n LipsyncCallback,\n NtpTimeCallback,\n RtcpSourceCallback,\n RtpSourceCallback,\n SupportedCodec,\n WebmCallback,\n saveToFileSystem,\n} from \"../../../../../rtp/src/extra\";\n\nconst sourcePath = \"packages/webrtc/src/nonstandard/recorder/writer/webm.ts\";\n\nexport class WebmFactory extends MediaWriter {\n rtpSources: RtpSourceCallback[] = [];\n\n unSubscribers = new EventDisposer();\n\n async start(tracks: MediaStreamTrack[]) {\n await unlink(this.path).catch((e) => e);\n\n const inputTracks = tracks.map((track, i) => {\n const trackNumber = i + 1;\n const payloadType = track.codec!.payloadType;\n\n if (track.kind === \"video\") {\n const codec = ((): SupportedCodec => {\n switch (track.codec?.name.toLowerCase() as SupportedVideoCodec) {\n case \"vp8\":\n return \"VP8\";\n case \"vp9\":\n return \"VP9\";\n case \"h264\":\n return \"MPEG4/ISO/AVC\";\n case \"av1x\":\n return \"AV1\";\n default:\n throw new WeriftError({\n message: \"unsupported codec\",\n payload: { track, path: sourcePath },\n });\n }\n })();\n return {\n kind: \"video\" as const,\n codec,\n clockRate: 90000,\n trackNumber,\n width: this.options.width,\n height: this.options.height,\n payloadType,\n track,\n };\n } else {\n return {\n kind: \"audio\" as const,\n codec: \"OPUS\" as const,\n clockRate: 48000,\n trackNumber,\n payloadType,\n track,\n };\n }\n });\n\n const webm = new WebmCallback(inputTracks, {\n duration: this.options.defaultDuration ?? 1000 * 60 * 60 * 24,\n });\n const lipsync = new LipsyncCallback();\n\n this.rtpSources = inputTracks.map(({ track, clockRate, codec }) => {\n const rtpSource = new RtpSourceCallback();\n const rtcpSource = new RtcpSourceCallback();\n track.onReceiveRtp\n .subscribe((rtp) => {\n rtpSource.input(rtp.clone());\n })\n .disposer(this.unSubscribers);\n track.onReceiveRtcp\n .subscribe((rtcp) => {\n rtcpSource.input(rtcp);\n })\n .disposer(this.unSubscribers);\n const ntpTime = new NtpTimeCallback(clockRate);\n\n if (track.kind === \"video\") {\n const depacketizer = new DepacketizeCallback(codec, {\n isFinalPacketInSequence: (h) => h.marker,\n });\n const jitterBuffer = new JitterBufferCallback(clockRate);\n\n rtpSource.pipe(jitterBuffer.input);\n rtcpSource.pipe(ntpTime.input);\n\n jitterBuffer.pipe(ntpTime.input);\n ntpTime.pipe(depacketizer.input);\n depacketizer.pipe(lipsync.inputVideo);\n lipsync.pipeVideo(webm.inputVideo);\n } else {\n const depacketizer = new DepacketizeCallback(codec);\n\n rtpSource.pipe(ntpTime.input);\n rtcpSource.pipe(ntpTime.input);\n\n ntpTime.pipe(depacketizer.input);\n depacketizer.pipe(lipsync.inputAudio);\n lipsync.pipeAudio(webm.inputAudio);\n }\n\n return rtpSource;\n });\n webm.pipe(saveToFileSystem(this.path));\n }\n\n async stop() {\n await Promise.all(this.rtpSources.map((r) => r.stop()));\n this.unSubscribers.dispose();\n }\n}\n\nconst supportedVideoCodecs = [\"h264\", \"vp8\", \"vp9\", \"av1x\"] as const;\ntype SupportedVideoCodec = (typeof supportedVideoCodecs)[number];\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"userMedia.js","sourceRoot":"","sources":["../../../../src/nonstandard/userMedia.ts"],"names":[],"mappings":"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","sourcesContent":["import { ChildProcess, exec } from \"child_process\";\nimport { createSocket } from \"dgram\";\nimport { setImmediate } from \"timers/promises\";\nimport { v4 } from \"uuid\";\n\nimport { randomPort } from \"../../../common/src\";\nimport { RtpPacket } from \"../../../rtp/src\";\nimport { MediaStreamTrack } from \"../media/track\";\n\nexport const getUserMedia = async ({\n path,\n loop,\n width,\n height,\n}: {\n path: string;\n loop?: boolean;\n width?: number;\n height?: number;\n}) => {\n const audioPort = await randomPort();\n const videoPort = await randomPort();\n\n if (path.endsWith(\".mp4\")) {\n return new MediaPlayerMp4({\n audioPort,\n videoPort,\n path,\n loop,\n width,\n height,\n });\n } else {\n return new MediaPlayerWebm({\n audioPort,\n videoPort,\n path,\n loop,\n width,\n height,\n });\n }\n};\n\nabstract class MediaPlayer {\n protected streamId = v4();\n audio = new MediaStreamTrack({ kind: \"audio\", streamId: this.streamId });\n video = new MediaStreamTrack({ kind: \"video\", streamId: this.streamId });\n protected process!: ChildProcess;\n stopped = false;\n\n constructor(\n protected props: {\n videoPort: number;\n audioPort: number;\n path: string;\n loop?: boolean;\n width?: number;\n height?: number;\n },\n ) {\n this.setupTrack(props.audioPort, this.audio);\n this.setupTrack(props.videoPort, this.video);\n }\n\n private setupTrack = (port: number, track: MediaStreamTrack) => {\n let payloadType = 0;\n\n const socket = createSocket(\"udp4\");\n socket.bind(port);\n socket.on(\"message\", async (buf) => {\n const rtp = RtpPacket.deSerialize(buf);\n if (!payloadType) {\n payloadType = rtp.header.payloadType;\n }\n\n // detect gStreamer restarted\n if (payloadType !== rtp.header.payloadType) {\n payloadType = rtp.header.payloadType;\n track.onSourceChanged.execute(rtp.header);\n }\n\n track.writeRtp(buf);\n });\n };\n\n stop() {\n this.stopped = true;\n this.process.kill(\"SIGINT\");\n }\n}\n\nexport class MediaPlayerMp4 extends MediaPlayer {\n async start() {\n let payloadType = 96;\n const run = async () => {\n if (payloadType > 100) payloadType = 96;\n\n let cmd = \"\";\n if (this.props.width && this.props.height) {\n cmd = `gst-launch-1.0 filesrc location= ${this.props.path} ! \\\ndecodebin ! videoscale ! video/x-raw,width=${this.props.width},height=${\n this.props.height\n } ! x264enc ! \\\nh264parse ! rtph264pay config-interval=10 pt=${payloadType++} ! \\\nudpsink host=127.0.0.1 port=${this.props.videoPort}`;\n } else {\n cmd = `gst-launch-1.0 filesrc location= ${this.props.path} ! \\\nqtdemux name=d ! \\\nqueue ! h264parse ! rtph264pay config-interval=10 pt=${payloadType++} ! \\\nudpsink host=127.0.0.1 port=${this.props.videoPort} d. ! \\\nqueue ! aacparse ! avdec_aac ! audioresample ! audioconvert ! opusenc ! rtpopuspay pt=${payloadType++} ! \\\nudpsink host=127.0.0.1 port=${this.props.audioPort}`;\n }\n console.log(cmd);\n this.process = exec(cmd);\n this.process.on(\"error\", (e) => console.error(\"gst error\", e));\n\n if (this.props.loop) {\n await new Promise((r) => this.process.on(\"close\", r));\n if (!this.stopped) {\n run();\n }\n }\n };\n await setImmediate();\n run();\n }\n}\n\nexport class MediaPlayerWebm extends MediaPlayer {\n async start() {\n let payloadType = 96;\n const run = async () => {\n if (payloadType > 100) payloadType = 96;\n\n const cmd = `gst-launch-1.0 filesrc location=${\n this.props.path\n } ! matroskademux name=d \\\nd.video_0 ! queue ! rtpvp8pay pt=${payloadType++} ! \\\nudpsink host=127.0.0.1 port=${this.props.videoPort} \\\nd.audio_0 ! queue ! rtpopuspay pt=${payloadType++} ! \\\nudpsink host=127.0.0.1 port=${this.props.audioPort}`;\n this.process = exec(cmd);\n\n if (this.props.loop) {\n await new Promise((r) => this.process.on(\"close\", r));\n if (!this.stopped) {\n run();\n }\n }\n };\n await setImmediate();\n run();\n }\n}\n"]}
1
+ {"version":3,"file":"userMedia.js","sourceRoot":"","sources":["../../../../src/nonstandard/userMedia.ts"],"names":[],"mappings":"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","sourcesContent":["import { ChildProcess, exec } from \"child_process\";\nimport { createSocket } from \"dgram\";\nimport { setImmediate } from \"timers/promises\";\nimport { v4 } from \"uuid\";\n\nimport { randomPort } from \"../../../common/src\";\nimport { RtpPacket } from \"../../../rtp/src\";\nimport { MediaStreamTrack } from \"../media/track\";\n\nexport const getUserMedia = async ({\n path,\n loop,\n width,\n height,\n}: {\n path: string;\n loop?: boolean;\n width?: number;\n height?: number;\n}) => {\n const audioPort = await randomPort();\n const videoPort = await randomPort();\n\n if (path.endsWith(\".mp4\")) {\n return new MediaPlayerMp4({\n audioPort,\n videoPort,\n path,\n loop,\n width,\n height,\n });\n } else {\n return new MediaPlayerWebm({\n audioPort,\n videoPort,\n path,\n loop,\n width,\n height,\n });\n }\n};\n\nabstract class MediaPlayer {\n protected streamId = v4();\n audio = new MediaStreamTrack({ kind: \"audio\", streamId: this.streamId });\n video = new MediaStreamTrack({ kind: \"video\", streamId: this.streamId });\n protected process!: ChildProcess;\n stopped = false;\n\n constructor(\n protected props: {\n videoPort: number;\n audioPort: number;\n path: string;\n loop?: boolean;\n width?: number;\n height?: number;\n },\n ) {\n this.setupTrack(props.audioPort, this.audio);\n this.setupTrack(props.videoPort, this.video);\n }\n\n private setupTrack = (port: number, track: MediaStreamTrack) => {\n let payloadType = 0;\n\n const socket = createSocket(\"udp4\");\n socket.bind(port);\n socket.on(\"message\", async (buf) => {\n const rtp = RtpPacket.deSerialize(buf);\n if (!payloadType) {\n payloadType = rtp.header.payloadType;\n }\n\n // detect gStreamer restarted\n if (payloadType !== rtp.header.payloadType) {\n payloadType = rtp.header.payloadType;\n track.onSourceChanged.execute(rtp.header);\n }\n\n track.writeRtp(buf);\n });\n };\n\n stop() {\n this.stopped = true;\n this.process.kill(\"SIGINT\");\n }\n}\n\nexport class MediaPlayerMp4 extends MediaPlayer {\n async start() {\n let payloadType = 96;\n const run = async () => {\n if (payloadType > 100) payloadType = 96;\n\n let cmd = \"\";\n if (this.props.width && this.props.height) {\n cmd = `gst-launch-1.0 filesrc location= ${this.props.path} ! \\\ndecodebin ! videoscale ! video/x-raw,width=${this.props.width},height=${\n this.props.height\n } ! x264enc ! \\\nh264parse ! rtph264pay config-interval=10 pt=${payloadType++} ! \\\nudpsink host=127.0.0.1 port=${this.props.videoPort}`;\n } else {\n cmd = `gst-launch-1.0 filesrc location= ${this.props.path} ! \\\nqtdemux name=d ! \\\nqueue ! h264parse ! rtph264pay config-interval=10 pt=${payloadType++} ! \\\nudpsink host=127.0.0.1 port=${this.props.videoPort} d. ! \\\nqueue ! aacparse ! avdec_aac ! audioresample ! audioconvert ! opusenc ! rtpopuspay pt=${payloadType++} ! \\\nudpsink host=127.0.0.1 port=${this.props.audioPort}`;\n }\n console.log(cmd);\n this.process = exec(cmd);\n this.process.on(\"error\", (e) => console.error(\"gst error\", e));\n\n if (this.props.loop) {\n await new Promise((r) => this.process.on(\"close\", r));\n if (!this.stopped) {\n run();\n }\n }\n };\n await setImmediate();\n run();\n }\n}\n\nexport class MediaPlayerWebm extends MediaPlayer {\n async start() {\n let payloadType = 96;\n const run = async () => {\n if (payloadType > 100) payloadType = 96;\n\n const cmd = `gst-launch-1.0 filesrc location=${this.props.path} ! matroskademux name=d \\\nd.video_0 ! queue ! rtpvp8pay pt=${payloadType++} ! \\\nudpsink host=127.0.0.1 port=${this.props.videoPort} \\\nd.audio_0 ! queue ! rtpopuspay pt=${payloadType++} ! \\\nudpsink host=127.0.0.1 port=${this.props.audioPort}`;\n this.process = exec(cmd);\n\n if (this.props.loop) {\n await new Promise((r) => this.process.on(\"close\", r));\n if (!this.stopped) {\n run();\n }\n }\n };\n await setImmediate();\n run();\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import Event from "rx.mini";
2
- import { Message } from "../../ice/src/stun/message";
3
- import { Protocol } from "../../ice/src/types/model";
4
2
  import { Address, CandidatePair, InterfaceAddresses } from ".";
5
3
  import { DtlsKeys } from ".";
4
+ import { Message } from "../../ice/src/stun/message";
5
+ import { Protocol } from "../../ice/src/types/model";
6
6
  import { RTCDataChannel } from "./dataChannel";
7
7
  import { EventTarget } from "./helper";
8
8
  import { RTCRtpCodecParameters, RTCRtpHeaderExtensionParameters } from "./media/parameters";
@@ -372,13 +372,15 @@ class RTCPeerConnection extends helper_1.EventTarget {
372
372
  });
373
373
  }
374
374
  get localDescription() {
375
- if (!this._localDescription)
376
- return;
375
+ if (!this._localDescription) {
376
+ return undefined;
377
+ }
377
378
  return this._localDescription.toJSON();
378
379
  }
379
380
  get remoteDescription() {
380
- if (!this._remoteDescription)
381
- return;
381
+ if (!this._remoteDescription) {
382
+ return undefined;
383
+ }
382
384
  return this._remoteDescription.toJSON();
383
385
  }
384
386
  get _localDescription() {
@@ -630,7 +632,7 @@ class RTCPeerConnection extends helper_1.EventTarget {
630
632
  }
631
633
  createSctpTransport() {
632
634
  const dtlsTransport = this.createTransport([
633
- const_1.SRTP_PROFILE.SRTP_AEAD_AES_128_GCM,
635
+ const_1.SRTP_PROFILE.SRTP_AEAD_AES_128_GCM, // prefer
634
636
  const_1.SRTP_PROFILE.SRTP_AES128_CM_HMAC_SHA1_80,
635
637
  ]);
636
638
  const sctp = new sctp_1.RTCSctpTransport();
@@ -852,8 +854,9 @@ class RTCPeerConnection extends helper_1.EventTarget {
852
854
  }
853
855
  get remoteIsBundled() {
854
856
  const remoteSdp = this._remoteDescription;
855
- if (!remoteSdp)
856
- return;
857
+ if (!remoteSdp) {
858
+ return undefined;
859
+ }
857
860
  const bundle = remoteSdp.group.find((g) => g.semantic === "BUNDLE" && this.config.bundlePolicy !== "disable");
858
861
  return bundle;
859
862
  }
@@ -1128,7 +1131,7 @@ class RTCPeerConnection extends helper_1.EventTarget {
1128
1131
  const kind = typeof trackOrKind === "string" ? trackOrKind : trackOrKind.kind;
1129
1132
  const direction = options.direction || "sendrecv";
1130
1133
  const dtlsTransport = this.createTransport([
1131
- const_1.SRTP_PROFILE.SRTP_AEAD_AES_128_GCM,
1134
+ const_1.SRTP_PROFILE.SRTP_AEAD_AES_128_GCM, // prefer
1132
1135
  const_1.SRTP_PROFILE.SRTP_AES128_CM_HMAC_SHA1_80,
1133
1136
  ]);
1134
1137
  const sender = new rtpSender_1.RTCRtpSender(trackOrKind);