werift 0.17.6 → 0.18.0

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 (338) hide show
  1. package/lib/common/src/binary.d.ts +1 -0
  2. package/lib/common/src/binary.js +74 -21
  3. package/lib/common/src/binary.js.map +1 -1
  4. package/lib/common/src/log.js +18 -0
  5. package/lib/common/src/log.js.map +1 -1
  6. package/lib/common/src/network.d.ts +1 -1
  7. package/lib/common/src/network.js +1 -0
  8. package/lib/common/src/network.js.map +1 -1
  9. package/lib/common/src/promise.js +22 -7
  10. package/lib/common/src/promise.js.map +1 -1
  11. package/lib/common/src/type.d.ts +1 -1
  12. package/lib/dtls/src/cipher/const.d.ts +7 -7
  13. package/lib/dtls/src/cipher/key-exchange.js +24 -1
  14. package/lib/dtls/src/cipher/key-exchange.js.map +1 -1
  15. package/lib/dtls/src/cipher/suites/abstract.d.ts +2 -2
  16. package/lib/dtls/src/cipher/suites/abstract.js +36 -2
  17. package/lib/dtls/src/cipher/suites/abstract.js.map +1 -1
  18. package/lib/dtls/src/cipher/suites/aead.js +60 -6
  19. package/lib/dtls/src/cipher/suites/aead.js.map +1 -1
  20. package/lib/dtls/src/client.js +62 -51
  21. package/lib/dtls/src/client.js.map +1 -1
  22. package/lib/dtls/src/context/cipher.js +151 -59
  23. package/lib/dtls/src/context/cipher.js.map +1 -1
  24. package/lib/dtls/src/context/dtls.js +90 -14
  25. package/lib/dtls/src/context/dtls.js.map +1 -1
  26. package/lib/dtls/src/context/srtp.d.ts +1 -1
  27. package/lib/dtls/src/context/srtp.js +8 -0
  28. package/lib/dtls/src/context/srtp.js.map +1 -1
  29. package/lib/dtls/src/context/transport.js +14 -2
  30. package/lib/dtls/src/context/transport.js.map +1 -1
  31. package/lib/dtls/src/flight/client/flight1.js +6 -1
  32. package/lib/dtls/src/flight/client/flight1.js.map +1 -1
  33. package/lib/dtls/src/flight/client/flight5.js +12 -2
  34. package/lib/dtls/src/flight/client/flight5.js.map +1 -1
  35. package/lib/dtls/src/flight/flight.d.ts +1 -1
  36. package/lib/dtls/src/flight/flight.js +42 -7
  37. package/lib/dtls/src/flight/flight.js.map +1 -1
  38. package/lib/dtls/src/flight/server/flight2.js +4 -2
  39. package/lib/dtls/src/flight/server/flight2.js.map +1 -1
  40. package/lib/dtls/src/flight/server/flight4.js +12 -2
  41. package/lib/dtls/src/flight/server/flight4.js.map +1 -1
  42. package/lib/dtls/src/flight/server/flight6.js +6 -1
  43. package/lib/dtls/src/flight/server/flight6.js.map +1 -1
  44. package/lib/dtls/src/handshake/extensions/ellipticCurves.js +27 -7
  45. package/lib/dtls/src/handshake/extensions/ellipticCurves.js.map +1 -1
  46. package/lib/dtls/src/handshake/extensions/extendedMasterSecret.js +6 -1
  47. package/lib/dtls/src/handshake/extensions/extendedMasterSecret.js.map +1 -1
  48. package/lib/dtls/src/handshake/extensions/renegotiationIndication.js +27 -7
  49. package/lib/dtls/src/handshake/extensions/renegotiationIndication.js.map +1 -1
  50. package/lib/dtls/src/handshake/extensions/signature.js +27 -7
  51. package/lib/dtls/src/handshake/extensions/signature.js.map +1 -1
  52. package/lib/dtls/src/handshake/extensions/useSrtp.js +39 -9
  53. package/lib/dtls/src/handshake/extensions/useSrtp.js.map +1 -1
  54. package/lib/dtls/src/handshake/message/alert.js +21 -6
  55. package/lib/dtls/src/handshake/message/alert.js.map +1 -1
  56. package/lib/dtls/src/handshake/message/certificate.js +26 -5
  57. package/lib/dtls/src/handshake/message/certificate.js.map +1 -1
  58. package/lib/dtls/src/handshake/message/changeCipherSpec.js +14 -4
  59. package/lib/dtls/src/handshake/message/changeCipherSpec.js.map +1 -1
  60. package/lib/dtls/src/handshake/message/client/certificateVerify.js +33 -7
  61. package/lib/dtls/src/handshake/message/client/certificateVerify.js.map +1 -1
  62. package/lib/dtls/src/handshake/message/client/hello.js +68 -18
  63. package/lib/dtls/src/handshake/message/client/hello.js.map +1 -1
  64. package/lib/dtls/src/handshake/message/client/keyExchange.js +26 -5
  65. package/lib/dtls/src/handshake/message/client/keyExchange.js.map +1 -1
  66. package/lib/dtls/src/handshake/message/finished.js +18 -2
  67. package/lib/dtls/src/handshake/message/finished.js.map +1 -1
  68. package/lib/dtls/src/handshake/message/server/certificateRequest.js +40 -9
  69. package/lib/dtls/src/handshake/message/server/certificateRequest.js.map +1 -1
  70. package/lib/dtls/src/handshake/message/server/hello.js +60 -14
  71. package/lib/dtls/src/handshake/message/server/hello.js.map +1 -1
  72. package/lib/dtls/src/handshake/message/server/helloDone.js +18 -2
  73. package/lib/dtls/src/handshake/message/server/helloDone.js.map +1 -1
  74. package/lib/dtls/src/handshake/message/server/helloVerifyRequest.js +33 -7
  75. package/lib/dtls/src/handshake/message/server/helloVerifyRequest.js.map +1 -1
  76. package/lib/dtls/src/handshake/message/server/keyExchange.js +75 -19
  77. package/lib/dtls/src/handshake/message/server/keyExchange.js.map +1 -1
  78. package/lib/dtls/src/handshake/random.js +21 -6
  79. package/lib/dtls/src/handshake/random.js.map +1 -1
  80. package/lib/dtls/src/record/builder.d.ts +1 -1
  81. package/lib/dtls/src/record/message/fragment.js +49 -14
  82. package/lib/dtls/src/record/message/fragment.js.map +1 -1
  83. package/lib/dtls/src/record/message/header.js +84 -24
  84. package/lib/dtls/src/record/message/header.js.map +1 -1
  85. package/lib/dtls/src/record/message/plaintext.js +21 -6
  86. package/lib/dtls/src/record/message/plaintext.js.map +1 -1
  87. package/lib/dtls/src/server.js +59 -42
  88. package/lib/dtls/src/server.js.map +1 -1
  89. package/lib/dtls/src/socket.js +153 -64
  90. package/lib/dtls/src/socket.js.map +1 -1
  91. package/lib/dtls/src/transport.js +38 -11
  92. package/lib/dtls/src/transport.js.map +1 -1
  93. package/lib/dtls/src/typings/domain.d.ts +4 -4
  94. package/lib/ice/src/candidate.js +66 -11
  95. package/lib/ice/src/candidate.js.map +1 -1
  96. package/lib/ice/src/dns/lookup.js +12 -1
  97. package/lib/ice/src/dns/lookup.js.map +1 -1
  98. package/lib/ice/src/exceptions.js +27 -2
  99. package/lib/ice/src/exceptions.js.map +1 -1
  100. package/lib/ice/src/helper.d.ts +1 -1
  101. package/lib/ice/src/helper.js +12 -2
  102. package/lib/ice/src/helper.js.map +1 -1
  103. package/lib/ice/src/ice.d.ts +9 -3
  104. package/lib/ice/src/ice.js +407 -155
  105. package/lib/ice/src/ice.js.map +1 -1
  106. package/lib/ice/src/stun/attributes.d.ts +3 -3
  107. package/lib/ice/src/stun/attributes.js +6 -1
  108. package/lib/ice/src/stun/attributes.js.map +1 -1
  109. package/lib/ice/src/stun/message.d.ts +4 -0
  110. package/lib/ice/src/stun/message.js +24 -3
  111. package/lib/ice/src/stun/message.js.map +1 -1
  112. package/lib/ice/src/stun/protocol.js +64 -15
  113. package/lib/ice/src/stun/protocol.js.map +1 -1
  114. package/lib/ice/src/stun/transaction.js +99 -36
  115. package/lib/ice/src/stun/transaction.js.map +1 -1
  116. package/lib/ice/src/transport.js +57 -21
  117. package/lib/ice/src/transport.js.map +1 -1
  118. package/lib/ice/src/turn/protocol.js +176 -40
  119. package/lib/ice/src/turn/protocol.js.map +1 -1
  120. package/lib/ice/src/types/model.d.ts +1 -1
  121. package/lib/rtp/src/codec/av1.d.ts +1 -1
  122. package/lib/rtp/src/codec/av1.js +118 -30
  123. package/lib/rtp/src/codec/av1.js.map +1 -1
  124. package/lib/rtp/src/codec/base.js +8 -0
  125. package/lib/rtp/src/codec/base.js.map +1 -1
  126. package/lib/rtp/src/codec/h264.js +55 -0
  127. package/lib/rtp/src/codec/h264.js.map +1 -1
  128. package/lib/rtp/src/codec/index.d.ts +2 -0
  129. package/lib/rtp/src/codec/index.js +12 -2
  130. package/lib/rtp/src/codec/index.js.map +1 -1
  131. package/lib/rtp/src/codec/opus.js +8 -0
  132. package/lib/rtp/src/codec/opus.js.map +1 -1
  133. package/lib/rtp/src/codec/vp8.js +102 -3
  134. package/lib/rtp/src/codec/vp8.js.map +1 -1
  135. package/lib/rtp/src/codec/vp9.js +164 -7
  136. package/lib/rtp/src/codec/vp9.js.map +1 -1
  137. package/lib/rtp/src/container/ebml/ebml.js +30 -3
  138. package/lib/rtp/src/container/ebml/ebml.js.map +1 -1
  139. package/lib/rtp/src/container/webm.d.ts +1 -1
  140. package/lib/rtp/src/container/webm.js +44 -13
  141. package/lib/rtp/src/container/webm.js.map +1 -1
  142. package/lib/rtp/src/processor/depacketizer.d.ts +16 -8
  143. package/lib/rtp/src/processor/depacketizer.js +59 -22
  144. package/lib/rtp/src/processor/depacketizer.js.map +1 -1
  145. package/lib/rtp/src/processor/depacketizerCallback.js +24 -8
  146. package/lib/rtp/src/processor/depacketizerCallback.js.map +1 -1
  147. package/lib/rtp/src/processor/depacketizerTransformer.d.ts +2 -2
  148. package/lib/rtp/src/processor/depacketizerTransformer.js +6 -0
  149. package/lib/rtp/src/processor/depacketizerTransformer.js.map +1 -1
  150. package/lib/rtp/src/processor/index.d.ts +4 -2
  151. package/lib/rtp/src/processor/index.js +4 -2
  152. package/lib/rtp/src/processor/index.js.map +1 -1
  153. package/lib/rtp/src/processor/interface.d.ts +4 -0
  154. package/lib/rtp/src/processor/interface.js.map +1 -1
  155. package/lib/rtp/src/processor/jitterBuffer.d.ts +2 -1
  156. package/lib/rtp/src/processor/jitterBuffer.js +40 -8
  157. package/lib/rtp/src/processor/jitterBuffer.js.map +1 -1
  158. package/lib/rtp/src/processor/jitterBufferCallback.js +30 -9
  159. package/lib/rtp/src/processor/jitterBufferCallback.js.map +1 -1
  160. package/lib/rtp/src/processor/jitterBufferTransformer.js +12 -1
  161. package/lib/rtp/src/processor/jitterBufferTransformer.js.map +1 -1
  162. package/lib/rtp/src/processor/lipsync.d.ts +42 -0
  163. package/lib/rtp/src/processor/lipsync.js +178 -0
  164. package/lib/rtp/src/processor/lipsync.js.map +1 -0
  165. package/lib/rtp/src/processor/lipsyncCallback.d.ts +10 -0
  166. package/lib/rtp/src/processor/lipsyncCallback.js +59 -0
  167. package/lib/rtp/src/processor/lipsyncCallback.js.map +1 -0
  168. package/lib/rtp/src/processor/ntpTime.d.ts +24 -0
  169. package/lib/rtp/src/processor/ntpTime.js +91 -0
  170. package/lib/rtp/src/processor/ntpTime.js.map +1 -0
  171. package/lib/rtp/src/processor/ntpTimeCallback.d.ts +7 -0
  172. package/lib/rtp/src/processor/ntpTimeCallback.js +36 -0
  173. package/lib/rtp/src/processor/ntpTimeCallback.js.map +1 -0
  174. package/lib/rtp/src/processor/source/index.d.ts +1 -0
  175. package/lib/rtp/src/processor/source/index.js +1 -0
  176. package/lib/rtp/src/processor/source/index.js.map +1 -1
  177. package/lib/rtp/src/processor/source/rtcpCallback.d.ts +12 -0
  178. package/lib/rtp/src/processor/source/rtcpCallback.js +33 -0
  179. package/lib/rtp/src/processor/source/rtcpCallback.js.map +1 -0
  180. package/lib/rtp/src/processor/source/rtpCallback.js +28 -12
  181. package/lib/rtp/src/processor/source/rtpCallback.js.map +1 -1
  182. package/lib/rtp/src/processor/source/rtpStream.js +38 -10
  183. package/lib/rtp/src/processor/source/rtpStream.js.map +1 -1
  184. package/lib/rtp/src/processor/webm.d.ts +11 -4
  185. package/lib/rtp/src/processor/webm.js +169 -46
  186. package/lib/rtp/src/processor/webm.js.map +1 -1
  187. package/lib/rtp/src/processor/webmCallback.d.ts +5 -3
  188. package/lib/rtp/src/processor/webmCallback.js +52 -8
  189. package/lib/rtp/src/processor/webmCallback.js.map +1 -1
  190. package/lib/rtp/src/processor/webmStream.d.ts +2 -2
  191. package/lib/rtp/src/processor/webmStream.js +24 -0
  192. package/lib/rtp/src/processor/webmStream.js.map +1 -1
  193. package/lib/rtp/src/processor_old/base.d.ts +18 -0
  194. package/lib/rtp/src/processor_old/base.js +51 -0
  195. package/lib/rtp/src/processor_old/base.js.map +1 -0
  196. package/lib/rtp/src/processor_old/lipsync.d.ts +30 -0
  197. package/lib/rtp/src/processor_old/lipsync.js +119 -0
  198. package/lib/rtp/src/processor_old/lipsync.js.map +1 -0
  199. package/lib/rtp/src/rtcp/header.js +30 -5
  200. package/lib/rtp/src/rtcp/header.js.map +1 -1
  201. package/lib/rtp/src/rtcp/psfb/fullIntraRequest.d.ts +1 -1
  202. package/lib/rtp/src/rtcp/psfb/fullIntraRequest.js +30 -3
  203. package/lib/rtp/src/rtcp/psfb/fullIntraRequest.js.map +1 -1
  204. package/lib/rtp/src/rtcp/psfb/index.d.ts +1 -1
  205. package/lib/rtp/src/rtcp/psfb/index.js +18 -2
  206. package/lib/rtp/src/rtcp/psfb/index.js.map +1 -1
  207. package/lib/rtp/src/rtcp/psfb/pictureLossIndication.js +30 -3
  208. package/lib/rtp/src/rtcp/psfb/pictureLossIndication.js.map +1 -1
  209. package/lib/rtp/src/rtcp/psfb/remb.js +66 -5
  210. package/lib/rtp/src/rtcp/psfb/remb.js.map +1 -1
  211. package/lib/rtp/src/rtcp/rr.js +68 -4
  212. package/lib/rtp/src/rtcp/rr.js.map +1 -1
  213. package/lib/rtp/src/rtcp/rtcp.d.ts +1 -1
  214. package/lib/rtp/src/rtcp/rtpfb/index.d.ts +1 -1
  215. package/lib/rtp/src/rtcp/rtpfb/index.js +24 -2
  216. package/lib/rtp/src/rtcp/rtpfb/index.js.map +1 -1
  217. package/lib/rtp/src/rtcp/rtpfb/nack.d.ts +5 -0
  218. package/lib/rtp/src/rtcp/rtpfb/nack.js +43 -3
  219. package/lib/rtp/src/rtcp/rtpfb/nack.js.map +1 -1
  220. package/lib/rtp/src/rtcp/rtpfb/twcc.js +154 -11
  221. package/lib/rtp/src/rtcp/rtpfb/twcc.js.map +1 -1
  222. package/lib/rtp/src/rtcp/sdes.js +42 -4
  223. package/lib/rtp/src/rtcp/sdes.js.map +1 -1
  224. package/lib/rtp/src/rtcp/sr.js +56 -5
  225. package/lib/rtp/src/rtcp/sr.js.map +1 -1
  226. package/lib/rtp/src/rtp/red/encoder.js +18 -3
  227. package/lib/rtp/src/rtp/red/encoder.js.map +1 -1
  228. package/lib/rtp/src/rtp/red/handler.js +12 -2
  229. package/lib/rtp/src/rtp/red/handler.js.map +1 -1
  230. package/lib/rtp/src/rtp/red/packet.js +18 -2
  231. package/lib/rtp/src/rtp/red/packet.js.map +1 -1
  232. package/lib/rtp/src/rtp/rtp.d.ts +3 -3
  233. package/lib/rtp/src/rtp/rtp.js +104 -17
  234. package/lib/rtp/src/rtp/rtp.js.map +1 -1
  235. package/lib/rtp/src/srtp/cipher/ctr.js +26 -10
  236. package/lib/rtp/src/srtp/cipher/ctr.js.map +1 -1
  237. package/lib/rtp/src/srtp/cipher/gcm.d.ts +3 -0
  238. package/lib/rtp/src/srtp/cipher/gcm.js +40 -20
  239. package/lib/rtp/src/srtp/cipher/gcm.js.map +1 -1
  240. package/lib/rtp/src/srtp/cipher/index.js +24 -4
  241. package/lib/rtp/src/srtp/cipher/index.js.map +1 -1
  242. package/lib/rtp/src/srtp/const.d.ts +1 -1
  243. package/lib/rtp/src/srtp/context/context.d.ts +1 -1
  244. package/lib/rtp/src/srtp/context/context.js +84 -5
  245. package/lib/rtp/src/srtp/context/context.js.map +1 -1
  246. package/lib/rtp/src/srtp/session.d.ts +2 -2
  247. package/lib/rtp/src/srtp/session.js +24 -1
  248. package/lib/rtp/src/srtp/session.js.map +1 -1
  249. package/lib/rtp/src/srtp/srtcp.js +15 -5
  250. package/lib/rtp/src/srtp/srtcp.js.map +1 -1
  251. package/lib/rtp/src/srtp/srtp.js +15 -5
  252. package/lib/rtp/src/srtp/srtp.js.map +1 -1
  253. package/lib/sctp/src/chunk.js +349 -69
  254. package/lib/sctp/src/chunk.js.map +1 -1
  255. package/lib/sctp/src/helper.d.ts +1 -1
  256. package/lib/sctp/src/param.d.ts +3 -3
  257. package/lib/sctp/src/param.js +66 -11
  258. package/lib/sctp/src/param.js.map +1 -1
  259. package/lib/sctp/src/sctp.d.ts +1 -1
  260. package/lib/sctp/src/sctp.js +479 -138
  261. package/lib/sctp/src/sctp.js.map +1 -1
  262. package/lib/sctp/src/transport.js +31 -10
  263. package/lib/sctp/src/transport.js.map +1 -1
  264. package/lib/webrtc/src/dataChannel.d.ts +1 -1
  265. package/lib/webrtc/src/dataChannel.js +145 -15
  266. package/lib/webrtc/src/dataChannel.js.map +1 -1
  267. package/lib/webrtc/src/helper.js +37 -12
  268. package/lib/webrtc/src/helper.js.map +1 -1
  269. package/lib/webrtc/src/media/parameters.d.ts +1 -1
  270. package/lib/webrtc/src/media/parameters.js +124 -3
  271. package/lib/webrtc/src/media/parameters.js.map +1 -1
  272. package/lib/webrtc/src/media/receiver/nack.d.ts +4 -4
  273. package/lib/webrtc/src/media/receiver/nack.js +85 -33
  274. package/lib/webrtc/src/media/receiver/nack.js.map +1 -1
  275. package/lib/webrtc/src/media/receiver/receiverTwcc.d.ts +1 -1
  276. package/lib/webrtc/src/media/receiver/receiverTwcc.js +42 -6
  277. package/lib/webrtc/src/media/receiver/receiverTwcc.js.map +1 -1
  278. package/lib/webrtc/src/media/receiver/statistics.js +61 -5
  279. package/lib/webrtc/src/media/receiver/statistics.js.map +1 -1
  280. package/lib/webrtc/src/media/router.d.ts +1 -1
  281. package/lib/webrtc/src/media/router.js +108 -83
  282. package/lib/webrtc/src/media/router.js.map +1 -1
  283. package/lib/webrtc/src/media/rtpReceiver.js +188 -33
  284. package/lib/webrtc/src/media/rtpReceiver.js.map +1 -1
  285. package/lib/webrtc/src/media/rtpSender.js +279 -42
  286. package/lib/webrtc/src/media/rtpSender.js.map +1 -1
  287. package/lib/webrtc/src/media/rtpTransceiver.d.ts +2 -2
  288. package/lib/webrtc/src/media/rtpTransceiver.js +102 -18
  289. package/lib/webrtc/src/media/rtpTransceiver.js.map +1 -1
  290. package/lib/webrtc/src/media/sender/cumulativeResult.js +36 -6
  291. package/lib/webrtc/src/media/sender/cumulativeResult.js.map +1 -1
  292. package/lib/webrtc/src/media/sender/senderBWE.js +57 -12
  293. package/lib/webrtc/src/media/sender/senderBWE.js.map +1 -1
  294. package/lib/webrtc/src/media/track.js +135 -24
  295. package/lib/webrtc/src/media/track.js.map +1 -1
  296. package/lib/webrtc/src/nonstandard/recorder/index.d.ts +7 -4
  297. package/lib/webrtc/src/nonstandard/recorder/index.js +50 -6
  298. package/lib/webrtc/src/nonstandard/recorder/index.js.map +1 -1
  299. package/lib/webrtc/src/nonstandard/recorder/writer/index.js +12 -2
  300. package/lib/webrtc/src/nonstandard/recorder/writer/index.js.map +1 -1
  301. package/lib/webrtc/src/nonstandard/recorder/writer/webm.d.ts +2 -2
  302. package/lib/webrtc/src/nonstandard/recorder/writer/webm.js +39 -35
  303. package/lib/webrtc/src/nonstandard/recorder/writer/webm.js.map +1 -1
  304. package/lib/webrtc/src/nonstandard/userMedia.js +158 -56
  305. package/lib/webrtc/src/nonstandard/userMedia.js.map +1 -1
  306. package/lib/webrtc/src/peerConnection.d.ts +2 -2
  307. package/lib/webrtc/src/peerConnection.js +260 -58
  308. package/lib/webrtc/src/peerConnection.js.map +1 -1
  309. package/lib/webrtc/src/sdp.js +287 -24
  310. package/lib/webrtc/src/sdp.js.map +1 -1
  311. package/lib/webrtc/src/transport/dtls.d.ts +3 -3
  312. package/lib/webrtc/src/transport/dtls.js +185 -30
  313. package/lib/webrtc/src/transport/dtls.js.map +1 -1
  314. package/lib/webrtc/src/transport/ice.d.ts +2 -2
  315. package/lib/webrtc/src/transport/ice.js +193 -25
  316. package/lib/webrtc/src/transport/ice.js.map +1 -1
  317. package/lib/webrtc/src/transport/sctp.js +193 -101
  318. package/lib/webrtc/src/transport/sctp.js.map +1 -1
  319. package/lib/webrtc/src/types/domain.d.ts +3 -3
  320. package/lib/webrtc/src/types/util.d.ts +2 -2
  321. package/lib/webrtc/src/utils.js +12 -2
  322. package/lib/webrtc/src/utils.js.map +1 -1
  323. package/package.json +15 -15
  324. package/src/dataChannel.ts +3 -1
  325. package/src/media/receiver/nack.ts +23 -19
  326. package/src/media/rtpReceiver.ts +5 -0
  327. package/src/media/rtpSender.ts +22 -19
  328. package/src/nonstandard/recorder/index.ts +12 -4
  329. package/src/nonstandard/recorder/writer/webm.ts +42 -50
  330. package/src/transport/dtls.ts +7 -3
  331. package/src/transport/ice.ts +6 -3
  332. package/src/transport/sctp.ts +3 -1
  333. package/lib/rtp/src/processor/avBuffer.d.ts +0 -36
  334. package/lib/rtp/src/processor/avBuffer.js +0 -107
  335. package/lib/rtp/src/processor/avBuffer.js.map +0 -1
  336. package/lib/rtp/src/processor/avBufferCallback.d.ts +0 -10
  337. package/lib/rtp/src/processor/avBufferCallback.js +0 -27
  338. package/lib/rtp/src/processor/avBufferCallback.js.map +0 -1
