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,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Output = exports.Pipeline = void 0;
4
+ class Pipeline {
5
+ constructor(streams) {
6
+ Object.defineProperty(this, "children", {
7
+ enumerable: true,
8
+ configurable: true,
9
+ writable: true,
10
+ value: void 0
11
+ });
12
+ Object.defineProperty(this, "disposer", {
13
+ enumerable: true,
14
+ configurable: true,
15
+ writable: true,
16
+ value: void 0
17
+ });
18
+ const disposers = [];
19
+ {
20
+ const { unSubscribe } = streams?.rtpStream?.subscribe?.((packet) => {
21
+ this.pushRtpPackets([packet]);
22
+ }) ?? {};
23
+ disposers.push(unSubscribe);
24
+ }
25
+ {
26
+ const { unSubscribe } = streams?.rtcpStream?.subscribe?.((packet) => {
27
+ this.pushRtcpPackets([packet]);
28
+ }) ?? {};
29
+ disposers.push(unSubscribe);
30
+ }
31
+ this.disposer = () => {
32
+ disposers.forEach((d) => d?.());
33
+ };
34
+ }
35
+ pipe(children) {
36
+ this.children = children;
37
+ return this;
38
+ }
39
+ pushRtpPackets(packets) { }
40
+ pushRtcpPackets(packets) { }
41
+ stop() {
42
+ this.disposer?.();
43
+ }
44
+ }
45
+ exports.Pipeline = Pipeline;
46
+ class Output {
47
+ pushRtpPackets(packets) { }
48
+ pushRtcpPackets(packets) { }
49
+ }
50
+ exports.Output = Output;
51
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../rtp/src/processor_old/base.ts"],"names":[],"mappings":";;;AAIA,MAAsB,QAAQ;IAI5B,YAAY,OAGX;QAND;;;;;WAAuC;QACvC;;;;;WAA8B;QAM5B,MAAM,SAAS,GAAiC,EAAE,CAAC;QACnD;YACE,MAAM,EAAE,WAAW,EAAE,GACnB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE;gBACzC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAChC,CAAC,CAAC,IAAI,EAAE,CAAC;YACX,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC7B;QACD;YACE,MAAM,EAAE,WAAW,EAAE,GACnB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC1C,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACjC,CAAC,CAAC,IAAI,EAAE,CAAC;YACX,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC7B;QACD,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE;YACnB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,QAA2B;QAC9B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,cAAc,CAAC,OAAoB,IAAG,CAAC;IACvC,eAAe,CAAC,OAAqB,IAAG,CAAC;IACzC,IAAI;QACF,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;IACpB,CAAC;CACF;AApCD,4BAoCC;AAED,MAAsB,MAAM;IAC1B,cAAc,CAAE,OAAoB,IAAG,CAAC;IACxC,eAAe,CAAE,OAAqB,IAAG,CAAC;CAC3C;AAHD,wBAGC","sourcesContent":["import Event from \"rx.mini\";\n\nimport { RtcpPacket, RtpPacket } from \"..\";\n\nexport abstract class Pipeline {\n protected children?: Pipeline | Output;\n private disposer?: () => void;\n\n constructor(streams?: {\n rtpStream?: Event<[RtpPacket]>;\n rtcpStream?: Event<[RtcpPacket]>;\n }) {\n const disposers: ((() => void) | undefined)[] = [];\n {\n const { unSubscribe } =\n streams?.rtpStream?.subscribe?.((packet) => {\n this.pushRtpPackets([packet]);\n }) ?? {};\n disposers.push(unSubscribe);\n }\n {\n const { unSubscribe } =\n streams?.rtcpStream?.subscribe?.((packet) => {\n this.pushRtcpPackets([packet]);\n }) ?? {};\n disposers.push(unSubscribe);\n }\n this.disposer = () => {\n disposers.forEach((d) => d?.());\n };\n }\n pipe(children: Pipeline | Output): Pipeline | Output {\n this.children = children;\n return this;\n }\n pushRtpPackets(packets: RtpPacket[]) {}\n pushRtcpPackets(packets: RtcpPacket[]) {}\n stop() {\n this.disposer?.();\n }\n}\n\nexport abstract class Output {\n pushRtpPackets?(packets: RtpPacket[]) {}\n pushRtcpPackets?(packets: RtcpPacket[]) {}\n}\n"]}
@@ -0,0 +1,30 @@
1
+ import Event from "rx.mini";
2
+ import { RtpPacket } from "..";
3
+ import { RtcpPacket } from "../rtcp/rtcp";
4
+ import { Pipeline } from "./base";
5
+ export declare class LipSync extends Pipeline {
6
+ clockRate: number;
7
+ mismatch: number;
8
+ baseNtpTimestamp?: bigint;
9
+ baseRtpTimestamp?: number;
10
+ private rtpPackets;
11
+ constructor(clockRate: number, mismatch: number, streams?: {
12
+ rtpStream?: Event<[RtpPacket]>;
13
+ rtcpStream?: Event<[RtcpPacket]>;
14
+ });
15
+ pushRtcpPackets(packets: RtcpPacket[]): void;
16
+ private srReceived;
17
+ pushRtpPackets(packets: RtpPacket[]): void;
18
+ private calcNtpTime;
19
+ }
20
+ export declare const ntpTime2Time: (ntp: bigint) => number;
21
+ /**4294967295 */
22
+ export declare const Max32bit: number;
23
+ export interface BufferResolve {
24
+ packets: {
25
+ packet: RtpPacket;
26
+ offset: number;
27
+ }[];
28
+ /**NTP seconds */
29
+ startAtNtpTime: number;
30
+ }
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Max32bit = exports.ntpTime2Time = exports.LipSync = void 0;
4
+ const src_1 = require("../../../common/src");
5
+ const __1 = require("..");
6
+ const base_1 = require("./base");
7
+ // #### リップシンク
8
+ // ```
9
+ // 0 1 2 3
10
+ // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
11
+ // +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
12
+ // sender | NTP timestamp, most significant word |
13
+ // info +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
14
+ // | NTP timestamp, least significant word |
15
+ // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
16
+ // | RTP timestamp |
17
+ // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
18
+ // | sender's packet count |
19
+ // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
20
+ // | sender's octet count |
21
+ // +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
22
+ // ```
23
+ // - RTCP-SRにはNTP timestampとRTCP-SRを送った時点で最後に送ったRTPパケットのtimestampが載っている
24
+ // - RTP timestampは開始時点の値がランダムなので、Audio,VideoのRTPパケットの同期にはそのままでは使えない
25
+ // - ある時点のRTP timestampのNTP timestampがRTCP-SRでわかるので、任意のRTP timestampに対応するNTP timestampを計算できる
26
+ // - Audio,VideoのRTPパケットの同期にはRTP timestampをNTP timestampに変換して行えば良い
27
+ // WIP
28
+ // todo impl
29
+ class LipSync extends base_1.Pipeline {
30
+ constructor(clockRate, mismatch, streams) {
31
+ super(streams);
32
+ Object.defineProperty(this, "clockRate", {
33
+ enumerable: true,
34
+ configurable: true,
35
+ writable: true,
36
+ value: clockRate
37
+ });
38
+ Object.defineProperty(this, "mismatch", {
39
+ enumerable: true,
40
+ configurable: true,
41
+ writable: true,
42
+ value: mismatch
43
+ });
44
+ Object.defineProperty(this, "baseNtpTimestamp", {
45
+ enumerable: true,
46
+ configurable: true,
47
+ writable: true,
48
+ value: void 0
49
+ });
50
+ Object.defineProperty(this, "baseRtpTimestamp", {
51
+ enumerable: true,
52
+ configurable: true,
53
+ writable: true,
54
+ value: void 0
55
+ });
56
+ Object.defineProperty(this, "rtpPackets", {
57
+ enumerable: true,
58
+ configurable: true,
59
+ writable: true,
60
+ value: {}
61
+ });
62
+ }
63
+ pushRtcpPackets(packets) {
64
+ packets.forEach((sr) => {
65
+ if (sr instanceof __1.RtcpSrPacket) {
66
+ this.srReceived(sr);
67
+ }
68
+ });
69
+ this.children?.pushRtcpPackets?.(packets);
70
+ }
71
+ srReceived(sr) {
72
+ const { ntpTimestamp, rtpTimestamp } = sr.senderInfo;
73
+ this.baseNtpTimestamp = ntpTimestamp;
74
+ this.baseRtpTimestamp = rtpTimestamp;
75
+ }
76
+ pushRtpPackets(packets) {
77
+ packets.forEach((p) => {
78
+ this.rtpPackets[p.header.payloadType] =
79
+ this.rtpPackets[p.header.payloadType] ?? [];
80
+ this.rtpPackets[p.header.payloadType].push(p);
81
+ });
82
+ if (Object.keys(this.rtpPackets).length === 2) {
83
+ const [a, b] = Object.values(this.rtpPackets);
84
+ const lastA = this.calcNtpTime(a.at(-1).header.timestamp);
85
+ const lastB = this.calcNtpTime(b.at(-1).header.timestamp);
86
+ if (lastA == undefined || lastB == undefined) {
87
+ this.children?.pushRtpPackets?.(packets);
88
+ }
89
+ else {
90
+ //
91
+ }
92
+ }
93
+ }
94
+ calcNtpTime(rtpTimestamp) {
95
+ if (!this.baseRtpTimestamp || !this.baseNtpTimestamp) {
96
+ return;
97
+ }
98
+ // base rtpTimestamp is rollover
99
+ if (rtpTimestamp - this.baseRtpTimestamp > exports.Max32bit - this.clockRate * 60) {
100
+ this.baseRtpTimestamp += exports.Max32bit;
101
+ }
102
+ // target rtpTimestamp is rollover
103
+ else if (rtpTimestamp + (exports.Max32bit - this.clockRate * 60) - this.baseRtpTimestamp <
104
+ 0) {
105
+ rtpTimestamp += exports.Max32bit;
106
+ }
107
+ const elapsed = (rtpTimestamp - this.baseRtpTimestamp) / this.clockRate;
108
+ return (0, exports.ntpTime2Time)(this.baseNtpTimestamp) + elapsed;
109
+ }
110
+ }
111
+ exports.LipSync = LipSync;
112
+ const ntpTime2Time = (ntp) => {
113
+ const [ntpSec, ntpMsec] = (0, src_1.bufferReader)((0, src_1.bufferWriter)([8], [ntp]), [4, 4]);
114
+ return Number(`${ntpSec}.${ntpMsec}`);
115
+ };
116
+ exports.ntpTime2Time = ntpTime2Time;
117
+ /**4294967295 */
118
+ exports.Max32bit = Number((0x01n << 32n) - 1n);
119
+ //# sourceMappingURL=lipsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lipsync.js","sourceRoot":"","sources":["../../../../../rtp/src/processor_old/lipsync.ts"],"names":[],"mappings":"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","sourcesContent":["import Event from \"rx.mini\";\n\nimport { bufferReader, bufferWriter } from \"../../../common/src\";\nimport { RtcpSrPacket, RtpPacket } from \"..\";\nimport { RtcpPacket } from \"../rtcp/rtcp\";\nimport { Pipeline } from \"./base\";\n\n// #### リップシンク\n// ```\n// 0 1 2 3\n// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\n// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+\n// sender | NTP timestamp, most significant word |\n// info +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n// | NTP timestamp, least significant word |\n// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n// | RTP timestamp |\n// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n// | sender's packet count |\n// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n// | sender's octet count |\n// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+\n// ```\n\n// - RTCP-SRにはNTP timestampとRTCP-SRを送った時点で最後に送ったRTPパケットのtimestampが載っている\n// - RTP timestampは開始時点の値がランダムなので、Audio,VideoのRTPパケットの同期にはそのままでは使えない\n// - ある時点のRTP timestampのNTP timestampがRTCP-SRでわかるので、任意のRTP timestampに対応するNTP timestampを計算できる\n// - Audio,VideoのRTPパケットの同期にはRTP timestampをNTP timestampに変換して行えば良い\n\n// WIP\n// todo impl\nexport class LipSync extends Pipeline {\n baseNtpTimestamp?: bigint;\n baseRtpTimestamp?: number;\n private rtpPackets: { [pt: number]: RtpPacket[] } = {};\n\n constructor(\n public clockRate: number,\n public mismatch: number,\n streams?: {\n rtpStream?: Event<[RtpPacket]>;\n rtcpStream?: Event<[RtcpPacket]>;\n }\n ) {\n super(streams);\n }\n\n pushRtcpPackets(packets: RtcpPacket[]) {\n packets.forEach((sr) => {\n if (sr instanceof RtcpSrPacket) {\n this.srReceived(sr);\n }\n });\n this.children?.pushRtcpPackets?.(packets);\n }\n\n private srReceived(sr: RtcpSrPacket) {\n const { ntpTimestamp, rtpTimestamp } = sr.senderInfo;\n this.baseNtpTimestamp = ntpTimestamp;\n this.baseRtpTimestamp = rtpTimestamp;\n }\n\n pushRtpPackets(packets: RtpPacket[]) {\n packets.forEach((p) => {\n this.rtpPackets[p.header.payloadType] =\n this.rtpPackets[p.header.payloadType] ?? [];\n this.rtpPackets[p.header.payloadType].push(p);\n });\n if (Object.keys(this.rtpPackets).length === 2) {\n const [a, b] = Object.values(this.rtpPackets);\n const lastA = this.calcNtpTime(a.at(-1)!.header.timestamp);\n const lastB = this.calcNtpTime(b.at(-1)!.header.timestamp);\n\n if (lastA == undefined || lastB == undefined) {\n this.children?.pushRtpPackets?.(packets);\n } else {\n //\n }\n }\n }\n\n private calcNtpTime(rtpTimestamp: number) {\n if (!this.baseRtpTimestamp || !this.baseNtpTimestamp) {\n return;\n }\n\n // base rtpTimestamp is rollover\n if (rtpTimestamp - this.baseRtpTimestamp > Max32bit - this.clockRate * 60) {\n this.baseRtpTimestamp += Max32bit;\n }\n // target rtpTimestamp is rollover\n else if (\n rtpTimestamp + (Max32bit - this.clockRate * 60) - this.baseRtpTimestamp <\n 0\n ) {\n rtpTimestamp += Max32bit;\n }\n\n const elapsed = (rtpTimestamp - this.baseRtpTimestamp) / this.clockRate;\n\n return ntpTime2Time(this.baseNtpTimestamp) + elapsed;\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\n/**4294967295 */\nexport const Max32bit = Number((0x01n << 32n) - 1n);\n\nexport interface BufferResolve {\n packets: {\n packet: RtpPacket;\n offset: number;\n }[];\n /**NTP seconds */\n startAtNtpTime: number;\n}\n"]}
@@ -12,12 +12,37 @@ exports.RTCP_HEADER_SIZE = 4;
12
12
  */
