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.
- package/lib/common/src/binary.d.ts +1 -0
- package/lib/common/src/binary.js +74 -21
- package/lib/common/src/binary.js.map +1 -1
- package/lib/common/src/log.js +18 -0
- package/lib/common/src/log.js.map +1 -1
- package/lib/common/src/network.d.ts +1 -1
- package/lib/common/src/network.js +1 -0
- package/lib/common/src/network.js.map +1 -1
- package/lib/common/src/promise.js +22 -7
- package/lib/common/src/promise.js.map +1 -1
- package/lib/common/src/type.d.ts +1 -1
- package/lib/dtls/src/cipher/const.d.ts +7 -7
- package/lib/dtls/src/cipher/key-exchange.js +24 -1
- package/lib/dtls/src/cipher/key-exchange.js.map +1 -1
- package/lib/dtls/src/cipher/suites/abstract.d.ts +2 -2
- package/lib/dtls/src/cipher/suites/abstract.js +36 -2
- package/lib/dtls/src/cipher/suites/abstract.js.map +1 -1
- package/lib/dtls/src/cipher/suites/aead.js +60 -6
- package/lib/dtls/src/cipher/suites/aead.js.map +1 -1
- package/lib/dtls/src/client.js +62 -51
- package/lib/dtls/src/client.js.map +1 -1
- package/lib/dtls/src/context/cipher.js +151 -59
- package/lib/dtls/src/context/cipher.js.map +1 -1
- package/lib/dtls/src/context/dtls.js +90 -14
- package/lib/dtls/src/context/dtls.js.map +1 -1
- package/lib/dtls/src/context/srtp.d.ts +1 -1
- package/lib/dtls/src/context/srtp.js +8 -0
- package/lib/dtls/src/context/srtp.js.map +1 -1
- package/lib/dtls/src/context/transport.js +14 -2
- package/lib/dtls/src/context/transport.js.map +1 -1
- package/lib/dtls/src/flight/client/flight1.js +6 -1
- package/lib/dtls/src/flight/client/flight1.js.map +1 -1
- package/lib/dtls/src/flight/client/flight5.js +12 -2
- package/lib/dtls/src/flight/client/flight5.js.map +1 -1
- package/lib/dtls/src/flight/flight.d.ts +1 -1
- package/lib/dtls/src/flight/flight.js +42 -7
- package/lib/dtls/src/flight/flight.js.map +1 -1
- package/lib/dtls/src/flight/server/flight2.js +4 -2
- package/lib/dtls/src/flight/server/flight2.js.map +1 -1
- package/lib/dtls/src/flight/server/flight4.js +12 -2
- package/lib/dtls/src/flight/server/flight4.js.map +1 -1
- package/lib/dtls/src/flight/server/flight6.js +6 -1
- package/lib/dtls/src/flight/server/flight6.js.map +1 -1
- package/lib/dtls/src/handshake/extensions/ellipticCurves.js +27 -7
- package/lib/dtls/src/handshake/extensions/ellipticCurves.js.map +1 -1
- package/lib/dtls/src/handshake/extensions/extendedMasterSecret.js +6 -1
- package/lib/dtls/src/handshake/extensions/extendedMasterSecret.js.map +1 -1
- package/lib/dtls/src/handshake/extensions/renegotiationIndication.js +27 -7
- package/lib/dtls/src/handshake/extensions/renegotiationIndication.js.map +1 -1
- package/lib/dtls/src/handshake/extensions/signature.js +27 -7
- package/lib/dtls/src/handshake/extensions/signature.js.map +1 -1
- package/lib/dtls/src/handshake/extensions/useSrtp.js +39 -9
- package/lib/dtls/src/handshake/extensions/useSrtp.js.map +1 -1
- package/lib/dtls/src/handshake/message/alert.js +21 -6
- package/lib/dtls/src/handshake/message/alert.js.map +1 -1
- package/lib/dtls/src/handshake/message/certificate.js +26 -5
- package/lib/dtls/src/handshake/message/certificate.js.map +1 -1
- package/lib/dtls/src/handshake/message/changeCipherSpec.js +14 -4
- package/lib/dtls/src/handshake/message/changeCipherSpec.js.map +1 -1
- package/lib/dtls/src/handshake/message/client/certificateVerify.js +33 -7
- package/lib/dtls/src/handshake/message/client/certificateVerify.js.map +1 -1
- package/lib/dtls/src/handshake/message/client/hello.js +68 -18
- package/lib/dtls/src/handshake/message/client/hello.js.map +1 -1
- package/lib/dtls/src/handshake/message/client/keyExchange.js +26 -5
- package/lib/dtls/src/handshake/message/client/keyExchange.js.map +1 -1
- package/lib/dtls/src/handshake/message/finished.js +18 -2
- package/lib/dtls/src/handshake/message/finished.js.map +1 -1
- package/lib/dtls/src/handshake/message/server/certificateRequest.js +40 -9
- package/lib/dtls/src/handshake/message/server/certificateRequest.js.map +1 -1
- package/lib/dtls/src/handshake/message/server/hello.js +60 -14
- package/lib/dtls/src/handshake/message/server/hello.js.map +1 -1
- package/lib/dtls/src/handshake/message/server/helloDone.js +18 -2
- package/lib/dtls/src/handshake/message/server/helloDone.js.map +1 -1
- package/lib/dtls/src/handshake/message/server/helloVerifyRequest.js +33 -7
- package/lib/dtls/src/handshake/message/server/helloVerifyRequest.js.map +1 -1
- package/lib/dtls/src/handshake/message/server/keyExchange.js +75 -19
- package/lib/dtls/src/handshake/message/server/keyExchange.js.map +1 -1
- package/lib/dtls/src/handshake/random.js +21 -6
- package/lib/dtls/src/handshake/random.js.map +1 -1
- package/lib/dtls/src/record/builder.d.ts +1 -1
- package/lib/dtls/src/record/message/fragment.js +49 -14
- package/lib/dtls/src/record/message/fragment.js.map +1 -1
- package/lib/dtls/src/record/message/header.js +84 -24
- package/lib/dtls/src/record/message/header.js.map +1 -1
- package/lib/dtls/src/record/message/plaintext.js +21 -6
- package/lib/dtls/src/record/message/plaintext.js.map +1 -1
- package/lib/dtls/src/server.js +59 -42
- package/lib/dtls/src/server.js.map +1 -1
- package/lib/dtls/src/socket.js +153 -64
- package/lib/dtls/src/socket.js.map +1 -1
- package/lib/dtls/src/transport.js +38 -11
- package/lib/dtls/src/transport.js.map +1 -1
- package/lib/dtls/src/typings/domain.d.ts +4 -4
- package/lib/ice/src/candidate.js +66 -11
- package/lib/ice/src/candidate.js.map +1 -1
- package/lib/ice/src/dns/lookup.js +12 -1
- package/lib/ice/src/dns/lookup.js.map +1 -1
- package/lib/ice/src/exceptions.js +27 -2
- package/lib/ice/src/exceptions.js.map +1 -1
- package/lib/ice/src/helper.d.ts +1 -1
- package/lib/ice/src/helper.js +12 -2
- package/lib/ice/src/helper.js.map +1 -1
- package/lib/ice/src/ice.d.ts +9 -3
- package/lib/ice/src/ice.js +407 -155
- package/lib/ice/src/ice.js.map +1 -1
- package/lib/ice/src/stun/attributes.d.ts +3 -3
- package/lib/ice/src/stun/attributes.js +6 -1
- package/lib/ice/src/stun/attributes.js.map +1 -1
- package/lib/ice/src/stun/message.d.ts +4 -0
- package/lib/ice/src/stun/message.js +24 -3
- package/lib/ice/src/stun/message.js.map +1 -1
- package/lib/ice/src/stun/protocol.js +64 -15
- package/lib/ice/src/stun/protocol.js.map +1 -1
- package/lib/ice/src/stun/transaction.js +99 -36
- package/lib/ice/src/stun/transaction.js.map +1 -1
- package/lib/ice/src/transport.js +57 -21
- package/lib/ice/src/transport.js.map +1 -1
- package/lib/ice/src/turn/protocol.js +176 -40
- package/lib/ice/src/turn/protocol.js.map +1 -1
- package/lib/ice/src/types/model.d.ts +1 -1
- package/lib/rtp/src/codec/av1.d.ts +1 -1
- package/lib/rtp/src/codec/av1.js +118 -30
- package/lib/rtp/src/codec/av1.js.map +1 -1
- package/lib/rtp/src/codec/base.js +8 -0
- package/lib/rtp/src/codec/base.js.map +1 -1
- package/lib/rtp/src/codec/h264.js +55 -0
- package/lib/rtp/src/codec/h264.js.map +1 -1
- package/lib/rtp/src/codec/index.d.ts +2 -0
- package/lib/rtp/src/codec/index.js +12 -2
- package/lib/rtp/src/codec/index.js.map +1 -1
- package/lib/rtp/src/codec/opus.js +8 -0
- package/lib/rtp/src/codec/opus.js.map +1 -1
- package/lib/rtp/src/codec/vp8.js +102 -3
- package/lib/rtp/src/codec/vp8.js.map +1 -1
- package/lib/rtp/src/codec/vp9.js +164 -7
- package/lib/rtp/src/codec/vp9.js.map +1 -1
- package/lib/rtp/src/container/ebml/ebml.js +30 -3
- package/lib/rtp/src/container/ebml/ebml.js.map +1 -1
- package/lib/rtp/src/container/webm.d.ts +1 -1
- package/lib/rtp/src/container/webm.js +44 -13
- package/lib/rtp/src/container/webm.js.map +1 -1
- package/lib/rtp/src/processor/depacketizer.d.ts +16 -8
- package/lib/rtp/src/processor/depacketizer.js +59 -22
- package/lib/rtp/src/processor/depacketizer.js.map +1 -1
- package/lib/rtp/src/processor/depacketizerCallback.js +24 -8
- package/lib/rtp/src/processor/depacketizerCallback.js.map +1 -1
- package/lib/rtp/src/processor/depacketizerTransformer.d.ts +2 -2
- package/lib/rtp/src/processor/depacketizerTransformer.js +6 -0
- package/lib/rtp/src/processor/depacketizerTransformer.js.map +1 -1
- package/lib/rtp/src/processor/index.d.ts +4 -2
- package/lib/rtp/src/processor/index.js +4 -2
- package/lib/rtp/src/processor/index.js.map +1 -1
- package/lib/rtp/src/processor/interface.d.ts +4 -0
- package/lib/rtp/src/processor/interface.js.map +1 -1
- package/lib/rtp/src/processor/jitterBuffer.d.ts +2 -1
- package/lib/rtp/src/processor/jitterBuffer.js +40 -8
- package/lib/rtp/src/processor/jitterBuffer.js.map +1 -1
- package/lib/rtp/src/processor/jitterBufferCallback.js +30 -9
- package/lib/rtp/src/processor/jitterBufferCallback.js.map +1 -1
- package/lib/rtp/src/processor/jitterBufferTransformer.js +12 -1
- package/lib/rtp/src/processor/jitterBufferTransformer.js.map +1 -1
- package/lib/rtp/src/processor/lipsync.d.ts +42 -0
- package/lib/rtp/src/processor/lipsync.js +178 -0
- package/lib/rtp/src/processor/lipsync.js.map +1 -0
- package/lib/rtp/src/processor/lipsyncCallback.d.ts +10 -0
- package/lib/rtp/src/processor/lipsyncCallback.js +59 -0
- package/lib/rtp/src/processor/lipsyncCallback.js.map +1 -0
- package/lib/rtp/src/processor/ntpTime.d.ts +24 -0
- package/lib/rtp/src/processor/ntpTime.js +91 -0
- package/lib/rtp/src/processor/ntpTime.js.map +1 -0
- package/lib/rtp/src/processor/ntpTimeCallback.d.ts +7 -0
- package/lib/rtp/src/processor/ntpTimeCallback.js +36 -0
- package/lib/rtp/src/processor/ntpTimeCallback.js.map +1 -0
- package/lib/rtp/src/processor/source/index.d.ts +1 -0
- package/lib/rtp/src/processor/source/index.js +1 -0
- package/lib/rtp/src/processor/source/index.js.map +1 -1
- package/lib/rtp/src/processor/source/rtcpCallback.d.ts +12 -0
- package/lib/rtp/src/processor/source/rtcpCallback.js +33 -0
- package/lib/rtp/src/processor/source/rtcpCallback.js.map +1 -0
- package/lib/rtp/src/processor/source/rtpCallback.js +28 -12
- package/lib/rtp/src/processor/source/rtpCallback.js.map +1 -1
- package/lib/rtp/src/processor/source/rtpStream.js +38 -10
- package/lib/rtp/src/processor/source/rtpStream.js.map +1 -1
- package/lib/rtp/src/processor/webm.d.ts +11 -4
- package/lib/rtp/src/processor/webm.js +169 -46
- package/lib/rtp/src/processor/webm.js.map +1 -1
- package/lib/rtp/src/processor/webmCallback.d.ts +5 -3
- package/lib/rtp/src/processor/webmCallback.js +52 -8
- package/lib/rtp/src/processor/webmCallback.js.map +1 -1
- package/lib/rtp/src/processor/webmStream.d.ts +2 -2
- package/lib/rtp/src/processor/webmStream.js +24 -0
- package/lib/rtp/src/processor/webmStream.js.map +1 -1
- package/lib/rtp/src/processor_old/base.d.ts +18 -0
- package/lib/rtp/src/processor_old/base.js +51 -0
- package/lib/rtp/src/processor_old/base.js.map +1 -0
- package/lib/rtp/src/processor_old/lipsync.d.ts +30 -0
- package/lib/rtp/src/processor_old/lipsync.js +119 -0
- package/lib/rtp/src/processor_old/lipsync.js.map +1 -0
- package/lib/rtp/src/rtcp/header.js +30 -5
- package/lib/rtp/src/rtcp/header.js.map +1 -1
- package/lib/rtp/src/rtcp/psfb/fullIntraRequest.d.ts +1 -1
- package/lib/rtp/src/rtcp/psfb/fullIntraRequest.js +30 -3
- package/lib/rtp/src/rtcp/psfb/fullIntraRequest.js.map +1 -1
- package/lib/rtp/src/rtcp/psfb/index.d.ts +1 -1
- package/lib/rtp/src/rtcp/psfb/index.js +18 -2
- package/lib/rtp/src/rtcp/psfb/index.js.map +1 -1
- package/lib/rtp/src/rtcp/psfb/pictureLossIndication.js +30 -3
- package/lib/rtp/src/rtcp/psfb/pictureLossIndication.js.map +1 -1
- package/lib/rtp/src/rtcp/psfb/remb.js +66 -5
- package/lib/rtp/src/rtcp/psfb/remb.js.map +1 -1
- package/lib/rtp/src/rtcp/rr.js +68 -4
- package/lib/rtp/src/rtcp/rr.js.map +1 -1
- package/lib/rtp/src/rtcp/rtcp.d.ts +1 -1
- package/lib/rtp/src/rtcp/rtpfb/index.d.ts +1 -1
- package/lib/rtp/src/rtcp/rtpfb/index.js +24 -2
- package/lib/rtp/src/rtcp/rtpfb/index.js.map +1 -1
- package/lib/rtp/src/rtcp/rtpfb/nack.d.ts +5 -0
- package/lib/rtp/src/rtcp/rtpfb/nack.js +43 -3
- package/lib/rtp/src/rtcp/rtpfb/nack.js.map +1 -1
- package/lib/rtp/src/rtcp/rtpfb/twcc.js +154 -11
- package/lib/rtp/src/rtcp/rtpfb/twcc.js.map +1 -1
- package/lib/rtp/src/rtcp/sdes.js +42 -4
- package/lib/rtp/src/rtcp/sdes.js.map +1 -1
- package/lib/rtp/src/rtcp/sr.js +56 -5
- package/lib/rtp/src/rtcp/sr.js.map +1 -1
- package/lib/rtp/src/rtp/red/encoder.js +18 -3
- package/lib/rtp/src/rtp/red/encoder.js.map +1 -1
- package/lib/rtp/src/rtp/red/handler.js +12 -2
- package/lib/rtp/src/rtp/red/handler.js.map +1 -1
- package/lib/rtp/src/rtp/red/packet.js +18 -2
- package/lib/rtp/src/rtp/red/packet.js.map +1 -1
- package/lib/rtp/src/rtp/rtp.d.ts +3 -3
- package/lib/rtp/src/rtp/rtp.js +104 -17
- package/lib/rtp/src/rtp/rtp.js.map +1 -1
- package/lib/rtp/src/srtp/cipher/ctr.js +26 -10
- package/lib/rtp/src/srtp/cipher/ctr.js.map +1 -1
- package/lib/rtp/src/srtp/cipher/gcm.d.ts +3 -0
- package/lib/rtp/src/srtp/cipher/gcm.js +40 -20
- package/lib/rtp/src/srtp/cipher/gcm.js.map +1 -1
- package/lib/rtp/src/srtp/cipher/index.js +24 -4
- package/lib/rtp/src/srtp/cipher/index.js.map +1 -1
- package/lib/rtp/src/srtp/const.d.ts +1 -1
- package/lib/rtp/src/srtp/context/context.d.ts +1 -1
- package/lib/rtp/src/srtp/context/context.js +84 -5
- package/lib/rtp/src/srtp/context/context.js.map +1 -1
- package/lib/rtp/src/srtp/session.d.ts +2 -2
- package/lib/rtp/src/srtp/session.js +24 -1
- package/lib/rtp/src/srtp/session.js.map +1 -1
- package/lib/rtp/src/srtp/srtcp.js +15 -5
- package/lib/rtp/src/srtp/srtcp.js.map +1 -1
- package/lib/rtp/src/srtp/srtp.js +15 -5
- package/lib/rtp/src/srtp/srtp.js.map +1 -1
- package/lib/sctp/src/chunk.js +349 -69
- package/lib/sctp/src/chunk.js.map +1 -1
- package/lib/sctp/src/helper.d.ts +1 -1
- package/lib/sctp/src/param.d.ts +3 -3
- package/lib/sctp/src/param.js +66 -11
- package/lib/sctp/src/param.js.map +1 -1
- package/lib/sctp/src/sctp.d.ts +1 -1
- package/lib/sctp/src/sctp.js +479 -138
- package/lib/sctp/src/sctp.js.map +1 -1
- package/lib/sctp/src/transport.js +31 -10
- package/lib/sctp/src/transport.js.map +1 -1
- package/lib/webrtc/src/dataChannel.d.ts +1 -1
- package/lib/webrtc/src/dataChannel.js +145 -15
- package/lib/webrtc/src/dataChannel.js.map +1 -1
- package/lib/webrtc/src/helper.js +37 -12
- package/lib/webrtc/src/helper.js.map +1 -1
- package/lib/webrtc/src/media/parameters.d.ts +1 -1
- package/lib/webrtc/src/media/parameters.js +124 -3
- package/lib/webrtc/src/media/parameters.js.map +1 -1
- package/lib/webrtc/src/media/receiver/nack.d.ts +4 -4
- package/lib/webrtc/src/media/receiver/nack.js +85 -33
- package/lib/webrtc/src/media/receiver/nack.js.map +1 -1
- package/lib/webrtc/src/media/receiver/receiverTwcc.d.ts +1 -1
- package/lib/webrtc/src/media/receiver/receiverTwcc.js +42 -6
- package/lib/webrtc/src/media/receiver/receiverTwcc.js.map +1 -1
- package/lib/webrtc/src/media/receiver/statistics.js +61 -5
- package/lib/webrtc/src/media/receiver/statistics.js.map +1 -1
- package/lib/webrtc/src/media/router.d.ts +1 -1
- package/lib/webrtc/src/media/router.js +108 -83
- package/lib/webrtc/src/media/router.js.map +1 -1
- package/lib/webrtc/src/media/rtpReceiver.js +188 -33
- package/lib/webrtc/src/media/rtpReceiver.js.map +1 -1
- package/lib/webrtc/src/media/rtpSender.js +279 -42
- package/lib/webrtc/src/media/rtpSender.js.map +1 -1
- package/lib/webrtc/src/media/rtpTransceiver.d.ts +2 -2
- package/lib/webrtc/src/media/rtpTransceiver.js +102 -18
- package/lib/webrtc/src/media/rtpTransceiver.js.map +1 -1
- package/lib/webrtc/src/media/sender/cumulativeResult.js +36 -6
- package/lib/webrtc/src/media/sender/cumulativeResult.js.map +1 -1
- package/lib/webrtc/src/media/sender/senderBWE.js +57 -12
- package/lib/webrtc/src/media/sender/senderBWE.js.map +1 -1
- package/lib/webrtc/src/media/track.js +135 -24
- package/lib/webrtc/src/media/track.js.map +1 -1
- package/lib/webrtc/src/nonstandard/recorder/index.d.ts +7 -4
- package/lib/webrtc/src/nonstandard/recorder/index.js +50 -6
- package/lib/webrtc/src/nonstandard/recorder/index.js.map +1 -1
- package/lib/webrtc/src/nonstandard/recorder/writer/index.js +12 -2
- package/lib/webrtc/src/nonstandard/recorder/writer/index.js.map +1 -1
- package/lib/webrtc/src/nonstandard/recorder/writer/webm.d.ts +2 -2
- package/lib/webrtc/src/nonstandard/recorder/writer/webm.js +39 -35
- package/lib/webrtc/src/nonstandard/recorder/writer/webm.js.map +1 -1
- package/lib/webrtc/src/nonstandard/userMedia.js +158 -56
- package/lib/webrtc/src/nonstandard/userMedia.js.map +1 -1
- package/lib/webrtc/src/peerConnection.d.ts +2 -2
- package/lib/webrtc/src/peerConnection.js +260 -58
- package/lib/webrtc/src/peerConnection.js.map +1 -1
- package/lib/webrtc/src/sdp.js +287 -24
- package/lib/webrtc/src/sdp.js.map +1 -1
- package/lib/webrtc/src/transport/dtls.d.ts +3 -3
- package/lib/webrtc/src/transport/dtls.js +185 -30
- package/lib/webrtc/src/transport/dtls.js.map +1 -1
- package/lib/webrtc/src/transport/ice.d.ts +2 -2
- package/lib/webrtc/src/transport/ice.js +193 -25
- package/lib/webrtc/src/transport/ice.js.map +1 -1
- package/lib/webrtc/src/transport/sctp.js +193 -101
- package/lib/webrtc/src/transport/sctp.js.map +1 -1
- package/lib/webrtc/src/types/domain.d.ts +3 -3
- package/lib/webrtc/src/types/util.d.ts +2 -2
- package/lib/webrtc/src/utils.js +12 -2
- package/lib/webrtc/src/utils.js.map +1 -1
- package/package.json +15 -15
- package/src/dataChannel.ts +3 -1
- package/src/media/receiver/nack.ts +23 -19
- package/src/media/rtpReceiver.ts +5 -0
- package/src/media/rtpSender.ts +22 -19
- package/src/nonstandard/recorder/index.ts +12 -4
- package/src/nonstandard/recorder/writer/webm.ts +42 -50
- package/src/transport/dtls.ts +7 -3
- package/src/transport/ice.ts +6 -3
- package/src/transport/sctp.ts +3 -1
- package/lib/rtp/src/processor/avBuffer.d.ts +0 -36
- package/lib/rtp/src/processor/avBuffer.js +0 -107
- package/lib/rtp/src/processor/avBuffer.js.map +0 -1
- package/lib/rtp/src/processor/avBufferCallback.d.ts +0 -10
- package/lib/rtp/src/processor/avBufferCallback.js +0 -27
- 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
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
|
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,
|
|
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"]}
|
|
@@ -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
|
|
8
|
-
|
|
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
|
|
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,
|
|
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
|
-
|
|
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
|
|
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
|
|
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;
|
|
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
|
|
8
|
-
|
|
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
|
|
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,
|
|
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
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
|
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":";;;AAAA,gDAKgC;AAEhC,MAAa,2BAA2B;IAatC,YAAY,QAA8C,EAAE;
|
|
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"]}
|