@@ -0,0 +1,42 @@
1
+ import { CodecFrame } from "./depacketizer";
2
+ import { AVProcessor } from "./interface";
3
+ export type LipsyncInput = {
4
+ frame?: CodecFrame;
5
+ eol?: boolean;
6
+ };
7
+ export type LipsyncOutput = {
8
+ frame?: CodecFrame;
9
+ eol?: boolean;
10
+ };
11
+ export declare class LipsyncBase implements AVProcessor<LipsyncInput> {
12
+ private audioOutput;
13
+ private videoOutput;
14
+ private options;
15
+ bufferLength: number;
16
+ /**ms */
17
+ baseTime?: number;
18
+ audioBuffer: (LipsyncInput & {
19
+ elapsed: number;
20
+ kind: string;
21
+ [key: string]: any;
22
+ })[][];
23
+ videoBuffer: (LipsyncInput & {
24
+ elapsed: number;
25
+ kind: string;
26
+ [key: string]: any;
27
+ })[][];
28
+ stopped: boolean;
29
+ /**ms */
30
+ private interval;
31
+ private started;
32
+ /**ms */
33
+ lastCommited: number;
34
+ constructor(audioOutput: (output: LipsyncOutput) => void, videoOutput: (output: LipsyncOutput) => void, options?: Partial<LipSyncOptions>);
35
+ private start;
36
+ processAudioInput: ({ frame, eol }: LipsyncInput) => void;
37
+ processVideoInput: ({ frame, eol }: LipsyncInput) => void;
38
+ }
39
+ export interface LipSyncOptions {
40
+ interval: number;
41
+ bufferLength: number;
42
+ }
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LipsyncBase = void 0;
4
+ const src_1 = require("../../../common/src");
5
+ class LipsyncBase {
6
+ constructor(audioOutput, videoOutput, options = {}) {
7
+ Object.defineProperty(this, "audioOutput", {
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true,
11
+ value: audioOutput
12
+ });
13
+ Object.defineProperty(this, "videoOutput", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: videoOutput
18
+ });
19
+ Object.defineProperty(this, "options", {
20
+ enumerable: true,
21
+ configurable: true,
22
+ writable: true,
23
+ value: options
24
+ });
25
+ Object.defineProperty(this, "bufferLength", {
26
+ enumerable: true,
27
+ configurable: true,
28
+ writable: true,
29
+ value: void 0
30
+ });
31
+ /**ms */
32
+ Object.defineProperty(this, "baseTime", {
33
+ enumerable: true,
34
+ configurable: true,
35
+ writable: true,
36
+ value: void 0
37
+ });
38
+ Object.defineProperty(this, "audioBuffer", {
39
+ enumerable: true,
40
+ configurable: true,
41
+ writable: true,
42
+ value: void 0
43
+ });
44
+ Object.defineProperty(this, "videoBuffer", {
45
+ enumerable: true,
46
+ configurable: true,
47
+ writable: true,
48
+ value: void 0
49
+ });
50
+ Object.defineProperty(this, "stopped", {
51
+ enumerable: true,
52
+ configurable: true,
53
+ writable: true,
54
+ value: false
55
+ });
56
+ /**ms */
57
+ Object.defineProperty(this, "interval", {
58
+ enumerable: true,
59
+ configurable: true,
60
+ writable: true,
61
+ value: void 0
62
+ });
63
+ Object.defineProperty(this, "started", {
64
+ enumerable: true,
65
+ configurable: true,
66
+ writable: true,
67
+ value: false
68
+ });
69
+ /**ms */
70
+ Object.defineProperty(this, "lastCommited", {
71
+ enumerable: true,
72
+ configurable: true,
73
+ writable: true,
74
+ value: 0
75
+ });
76
+ Object.defineProperty(this, "processAudioInput", {
77
+ enumerable: true,
78
+ configurable: true,
79
+ writable: true,
80
+ value: ({ frame, eol }) => {
81
+ if (!frame) {
82
+ this.stopped = true;
83
+ this.audioOutput({ eol });
84
+ return;
85
+ }
86
+ if (this.stopped) {
87
+ return;
88
+ }
89
+ if (this.baseTime == undefined) {
90
+ this.baseTime = frame.time;
91
+ }
92
+ /**ms */
93
+ const elapsed = frame.time - this.baseTime;
94
+ if (elapsed < 0 || elapsed < this.lastCommited) {
95
+ return;
96
+ }
97
+ const index = (0, src_1.int)(elapsed / this.interval) % this.bufferLength;
98
+ this.audioBuffer[index].push({
99
+ frame,
100
+ elapsed,
101
+ kind: "audio",
102
+ seq: frame.sequence,
103
+ });
104
+ this.start();
105
+ }
106
+ });
107
+ Object.defineProperty(this, "processVideoInput", {
108
+ enumerable: true,
109
+ configurable: true,
110
+ writable: true,
111
+ value: ({ frame, eol }) => {
112
+ if (!frame) {
113
+ this.stopped = true;
114
+ this.videoOutput({ eol });
115
+ return;
116
+ }
117
+ if (this.stopped) {
118
+ return;
119
+ }
120
+ if (this.baseTime == undefined) {
121
+ this.baseTime = frame.time;
122
+ }
123
+ /**ms */
124
+ const elapsed = frame.time - this.baseTime;
125
+ if (elapsed < 0 || elapsed < this.lastCommited) {
126
+ return;
127
+ }
128
+ const index = (0, src_1.int)(elapsed / this.interval) % this.bufferLength;
129
+ this.videoBuffer[index].push({
130
+ frame,
131
+ elapsed,
132
+ kind: "video",
133
+ seq: frame.sequence,
134
+ });
135
+ this.start();
136
+ }
137
+ });
138
+ this.bufferLength = this.options.bufferLength ?? 50;
139
+ this.audioBuffer = [...new Array(this.bufferLength)].map(() => []);
140
+ this.videoBuffer = [...new Array(this.bufferLength)].map(() => []);
141
+ this.interval = this.options.interval ?? 500;
142
+ }
143
+ start() {
144
+ // 2列目にカーソルが移ってから処理を始めることで1列目の処理を完了できる
145
+ if ([...this.audioBuffer[1], ...this.videoBuffer[1]].length === 0) {
146
+ return;
147
+ }
148
+ if (this.started) {
149
+ return;
150
+ }
151
+ this.started = true;
152
+ let index = 0;
153
+ setInterval(() => {
154
+ const joined = [
155
+ ...this.audioBuffer[index],
156
+ ...this.videoBuffer[index],
157
+ ].filter((b) => b.elapsed >= this.lastCommited);
158
+ const sorted = joined.sort((a, b) => a.frame.time - b.frame.time);
159
+ this.audioBuffer[index] = [];
160
+ this.videoBuffer[index] = [];
161
+ for (const output of sorted) {
162
+ if (output.kind === "audio") {
163
+ this.audioOutput(output);
164
+ }
165
+ else {
166
+ this.videoOutput(output);
167
+ }
168
+ this.lastCommited = output.elapsed;
169
+ }
170
+ index++;
171
+ if (index === this.bufferLength) {
172
+ index = 0;
173
+ }
174
+ }, this.interval);
175
+ }
176
+ }
177
+ exports.LipsyncBase = LipsyncBase;
178
+ //# sourceMappingURL=lipsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lipsync.js","sourceRoot":"","sources":["../../../../../rtp/src/processor/lipsync.ts"],"names":[],"mappings":"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","sourcesContent":["import { int } from \"../../../common/src\";\nimport { CodecFrame } from \"./depacketizer\";\nimport { AVProcessor } from \"./interface\";\n\nexport type LipsyncInput = {\n frame?: CodecFrame;\n eol?: boolean;\n};\n\nexport type LipsyncOutput = {\n frame?: CodecFrame;\n eol?: boolean;\n};\n\nexport class LipsyncBase implements AVProcessor<LipsyncInput> {\n bufferLength: number;\n /**ms */\n baseTime?: number;\n audioBuffer: (LipsyncInput & {\n elapsed: number;\n kind: string;\n [key: string]: any;\n })[][];\n videoBuffer: (LipsyncInput & {\n elapsed: number;\n kind: string;\n [key: string]: any;\n })[][];\n stopped = false;\n /**ms */\n private interval: number;\n private started = false;\n /**ms */\n lastCommited = 0;\n\n constructor(\n private audioOutput: (output: LipsyncOutput) => void,\n private videoOutput: (output: LipsyncOutput) => void,\n private options: Partial<LipSyncOptions> = {}\n ) {\n this.bufferLength = this.options.bufferLength ?? 50;\n this.audioBuffer = [...new Array(this.bufferLength)].map(() => []);\n this.videoBuffer = [...new Array(this.bufferLength)].map(() => []);\n this.interval = this.options.interval ?? 500;\n }\n\n private start() {\n // 2列目にカーソルが移ってから処理を始めることで1列目の処理を完了できる\n if ([...this.audioBuffer[1], ...this.videoBuffer[1]].length === 0) {\n return;\n }\n\n if (this.started) {\n return;\n }\n this.started = true;\n\n let index = 0;\n setInterval(() => {\n const joined = [\n ...this.audioBuffer[index],\n ...this.videoBuffer[index],\n ].filter((b) => b.elapsed >= this.lastCommited);\n const sorted = joined.sort((a, b) => a.frame!.time - b.frame!.time);\n this.audioBuffer[index] = [];\n this.videoBuffer[index] = [];\n\n for (const output of sorted) {\n if (output.kind === \"audio\") {\n this.audioOutput(output);\n } else {\n this.videoOutput(output);\n }\n this.lastCommited = output.elapsed;\n }\n\n index++;\n if (index === this.bufferLength) {\n index = 0;\n }\n }, this.interval);\n }\n\n processAudioInput = ({ frame, eol }: LipsyncInput) => {\n if (!frame) {\n this.stopped = true;\n this.audioOutput({ eol });\n return;\n }\n if (this.stopped) {\n return;\n }\n\n if (this.baseTime == undefined) {\n this.baseTime = frame.time;\n }\n\n /**ms */\n const elapsed = frame.time - this.baseTime;\n if (elapsed < 0 || elapsed < this.lastCommited) {\n return;\n }\n const index = int(elapsed / this.interval) % this.bufferLength;\n this.audioBuffer[index].push({\n frame,\n elapsed,\n kind: \"audio\",\n seq: frame.sequence,\n });\n\n this.start();\n };\n\n processVideoInput = ({ frame, eol }: LipsyncInput) => {\n if (!frame) {\n this.stopped = true;\n this.videoOutput({ eol });\n return;\n }\n if (this.stopped) {\n return;\n }\n\n if (this.baseTime == undefined) {\n this.baseTime = frame.time;\n }\n\n /**ms */\n const elapsed = frame.time - this.baseTime;\n if (elapsed < 0 || elapsed < this.lastCommited) {\n return;\n }\n const index = int(elapsed / this.interval) % this.bufferLength;\n this.videoBuffer[index].push({\n frame,\n elapsed,\n kind: \"video\",\n seq: frame.sequence,\n });\n\n this.start();\n };\n}\n\nexport interface LipSyncOptions {\n interval: number;\n bufferLength: number;\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import { LipsyncBase, LipSyncOptions, LipsyncOutput } from "./lipsync";
2
+ export declare class LipsyncCallback extends LipsyncBase {
3
+ private audioCb;
4
+ private videoCb;
5
+ constructor(options?: Partial<LipSyncOptions>);
6
+ pipeAudio: (cb: (input: LipsyncOutput) => void) => void;
7
+ pipeVideo: (cb: (input: LipsyncOutput) => void) => void;
8
+ inputAudio: ({ frame, eol }: import("./lipsync").LipsyncInput) => void;
9
+ inputVideo: ({ frame, eol }: import("./lipsync").LipsyncInput) => void;
10
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LipsyncCallback = void 0;
4
+ const lipsync_1 = require("./lipsync");
5
+ class LipsyncCallback extends lipsync_1.LipsyncBase {
6
+ constructor(options = {}) {
7
+ super((output) => {
8
+ if (this.audioCb) {
9
+ this.audioCb(output);
10
+ }
11
+ }, (output) => {
12
+ if (this.videoCb) {
13
+ this.videoCb(output);
14
+ }
15
+ }, options);
16
+ Object.defineProperty(this, "audioCb", {
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true,
20
+ value: void 0
21
+ });
22
+ Object.defineProperty(this, "videoCb", {
23
+ enumerable: true,
24
+ configurable: true,
25
+ writable: true,
26
+ value: void 0
27
+ });
28
+ Object.defineProperty(this, "pipeAudio", {
29
+ enumerable: true,
30
+ configurable: true,
31
+ writable: true,
32
+ value: (cb) => {
33
+ this.audioCb = cb;
34
+ }
35
+ });
36
+ Object.defineProperty(this, "pipeVideo", {
37
+ enumerable: true,
38
+ configurable: true,
39
+ writable: true,
40
+ value: (cb) => {
41
+ this.videoCb = cb;
42
+ }
43
+ });
44
+ Object.defineProperty(this, "inputAudio", {
45
+ enumerable: true,
46
+ configurable: true,
47
+ writable: true,
48
+ value: this.processAudioInput
49
+ });
50
+ Object.defineProperty(this, "inputVideo", {
51
+ enumerable: true,
52
+ configurable: true,
53
+ writable: true,
54
+ value: this.processVideoInput
55
+ });
56
+ }
57
+ }
58
+ exports.LipsyncCallback = LipsyncCallback;
59
+ //# sourceMappingURL=lipsyncCallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lipsyncCallback.js","sourceRoot":"","sources":["../../../../../rtp/src/processor/lipsyncCallback.ts"],"names":[],"mappings":";;;AAAA,uCAAuE;AAEvE,MAAa,eAAgB,SAAQ,qBAAW;IAG9C,YAAY,UAAmC,EAAE;QAC/C,KAAK,CACH,CAAC,MAAM,EAAE,EAAE;YACT,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aACtB;QACH,CAAC,EACD,CAAC,MAAM,EAAE,EAAE;YACT,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aACtB;QACH,CAAC,EACD,OAAO,CACR,CAAC;QAfJ;;;;;WAAiD;QACjD;;;;;WAAiD;QAiBjD;;;;mBAAY,CAAC,EAAkC,EAAE,EAAE;gBACjD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YACpB,CAAC;WAAC;QACF;;;;mBAAY,CAAC,EAAkC,EAAE,EAAE;gBACjD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YACpB,CAAC;WAAC;QAEF;;;;mBAAa,IAAI,CAAC,iBAAiB;WAAC;QACpC;;;;mBAAa,IAAI,CAAC,iBAAiB;WAAC;IAVpC,CAAC;CAWF;AA5BD,0CA4BC","sourcesContent":["import { LipsyncBase, LipSyncOptions, LipsyncOutput } from \"./lipsync\";\n\nexport class LipsyncCallback extends LipsyncBase {\n private audioCb!: (input: LipsyncOutput) => void;\n private videoCb!: (input: LipsyncOutput) => void;\n constructor(options: Partial<LipSyncOptions> = {}) {\n super(\n (output) => {\n if (this.audioCb) {\n this.audioCb(output);\n }\n },\n (output) => {\n if (this.videoCb) {\n this.videoCb(output);\n }\n },\n options\n );\n }\n\n pipeAudio = (cb: (input: LipsyncOutput) => void) => {\n this.audioCb = cb;\n };\n pipeVideo = (cb: (input: LipsyncOutput) => void) => {\n this.videoCb = cb;\n };\n\n inputAudio = this.processAudioInput;\n inputVideo = this.processVideoInput;\n}\n"]}
@@ -0,0 +1,24 @@
1
+ import { RtcpPacket, RtpPacket } from "..";
2
+ import { Processor } from "./interface";
3
+ export type NtpTimeInput = {
4
+ rtp?: RtpPacket;
5
+ eol?: boolean;
6
+ rtcp?: RtcpPacket;
7
+ };
8
+ export interface NtpTimeOutput {
9
+ rtp?: RtpPacket;
10
+ /**ms */
11
+ time?: number;
12
+ eol?: boolean;
13
+ }
14
+ export declare class syncRtpBase implements Processor<NtpTimeInput, NtpTimeOutput> {
15
+ clockRate: number;
16
+ ntpTimestamp?: bigint;
17
+ rtpTimestamp?: number;
18
+ buffer: RtpPacket[];
19
+ constructor(clockRate: number);
20
+ processInput({ rtcp, rtp, eol }: NtpTimeInput): NtpTimeOutput[];
21
+ /**sec */
22
+ private calcNtp;
23
+ }
24
+ export declare const ntpTime2Time: (ntp: bigint) => number;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ntpTime2Time = exports.syncRtpBase = void 0;
7
+ const debug_1 = __importDefault(require("debug"));
8
+ const __1 = require("..");
9
+ const lipsync_1 = require("../processor_old/lipsync");
10
+ const log = (0, debug_1.default)("werift-rtp : packages/rtp/src/processor/ntpTime.ts");
11
+ class syncRtpBase {
12
+ constructor(clockRate) {
13
+ Object.defineProperty(this, "clockRate", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: clockRate
18
+ });
19
+ Object.defineProperty(this, "ntpTimestamp", {
20
+ enumerable: true,
21
+ configurable: true,
22
+ writable: true,
23
+ value: void 0
24
+ });
25
+ Object.defineProperty(this, "rtpTimestamp", {
26
+ enumerable: true,
27
+ configurable: true,
28
+ writable: true,
29
+ value: void 0
30
+ });
31
+ Object.defineProperty(this, "buffer", {
32
+ enumerable: true,
33
+ configurable: true,
34
+ writable: true,
35
+ value: []
36
+ });
37
+ }
38
+ processInput({ rtcp, rtp, eol }) {
39
+ if (eol) {
40
+ return [{ eol: true }];
41
+ }
42
+ if (rtcp && rtcp instanceof __1.RtcpSrPacket && !this.ntpTimestamp) {
43
+ const { ntpTimestamp, rtpTimestamp } = rtcp.senderInfo;
44
+ this.ntpTimestamp = ntpTimestamp;
45
+ this.rtpTimestamp = rtpTimestamp;
46
+ }
47
+ if (rtp) {
48
+ this.buffer.push(rtp);
49
+ const res = [];
50
+ this.buffer = this.buffer
51
+ .map((rtp) => {
52
+ const ntp = this.calcNtp(rtp.header.timestamp);
53
+ if (ntp) {
54
+ res.push({ rtp, time: ntp * 1000 });
55
+ return undefined;
56
+ }
57
+ return rtp;
58
+ })
59
+ .filter((r) => r != undefined);
60
+ return res;
61
+ }
62
+ return [];
63
+ }
64
+ /**sec */
65
+ calcNtp(rtpTimestamp) {
66
+ if (this.rtpTimestamp == undefined || this.ntpTimestamp == undefined) {
67
+ return;
68
+ }
69
+ // base rtpTimestamp is rollover
70
+ if (rtpTimestamp - this.rtpTimestamp > lipsync_1.Max32bit - this.clockRate * 60) {
71
+ this.rtpTimestamp += lipsync_1.Max32bit;
72
+ log("base rtpTimestamp is rollover");
73
+ }
74
+ // target rtpTimestamp is rollover
75
+ else if (rtpTimestamp + (lipsync_1.Max32bit - this.clockRate * 60) - this.rtpTimestamp <
76
+ 0) {
77
+ rtpTimestamp += lipsync_1.Max32bit;
78
+ log("target rtpTimestamp is rollover");
79
+ }
80
+ const elapsed = (rtpTimestamp - this.rtpTimestamp) / this.clockRate;
81
+ const ntp = (0, exports.ntpTime2Time)(this.ntpTimestamp) + elapsed;
82
+ return ntp;
83
+ }
84
+ }
85
+ exports.syncRtpBase = syncRtpBase;
86
+ const ntpTime2Time = (ntp) => {
87
+ const [ntpSec, ntpMsec] = (0, __1.bufferReader)((0, __1.bufferWriter)([8], [ntp]), [4, 4]);
88
+ return Number(`${ntpSec}.${ntpMsec}`);
89
+ };
90
+ exports.ntpTime2Time = ntpTime2Time;
91
+ //# sourceMappingURL=ntpTime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ntpTime.js","sourceRoot":"","sources":["../../../../../rtp/src/processor/ntpTime.ts"],"names":[],"mappings":"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","sourcesContent":["import debug from \"debug\";\n\nimport {\n bufferReader,\n bufferWriter,\n RtcpPacket,\n RtcpSrPacket,\n RtpPacket,\n} from \"..\";\nimport { Max32bit } from \"../processor_old/lipsync\";\nimport { Processor } from \"./interface\";\n\nconst log = debug(\"werift-rtp : packages/rtp/src/processor/ntpTime.ts\");\n\nexport type NtpTimeInput = {\n rtp?: RtpPacket;\n eol?: boolean;\n rtcp?: RtcpPacket;\n};\n\nexport interface NtpTimeOutput {\n rtp?: RtpPacket;\n /**ms */\n time?: number;\n eol?: boolean;\n}\n\nexport class syncRtpBase implements Processor<NtpTimeInput, NtpTimeOutput> {\n ntpTimestamp?: bigint;\n rtpTimestamp?: number;\n\n buffer: RtpPacket[] = [];\n\n constructor(public clockRate: number) {}\n\n processInput({ rtcp, rtp, eol }: NtpTimeInput): NtpTimeOutput[] {\n if (eol) {\n return [{ eol: true }];\n }\n\n if (rtcp && rtcp instanceof RtcpSrPacket && !this.ntpTimestamp) {\n const { ntpTimestamp, rtpTimestamp } = rtcp.senderInfo;\n this.ntpTimestamp = ntpTimestamp;\n this.rtpTimestamp = rtpTimestamp;\n }\n\n if (rtp) {\n this.buffer.push(rtp);\n\n const res: NtpTimeOutput[] = [];\n\n this.buffer = this.buffer\n .map((rtp) => {\n const ntp = this.calcNtp(rtp.header.timestamp);\n if (ntp) {\n res.push({ rtp, time: ntp * 1000 });\n return undefined;\n }\n return rtp;\n })\n .filter((r): r is NonNullable<typeof r> => r != undefined);\n return res;\n }\n\n return [];\n }\n\n /**sec */\n private calcNtp(rtpTimestamp: number) {\n if (this.rtpTimestamp == undefined || this.ntpTimestamp == undefined) {\n return;\n }\n\n // base rtpTimestamp is rollover\n if (rtpTimestamp - this.rtpTimestamp > Max32bit - this.clockRate * 60) {\n this.rtpTimestamp += Max32bit;\n log(\"base rtpTimestamp is rollover\");\n }\n\n // target rtpTimestamp is rollover\n else if (\n rtpTimestamp + (Max32bit - this.clockRate * 60) - this.rtpTimestamp <\n 0\n ) {\n rtpTimestamp += Max32bit;\n log(\"target rtpTimestamp is rollover\");\n }\n\n const elapsed = (rtpTimestamp - this.rtpTimestamp) / this.clockRate;\n\n const ntp = ntpTime2Time(this.ntpTimestamp) + elapsed;\n\n return ntp;\n }\n}\n\nexport const ntpTime2Time = (ntp: bigint) => {\n const [ntpSec, ntpMsec] = bufferReader(bufferWriter([8], [ntp]), [4, 4]);\n\n return Number(`${ntpSec}.${ntpMsec}`);\n};\n"]}
@@ -0,0 +1,7 @@
1
+ import { NtpTimeInput, NtpTimeOutput, syncRtpBase as NtpTimeBase } from "./ntpTime";
2
+ export declare class NtpTimeCallback extends NtpTimeBase {
3
+ private cb;
4
+ constructor(clockRate: number);
5
+ pipe: (cb: (input: NtpTimeOutput) => void) => this;
6
+ input: (input: NtpTimeInput) => void;
7
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NtpTimeCallback = void 0;
4
+ const ntpTime_1 = require("./ntpTime");
5
+ class NtpTimeCallback extends ntpTime_1.syncRtpBase {
6
+ constructor(clockRate) {
7
+ super(clockRate);
8
+ Object.defineProperty(this, "cb", {
9
+ enumerable: true,
10
+ configurable: true,
11
+ writable: true,
12
+ value: void 0
13
+ });
14
+ Object.defineProperty(this, "pipe", {
15
+ enumerable: true,
16
+ configurable: true,
17
+ writable: true,
18
+ value: (cb) => {
19
+ this.cb = cb;
20
+ return this;
21
+ }
22
+ });
23
+ Object.defineProperty(this, "input", {
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true,
27
+ value: (input) => {
28
+ for (const output of this.processInput(input)) {
29
+ this.cb(output);
30
+ }
31
+ }
32
+ });
33
+ }
34
+ }
35
+ exports.NtpTimeCallback = NtpTimeCallback;
36
+ //# sourceMappingURL=ntpTimeCallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ntpTimeCallback.js","sourceRoot":"","sources":["../../../../../rtp/src/processor/ntpTimeCallback.ts"],"names":[],"mappings":";;;AAAA,uCAImB;AAEnB,MAAa,eAAgB,SAAQ,qBAAW;IAG9C,YAAY,SAAiB;QAC3B,KAAK,CAAC,SAAS,CAAC,CAAC;QAHnB;;;;;WAA4C;QAM5C;;;;mBAAO,CAAC,EAAkC,EAAE,EAAE;gBAC5C,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;YACd,CAAC;WAAC;QAEF;;;;mBAAQ,CAAC,KAAmB,EAAE,EAAE;gBAC9B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;oBAC7C,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;iBACjB;YACH,CAAC;WAAC;IAXF,CAAC;CAYF;AAjBD,0CAiBC","sourcesContent":["import {\n NtpTimeInput,\n NtpTimeOutput,\n syncRtpBase as NtpTimeBase,\n} from \"./ntpTime\";\n\nexport class NtpTimeCallback extends NtpTimeBase {\n private cb!: (input: NtpTimeOutput) => void;\n\n constructor(clockRate: number) {\n super(clockRate);\n }\n\n pipe = (cb: (input: NtpTimeOutput) => void) => {\n this.cb = cb;\n return this;\n };\n\n input = (input: NtpTimeInput) => {\n for (const output of this.processInput(input)) {\n this.cb(output);\n }\n };\n}\n"]}
@@ -1,2 +1,3 @@
1
+ export * from "./rtcpCallback";
1
2
  export * from "./rtpCallback";
2
3
  export * from "./rtpStream";
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./rtcpCallback"), exports);
17
18
  __exportStar(require("./rtpCallback"), exports);
18
19
  __exportStar(require("./rtpStream"), exports);
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../rtp/src/processor/source/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,8CAA4B","sourcesContent":["export * from \"./rtpCallback\";\nexport * from \"./rtpStream\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../rtp/src/processor/source/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,gDAA8B;AAC9B,8CAA4B","sourcesContent":["export * from \"./rtcpCallback\";\nexport * from \"./rtpCallback\";\nexport * from \"./rtpStream\";\n"]}
@@ -0,0 +1,12 @@
1
+ import { RtcpPacket } from "../../rtcp/rtcp";
2
+ export interface RtcpOutput {
3
+ rtcp?: RtcpPacket;
4
+ eol?: boolean;
5
+ }
6
+ export declare class RtcpSourceCallback {
7
+ private cb?;
8
+ constructor();
9
+ pipe(cb: (chunk: RtcpOutput) => void): void;
10
+ input: (rtcp: RtcpPacket) => void;
11
+ stop(): void;
12
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RtcpSourceCallback = void 0;
4
+ class RtcpSourceCallback {
5
+ constructor() {
6
+ Object.defineProperty(this, "cb", {
7
+ enumerable: true,
8
+ configurable: true,
9
+ writable: true,
10
+ value: void 0
11
+ });
12
+ Object.defineProperty(this, "input", {
13
+ enumerable: true,
14
+ configurable: true,
15
+ writable: true,
16
+ value: (rtcp) => {
17
+ if (this.cb) {
18
+ this.cb({ rtcp });
19
+ }
20
+ }
21
+ });
22
+ }
23
+ pipe(cb) {
24
+ this.cb = cb;
25
+ }
26
+ stop() {
27
+ if (this.cb) {
28
+ this.cb({ eol: true });
29
+ }
30
+ }
31
+ }
32
+ exports.RtcpSourceCallback = RtcpSourceCallback;
33
+ //# sourceMappingURL=rtcpCallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtcpCallback.js","sourceRoot":"","sources":["../../../../../../rtp/src/processor/source/rtcpCallback.ts"],"names":[],"mappings":";;;AAOA,MAAa,kBAAkB;IAG7B;QAFA;;;;;WAAyC;QAQzC;;;;mBAAQ,CAAC,IAAgB,EAAE,EAAE;gBAC3B,IAAI,IAAI,CAAC,EAAE,EAAE;oBACX,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;iBACnB;YACH,CAAC;WAAC;IAVa,CAAC;IAEhB,IAAI,CAAC,EAA+B;QAClC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAQD,IAAI;QACF,IAAI,IAAI,CAAC,EAAE,EAAE;YACX,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;SACxB;IACH,CAAC;CACF;AApBD,gDAoBC","sourcesContent":["import { RtcpPacket } from \"../../rtcp/rtcp\";\n\nexport interface RtcpOutput {\n rtcp?: RtcpPacket;\n eol?: boolean;\n}\n\nexport class RtcpSourceCallback {\n private cb?: (chunk: RtcpOutput) => void;\n\n constructor() {}\n\n pipe(cb: (chunk: RtcpOutput) => void) {\n this.cb = cb;\n }\n\n input = (rtcp: RtcpPacket) => {\n if (this.cb) {\n this.cb({ rtcp });\n }\n };\n\n stop() {\n if (this.cb) {\n this.cb({ eol: true });\n }\n }\n}\n"]}
@@ -4,20 +4,36 @@ exports.RtpSourceCallback = void 0;
4
4
  const rtp_1 = require("../../rtp/rtp");
5
5
  class RtpSourceCallback {
6
6
  constructor(options = {}) {
7
- this.options = options;
8
- this.input = (packet) => {
9
- const rtp = packet instanceof rtp_1.RtpPacket ? packet : rtp_1.RtpPacket.deSerialize(packet);
10
- if (this.options.payloadType != undefined &&
11
- this.options.payloadType !== rtp.header.payloadType) {
12
- if (this.options.clearInvalidPTPacket) {
13
- rtp.clear();
7
+ Object.defineProperty(this, "options", {
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true,
11
+ value: options
12
+ });
13
+ Object.defineProperty(this, "cb", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: void 0
18
+ });
19
+ Object.defineProperty(this, "input", {
20
+ enumerable: true,
21
+ configurable: true,
22
+ writable: true,
23
+ value: (packet) => {
24
+ const rtp = packet instanceof rtp_1.RtpPacket ? packet : rtp_1.RtpPacket.deSerialize(packet);
25
+ if (this.options.payloadType != undefined &&
26
+ this.options.payloadType !== rtp.header.payloadType) {
27
+ if (this.options.clearInvalidPTPacket) {
28
+ rtp.clear();
29
+ }
30
+ return;
31
+ }
32
+ if (this.cb) {
33
+ this.cb({ rtp });
14
34
  }
15
- return;
16
- }
17
- if (this.cb) {
18
- this.cb({ rtp });
19
35
  }
20
- };
36
+ });
21
37
  options.clearInvalidPTPacket = options.clearInvalidPTPacket ?? true;
22
38
  }
23
39
  pipe(cb) {
@@ -1 +1 @@
1
- {"version":3,"file":"rtpCallback.js","sourceRoot":"","sources":["../../../../../../rtp/src/processor/source/rtpCallback.ts"],"names":[],"mappings":";;;AAAA,uCAA0C;AAO1C,MAAa,iBAAiB;IAG5B,YACU,UAGJ,EAAE;QAHE,YAAO,GAAP,OAAO,CAGT;QASR,UAAK,GAAG,CAAC,MAA0B,EAAE,EAAE;YACrC,MAAM,GAAG,GACP,MAAM,YAAY,eAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAEvE,IACE,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,SAAS;gBACrC,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,GAAG,CAAC,MAAM,CAAC,WAAW,EACnD;gBACA,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;oBACrC,GAAG,CAAC,KAAK,EAAE,CAAC;iBACb;gBACD,OAAO;aACR;YAED,IAAI,IAAI,CAAC,EAAE,EAAE;gBACX,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;aAClB;QACH,CAAC,CAAC;QAxBA,OAAO,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,IAAI,IAAI,CAAC;IACtE,CAAC;IAED,IAAI,CAAC,EAA8B;QACjC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAqBD,IAAI;QACF,IAAI,IAAI,CAAC,EAAE,EAAE;YACX,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;SACxB;IACH,CAAC;CACF;AAxCD,8CAwCC","sourcesContent":["import { RtpPacket } from \"../../rtp/rtp\";\n\nexport interface RtpOutput {\n rtp?: RtpPacket;\n eol?: boolean;\n}\n\nexport class RtpSourceCallback {\n private cb?: (chunk: RtpOutput) => void;\n\n constructor(\n private options: {\n payloadType?: number;\n clearInvalidPTPacket?: boolean;\n } = {}\n ) {\n options.clearInvalidPTPacket = options.clearInvalidPTPacket ?? true;\n }\n\n pipe(cb: (chunk: RtpOutput) => void) {\n this.cb = cb;\n }\n\n input = (packet: Buffer | RtpPacket) => {\n const rtp =\n packet instanceof RtpPacket ? packet : RtpPacket.deSerialize(packet);\n\n if (\n this.options.payloadType != undefined &&\n this.options.payloadType !== rtp.header.payloadType\n ) {\n if (this.options.clearInvalidPTPacket) {\n rtp.clear();\n }\n return;\n }\n\n if (this.cb) {\n this.cb({ rtp });\n }\n };\n\n stop() {\n if (this.cb) {\n this.cb({ eol: true });\n }\n }\n}\n"]}
1
+ {"version":3,"file":"rtpCallback.js","sourceRoot":"","sources":["../../../../../../rtp/src/processor/source/rtpCallback.ts"],"names":[],"mappings":";;;AAAA,uCAA0C;AAO1C,MAAa,iBAAiB;IAG5B,YACU,UAGJ,EAAE;;;;;mBAHE;;QAHV;;;;;WAAwC;QAexC;;;;mBAAQ,CAAC,MAA0B,EAAE,EAAE;gBACrC,MAAM,GAAG,GACP,MAAM,YAAY,eAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAEvE,IACE,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,SAAS;oBACrC,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,GAAG,CAAC,MAAM,CAAC,WAAW,EACnD;oBACA,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;wBACrC,GAAG,CAAC,KAAK,EAAE,CAAC;qBACb;oBACD,OAAO;iBACR;gBAED,IAAI,IAAI,CAAC,EAAE,EAAE;oBACX,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;iBAClB;YACH,CAAC;WAAC;QAxBA,OAAO,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,IAAI,IAAI,CAAC;IACtE,CAAC;IAED,IAAI,CAAC,EAA8B;QACjC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAqBD,IAAI;QACF,IAAI,IAAI,CAAC,EAAE,EAAE;YACX,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;SACxB;IACH,CAAC;CACF;AAxCD,8CAwCC","sourcesContent":["import { RtpPacket } from \"../../rtp/rtp\";\n\nexport interface RtpOutput {\n rtp?: RtpPacket;\n eol?: boolean;\n}\n\nexport class RtpSourceCallback {\n private cb?: (chunk: RtpOutput) => void;\n\n constructor(\n private options: {\n payloadType?: number;\n clearInvalidPTPacket?: boolean;\n } = {}\n ) {\n options.clearInvalidPTPacket = options.clearInvalidPTPacket ?? true;\n }\n\n pipe(cb: (chunk: RtpOutput) => void) {\n this.cb = cb;\n }\n\n input = (packet: Buffer | RtpPacket) => {\n const rtp =\n packet instanceof RtpPacket ? packet : RtpPacket.deSerialize(packet);\n\n if (\n this.options.payloadType != undefined &&\n this.options.payloadType !== rtp.header.payloadType\n ) {\n if (this.options.clearInvalidPTPacket) {\n rtp.clear();\n }\n return;\n }\n\n if (this.cb) {\n this.cb({ rtp });\n }\n };\n\n stop() {\n if (this.cb) {\n this.cb({ eol: true });\n }\n }\n}\n"]}