13
13
  class RtcpHeader {
14
14
  constructor(props = {}) {
15
- this.version = 2;
16
- this.padding = false;
17
- this.count = 0;
18
- this.type = 0;
15
+ Object.defineProperty(this, "version", {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value: 2
20
+ });
21
+ Object.defineProperty(this, "padding", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: false
26
+ });
27
+ Object.defineProperty(this, "count", {
28
+ enumerable: true,
29
+ configurable: true,
30
+ writable: true,
31
+ value: 0
32
+ });
33
+ Object.defineProperty(this, "type", {
34
+ enumerable: true,
35
+ configurable: true,
36
+ writable: true,
37
+ value: 0
38
+ });
19
39
  /**このパケットの長さは、ヘッダーと任意のパディングを含む32ビットワードから 1を引いたものである */
20
- this.length = 0;
40
+ Object.defineProperty(this, "length", {
41
+ enumerable: true,
42
+ configurable: true,
43
+ writable: true,
44
+ value: 0
45
+ });
21
46
  Object.assign(this, props);
22
47
  }
23
48
  serialize() {
@@ -1 +1 @@
1
- {"version":3,"file":"header.js","sourceRoot":"","sources":["../../../../../rtp/src/rtcp/header.ts"],"names":[],"mappings":";;;AAAA,6CAK6B;AAEhB,QAAA,gBAAgB,GAAG,CAAC,CAAC;AAElC;;;;;;GAMG;AAEH,MAAa,UAAU;IAQrB,YAAY,QAA6B,EAAE;QAP3C,YAAO,GAAW,CAAC,CAAC;QACpB,YAAO,GAAY,KAAK,CAAC;QACzB,UAAK,GAAW,CAAC,CAAC;QAClB,SAAI,GAAW,CAAC,CAAC;QACjB,sDAAsD;QACtD,WAAM,GAAW,CAAC,CAAC;QAGjB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,SAAS;QACP,MAAM,MAAM,GAAG,IAAI,eAAS,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAA,kBAAY,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5E,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAW;QAC5B,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,IAAA,kBAAY,EAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAA,YAAM,EAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,IAAA,YAAM,EAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,IAAA,YAAM,EAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,OAAO,IAAI,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;CACF;AA5BD,gCA4BC","sourcesContent":["import {\n BitWriter,\n bufferReader,\n bufferWriter,\n getBit,\n} from \"../../../common/src\";\n\nexport const RTCP_HEADER_SIZE = 4;\n\n/*\n * 0 1 2 3\n * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n * |V=2|P| RC | PT | length |\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n */\n\nexport class RtcpHeader {\n version: number = 2;\n padding: boolean = false;\n count: number = 0;\n type: number = 0;\n /**このパケットの長さは、ヘッダーと任意のパディングを含む32ビットワードから 1を引いたものである */\n length: number = 0;\n\n constructor(props: Partial<RtcpHeader> = {}) {\n Object.assign(this, props);\n }\n\n serialize() {\n const v_p_rc = new BitWriter(8);\n v_p_rc.set(2, 0, this.version);\n if (this.padding) v_p_rc.set(1, 2, 1);\n v_p_rc.set(5, 3, this.count);\n const buf = bufferWriter([1, 1, 2], [v_p_rc.value, this.type, this.length]);\n return buf;\n }\n\n static deSerialize(buf: Buffer) {\n const [v_p_rc, type, length] = bufferReader(buf, [1, 1, 2]);\n const version = getBit(v_p_rc, 0, 2);\n const padding = getBit(v_p_rc, 2, 1) > 0;\n const count = getBit(v_p_rc, 3, 5);\n return new RtcpHeader({ version, padding, count, type, length });\n }\n}\n"]}
1
+ {"version":3,"file":"header.js","sourceRoot":"","sources":["../../../../../rtp/src/rtcp/header.ts"],"names":[],"mappings":";;;AAAA,6CAK6B;AAEhB,QAAA,gBAAgB,GAAG,CAAC,CAAC;AAElC;;;;;;GAMG;AAEH,MAAa,UAAU;IAQrB,YAAY,QAA6B,EAAE;QAP3C;;;;mBAAkB,CAAC;WAAC;QACpB;;;;mBAAmB,KAAK;WAAC;QACzB;;;;mBAAgB,CAAC;WAAC;QAClB;;;;mBAAe,CAAC;WAAC;QACjB,sDAAsD;QACtD;;;;mBAAiB,CAAC;WAAC;QAGjB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,SAAS;QACP,MAAM,MAAM,GAAG,IAAI,eAAS,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAA,kBAAY,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5E,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAW;QAC5B,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,IAAA,kBAAY,EAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAA,YAAM,EAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,IAAA,YAAM,EAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,IAAA,YAAM,EAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,OAAO,IAAI,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;CACF;AA5BD,gCA4BC","sourcesContent":["import {\n BitWriter,\n bufferReader,\n bufferWriter,\n getBit,\n} from \"../../../common/src\";\n\nexport const RTCP_HEADER_SIZE = 4;\n\n/*\n * 0 1 2 3\n * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n * |V=2|P| RC | PT | length |\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n */\n\nexport class RtcpHeader {\n version: number = 2;\n padding: boolean = false;\n count: number = 0;\n type: number = 0;\n /**このパケットの長さは、ヘッダーと任意のパディングを含む32ビットワードから 1を引いたものである */\n length: number = 0;\n\n constructor(props: Partial<RtcpHeader> = {}) {\n Object.assign(this, props);\n }\n\n serialize() {\n const v_p_rc = new BitWriter(8);\n v_p_rc.set(2, 0, this.version);\n if (this.padding) v_p_rc.set(1, 2, 1);\n v_p_rc.set(5, 3, this.count);\n const buf = bufferWriter([1, 1, 2], [v_p_rc.value, this.type, this.length]);\n return buf;\n }\n\n static deSerialize(buf: Buffer) {\n const [v_p_rc, type, length] = bufferReader(buf, [1, 1, 2]);\n const version = getBit(v_p_rc, 0, 2);\n const padding = getBit(v_p_rc, 2, 1) > 0;\n const count = getBit(v_p_rc, 3, 5);\n return new RtcpHeader({ version, padding, count, type, length });\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- declare type firEntry = {
2
+ type firEntry = {
3
3
  ssrc: number;
4
4
  sequenceNumber: number;
5
5
  };
@@ -4,8 +4,30 @@ exports.FullIntraRequest = void 0;
4
4
  const src_1 = require("../../../../common/src");
5
5
  class FullIntraRequest {
6
6
  constructor(props = {}) {
7
- this.count = FullIntraRequest.count;
8
- this.fir = [];
7
+ Object.defineProperty(this, "count", {
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true,
11
+ value: FullIntraRequest.count
12
+ });
13
+ Object.defineProperty(this, "senderSsrc", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: void 0
18
+ });
19
+ Object.defineProperty(this, "mediaSsrc", {
20
+ enumerable: true,
21
+ configurable: true,
22
+ writable: true,
23
+ value: void 0
24
+ });
25
+ Object.defineProperty(this, "fir", {
26
+ enumerable: true,
27
+ configurable: true,
28
+ writable: true,
29
+ value: []
30
+ });
9
31
  Object.assign(this, props);
10
32
  }
11
33
  get length() {
@@ -30,5 +52,10 @@ class FullIntraRequest {
30
52
  }
31
53
  }
32
54
  exports.FullIntraRequest = FullIntraRequest;
33
- FullIntraRequest.count = 4;
55
+ Object.defineProperty(FullIntraRequest, "count", {
56
+ enumerable: true,
57
+ configurable: true,
58
+ writable: true,
59
+ value: 4
60
+ });
34
61
  //# sourceMappingURL=fullIntraRequest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fullIntraRequest.js","sourceRoot":"","sources":["../../../../../../rtp/src/rtcp/psfb/fullIntraRequest.ts"],"names":[],"mappings":";;;AAAA,gDAAoE;AAIpE,MAAa,gBAAgB;IAQ3B,YAAY,QAAmC,EAAE;QANjD,UAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC;QAI/B,QAAG,GAAe,EAAE,CAAC;QAGnB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAY;QAC7B,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,IAAA,kBAAY,EAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAe,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACvC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SACvE;QAED,OAAO,IAAI,gBAAgB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,SAAS;QACP,MAAM,KAAK,GAAG,IAAA,kBAAY,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAEtE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;YAC/C,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC;;AApCH,4CAqCC;AApCQ,sBAAK,GAAG,CAAC,CAAC","sourcesContent":["import { bufferReader, bufferWriter } from \"../../../../common/src\";\n\ntype firEntry = { ssrc: number; sequenceNumber: number };\n\nexport class FullIntraRequest {\n static count = 4;\n count = FullIntraRequest.count;\n\n senderSsrc!: number;\n mediaSsrc!: number;\n fir: firEntry[] = [];\n\n constructor(props: Partial<FullIntraRequest> = {}) {\n Object.assign(this, props);\n }\n\n get length() {\n return Math.floor(this.serialize().length / 4 - 1);\n }\n\n static deSerialize(data: Buffer) {\n const [senderSsrc, mediaSsrc] = bufferReader(data, [4, 4]);\n const fir: firEntry[] = [];\n for (let i = 8; i < data.length; i += 8) {\n fir.push({ ssrc: data.readUInt32BE(i), sequenceNumber: data[i + 4] });\n }\n\n return new FullIntraRequest({ senderSsrc, mediaSsrc, fir });\n }\n\n serialize() {\n const ssrcs = bufferWriter([4, 4], [this.senderSsrc, this.mediaSsrc]);\n\n const fir = Buffer.alloc(this.fir.length * 8);\n this.fir.forEach(({ ssrc, sequenceNumber }, i) => {\n fir.writeUInt32BE(ssrc, i * 8);\n fir[i * 8 + 4] = sequenceNumber;\n });\n\n return Buffer.concat([ssrcs, fir]);\n }\n}\n"]}
1
+ {"version":3,"file":"fullIntraRequest.js","sourceRoot":"","sources":["../../../../../../rtp/src/rtcp/psfb/fullIntraRequest.ts"],"names":[],"mappings":";;;AAAA,gDAAoE;AAIpE,MAAa,gBAAgB;IAQ3B,YAAY,QAAmC,EAAE;QANjD;;;;mBAAQ,gBAAgB,CAAC,KAAK;WAAC;QAE/B;;;;;WAAoB;QACpB;;;;;WAAmB;QACnB;;;;mBAAkB,EAAE;WAAC;QAGnB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAY;QAC7B,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,IAAA,kBAAY,EAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAe,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACvC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SACvE;QAED,OAAO,IAAI,gBAAgB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,SAAS;QACP,MAAM,KAAK,GAAG,IAAA,kBAAY,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAEtE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;YAC/C,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC;;AApCH,4CAqCC;AApCQ;;;;WAAQ,CAAC;GAAC","sourcesContent":["import { bufferReader, bufferWriter } from \"../../../../common/src\";\n\ntype firEntry = { ssrc: number; sequenceNumber: number };\n\nexport class FullIntraRequest {\n static count = 4;\n count = FullIntraRequest.count;\n\n senderSsrc!: number;\n mediaSsrc!: number;\n fir: firEntry[] = [];\n\n constructor(props: Partial<FullIntraRequest> = {}) {\n Object.assign(this, props);\n }\n\n get length() {\n return Math.floor(this.serialize().length / 4 - 1);\n }\n\n static deSerialize(data: Buffer) {\n const [senderSsrc, mediaSsrc] = bufferReader(data, [4, 4]);\n const fir: firEntry[] = [];\n for (let i = 8; i < data.length; i += 8) {\n fir.push({ ssrc: data.readUInt32BE(i), sequenceNumber: data[i + 4] });\n }\n\n return new FullIntraRequest({ senderSsrc, mediaSsrc, fir });\n }\n\n serialize() {\n const ssrcs = bufferWriter([4, 4], [this.senderSsrc, this.mediaSsrc]);\n\n const fir = Buffer.alloc(this.fir.length * 8);\n this.fir.forEach(({ ssrc, sequenceNumber }, i) => {\n fir.writeUInt32BE(ssrc, i * 8);\n fir[i * 8 + 4] = sequenceNumber;\n });\n\n return Buffer.concat([ssrcs, fir]);\n }\n}\n"]}
@@ -3,7 +3,7 @@ import { RtcpHeader } from "../header";
3
3
  import { FullIntraRequest } from "./fullIntraRequest";
4
4
  import { PictureLossIndication } from "./pictureLossIndication";
5
5
  import { ReceiverEstimatedMaxBitrate } from "./remb";
6
- declare type Feedback = FullIntraRequest | PictureLossIndication | ReceiverEstimatedMaxBitrate;
6
+ type Feedback = FullIntraRequest | PictureLossIndication | ReceiverEstimatedMaxBitrate;
7
7
  export declare class RtcpPayloadSpecificFeedback {
8
8
  static readonly type = 206;
9
9
  readonly type = 206;
@@ -12,7 +12,18 @@ const remb_1 = require("./remb");
12
12
  const log = (0, debug_1.default)("werift/rtp/rtcp/psfb/index");
13
13
  class RtcpPayloadSpecificFeedback {
14
14
  constructor(props = {}) {
15
- this.type = RtcpPayloadSpecificFeedback.type;
15
+ Object.defineProperty(this, "type", {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value: RtcpPayloadSpecificFeedback.type
20
+ });
21
+ Object.defineProperty(this, "feedback", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: void 0
26
+ });
16
27
  Object.assign(this, props);
17
28
  }
18
29
  serialize() {
@@ -39,5 +50,10 @@ class RtcpPayloadSpecificFeedback {
39
50
  }
40
51
  }
41
52
  exports.RtcpPayloadSpecificFeedback = RtcpPayloadSpecificFeedback;
42
- RtcpPayloadSpecificFeedback.type = 206;
53
+ Object.defineProperty(RtcpPayloadSpecificFeedback, "type", {
54
+ enumerable: true,
55
+ configurable: true,
56
+ writable: true,
57
+ value: 206
58
+ });
43
59
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../rtp/src/rtcp/psfb/index.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,kCAA8C;AAC9C,yDAAsD;AACtD,mEAAgE;AAChE,iCAAqD;AAErD,MAAM,GAAG,GAAG,IAAA,eAAK,EAAC,4BAA4B,CAAC,CAAC;AAOhD,MAAa,2BAA2B;IAMtC,YAAY,QAA8C,EAAE;QAJnD,SAAI,GAAG,2BAA2B,CAAC,IAAI,CAAC;QAK/C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,SAAS;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC1C,OAAO,0BAAmB,CAAC,SAAS,CAClC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,QAAQ,CAAC,KAAK,EACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,MAAM,CACrB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAY,EAAE,MAAkB;QACjD,IAAI,QAA8B,CAAC;QAEnC,QAAQ,MAAM,CAAC,KAAK,EAAE;YACpB,KAAK,mCAAgB,CAAC,KAAK;gBACzB,QAAQ,GAAG,mCAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC9C,MAAM;YACR,KAAK,6CAAqB,CAAC,KAAK;gBAC9B,QAAQ,GAAG,6CAAqB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACnD,MAAM;YACR,KAAK,kCAA2B,CAAC,KAAK;gBACpC,QAAQ,GAAG,kCAA2B,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACzD,MAAM;YACR;gBACE,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzC,MAAM;SACT;QAED,OAAO,IAAI,2BAA2B,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;;AAvCH,kEAwCC;AAvCiB,gCAAI,GAAG,GAAG,CAAC","sourcesContent":["import debug from \"debug\";\n\nimport { RtcpHeader } from \"../header\";\nimport { RtcpPacketConverter } from \"../rtcp\";\nimport { FullIntraRequest } from \"./fullIntraRequest\";\nimport { PictureLossIndication } from \"./pictureLossIndication\";\nimport { ReceiverEstimatedMaxBitrate } from \"./remb\";\n\nconst log = debug(\"werift/rtp/rtcp/psfb/index\");\n\ntype Feedback =\n | FullIntraRequest\n | PictureLossIndication\n | ReceiverEstimatedMaxBitrate;\n\nexport class RtcpPayloadSpecificFeedback {\n static readonly type = 206;\n readonly type = RtcpPayloadSpecificFeedback.type;\n\n feedback!: Feedback;\n\n constructor(props: Partial<RtcpPayloadSpecificFeedback> = {}) {\n Object.assign(this, props);\n }\n\n serialize() {\n const payload = this.feedback.serialize();\n return RtcpPacketConverter.serialize(\n this.type,\n this.feedback.count,\n payload,\n this.feedback.length\n );\n }\n\n static deSerialize(data: Buffer, header: RtcpHeader) {\n let feedback: Feedback | undefined;\n\n switch (header.count) {\n case FullIntraRequest.count:\n feedback = FullIntraRequest.deSerialize(data);\n break;\n case PictureLossIndication.count:\n feedback = PictureLossIndication.deSerialize(data);\n break;\n case ReceiverEstimatedMaxBitrate.count:\n feedback = ReceiverEstimatedMaxBitrate.deSerialize(data);\n break;\n default:\n log(\"unknown psfb packet\", header.count);\n break;\n }\n\n return new RtcpPayloadSpecificFeedback({ feedback });\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../rtp/src/rtcp/psfb/index.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,kCAA8C;AAC9C,yDAAsD;AACtD,mEAAgE;AAChE,iCAAqD;AAErD,MAAM,GAAG,GAAG,IAAA,eAAK,EAAC,4BAA4B,CAAC,CAAC;AAOhD,MAAa,2BAA2B;IAMtC,YAAY,QAA8C,EAAE;QAJ5D;;;;mBAAgB,2BAA2B,CAAC,IAAI;WAAC;QAEjD;;;;;WAAoB;QAGlB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,SAAS;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC1C,OAAO,0BAAmB,CAAC,SAAS,CAClC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,QAAQ,CAAC,KAAK,EACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,MAAM,CACrB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAY,EAAE,MAAkB;QACjD,IAAI,QAA8B,CAAC;QAEnC,QAAQ,MAAM,CAAC,KAAK,EAAE;YACpB,KAAK,mCAAgB,CAAC,KAAK;gBACzB,QAAQ,GAAG,mCAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC9C,MAAM;YACR,KAAK,6CAAqB,CAAC,KAAK;gBAC9B,QAAQ,GAAG,6CAAqB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACnD,MAAM;YACR,KAAK,kCAA2B,CAAC,KAAK;gBACpC,QAAQ,GAAG,kCAA2B,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACzD,MAAM;YACR;gBACE,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzC,MAAM;SACT;QAED,OAAO,IAAI,2BAA2B,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;;AAvCH,kEAwCC;AAvCQ;;;;WAAgB,GAAG;GAAC","sourcesContent":["import debug from \"debug\";\n\nimport { RtcpHeader } from \"../header\";\nimport { RtcpPacketConverter } from \"../rtcp\";\nimport { FullIntraRequest } from \"./fullIntraRequest\";\nimport { PictureLossIndication } from \"./pictureLossIndication\";\nimport { ReceiverEstimatedMaxBitrate } from \"./remb\";\n\nconst log = debug(\"werift/rtp/rtcp/psfb/index\");\n\ntype Feedback =\n | FullIntraRequest\n | PictureLossIndication\n | ReceiverEstimatedMaxBitrate;\n\nexport class RtcpPayloadSpecificFeedback {\n static readonly type = 206;\n readonly type = RtcpPayloadSpecificFeedback.type;\n\n feedback!: Feedback;\n\n constructor(props: Partial<RtcpPayloadSpecificFeedback> = {}) {\n Object.assign(this, props);\n }\n\n serialize() {\n const payload = this.feedback.serialize();\n return RtcpPacketConverter.serialize(\n this.type,\n this.feedback.count,\n payload,\n this.feedback.length\n );\n }\n\n static deSerialize(data: Buffer, header: RtcpHeader) {\n let feedback: Feedback | undefined;\n\n switch (header.count) {\n case FullIntraRequest.count:\n feedback = FullIntraRequest.deSerialize(data);\n break;\n case PictureLossIndication.count:\n feedback = PictureLossIndication.deSerialize(data);\n break;\n case ReceiverEstimatedMaxBitrate.count:\n feedback = ReceiverEstimatedMaxBitrate.deSerialize(data);\n break;\n default:\n log(\"unknown psfb packet\", header.count);\n break;\n }\n\n return new RtcpPayloadSpecificFeedback({ feedback });\n }\n}\n"]}
@@ -4,8 +4,30 @@ exports.PictureLossIndication = void 0;
4
4
  const src_1 = require("../../../../common/src");
5
5
  class PictureLossIndication {
6
6
  constructor(props = {}) {
7
- this.count = PictureLossIndication.count;
8
- this.length = 2;
7
+ Object.defineProperty(this, "count", {
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true,
11
+ value: PictureLossIndication.count
12
+ });
13
+ Object.defineProperty(this, "length", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: 2
18
+ });
19
+ Object.defineProperty(this, "senderSsrc", {
20
+ enumerable: true,
21
+ configurable: true,
22
+ writable: true,
23
+ value: void 0
24
+ });
25
+ Object.defineProperty(this, "mediaSsrc", {
26
+ enumerable: true,
27
+ configurable: true,
28
+ writable: true,
29
+ value: void 0
30
+ });
9
31
  Object.assign(this, props);
10
32
  }
11
33
  static deSerialize(data) {
@@ -17,5 +39,10 @@ class PictureLossIndication {
17
39
  }
18
40
  }
19
41
  exports.PictureLossIndication = PictureLossIndication;
20
- PictureLossIndication.count = 1;
42
+ Object.defineProperty(PictureLossIndication, "count", {
43
+ enumerable: true,
44
+ configurable: true,
45
+ writable: true,
46
+ value: 1
47
+ });
21
48
  //# sourceMappingURL=pictureLossIndication.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pictureLossIndication.js","sourceRoot":"","sources":["../../../../../../rtp/src/rtcp/psfb/pictureLossIndication.ts"],"names":[],"mappings":";;;AAAA,gDAAoE;AAEpE,MAAa,qBAAqB;IAQhC,YAAY,QAAwC,EAAE;QANtD,UAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC;QACpC,WAAM,GAAG,CAAC,CAAC;QAMT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAY;QAC7B,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,IAAA,kBAAY,EAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,IAAI,qBAAqB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,SAAS;QACP,OAAO,IAAA,kBAAY,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACjE,CAAC;;AAnBH,sDAoBC;AAnBQ,2BAAK,GAAG,CAAC,CAAC","sourcesContent":["import { bufferReader, bufferWriter } from \"../../../../common/src\";\n\nexport class PictureLossIndication {\n static count = 1;\n count = PictureLossIndication.count;\n length = 2;\n\n senderSsrc!: number;\n mediaSsrc!: number;\n\n constructor(props: Partial<PictureLossIndication> = {}) {\n Object.assign(this, props);\n }\n\n static deSerialize(data: Buffer) {\n const [senderSsrc, mediaSsrc] = bufferReader(data, [4, 4]);\n return new PictureLossIndication({ senderSsrc, mediaSsrc });\n }\n\n serialize() {\n return bufferWriter([4, 4], [this.senderSsrc, this.mediaSsrc]);\n }\n}\n"]}
1
+ {"version":3,"file":"pictureLossIndication.js","sourceRoot":"","sources":["../../../../../../rtp/src/rtcp/psfb/pictureLossIndication.ts"],"names":[],"mappings":";;;AAAA,gDAAoE;AAEpE,MAAa,qBAAqB;IAQhC,YAAY,QAAwC,EAAE;QANtD;;;;mBAAQ,qBAAqB,CAAC,KAAK;WAAC;QACpC;;;;mBAAS,CAAC;WAAC;QAEX;;;;;WAAoB;QACpB;;;;;WAAmB;QAGjB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAY;QAC7B,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,IAAA,kBAAY,EAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,IAAI,qBAAqB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,SAAS;QACP,OAAO,IAAA,kBAAY,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACjE,CAAC;;AAnBH,sDAoBC;AAnBQ;;;;WAAQ,CAAC;GAAC","sourcesContent":["import { bufferReader, bufferWriter } from \"../../../../common/src\";\n\nexport class PictureLossIndication {\n static count = 1;\n count = PictureLossIndication.count;\n length = 2;\n\n senderSsrc!: number;\n mediaSsrc!: number;\n\n constructor(props: Partial<PictureLossIndication> = {}) {\n Object.assign(this, props);\n }\n\n static deSerialize(data: Buffer) {\n const [senderSsrc, mediaSsrc] = bufferReader(data, [4, 4]);\n return new PictureLossIndication({ senderSsrc, mediaSsrc });\n }\n\n serialize() {\n return bufferWriter([4, 4], [this.senderSsrc, this.mediaSsrc]);\n }\n}\n"]}
@@ -4,10 +4,66 @@ exports.ReceiverEstimatedMaxBitrate = void 0;
4
4
  const src_1 = require("../../../../common/src");
5
5
  class ReceiverEstimatedMaxBitrate {
6
6
  constructor(props = {}) {
7
- this.count = ReceiverEstimatedMaxBitrate.count;
8
- this.uniqueID = "REMB";
9
- this.ssrcNum = 0;
10
- this.ssrcFeedbacks = [];
7
+ Object.defineProperty(this, "length", {
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true,
11
+ value: void 0
12
+ });
13
+ Object.defineProperty(this, "count", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: ReceiverEstimatedMaxBitrate.count
18
+ });
19
+ Object.defineProperty(this, "senderSsrc", {
20
+ enumerable: true,
21
+ configurable: true,
22
+ writable: true,
23
+ value: void 0
24
+ });
25
+ Object.defineProperty(this, "mediaSsrc", {
26
+ enumerable: true,
27
+ configurable: true,
28
+ writable: true,
29
+ value: void 0
30
+ });
31
+ Object.defineProperty(this, "uniqueID", {
32
+ enumerable: true,
33
+ configurable: true,
34
+ writable: true,
35
+ value: "REMB"
36
+ });
37
+ Object.defineProperty(this, "ssrcNum", {
38
+ enumerable: true,
39
+ configurable: true,
40
+ writable: true,
41
+ value: 0
42
+ });
43
+ Object.defineProperty(this, "brExp", {
44
+ enumerable: true,
45
+ configurable: true,
46
+ writable: true,
47
+ value: void 0
48
+ });
49
+ Object.defineProperty(this, "brMantissa", {
50
+ enumerable: true,
51
+ configurable: true,
52
+ writable: true,
53
+ value: void 0
54
+ });
55
+ Object.defineProperty(this, "bitrate", {
56
+ enumerable: true,
57
+ configurable: true,
58
+ writable: true,
59
+ value: void 0
60
+ });
61
+ Object.defineProperty(this, "ssrcFeedbacks", {
62
+ enumerable: true,
63
+ configurable: true,
64
+ writable: true,
65
+ value: []
66
+ });
11
67
  Object.assign(this, props);
12
68
  }
13
69
  static deSerialize(data) {
@@ -50,5 +106,10 @@ class ReceiverEstimatedMaxBitrate {
50
106
  }
51
107
  }
52
108
  exports.ReceiverEstimatedMaxBitrate = ReceiverEstimatedMaxBitrate;
53
- ReceiverEstimatedMaxBitrate.count = 15;
109
+ Object.defineProperty(ReceiverEstimatedMaxBitrate, "count", {
110
+ enumerable: true,
111
+ configurable: true,
112
+ writable: true,
113
+ value: 15
114
+ });
54
115
  //# sourceMappingURL=remb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"remb.js","sourceRoot":"","sources":["../../../../../../rtp/src/rtcp/psfb/remb.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BitWriter,\n bufferReader,\n bufferWriter,\n getBit,\n} from \"../../../../common/src\";\n\nexport class ReceiverEstimatedMaxBitrate {\n static count = 15;\n length!: number;\n count = ReceiverEstimatedMaxBitrate.count;\n senderSsrc!: number;\n mediaSsrc!: number;\n readonly uniqueID: string = \"REMB\";\n ssrcNum: number = 0;\n brExp!: number;\n brMantissa!: number;\n bitrate!: bigint;\n ssrcFeedbacks: number[] = [];\n\n constructor(props: Partial<ReceiverEstimatedMaxBitrate> = {}) {\n Object.assign(this, props);\n }\n\n static deSerialize(data: Buffer) {\n const [senderSsrc, mediaSsrc, uniqueID, ssrcNum, e_m] = bufferReader(\n data,\n [4, 4, 4, 1, 1]\n );\n\n const brExp = getBit(e_m, 0, 6);\n const brMantissa = (getBit(e_m, 6, 2) << 16) + (data[14] << 8) + data[15];\n\n const bitrate =\n brExp > 46 ? 18446744073709551615n : BigInt(brMantissa) << BigInt(brExp);\n\n const ssrcFeedbacks: number[] = [];\n for (let i = 16; i < data.length; i += 4) {\n const feedback = data.slice(i).readUIntBE(0, 4);\n ssrcFeedbacks.push(feedback);\n }\n\n return new ReceiverEstimatedMaxBitrate({\n senderSsrc,\n mediaSsrc,\n uniqueID: bufferWriter([4], [uniqueID]).toString(),\n ssrcNum,\n brExp,\n brMantissa,\n ssrcFeedbacks,\n bitrate,\n });\n }\n\n serialize() {\n const constant = Buffer.concat([\n bufferWriter([4, 4], [this.senderSsrc, this.mediaSsrc]),\n Buffer.from(this.uniqueID),\n bufferWriter([1], [this.ssrcNum]),\n ]);\n\n const writer = new BitWriter(24);\n writer.set(6, 0, this.brExp).set(18, 6, this.brMantissa);\n const feedbacks = Buffer.concat(\n this.ssrcFeedbacks.map((feedback) => bufferWriter([4], [feedback]))\n );\n\n const buf = Buffer.concat([\n constant,\n bufferWriter([3], [writer.value]),\n feedbacks,\n ]);\n this.length = buf.length / 4;\n return buf;\n }\n}\n"]}
1
+ {"version":3,"file":"remb.js","sourceRoot":"","sources":["../../../../../../rtp/src/rtcp/psfb/remb.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BitWriter,\n bufferReader,\n bufferWriter,\n getBit,\n} from \"../../../../common/src\";\n\nexport class ReceiverEstimatedMaxBitrate {\n static count = 15;\n length!: number;\n count = ReceiverEstimatedMaxBitrate.count;\n senderSsrc!: number;\n mediaSsrc!: number;\n readonly uniqueID: string = \"REMB\";\n ssrcNum: number = 0;\n brExp!: number;\n brMantissa!: number;\n bitrate!: bigint;\n ssrcFeedbacks: number[] = [];\n\n constructor(props: Partial<ReceiverEstimatedMaxBitrate> = {}) {\n Object.assign(this, props);\n }\n\n static deSerialize(data: Buffer) {\n const [senderSsrc, mediaSsrc, uniqueID, ssrcNum, e_m] = bufferReader(\n data,\n [4, 4, 4, 1, 1]\n );\n\n const brExp = getBit(e_m, 0, 6);\n const brMantissa = (getBit(e_m, 6, 2) << 16) + (data[14] << 8) + data[15];\n\n const bitrate =\n brExp > 46 ? 18446744073709551615n : BigInt(brMantissa) << BigInt(brExp);\n\n const ssrcFeedbacks: number[] = [];\n for (let i = 16; i < data.length; i += 4) {\n const feedback = data.slice(i).readUIntBE(0, 4);\n ssrcFeedbacks.push(feedback);\n }\n\n return new ReceiverEstimatedMaxBitrate({\n senderSsrc,\n mediaSsrc,\n uniqueID: bufferWriter([4], [uniqueID]).toString(),\n ssrcNum,\n brExp,\n brMantissa,\n ssrcFeedbacks,\n bitrate,\n });\n }\n\n serialize() {\n const constant = Buffer.concat([\n bufferWriter([4, 4], [this.senderSsrc, this.mediaSsrc]),\n Buffer.from(this.uniqueID),\n bufferWriter([1], [this.ssrcNum]),\n ]);\n\n const writer = new BitWriter(24);\n writer.set(6, 0, this.brExp).set(18, 6, this.brMantissa);\n const feedbacks = Buffer.concat(\n this.ssrcFeedbacks.map((feedback) => bufferWriter([4], [feedback]))\n );\n\n const buf = Buffer.concat([\n constant,\n bufferWriter([3], [writer.value]),\n feedbacks,\n ]);\n this.length = buf.length / 4;\n return buf;\n }\n}\n"]}