@lakutata/webrtc 0.0.0-stage → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +23 -0
- package/README.md +509 -2
- package/README.zh-CN.md +399 -0
- package/THIRD_PARTY_NOTICES.md +652 -0
- package/dist/cjs/client/SignalingConnection.d.ts +81 -0
- package/dist/cjs/client/SignalingConnection.js +67 -0
- package/dist/cjs/cluster/Cluster.d.ts +503 -0
- package/dist/cjs/cluster/Cluster.js +546 -0
- package/dist/cjs/cluster/ClusterFrames.d.ts +24 -0
- package/dist/cjs/cluster/ClusterFrames.js +90 -0
- package/dist/cjs/cluster/ClusterTURN.d.ts +63 -0
- package/dist/cjs/cluster/ClusterTURN.js +78 -0
- package/dist/cjs/cluster/Rendezvous.d.ts +8 -0
- package/dist/cjs/cluster/Rendezvous.js +23 -0
- package/dist/cjs/cluster/transports/ClusterTransport.d.ts +34 -0
- package/dist/cjs/cluster/transports/ClusterTransport.js +2 -0
- package/dist/cjs/cluster/transports/LoadClient.d.ts +6 -0
- package/dist/cjs/cluster/transports/LoadClient.js +80 -0
- package/dist/cjs/cluster/transports/MemoryClusterTransport.d.ts +13 -0
- package/dist/cjs/cluster/transports/MemoryClusterTransport.js +47 -0
- package/dist/cjs/cluster/transports/NATSClusterTransport.d.ts +23 -0
- package/dist/cjs/cluster/transports/NATSClusterTransport.js +70 -0
- package/dist/cjs/cluster/transports/RedisClusterTransport.d.ts +23 -0
- package/dist/cjs/cluster/transports/RedisClusterTransport.js +77 -0
- package/dist/cjs/exceptions/ClusterRequestException.d.ts +11 -0
- package/dist/cjs/exceptions/ClusterRequestException.js +18 -0
- package/dist/cjs/exceptions/ClusterTimeoutException.d.ts +10 -0
- package/dist/cjs/exceptions/ClusterTimeoutException.js +17 -0
- package/dist/cjs/exceptions/ClusterTransportNotFoundException.d.ts +11 -0
- package/dist/cjs/exceptions/ClusterTransportNotFoundException.js +18 -0
- package/dist/cjs/exceptions/SignalingClientRequiredException.d.ts +12 -0
- package/dist/cjs/exceptions/SignalingClientRequiredException.js +19 -0
- package/dist/cjs/exceptions/SignalingConnectionException.d.ts +12 -0
- package/dist/cjs/exceptions/SignalingConnectionException.js +19 -0
- package/dist/cjs/exceptions/SignalingDeniedException.d.ts +11 -0
- package/dist/cjs/exceptions/SignalingDeniedException.js +18 -0
- package/dist/cjs/exceptions/SignalingLimitException.d.ts +11 -0
- package/dist/cjs/exceptions/SignalingLimitException.js +18 -0
- package/dist/cjs/exceptions/SignalingNotAMemberException.d.ts +11 -0
- package/dist/cjs/exceptions/SignalingNotAMemberException.js +18 -0
- package/dist/cjs/exceptions/WHEPDeniedException.d.ts +15 -0
- package/dist/cjs/exceptions/WHEPDeniedException.js +22 -0
- package/dist/cjs/exceptions/WHEPLimitException.d.ts +15 -0
- package/dist/cjs/exceptions/WHEPLimitException.js +22 -0
- package/dist/cjs/exceptions/WHEPMediaTypeException.d.ts +15 -0
- package/dist/cjs/exceptions/WHEPMediaTypeException.js +22 -0
- package/dist/cjs/exceptions/WHEPOfferException.d.ts +16 -0
- package/dist/cjs/exceptions/WHEPOfferException.js +23 -0
- package/dist/cjs/exceptions/WHEPSessionNotFoundException.d.ts +15 -0
- package/dist/cjs/exceptions/WHEPSessionNotFoundException.js +22 -0
- package/dist/cjs/exceptions/WHIPDeniedException.d.ts +15 -0
- package/dist/cjs/exceptions/WHIPDeniedException.js +22 -0
- package/dist/cjs/exceptions/WHIPLimitException.d.ts +15 -0
- package/dist/cjs/exceptions/WHIPLimitException.js +22 -0
- package/dist/cjs/exceptions/WHIPMediaTypeException.d.ts +15 -0
- package/dist/cjs/exceptions/WHIPMediaTypeException.js +22 -0
- package/dist/cjs/exceptions/WHIPOfferException.d.ts +16 -0
- package/dist/cjs/exceptions/WHIPOfferException.js +23 -0
- package/dist/cjs/exceptions/WHIPSessionNotFoundException.d.ts +15 -0
- package/dist/cjs/exceptions/WHIPSessionNotFoundException.js +22 -0
- package/dist/cjs/exports/Client.d.ts +11 -0
- package/dist/cjs/exports/Client.js +29 -0
- package/dist/cjs/exports/WebRTC.d.ts +48 -0
- package/dist/cjs/exports/WebRTC.js +72 -0
- package/dist/cjs/lib/common/binary.d.ts +51 -0
- package/dist/cjs/lib/common/binary.js +264 -0
- package/dist/cjs/lib/common/binaryData.d.ts +116 -0
- package/dist/cjs/lib/common/binaryData.js +400 -0
- package/dist/cjs/lib/common/crc.d.ts +4 -0
- package/dist/cjs/lib/common/crc.js +122 -0
- package/dist/cjs/lib/common/deque.d.ts +36 -0
- package/dist/cjs/lib/common/deque.js +89 -0
- package/dist/cjs/lib/common/event.d.ts +48 -0
- package/dist/cjs/lib/common/event.js +207 -0
- package/dist/cjs/lib/common/index.d.ts +11 -0
- package/dist/cjs/lib/common/index.js +50 -0
- package/dist/cjs/lib/common/log.d.ts +47 -0
- package/dist/cjs/lib/common/log.js +62 -0
- package/dist/cjs/lib/common/network.d.ts +10 -0
- package/dist/cjs/lib/common/network.js +60 -0
- package/dist/cjs/lib/common/number.d.ts +13 -0
- package/dist/cjs/lib/common/number.js +43 -0
- package/dist/cjs/lib/common/promise.d.ts +21 -0
- package/dist/cjs/lib/common/promise.js +70 -0
- package/dist/cjs/lib/common/transport.d.ts +104 -0
- package/dist/cjs/lib/common/transport.js +441 -0
- package/dist/cjs/lib/common/type.d.ts +3 -0
- package/dist/cjs/lib/common/type.js +2 -0
- package/dist/cjs/lib/dtls/cipher/const.d.ts +42 -0
- package/dist/cjs/lib/dtls/cipher/const.js +33 -0
- package/dist/cjs/lib/dtls/cipher/create.d.ts +21 -0
- package/dist/cjs/lib/dtls/cipher/create.js +105 -0
- package/dist/cjs/lib/dtls/cipher/ec.d.ts +28 -0
- package/dist/cjs/lib/dtls/cipher/ec.js +44 -0
- package/dist/cjs/lib/dtls/cipher/key-exchange.d.ts +43 -0
- package/dist/cjs/lib/dtls/cipher/key-exchange.js +113 -0
- package/dist/cjs/lib/dtls/cipher/namedCurve.d.ts +7 -0
- package/dist/cjs/lib/dtls/cipher/namedCurve.js +27 -0
- package/dist/cjs/lib/dtls/cipher/prf.d.ts +17 -0
- package/dist/cjs/lib/dtls/cipher/prf.js +92 -0
- package/dist/cjs/lib/dtls/cipher/suites/abstract.d.ts +40 -0
- package/dist/cjs/lib/dtls/cipher/suites/abstract.js +41 -0
- package/dist/cjs/lib/dtls/cipher/suites/aead.d.ts +28 -0
- package/dist/cjs/lib/dtls/cipher/suites/aead.js +132 -0
- package/dist/cjs/lib/dtls/cipher/suites/null.d.ts +24 -0
- package/dist/cjs/lib/dtls/cipher/suites/null.js +41 -0
- package/dist/cjs/lib/dtls/cipher/utils.d.ts +18 -0
- package/dist/cjs/lib/dtls/cipher/utils.js +70 -0
- package/dist/cjs/lib/dtls/cipher/x509.d.ts +33 -0
- package/dist/cjs/lib/dtls/cipher/x509.js +100 -0
- package/dist/cjs/lib/dtls/client.d.ts +7 -0
- package/dist/cjs/lib/dtls/client.js +76 -0
- package/dist/cjs/lib/dtls/context/cipher.d.ts +42 -0
- package/dist/cjs/lib/dtls/context/cipher.js +87 -0
- package/dist/cjs/lib/dtls/context/dtls.d.ts +38 -0
- package/dist/cjs/lib/dtls/context/dtls.js +49 -0
- package/dist/cjs/lib/dtls/context/srtp.d.ts +5 -0
- package/dist/cjs/lib/dtls/context/srtp.js +12 -0
- package/dist/cjs/lib/dtls/context/transport.d.ts +8 -0
- package/dist/cjs/lib/dtls/context/transport.js +17 -0
- package/dist/cjs/lib/dtls/flight/client/flight1.d.ts +10 -0
- package/dist/cjs/lib/dtls/flight/client/flight1.js +26 -0
- package/dist/cjs/lib/dtls/flight/client/flight3.d.ts +8 -0
- package/dist/cjs/lib/dtls/flight/client/flight3.js +25 -0
- package/dist/cjs/lib/dtls/flight/client/flight5.d.ts +18 -0
- package/dist/cjs/lib/dtls/flight/client/flight5.js +206 -0
- package/dist/cjs/lib/dtls/flight/flight.d.ts +18 -0
- package/dist/cjs/lib/dtls/flight/flight.js +68 -0
- package/dist/cjs/lib/dtls/flight/server/flight2.d.ts +6 -0
- package/dist/cjs/lib/dtls/flight/server/flight2.js +126 -0
- package/dist/cjs/lib/dtls/flight/server/flight4.d.ts +17 -0
- package/dist/cjs/lib/dtls/flight/server/flight4.js +87 -0
- package/dist/cjs/lib/dtls/flight/server/flight6.d.ts +13 -0
- package/dist/cjs/lib/dtls/flight/server/flight6.js +111 -0
- package/dist/cjs/lib/dtls/handshake/binary.d.ts +16 -0
- package/dist/cjs/lib/dtls/handshake/binary.js +20 -0
- package/dist/cjs/lib/dtls/handshake/const.d.ts +13 -0
- package/dist/cjs/lib/dtls/handshake/const.js +17 -0
- package/dist/cjs/lib/dtls/handshake/extensions/ellipticCurves.d.ts +17 -0
- package/dist/cjs/lib/dtls/handshake/extensions/ellipticCurves.js +40 -0
- package/dist/cjs/lib/dtls/handshake/extensions/extendedMasterSecret.d.ts +3 -0
- package/dist/cjs/lib/dtls/handshake/extensions/extendedMasterSecret.js +7 -0
- package/dist/cjs/lib/dtls/handshake/extensions/renegotiationIndication.d.ts +18 -0
- package/dist/cjs/lib/dtls/handshake/extensions/renegotiationIndication.js +34 -0
- package/dist/cjs/lib/dtls/handshake/extensions/signature.d.ts +26 -0
- package/dist/cjs/lib/dtls/handshake/extensions/signature.js +39 -0
- package/dist/cjs/lib/dtls/handshake/extensions/useSrtp.d.ts +19 -0
- package/dist/cjs/lib/dtls/handshake/extensions/useSrtp.js +65 -0
- package/dist/cjs/lib/dtls/handshake/message/alert.d.ts +12 -0
- package/dist/cjs/lib/dtls/handshake/message/alert.js +24 -0
- package/dist/cjs/lib/dtls/handshake/message/certificate.d.ts +17 -0
- package/dist/cjs/lib/dtls/handshake/message/certificate.js +35 -0
- package/dist/cjs/lib/dtls/handshake/message/changeCipherSpec.d.ts +11 -0
- package/dist/cjs/lib/dtls/handshake/message/changeCipherSpec.js +24 -0
- package/dist/cjs/lib/dtls/handshake/message/client/certificateVerify.d.ts +20 -0
- package/dist/cjs/lib/dtls/handshake/message/client/certificateVerify.js +35 -0
- package/dist/cjs/lib/dtls/handshake/message/client/hello.d.ts +50 -0
- package/dist/cjs/lib/dtls/handshake/message/client/hello.js +48 -0
- package/dist/cjs/lib/dtls/handshake/message/client/keyExchange.d.ts +17 -0
- package/dist/cjs/lib/dtls/handshake/message/client/keyExchange.js +33 -0
- package/dist/cjs/lib/dtls/handshake/message/finished.d.ts +13 -0
- package/dist/cjs/lib/dtls/handshake/message/finished.js +26 -0
- package/dist/cjs/lib/dtls/handshake/message/server/certificateRequest.d.ts +31 -0
- package/dist/cjs/lib/dtls/handshake/message/server/certificateRequest.js +38 -0
- package/dist/cjs/lib/dtls/handshake/message/server/hello.d.ts +33 -0
- package/dist/cjs/lib/dtls/handshake/message/server/hello.js +57 -0
- package/dist/cjs/lib/dtls/handshake/message/server/helloDone.d.ts +12 -0
- package/dist/cjs/lib/dtls/handshake/message/server/helloDone.js +30 -0
- package/dist/cjs/lib/dtls/handshake/message/server/helloVerifyRequest.d.ts +32 -0
- package/dist/cjs/lib/dtls/handshake/message/server/helloVerifyRequest.js +42 -0
- package/dist/cjs/lib/dtls/handshake/message/server/keyExchange.d.ts +32 -0
- package/dist/cjs/lib/dtls/handshake/message/server/keyExchange.js +49 -0
- package/dist/cjs/lib/dtls/handshake/random.d.ts +13 -0
- package/dist/cjs/lib/dtls/handshake/random.js +29 -0
- package/dist/cjs/lib/dtls/helper.d.ts +4 -0
- package/dist/cjs/lib/dtls/helper.js +30 -0
- package/dist/cjs/lib/dtls/imports/common.d.ts +1 -0
- package/dist/cjs/lib/dtls/imports/common.js +17 -0
- package/dist/cjs/lib/dtls/imports/rtp.d.ts +1 -0
- package/dist/cjs/lib/dtls/imports/rtp.js +17 -0
- package/dist/cjs/lib/dtls/index.d.ts +7 -0
- package/dist/cjs/lib/dtls/index.js +117 -0
- package/dist/cjs/lib/dtls/record/antiReplayWindow.d.ts +27 -0
- package/dist/cjs/lib/dtls/record/antiReplayWindow.js +102 -0
- package/dist/cjs/lib/dtls/record/builder.d.ts +9 -0
- package/dist/cjs/lib/dtls/record/builder.js +27 -0
- package/dist/cjs/lib/dtls/record/const.d.ts +33 -0
- package/dist/cjs/lib/dtls/record/const.js +38 -0
- package/dist/cjs/lib/dtls/record/message/fragment.d.ts +26 -0
- package/dist/cjs/lib/dtls/record/message/fragment.js +96 -0
- package/dist/cjs/lib/dtls/record/message/header.d.ts +38 -0
- package/dist/cjs/lib/dtls/record/message/header.js +34 -0
- package/dist/cjs/lib/dtls/record/message/plaintext.d.ts +14 -0
- package/dist/cjs/lib/dtls/record/message/plaintext.js +63 -0
- package/dist/cjs/lib/dtls/record/receive.d.ts +9 -0
- package/dist/cjs/lib/dtls/record/receive.js +91 -0
- package/dist/cjs/lib/dtls/server.d.ts +6 -0
- package/dist/cjs/lib/dtls/server.js +78 -0
- package/dist/cjs/lib/dtls/socket.d.ts +52 -0
- package/dist/cjs/lib/dtls/socket.js +188 -0
- package/dist/cjs/lib/dtls/typings/domain.d.ts +20 -0
- package/dist/cjs/lib/dtls/typings/domain.js +2 -0
- package/dist/cjs/lib/dtls/util/binary.d.ts +2 -0
- package/dist/cjs/lib/dtls/util/binary.js +8 -0
- package/dist/cjs/lib/ice/candidate.d.ts +35 -0
- package/dist/cjs/lib/ice/candidate.js +198 -0
- package/dist/cjs/lib/ice/dns/lookup.d.ts +16 -0
- package/dist/cjs/lib/ice/dns/lookup.js +133 -0
- package/dist/cjs/lib/ice/dns/mdns.d.ts +38 -0
- package/dist/cjs/lib/ice/dns/mdns.js +145 -0
- package/dist/cjs/lib/ice/exceptions.d.ts +24 -0
- package/dist/cjs/lib/ice/exceptions.js +41 -0
- package/dist/cjs/lib/ice/helper.d.ts +17 -0
- package/dist/cjs/lib/ice/helper.js +74 -0
- package/dist/cjs/lib/ice/ice.d.ts +182 -0
- package/dist/cjs/lib/ice/ice.js +1584 -0
- package/dist/cjs/lib/ice/iceBase.d.ts +214 -0
- package/dist/cjs/lib/ice/iceBase.js +182 -0
- package/dist/cjs/lib/ice/imports/common.d.ts +1 -0
- package/dist/cjs/lib/ice/imports/common.js +17 -0
- package/dist/cjs/lib/ice/index.d.ts +12 -0
- package/dist/cjs/lib/ice/index.js +30 -0
- package/dist/cjs/lib/ice/internal/selectAddresses.d.ts +9 -0
- package/dist/cjs/lib/ice/internal/selectAddresses.js +39 -0
- package/dist/cjs/lib/ice/stun/attributes.d.ts +1 -0
- package/dist/cjs/lib/ice/stun/attributes.js +17 -0
- package/dist/cjs/lib/ice/stun/const.d.ts +8 -0
- package/dist/cjs/lib/ice/stun/const.js +25 -0
- package/dist/cjs/lib/ice/stun/message.d.ts +1 -0
- package/dist/cjs/lib/ice/stun/message.js +17 -0
- package/dist/cjs/lib/ice/stun/protocol.d.ts +30 -0
- package/dist/cjs/lib/ice/stun/protocol.js +125 -0
- package/dist/cjs/lib/ice/stun/tcpFrame.d.ts +5 -0
- package/dist/cjs/lib/ice/stun/tcpFrame.js +25 -0
- package/dist/cjs/lib/ice/stun/tcpProtocol.d.ts +57 -0
- package/dist/cjs/lib/ice/stun/tcpProtocol.js +323 -0
- package/dist/cjs/lib/ice/stun/transaction.d.ts +75 -0
- package/dist/cjs/lib/ice/stun/transaction.js +239 -0
- package/dist/cjs/lib/ice/turn/frame.d.ts +1 -0
- package/dist/cjs/lib/ice/turn/frame.js +17 -0
- package/dist/cjs/lib/ice/turn/protocol.d.ts +170 -0
- package/dist/cjs/lib/ice/turn/protocol.js +638 -0
- package/dist/cjs/lib/ice/types/model.d.ts +56 -0
- package/dist/cjs/lib/ice/types/model.js +2 -0
- package/dist/cjs/lib/ice/utils.d.ts +13 -0
- package/dist/cjs/lib/ice/utils.js +84 -0
- package/dist/cjs/lib/peer/const.d.ts +36 -0
- package/dist/cjs/lib/peer/const.js +53 -0
- package/dist/cjs/lib/peer/dataChannel.d.ts +69 -0
- package/dist/cjs/lib/peer/dataChannel.js +133 -0
- package/dist/cjs/lib/peer/errors.d.ts +11 -0
- package/dist/cjs/lib/peer/errors.js +23 -0
- package/dist/cjs/lib/peer/helper.d.ts +20 -0
- package/dist/cjs/lib/peer/helper.js +84 -0
- package/dist/cjs/lib/peer/imports/common.d.ts +1 -0
- package/dist/cjs/lib/peer/imports/common.js +17 -0
- package/dist/cjs/lib/peer/imports/dtls.d.ts +1 -0
- package/dist/cjs/lib/peer/imports/dtls.js +17 -0
- package/dist/cjs/lib/peer/imports/ice.d.ts +1 -0
- package/dist/cjs/lib/peer/imports/ice.js +17 -0
- package/dist/cjs/lib/peer/imports/rtp.d.ts +1 -0
- package/dist/cjs/lib/peer/imports/rtp.js +17 -0
- package/dist/cjs/lib/peer/index.d.ts +14 -0
- package/dist/cjs/lib/peer/index.js +30 -0
- package/dist/cjs/lib/peer/media/codec.d.ts +15 -0
- package/dist/cjs/lib/peer/media/codec.js +80 -0
- package/dist/cjs/lib/peer/media/codecCompatibility.d.ts +23 -0
- package/dist/cjs/lib/peer/media/codecCompatibility.js +137 -0
- package/dist/cjs/lib/peer/media/extension/rtcpFeedback.d.ts +6 -0
- package/dist/cjs/lib/peer/media/extension/rtcpFeedback.js +13 -0
- package/dist/cjs/lib/peer/media/extension/rtpExtension.d.ts +9 -0
- package/dist/cjs/lib/peer/media/extension/rtpExtension.js +52 -0
- package/dist/cjs/lib/peer/media/index.d.ts +12 -0
- package/dist/cjs/lib/peer/media/index.js +28 -0
- package/dist/cjs/lib/peer/media/parameters.d.ts +65 -0
- package/dist/cjs/lib/peer/media/parameters.js +60 -0
- package/dist/cjs/lib/peer/media/receiver/nack.d.ts +23 -0
- package/dist/cjs/lib/peer/media/receiver/nack.js +104 -0
- package/dist/cjs/lib/peer/media/receiver/receiverTwcc.d.ts +47 -0
- package/dist/cjs/lib/peer/media/receiver/receiverTwcc.js +179 -0
- package/dist/cjs/lib/peer/media/receiver/statistics.d.ts +22 -0
- package/dist/cjs/lib/peer/media/receiver/statistics.js +71 -0
- package/dist/cjs/lib/peer/media/router.d.ts +25 -0
- package/dist/cjs/lib/peer/media/router.js +166 -0
- package/dist/cjs/lib/peer/media/rtpReceiver.d.ts +90 -0
- package/dist/cjs/lib/peer/media/rtpReceiver.js +407 -0
- package/dist/cjs/lib/peer/media/rtpSender.d.ts +209 -0
- package/dist/cjs/lib/peer/media/rtpSender.js +826 -0
- package/dist/cjs/lib/peer/media/rtpTransceiver.d.ts +117 -0
- package/dist/cjs/lib/peer/media/rtpTransceiver.js +245 -0
- package/dist/cjs/lib/peer/media/sender/cumulativeResult.d.ts +19 -0
- package/dist/cjs/lib/peer/media/sender/cumulativeResult.js +61 -0
- package/dist/cjs/lib/peer/media/sender/senderBWE.d.ts +32 -0
- package/dist/cjs/lib/peer/media/sender/senderBWE.js +99 -0
- package/dist/cjs/lib/peer/media/stats.d.ts +293 -0
- package/dist/cjs/lib/peer/media/stats.js +90 -0
- package/dist/cjs/lib/peer/media/track.d.ts +67 -0
- package/dist/cjs/lib/peer/media/track.js +216 -0
- package/dist/cjs/lib/peer/peerConnection.d.ts +458 -0
- package/dist/cjs/lib/peer/peerConnection.js +1591 -0
- package/dist/cjs/lib/peer/sctpManager.d.ts +28 -0
- package/dist/cjs/lib/peer/sctpManager.js +138 -0
- package/dist/cjs/lib/peer/sdp.d.ts +97 -0
- package/dist/cjs/lib/peer/sdp.js +628 -0
- package/dist/cjs/lib/peer/sdpManager.d.ts +116 -0
- package/dist/cjs/lib/peer/sdpManager.js +573 -0
- package/dist/cjs/lib/peer/secureTransportManager.d.ts +96 -0
- package/dist/cjs/lib/peer/secureTransportManager.js +472 -0
- package/dist/cjs/lib/peer/transceiverManager.d.ts +151 -0
- package/dist/cjs/lib/peer/transceiverManager.js +767 -0
- package/dist/cjs/lib/peer/transport/dtls.d.ts +95 -0
- package/dist/cjs/lib/peer/transport/dtls.js +571 -0
- package/dist/cjs/lib/peer/transport/ice.d.ts +143 -0
- package/dist/cjs/lib/peer/transport/ice.js +436 -0
- package/dist/cjs/lib/peer/transport/sctp.d.ts +56 -0
- package/dist/cjs/lib/peer/transport/sctp.js +387 -0
- package/dist/cjs/lib/peer/types/domain.d.ts +5 -0
- package/dist/cjs/lib/peer/types/domain.js +19 -0
- package/dist/cjs/lib/peer/types/util.d.ts +2 -0
- package/dist/cjs/lib/peer/types/util.js +2 -0
- package/dist/cjs/lib/peer/utils.d.ts +73 -0
- package/dist/cjs/lib/peer/utils.js +306 -0
- package/dist/cjs/lib/rtp/codec/av1.d.ts +56 -0
- package/dist/cjs/lib/rtp/codec/av1.js +209 -0
- package/dist/cjs/lib/rtp/codec/base.d.ts +8 -0
- package/dist/cjs/lib/rtp/codec/base.js +15 -0
- package/dist/cjs/lib/rtp/codec/h264.d.ts +32 -0
- package/dist/cjs/lib/rtp/codec/h264.js +122 -0
- package/dist/cjs/lib/rtp/codec/index.d.ts +16 -0
- package/dist/cjs/lib/rtp/codec/index.js +84 -0
- package/dist/cjs/lib/rtp/codec/leb128.d.ts +5 -0
- package/dist/cjs/lib/rtp/codec/leb128.js +23 -0
- package/dist/cjs/lib/rtp/codec/opus.d.ts +9 -0
- package/dist/cjs/lib/rtp/codec/opus.js +25 -0
- package/dist/cjs/lib/rtp/codec/vp8.d.ts +27 -0
- package/dist/cjs/lib/rtp/codec/vp8.js +109 -0
- package/dist/cjs/lib/rtp/codec/vp9.d.ts +46 -0
- package/dist/cjs/lib/rtp/codec/vp9.js +161 -0
- package/dist/cjs/lib/rtp/const.d.ts +1 -0
- package/dist/cjs/lib/rtp/const.js +4 -0
- package/dist/cjs/lib/rtp/helper.d.ts +8 -0
- package/dist/cjs/lib/rtp/helper.js +36 -0
- package/dist/cjs/lib/rtp/imports/common.d.ts +1 -0
- package/dist/cjs/lib/rtp/imports/common.js +17 -0
- package/dist/cjs/lib/rtp/index.d.ts +25 -0
- package/dist/cjs/lib/rtp/index.js +41 -0
- package/dist/cjs/lib/rtp/rtcp/header.d.ts +13 -0
- package/dist/cjs/lib/rtp/rtcp/header.js +50 -0
- package/dist/cjs/lib/rtp/rtcp/psfb/fullIntraRequest.d.ts +16 -0
- package/dist/cjs/lib/rtp/rtcp/psfb/fullIntraRequest.js +34 -0
- package/dist/cjs/lib/rtp/rtcp/psfb/index.d.ts +14 -0
- package/dist/cjs/lib/rtp/rtcp/psfb/index.js +39 -0
- package/dist/cjs/lib/rtp/rtcp/psfb/pictureLossIndication.d.ts +10 -0
- package/dist/cjs/lib/rtp/rtcp/psfb/pictureLossIndication.js +20 -0
- package/dist/cjs/lib/rtp/rtcp/psfb/remb.d.ts +16 -0
- package/dist/cjs/lib/rtp/rtcp/psfb/remb.js +53 -0
- package/dist/cjs/lib/rtp/rtcp/rr.d.ts +32 -0
- package/dist/cjs/lib/rtp/rtcp/rr.js +73 -0
- package/dist/cjs/lib/rtp/rtcp/rtcp.d.ts +10 -0
- package/dist/cjs/lib/rtp/rtcp/rtcp.js +58 -0
- package/dist/cjs/lib/rtp/rtcp/rtpfb/const.d.ts +1 -0
- package/dist/cjs/lib/rtp/rtcp/rtpfb/const.js +4 -0
- package/dist/cjs/lib/rtp/rtcp/rtpfb/index.d.ts +14 -0
- package/dist/cjs/lib/rtp/rtcp/rtpfb/index.js +35 -0
- package/dist/cjs/lib/rtp/rtcp/rtpfb/nack.d.ts +17 -0
- package/dist/cjs/lib/rtp/rtcp/rtpfb/nack.js +77 -0
- package/dist/cjs/lib/rtp/rtcp/rtpfb/twcc.d.ts +71 -0
- package/dist/cjs/lib/rtp/rtcp/rtpfb/twcc.js +352 -0
- package/dist/cjs/lib/rtp/rtcp/sdes.d.ts +26 -0
- package/dist/cjs/lib/rtp/rtcp/sdes.js +97 -0
- package/dist/cjs/lib/rtp/rtcp/sr.d.ts +41 -0
- package/dist/cjs/lib/rtp/rtcp/sr.js +110 -0
- package/dist/cjs/lib/rtp/rtp/headerExtension.d.ts +72 -0
- package/dist/cjs/lib/rtp/rtp/headerExtension.js +117 -0
- package/dist/cjs/lib/rtp/rtp/red/encoder.d.ts +13 -0
- package/dist/cjs/lib/rtp/rtp/red/encoder.js +44 -0
- package/dist/cjs/lib/rtp/rtp/red/handler.d.ts +6 -0
- package/dist/cjs/lib/rtp/rtp/red/handler.js +59 -0
- package/dist/cjs/lib/rtp/rtp/red/packet.d.ts +26 -0
- package/dist/cjs/lib/rtp/rtp/red/packet.js +112 -0
- package/dist/cjs/lib/rtp/rtp/rtp.d.ts +44 -0
- package/dist/cjs/lib/rtp/rtp/rtp.js +271 -0
- package/dist/cjs/lib/rtp/rtp/rtx.d.ts +3 -0
- package/dist/cjs/lib/rtp/rtp/rtx.js +29 -0
- package/dist/cjs/lib/rtp/srtp/cipher/ctr.d.ts +16 -0
- package/dist/cjs/lib/rtp/srtp/cipher/ctr.js +107 -0
- package/dist/cjs/lib/rtp/srtp/cipher/gcm.d.ts +17 -0
- package/dist/cjs/lib/rtp/srtp/cipher/gcm.js +145 -0
- package/dist/cjs/lib/rtp/srtp/cipher/index.d.ts +13 -0
- package/dist/cjs/lib/rtp/srtp/cipher/index.js +24 -0
- package/dist/cjs/lib/rtp/srtp/const.d.ts +6 -0
- package/dist/cjs/lib/rtp/srtp/const.js +26 -0
- package/dist/cjs/lib/rtp/srtp/context/context.d.ts +45 -0
- package/dist/cjs/lib/rtp/srtp/context/context.js +180 -0
- package/dist/cjs/lib/rtp/srtp/context/srtcp.d.ts +8 -0
- package/dist/cjs/lib/rtp/srtp/context/srtcp.js +25 -0
- package/dist/cjs/lib/rtp/srtp/context/srtp.d.ts +9 -0
- package/dist/cjs/lib/rtp/srtp/context/srtp.js +41 -0
- package/dist/cjs/lib/rtp/srtp/error.d.ts +3 -0
- package/dist/cjs/lib/rtp/srtp/error.js +10 -0
- package/dist/cjs/lib/rtp/srtp/packet.d.ts +5 -0
- package/dist/cjs/lib/rtp/srtp/packet.js +47 -0
- package/dist/cjs/lib/rtp/srtp/session.d.ts +19 -0
- package/dist/cjs/lib/rtp/srtp/session.js +13 -0
- package/dist/cjs/lib/rtp/srtp/srtcp.d.ts +8 -0
- package/dist/cjs/lib/rtp/srtp/srtcp.js +21 -0
- package/dist/cjs/lib/rtp/srtp/srtp.d.ts +9 -0
- package/dist/cjs/lib/rtp/srtp/srtp.js +20 -0
- package/dist/cjs/lib/rtp/transport.d.ts +15 -0
- package/dist/cjs/lib/rtp/transport.js +23 -0
- package/dist/cjs/lib/rtp/util.d.ts +11 -0
- package/dist/cjs/lib/rtp/util.js +28 -0
- package/dist/cjs/lib/sctp/chunk.d.ts +164 -0
- package/dist/cjs/lib/sctp/chunk.js +542 -0
- package/dist/cjs/lib/sctp/const.d.ts +17 -0
- package/dist/cjs/lib/sctp/const.js +22 -0
- package/dist/cjs/lib/sctp/helper.d.ts +5 -0
- package/dist/cjs/lib/sctp/helper.js +14 -0
- package/dist/cjs/lib/sctp/imports/common.d.ts +1 -0
- package/dist/cjs/lib/sctp/imports/common.js +17 -0
- package/dist/cjs/lib/sctp/index.d.ts +6 -0
- package/dist/cjs/lib/sctp/index.js +20 -0
- package/dist/cjs/lib/sctp/param.d.ts +40 -0
- package/dist/cjs/lib/sctp/param.js +132 -0
- package/dist/cjs/lib/sctp/sctp.d.ts +210 -0
- package/dist/cjs/lib/sctp/sctp.js +1467 -0
- package/dist/cjs/lib/sctp/transport.d.ts +15 -0
- package/dist/cjs/lib/sctp/transport.js +28 -0
- package/dist/cjs/lib/turn/index.d.ts +9 -0
- package/dist/cjs/lib/turn/index.js +25 -0
- package/dist/cjs/lib/turn/node/server.d.ts +21 -0
- package/dist/cjs/lib/turn/node/server.js +94 -0
- package/dist/cjs/lib/turn/node/turnServer.d.ts +91 -0
- package/dist/cjs/lib/turn/node/turnServer.js +565 -0
- package/dist/cjs/lib/turn/protocol.d.ts +47 -0
- package/dist/cjs/lib/turn/protocol.js +116 -0
- package/dist/cjs/lib/turn/stun/attributes.d.ts +37 -0
- package/dist/cjs/lib/turn/stun/attributes.js +208 -0
- package/dist/cjs/lib/turn/stun/const.d.ts +28 -0
- package/dist/cjs/lib/turn/stun/const.js +87 -0
- package/dist/cjs/lib/turn/stun/ip.d.ts +12 -0
- package/dist/cjs/lib/turn/stun/ip.js +87 -0
- package/dist/cjs/lib/turn/stun/message.d.ts +37 -0
- package/dist/cjs/lib/turn/stun/message.js +180 -0
- package/dist/cjs/lib/turn/turn/auth.d.ts +1 -0
- package/dist/cjs/lib/turn/turn/auth.js +9 -0
- package/dist/cjs/lib/turn/turn/frame.d.ts +13 -0
- package/dist/cjs/lib/turn/turn/frame.js +68 -0
- package/dist/cjs/lib/turn/turn/protocol.d.ts +147 -0
- package/dist/cjs/lib/turn/turn/protocol.js +785 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/peer/Endpoints.d.ts +75 -0
- package/dist/cjs/peer/Endpoints.js +154 -0
- package/dist/cjs/peer/EngineConfig.d.ts +20 -0
- package/dist/cjs/peer/EngineConfig.js +36 -0
- package/dist/cjs/peer/EngineConnection.d.ts +22 -0
- package/dist/cjs/peer/EngineConnection.js +27 -0
- package/dist/cjs/peer/Events.d.ts +55 -0
- package/dist/cjs/peer/Events.js +85 -0
- package/dist/cjs/peer/MediaCodecs.d.ts +27 -0
- package/dist/cjs/peer/MediaCodecs.js +53 -0
- package/dist/cjs/peer/MediaTrack.d.ts +212 -0
- package/dist/cjs/peer/MediaTrack.js +313 -0
- package/dist/cjs/peer/PeerChannel.d.ts +248 -0
- package/dist/cjs/peer/PeerChannel.js +319 -0
- package/dist/cjs/peer/PeerConnection.d.ts +603 -0
- package/dist/cjs/peer/PeerConnection.js +697 -0
- package/dist/cjs/peer/PeerThreadChannel.d.ts +112 -0
- package/dist/cjs/peer/PeerThreadChannel.js +273 -0
- package/dist/cjs/peer/PeerThreadProtocol.d.ts +325 -0
- package/dist/cjs/peer/PeerThreadProtocol.js +2 -0
- package/dist/cjs/peer/PeerThreads.d.ts +114 -0
- package/dist/cjs/peer/PeerThreads.js +268 -0
- package/dist/cjs/peer/PeerWorker.d.ts +6 -0
- package/dist/cjs/peer/PeerWorker.js +461 -0
- package/dist/cjs/peer/PeerWorkerCode.d.ts +5 -0
- package/dist/cjs/peer/PeerWorkerCode.js +4 -0
- package/dist/cjs/peer/RemoteConnection.d.ts +314 -0
- package/dist/cjs/peer/RemoteConnection.js +913 -0
- package/dist/cjs/peer/RtpPacket.d.ts +112 -0
- package/dist/cjs/peer/RtpPacket.js +92 -0
- package/dist/cjs/peer/RtpTransceiver.d.ts +167 -0
- package/dist/cjs/peer/RtpTransceiver.js +235 -0
- package/dist/cjs/peer/SignalingClient.d.ts +236 -0
- package/dist/cjs/peer/SignalingClient.js +285 -0
- package/dist/cjs/protocol/SignalingProtocol.d.ts +266 -0
- package/dist/cjs/protocol/SignalingProtocol.js +65 -0
- package/dist/cjs/service/WebRTCServiceEntrypoint.d.ts +158 -0
- package/dist/cjs/service/WebRTCServiceEntrypoint.js +356 -0
- package/dist/cjs/sfu/SFU.d.ts +356 -0
- package/dist/cjs/sfu/SFU.js +763 -0
- package/dist/cjs/sfu/SFUAccess.d.ts +48 -0
- package/dist/cjs/sfu/SFUAccess.js +15 -0
- package/dist/cjs/sfu/SFUClusterLeg.d.ts +101 -0
- package/dist/cjs/sfu/SFUClusterLeg.js +106 -0
- package/dist/cjs/sfu/SFURoom.d.ts +148 -0
- package/dist/cjs/sfu/SFURoom.js +1300 -0
- package/dist/cjs/sfu/SFUWorker.d.ts +13 -0
- package/dist/cjs/sfu/SFUWorker.js +168 -0
- package/dist/cjs/sfu/SFUWorkerChannel.d.ts +204 -0
- package/dist/cjs/sfu/SFUWorkerChannel.js +105 -0
- package/dist/cjs/sfu/SFUWorkerCode.d.ts +5 -0
- package/dist/cjs/sfu/SFUWorkerCode.js +4 -0
- package/dist/cjs/sfu/SFUWorkers.d.ts +247 -0
- package/dist/cjs/sfu/SFUWorkers.js +552 -0
- package/dist/cjs/shared/ChunkedChannel.d.ts +122 -0
- package/dist/cjs/shared/ChunkedChannel.js +182 -0
- package/dist/cjs/shared/Connections.d.ts +231 -0
- package/dist/cjs/shared/Connections.js +2 -0
- package/dist/cjs/shared/Emitter.d.ts +50 -0
- package/dist/cjs/shared/Emitter.js +80 -0
- package/dist/cjs/shared/Peer.d.ts +182 -0
- package/dist/cjs/shared/Peer.js +509 -0
- package/dist/cjs/shared/PeerServiceProxy.d.ts +173 -0
- package/dist/cjs/shared/PeerServiceProxy.js +304 -0
- package/dist/cjs/shared/Room.d.ts +143 -0
- package/dist/cjs/shared/Room.js +515 -0
- package/dist/cjs/shared/SignalingError.d.ts +40 -0
- package/dist/cjs/shared/SignalingError.js +48 -0
- package/dist/cjs/shared/SignalingSession.d.ts +97 -0
- package/dist/cjs/shared/SignalingSession.js +347 -0
- package/dist/cjs/shared/Transports.d.ts +139 -0
- package/dist/cjs/shared/Transports.js +285 -0
- package/dist/cjs/signaling/MediaServers.d.ts +40 -0
- package/dist/cjs/signaling/MediaServers.js +16 -0
- package/dist/cjs/signaling/Signaling.d.ts +573 -0
- package/dist/cjs/signaling/Signaling.js +945 -0
- package/dist/cjs/signaling/SignalingController.d.ts +128 -0
- package/dist/cjs/signaling/SignalingController.js +229 -0
- package/dist/cjs/turn/TURNCredentials.d.ts +49 -0
- package/dist/cjs/turn/TURNCredentials.js +49 -0
- package/dist/cjs/turn/TURNIceServers.d.ts +11 -0
- package/dist/cjs/turn/TURNIceServers.js +25 -0
- package/dist/cjs/turn/TURNServer.d.ts +309 -0
- package/dist/cjs/turn/TURNServer.js +331 -0
- package/dist/cjs/turn/TURNWorker.d.ts +42 -0
- package/dist/cjs/turn/TURNWorker.js +52 -0
- package/dist/cjs/turn/TURNWorkerCode.d.ts +5 -0
- package/dist/cjs/turn/TURNWorkerCode.js +4 -0
- package/dist/cjs/turn/TURNWorkers.d.ts +52 -0
- package/dist/cjs/turn/TURNWorkers.js +211 -0
- package/dist/cjs/whep/WHEP.d.ts +386 -0
- package/dist/cjs/whep/WHEP.js +426 -0
- package/dist/cjs/whep/WHEPController.d.ts +134 -0
- package/dist/cjs/whep/WHEPController.js +301 -0
- package/dist/cjs/whip/WHIP.d.ts +426 -0
- package/dist/cjs/whip/WHIP.js +470 -0
- package/dist/cjs/whip/WHIPController.d.ts +132 -0
- package/dist/cjs/whip/WHIPController.js +299 -0
- package/dist/esm/client/SignalingConnection.js +63 -0
- package/dist/esm/cluster/Cluster.js +542 -0
- package/dist/esm/cluster/ClusterFrames.js +85 -0
- package/dist/esm/cluster/ClusterTURN.js +73 -0
- package/dist/esm/cluster/Rendezvous.js +20 -0
- package/dist/esm/cluster/transports/ClusterTransport.js +1 -0
- package/dist/esm/cluster/transports/LoadClient.js +44 -0
- package/dist/esm/cluster/transports/MemoryClusterTransport.js +43 -0
- package/dist/esm/cluster/transports/NATSClusterTransport.js +66 -0
- package/dist/esm/cluster/transports/RedisClusterTransport.js +73 -0
- package/dist/esm/exceptions/ClusterRequestException.js +14 -0
- package/dist/esm/exceptions/ClusterTimeoutException.js +13 -0
- package/dist/esm/exceptions/ClusterTransportNotFoundException.js +14 -0
- package/dist/esm/exceptions/SignalingClientRequiredException.js +15 -0
- package/dist/esm/exceptions/SignalingConnectionException.js +15 -0
- package/dist/esm/exceptions/SignalingDeniedException.js +14 -0
- package/dist/esm/exceptions/SignalingLimitException.js +14 -0
- package/dist/esm/exceptions/SignalingNotAMemberException.js +14 -0
- package/dist/esm/exceptions/WHEPDeniedException.js +18 -0
- package/dist/esm/exceptions/WHEPLimitException.js +18 -0
- package/dist/esm/exceptions/WHEPMediaTypeException.js +18 -0
- package/dist/esm/exceptions/WHEPOfferException.js +19 -0
- package/dist/esm/exceptions/WHEPSessionNotFoundException.js +18 -0
- package/dist/esm/exceptions/WHIPDeniedException.js +18 -0
- package/dist/esm/exceptions/WHIPLimitException.js +18 -0
- package/dist/esm/exceptions/WHIPMediaTypeException.js +18 -0
- package/dist/esm/exceptions/WHIPOfferException.js +19 -0
- package/dist/esm/exceptions/WHIPSessionNotFoundException.js +18 -0
- package/dist/esm/exports/Client.js +5 -0
- package/dist/esm/exports/WebRTC.js +41 -0
- package/dist/esm/lib/common/binary.js +244 -0
- package/dist/esm/lib/common/binaryData.js +392 -0
- package/dist/esm/lib/common/crc.js +118 -0
- package/dist/esm/lib/common/deque.js +85 -0
- package/dist/esm/lib/common/event.js +202 -0
- package/dist/esm/lib/common/index.js +11 -0
- package/dist/esm/lib/common/log.js +55 -0
- package/dist/esm/lib/common/network.js +52 -0
- package/dist/esm/lib/common/number.js +31 -0
- package/dist/esm/lib/common/promise.js +64 -0
- package/dist/esm/lib/common/transport.js +401 -0
- package/dist/esm/lib/common/type.js +1 -0
- package/dist/esm/lib/dtls/cipher/const.js +30 -0
- package/dist/esm/lib/dtls/cipher/create.js +98 -0
- package/dist/esm/lib/dtls/cipher/ec.js +37 -0
- package/dist/esm/lib/dtls/cipher/key-exchange.js +103 -0
- package/dist/esm/lib/dtls/cipher/namedCurve.js +24 -0
- package/dist/esm/lib/dtls/cipher/prf.js +79 -0
- package/dist/esm/lib/dtls/cipher/suites/abstract.js +37 -0
- package/dist/esm/lib/dtls/cipher/suites/aead.js +96 -0
- package/dist/esm/lib/dtls/cipher/suites/null.js +35 -0
- package/dist/esm/lib/dtls/cipher/utils.js +34 -0
- package/dist/esm/lib/dtls/cipher/x509.js +94 -0
- package/dist/esm/lib/dtls/client.js +72 -0
- package/dist/esm/lib/dtls/context/cipher.js +83 -0
- package/dist/esm/lib/dtls/context/dtls.js +45 -0
- package/dist/esm/lib/dtls/context/srtp.js +8 -0
- package/dist/esm/lib/dtls/context/transport.js +13 -0
- package/dist/esm/lib/dtls/flight/client/flight1.js +22 -0
- package/dist/esm/lib/dtls/flight/client/flight3.js +21 -0
- package/dist/esm/lib/dtls/flight/client/flight5.js +202 -0
- package/dist/esm/lib/dtls/flight/flight.js +64 -0
- package/dist/esm/lib/dtls/flight/server/flight2.js +122 -0
- package/dist/esm/lib/dtls/flight/server/flight4.js +83 -0
- package/dist/esm/lib/dtls/flight/server/flight6.js +107 -0
- package/dist/esm/lib/dtls/handshake/binary.js +17 -0
- package/dist/esm/lib/dtls/handshake/const.js +14 -0
- package/dist/esm/lib/dtls/handshake/extensions/ellipticCurves.js +36 -0
- package/dist/esm/lib/dtls/handshake/extensions/extendedMasterSecret.js +3 -0
- package/dist/esm/lib/dtls/handshake/extensions/renegotiationIndication.js +30 -0
- package/dist/esm/lib/dtls/handshake/extensions/signature.js +35 -0
- package/dist/esm/lib/dtls/handshake/extensions/useSrtp.js +61 -0
- package/dist/esm/lib/dtls/handshake/message/alert.js +20 -0
- package/dist/esm/lib/dtls/handshake/message/certificate.js +31 -0
- package/dist/esm/lib/dtls/handshake/message/changeCipherSpec.js +20 -0
- package/dist/esm/lib/dtls/handshake/message/client/certificateVerify.js +31 -0
- package/dist/esm/lib/dtls/handshake/message/client/hello.js +44 -0
- package/dist/esm/lib/dtls/handshake/message/client/keyExchange.js +29 -0
- package/dist/esm/lib/dtls/handshake/message/finished.js +22 -0
- package/dist/esm/lib/dtls/handshake/message/server/certificateRequest.js +34 -0
- package/dist/esm/lib/dtls/handshake/message/server/hello.js +53 -0
- package/dist/esm/lib/dtls/handshake/message/server/helloDone.js +26 -0
- package/dist/esm/lib/dtls/handshake/message/server/helloVerifyRequest.js +38 -0
- package/dist/esm/lib/dtls/handshake/message/server/keyExchange.js +45 -0
- package/dist/esm/lib/dtls/handshake/random.js +25 -0
- package/dist/esm/lib/dtls/helper.js +23 -0
- package/dist/esm/lib/dtls/imports/common.js +1 -0
- package/dist/esm/lib/dtls/imports/rtp.js +1 -0
- package/dist/esm/lib/dtls/index.js +97 -0
- package/dist/esm/lib/dtls/record/antiReplayWindow.js +98 -0
- package/dist/esm/lib/dtls/record/builder.js +22 -0
- package/dist/esm/lib/dtls/record/const.js +35 -0
- package/dist/esm/lib/dtls/record/message/fragment.js +92 -0
- package/dist/esm/lib/dtls/record/message/header.js +30 -0
- package/dist/esm/lib/dtls/record/message/plaintext.js +59 -0
- package/dist/esm/lib/dtls/record/receive.js +86 -0
- package/dist/esm/lib/dtls/server.js +74 -0
- package/dist/esm/lib/dtls/socket.js +184 -0
- package/dist/esm/lib/dtls/typings/domain.js +1 -0
- package/dist/esm/lib/dtls/util/binary.js +5 -0
- package/dist/esm/lib/ice/candidate.js +190 -0
- package/dist/esm/lib/ice/dns/lookup.js +95 -0
- package/dist/esm/lib/ice/dns/mdns.js +139 -0
- package/dist/esm/lib/ice/exceptions.js +34 -0
- package/dist/esm/lib/ice/helper.js +65 -0
- package/dist/esm/lib/ice/ice.js +1547 -0
- package/dist/esm/lib/ice/iceBase.js +172 -0
- package/dist/esm/lib/ice/imports/common.js +1 -0
- package/dist/esm/lib/ice/index.js +12 -0
- package/dist/esm/lib/ice/internal/selectAddresses.js +36 -0
- package/dist/esm/lib/ice/stun/attributes.js +1 -0
- package/dist/esm/lib/ice/stun/const.js +8 -0
- package/dist/esm/lib/ice/stun/message.js +1 -0
- package/dist/esm/lib/ice/stun/protocol.js +121 -0
- package/dist/esm/lib/ice/stun/tcpFrame.js +21 -0
- package/dist/esm/lib/ice/stun/tcpProtocol.js +318 -0
- package/dist/esm/lib/ice/stun/transaction.js +230 -0
- package/dist/esm/lib/ice/turn/frame.js +1 -0
- package/dist/esm/lib/ice/turn/protocol.js +630 -0
- package/dist/esm/lib/ice/types/model.js +1 -0
- package/dist/esm/lib/ice/utils.js +43 -0
- package/dist/esm/lib/peer/const.js +50 -0
- package/dist/esm/lib/peer/dataChannel.js +127 -0
- package/dist/esm/lib/peer/errors.js +17 -0
- package/dist/esm/lib/peer/helper.js +77 -0
- package/dist/esm/lib/peer/imports/common.js +1 -0
- package/dist/esm/lib/peer/imports/dtls.js +1 -0
- package/dist/esm/lib/peer/imports/ice.js +1 -0
- package/dist/esm/lib/peer/imports/rtp.js +1 -0
- package/dist/esm/lib/peer/index.js +14 -0
- package/dist/esm/lib/peer/media/codec.js +69 -0
- package/dist/esm/lib/peer/media/codecCompatibility.js +128 -0
- package/dist/esm/lib/peer/media/extension/rtcpFeedback.js +5 -0
- package/dist/esm/lib/peer/media/extension/rtpExtension.js +42 -0
- package/dist/esm/lib/peer/media/index.js +12 -0
- package/dist/esm/lib/peer/media/parameters.js +50 -0
- package/dist/esm/lib/peer/media/receiver/nack.js +100 -0
- package/dist/esm/lib/peer/media/receiver/receiverTwcc.js +175 -0
- package/dist/esm/lib/peer/media/receiver/statistics.js +67 -0
- package/dist/esm/lib/peer/media/router.js +162 -0
- package/dist/esm/lib/peer/media/rtpReceiver.js +403 -0
- package/dist/esm/lib/peer/media/rtpSender.js +822 -0
- package/dist/esm/lib/peer/media/rtpTransceiver.js +241 -0
- package/dist/esm/lib/peer/media/sender/cumulativeResult.js +57 -0
- package/dist/esm/lib/peer/media/sender/senderBWE.js +95 -0
- package/dist/esm/lib/peer/media/stats.js +81 -0
- package/dist/esm/lib/peer/media/track.js +208 -0
- package/dist/esm/lib/peer/peerConnection.js +1585 -0
- package/dist/esm/lib/peer/sctpManager.js +134 -0
- package/dist/esm/lib/peer/sdp.js +614 -0
- package/dist/esm/lib/peer/sdpManager.js +569 -0
- package/dist/esm/lib/peer/secureTransportManager.js +468 -0
- package/dist/esm/lib/peer/transceiverManager.js +763 -0
- package/dist/esm/lib/peer/transport/dtls.js +564 -0
- package/dist/esm/lib/peer/transport/ice.js +426 -0
- package/dist/esm/lib/peer/transport/sctp.js +382 -0
- package/dist/esm/lib/peer/types/domain.js +16 -0
- package/dist/esm/lib/peer/types/util.js +1 -0
- package/dist/esm/lib/peer/utils.js +286 -0
- package/dist/esm/lib/rtp/codec/av1.js +203 -0
- package/dist/esm/lib/rtp/codec/base.js +11 -0
- package/dist/esm/lib/rtp/codec/h264.js +118 -0
- package/dist/esm/lib/rtp/codec/index.js +66 -0
- package/dist/esm/lib/rtp/codec/leb128.js +20 -0
- package/dist/esm/lib/rtp/codec/opus.js +21 -0
- package/dist/esm/lib/rtp/codec/vp8.js +105 -0
- package/dist/esm/lib/rtp/codec/vp9.js +157 -0
- package/dist/esm/lib/rtp/const.js +1 -0
- package/dist/esm/lib/rtp/helper.js +29 -0
- package/dist/esm/lib/rtp/imports/common.js +1 -0
- package/dist/esm/lib/rtp/index.js +25 -0
- package/dist/esm/lib/rtp/rtcp/header.js +46 -0
- package/dist/esm/lib/rtp/rtcp/psfb/fullIntraRequest.js +30 -0
- package/dist/esm/lib/rtp/rtcp/psfb/index.js +35 -0
- package/dist/esm/lib/rtp/rtcp/psfb/pictureLossIndication.js +16 -0
- package/dist/esm/lib/rtp/rtcp/psfb/remb.js +49 -0
- package/dist/esm/lib/rtp/rtcp/rr.js +68 -0
- package/dist/esm/lib/rtp/rtcp/rtcp.js +53 -0
- package/dist/esm/lib/rtp/rtcp/rtpfb/const.js +1 -0
- package/dist/esm/lib/rtp/rtcp/rtpfb/index.js +31 -0
- package/dist/esm/lib/rtp/rtcp/rtpfb/nack.js +73 -0
- package/dist/esm/lib/rtp/rtcp/rtpfb/twcc.js +344 -0
- package/dist/esm/lib/rtp/rtcp/sdes.js +91 -0
- package/dist/esm/lib/rtp/rtcp/sr.js +104 -0
- package/dist/esm/lib/rtp/rtp/headerExtension.js +102 -0
- package/dist/esm/lib/rtp/rtp/red/encoder.js +40 -0
- package/dist/esm/lib/rtp/rtp/red/handler.js +55 -0
- package/dist/esm/lib/rtp/rtp/red/packet.js +107 -0
- package/dist/esm/lib/rtp/rtp/rtp.js +266 -0
- package/dist/esm/lib/rtp/rtp/rtx.js +25 -0
- package/dist/esm/lib/rtp/srtp/cipher/ctr.js +103 -0
- package/dist/esm/lib/rtp/srtp/cipher/gcm.js +141 -0
- package/dist/esm/lib/rtp/srtp/cipher/index.js +20 -0
- package/dist/esm/lib/rtp/srtp/const.js +21 -0
- package/dist/esm/lib/rtp/srtp/context/context.js +175 -0
- package/dist/esm/lib/rtp/srtp/context/srtcp.js +21 -0
- package/dist/esm/lib/rtp/srtp/context/srtp.js +37 -0
- package/dist/esm/lib/rtp/srtp/error.js +6 -0
- package/dist/esm/lib/rtp/srtp/packet.js +42 -0
- package/dist/esm/lib/rtp/srtp/session.js +9 -0
- package/dist/esm/lib/rtp/srtp/srtcp.js +17 -0
- package/dist/esm/lib/rtp/srtp/srtp.js +16 -0
- package/dist/esm/lib/rtp/transport.js +18 -0
- package/dist/esm/lib/rtp/util.js +24 -0
- package/dist/esm/lib/sctp/chunk.js +515 -0
- package/dist/esm/lib/sctp/const.js +19 -0
- package/dist/esm/lib/sctp/helper.js +10 -0
- package/dist/esm/lib/sctp/imports/common.js +1 -0
- package/dist/esm/lib/sctp/index.js +4 -0
- package/dist/esm/lib/sctp/param.js +126 -0
- package/dist/esm/lib/sctp/sctp.js +1459 -0
- package/dist/esm/lib/sctp/transport.js +23 -0
- package/dist/esm/lib/turn/index.js +9 -0
- package/dist/esm/lib/turn/node/server.js +89 -0
- package/dist/esm/lib/turn/node/turnServer.js +560 -0
- package/dist/esm/lib/turn/protocol.js +112 -0
- package/dist/esm/lib/turn/stun/attributes.js +198 -0
- package/dist/esm/lib/turn/stun/const.js +82 -0
- package/dist/esm/lib/turn/stun/ip.js +81 -0
- package/dist/esm/lib/turn/stun/message.js +174 -0
- package/dist/esm/lib/turn/turn/auth.js +6 -0
- package/dist/esm/lib/turn/turn/frame.js +61 -0
- package/dist/esm/lib/turn/turn/protocol.js +781 -0
- package/dist/esm/peer/Endpoints.js +143 -0
- package/dist/esm/peer/EngineConfig.js +33 -0
- package/dist/esm/peer/EngineConnection.js +22 -0
- package/dist/esm/peer/Events.js +81 -0
- package/dist/esm/peer/MediaCodecs.js +47 -0
- package/dist/esm/peer/MediaTrack.js +305 -0
- package/dist/esm/peer/PeerChannel.js +315 -0
- package/dist/esm/peer/PeerConnection.js +694 -0
- package/dist/esm/peer/PeerThreadChannel.js +266 -0
- package/dist/esm/peer/PeerThreadProtocol.js +1 -0
- package/dist/esm/peer/PeerThreads.js +264 -0
- package/dist/esm/peer/PeerWorker.js +458 -0
- package/dist/esm/peer/PeerWorkerCode.js +1 -0
- package/dist/esm/peer/RemoteConnection.js +905 -0
- package/dist/esm/peer/RtpPacket.js +86 -0
- package/dist/esm/peer/RtpTransceiver.js +225 -0
- package/dist/esm/peer/SignalingClient.js +249 -0
- package/dist/esm/protocol/SignalingProtocol.js +62 -0
- package/dist/esm/service/WebRTCServiceEntrypoint.js +352 -0
- package/dist/esm/sfu/SFU.js +759 -0
- package/dist/esm/sfu/SFUAccess.js +12 -0
- package/dist/esm/sfu/SFUClusterLeg.js +102 -0
- package/dist/esm/sfu/SFURoom.js +1296 -0
- package/dist/esm/sfu/SFUWorker.js +165 -0
- package/dist/esm/sfu/SFUWorkerChannel.js +101 -0
- package/dist/esm/sfu/SFUWorkerCode.js +1 -0
- package/dist/esm/sfu/SFUWorkers.js +547 -0
- package/dist/esm/shared/ChunkedChannel.js +178 -0
- package/dist/esm/shared/Connections.js +1 -0
- package/dist/esm/shared/Emitter.js +76 -0
- package/dist/esm/shared/Peer.js +505 -0
- package/dist/esm/shared/PeerServiceProxy.js +299 -0
- package/dist/esm/shared/Room.js +511 -0
- package/dist/esm/shared/SignalingError.js +43 -0
- package/dist/esm/shared/SignalingSession.js +343 -0
- package/dist/esm/shared/Transports.js +279 -0
- package/dist/esm/signaling/MediaServers.js +13 -0
- package/dist/esm/signaling/Signaling.js +941 -0
- package/dist/esm/signaling/SignalingController.js +225 -0
- package/dist/esm/turn/TURNCredentials.js +44 -0
- package/dist/esm/turn/TURNIceServers.js +22 -0
- package/dist/esm/turn/TURNServer.js +327 -0
- package/dist/esm/turn/TURNWorker.js +49 -0
- package/dist/esm/turn/TURNWorkerCode.js +1 -0
- package/dist/esm/turn/TURNWorkers.js +206 -0
- package/dist/esm/whep/WHEP.js +422 -0
- package/dist/esm/whep/WHEPController.js +298 -0
- package/dist/esm/whip/WHIP.js +466 -0
- package/dist/esm/whip/WHIPController.js +296 -0
- package/dist/types/client/SignalingConnection.d.ts +81 -0
- package/dist/types/cluster/Cluster.d.ts +503 -0
- package/dist/types/cluster/ClusterFrames.d.ts +24 -0
- package/dist/types/cluster/ClusterTURN.d.ts +63 -0
- package/dist/types/cluster/Rendezvous.d.ts +8 -0
- package/dist/types/cluster/transports/ClusterTransport.d.ts +34 -0
- package/dist/types/cluster/transports/LoadClient.d.ts +6 -0
- package/dist/types/cluster/transports/MemoryClusterTransport.d.ts +13 -0
- package/dist/types/cluster/transports/NATSClusterTransport.d.ts +23 -0
- package/dist/types/cluster/transports/RedisClusterTransport.d.ts +23 -0
- package/dist/types/exceptions/ClusterRequestException.d.ts +11 -0
- package/dist/types/exceptions/ClusterTimeoutException.d.ts +10 -0
- package/dist/types/exceptions/ClusterTransportNotFoundException.d.ts +11 -0
- package/dist/types/exceptions/SignalingClientRequiredException.d.ts +12 -0
- package/dist/types/exceptions/SignalingConnectionException.d.ts +12 -0
- package/dist/types/exceptions/SignalingDeniedException.d.ts +11 -0
- package/dist/types/exceptions/SignalingLimitException.d.ts +11 -0
- package/dist/types/exceptions/SignalingNotAMemberException.d.ts +11 -0
- package/dist/types/exceptions/WHEPDeniedException.d.ts +15 -0
- package/dist/types/exceptions/WHEPLimitException.d.ts +15 -0
- package/dist/types/exceptions/WHEPMediaTypeException.d.ts +15 -0
- package/dist/types/exceptions/WHEPOfferException.d.ts +16 -0
- package/dist/types/exceptions/WHEPSessionNotFoundException.d.ts +15 -0
- package/dist/types/exceptions/WHIPDeniedException.d.ts +15 -0
- package/dist/types/exceptions/WHIPLimitException.d.ts +15 -0
- package/dist/types/exceptions/WHIPMediaTypeException.d.ts +15 -0
- package/dist/types/exceptions/WHIPOfferException.d.ts +16 -0
- package/dist/types/exceptions/WHIPSessionNotFoundException.d.ts +15 -0
- package/dist/types/exports/Client.d.ts +11 -0
- package/dist/types/exports/WebRTC.d.ts +48 -0
- package/dist/types/lib/common/binary.d.ts +51 -0
- package/dist/types/lib/common/binaryData.d.ts +116 -0
- package/dist/types/lib/common/crc.d.ts +4 -0
- package/dist/types/lib/common/deque.d.ts +36 -0
- package/dist/types/lib/common/event.d.ts +48 -0
- package/dist/types/lib/common/index.d.ts +11 -0
- package/dist/types/lib/common/log.d.ts +47 -0
- package/dist/types/lib/common/network.d.ts +10 -0
- package/dist/types/lib/common/number.d.ts +13 -0
- package/dist/types/lib/common/promise.d.ts +21 -0
- package/dist/types/lib/common/transport.d.ts +104 -0
- package/dist/types/lib/common/type.d.ts +3 -0
- package/dist/types/lib/dtls/cipher/const.d.ts +42 -0
- package/dist/types/lib/dtls/cipher/create.d.ts +21 -0
- package/dist/types/lib/dtls/cipher/ec.d.ts +28 -0
- package/dist/types/lib/dtls/cipher/key-exchange.d.ts +43 -0
- package/dist/types/lib/dtls/cipher/namedCurve.d.ts +7 -0
- package/dist/types/lib/dtls/cipher/prf.d.ts +17 -0
- package/dist/types/lib/dtls/cipher/suites/abstract.d.ts +40 -0
- package/dist/types/lib/dtls/cipher/suites/aead.d.ts +28 -0
- package/dist/types/lib/dtls/cipher/suites/null.d.ts +24 -0
- package/dist/types/lib/dtls/cipher/utils.d.ts +18 -0
- package/dist/types/lib/dtls/cipher/x509.d.ts +33 -0
- package/dist/types/lib/dtls/client.d.ts +7 -0
- package/dist/types/lib/dtls/context/cipher.d.ts +42 -0
- package/dist/types/lib/dtls/context/dtls.d.ts +38 -0
- package/dist/types/lib/dtls/context/srtp.d.ts +5 -0
- package/dist/types/lib/dtls/context/transport.d.ts +8 -0
- package/dist/types/lib/dtls/flight/client/flight1.d.ts +10 -0
- package/dist/types/lib/dtls/flight/client/flight3.d.ts +8 -0
- package/dist/types/lib/dtls/flight/client/flight5.d.ts +18 -0
- package/dist/types/lib/dtls/flight/flight.d.ts +18 -0
- package/dist/types/lib/dtls/flight/server/flight2.d.ts +6 -0
- package/dist/types/lib/dtls/flight/server/flight4.d.ts +17 -0
- package/dist/types/lib/dtls/flight/server/flight6.d.ts +13 -0
- package/dist/types/lib/dtls/handshake/binary.d.ts +16 -0
- package/dist/types/lib/dtls/handshake/const.d.ts +13 -0
- package/dist/types/lib/dtls/handshake/extensions/ellipticCurves.d.ts +17 -0
- package/dist/types/lib/dtls/handshake/extensions/extendedMasterSecret.d.ts +3 -0
- package/dist/types/lib/dtls/handshake/extensions/renegotiationIndication.d.ts +18 -0
- package/dist/types/lib/dtls/handshake/extensions/signature.d.ts +26 -0
- package/dist/types/lib/dtls/handshake/extensions/useSrtp.d.ts +19 -0
- package/dist/types/lib/dtls/handshake/message/alert.d.ts +12 -0
- package/dist/types/lib/dtls/handshake/message/certificate.d.ts +17 -0
- package/dist/types/lib/dtls/handshake/message/changeCipherSpec.d.ts +11 -0
- package/dist/types/lib/dtls/handshake/message/client/certificateVerify.d.ts +20 -0
- package/dist/types/lib/dtls/handshake/message/client/hello.d.ts +50 -0
- package/dist/types/lib/dtls/handshake/message/client/keyExchange.d.ts +17 -0
- package/dist/types/lib/dtls/handshake/message/finished.d.ts +13 -0
- package/dist/types/lib/dtls/handshake/message/server/certificateRequest.d.ts +31 -0
- package/dist/types/lib/dtls/handshake/message/server/hello.d.ts +33 -0
- package/dist/types/lib/dtls/handshake/message/server/helloDone.d.ts +12 -0
- package/dist/types/lib/dtls/handshake/message/server/helloVerifyRequest.d.ts +32 -0
- package/dist/types/lib/dtls/handshake/message/server/keyExchange.d.ts +32 -0
- package/dist/types/lib/dtls/handshake/random.d.ts +13 -0
- package/dist/types/lib/dtls/helper.d.ts +4 -0
- package/dist/types/lib/dtls/imports/common.d.ts +1 -0
- package/dist/types/lib/dtls/imports/rtp.d.ts +1 -0
- package/dist/types/lib/dtls/index.d.ts +7 -0
- package/dist/types/lib/dtls/record/antiReplayWindow.d.ts +27 -0
- package/dist/types/lib/dtls/record/builder.d.ts +9 -0
- package/dist/types/lib/dtls/record/const.d.ts +33 -0
- package/dist/types/lib/dtls/record/message/fragment.d.ts +26 -0
- package/dist/types/lib/dtls/record/message/header.d.ts +38 -0
- package/dist/types/lib/dtls/record/message/plaintext.d.ts +14 -0
- package/dist/types/lib/dtls/record/receive.d.ts +9 -0
- package/dist/types/lib/dtls/server.d.ts +6 -0
- package/dist/types/lib/dtls/socket.d.ts +52 -0
- package/dist/types/lib/dtls/typings/domain.d.ts +20 -0
- package/dist/types/lib/dtls/util/binary.d.ts +2 -0
- package/dist/types/lib/ice/candidate.d.ts +35 -0
- package/dist/types/lib/ice/dns/lookup.d.ts +16 -0
- package/dist/types/lib/ice/dns/mdns.d.ts +38 -0
- package/dist/types/lib/ice/exceptions.d.ts +24 -0
- package/dist/types/lib/ice/helper.d.ts +17 -0
- package/dist/types/lib/ice/ice.d.ts +182 -0
- package/dist/types/lib/ice/iceBase.d.ts +214 -0
- package/dist/types/lib/ice/imports/common.d.ts +1 -0
- package/dist/types/lib/ice/index.d.ts +12 -0
- package/dist/types/lib/ice/internal/selectAddresses.d.ts +9 -0
- package/dist/types/lib/ice/stun/attributes.d.ts +1 -0
- package/dist/types/lib/ice/stun/const.d.ts +8 -0
- package/dist/types/lib/ice/stun/message.d.ts +1 -0
- package/dist/types/lib/ice/stun/protocol.d.ts +30 -0
- package/dist/types/lib/ice/stun/tcpFrame.d.ts +5 -0
- package/dist/types/lib/ice/stun/tcpProtocol.d.ts +57 -0
- package/dist/types/lib/ice/stun/transaction.d.ts +75 -0
- package/dist/types/lib/ice/turn/frame.d.ts +1 -0
- package/dist/types/lib/ice/turn/protocol.d.ts +170 -0
- package/dist/types/lib/ice/types/model.d.ts +56 -0
- package/dist/types/lib/ice/utils.d.ts +13 -0
- package/dist/types/lib/peer/const.d.ts +36 -0
- package/dist/types/lib/peer/dataChannel.d.ts +69 -0
- package/dist/types/lib/peer/errors.d.ts +11 -0
- package/dist/types/lib/peer/helper.d.ts +20 -0
- package/dist/types/lib/peer/imports/common.d.ts +1 -0
- package/dist/types/lib/peer/imports/dtls.d.ts +1 -0
- package/dist/types/lib/peer/imports/ice.d.ts +1 -0
- package/dist/types/lib/peer/imports/rtp.d.ts +1 -0
- package/dist/types/lib/peer/index.d.ts +14 -0
- package/dist/types/lib/peer/media/codec.d.ts +15 -0
- package/dist/types/lib/peer/media/codecCompatibility.d.ts +23 -0
- package/dist/types/lib/peer/media/extension/rtcpFeedback.d.ts +6 -0
- package/dist/types/lib/peer/media/extension/rtpExtension.d.ts +9 -0
- package/dist/types/lib/peer/media/index.d.ts +12 -0
- package/dist/types/lib/peer/media/parameters.d.ts +65 -0
- package/dist/types/lib/peer/media/receiver/nack.d.ts +23 -0
- package/dist/types/lib/peer/media/receiver/receiverTwcc.d.ts +47 -0
- package/dist/types/lib/peer/media/receiver/statistics.d.ts +22 -0
- package/dist/types/lib/peer/media/router.d.ts +25 -0
- package/dist/types/lib/peer/media/rtpReceiver.d.ts +90 -0
- package/dist/types/lib/peer/media/rtpSender.d.ts +209 -0
- package/dist/types/lib/peer/media/rtpTransceiver.d.ts +117 -0
- package/dist/types/lib/peer/media/sender/cumulativeResult.d.ts +19 -0
- package/dist/types/lib/peer/media/sender/senderBWE.d.ts +32 -0
- package/dist/types/lib/peer/media/stats.d.ts +293 -0
- package/dist/types/lib/peer/media/track.d.ts +67 -0
- package/dist/types/lib/peer/peerConnection.d.ts +458 -0
- package/dist/types/lib/peer/sctpManager.d.ts +28 -0
- package/dist/types/lib/peer/sdp.d.ts +97 -0
- package/dist/types/lib/peer/sdpManager.d.ts +116 -0
- package/dist/types/lib/peer/secureTransportManager.d.ts +96 -0
- package/dist/types/lib/peer/transceiverManager.d.ts +151 -0
- package/dist/types/lib/peer/transport/dtls.d.ts +95 -0
- package/dist/types/lib/peer/transport/ice.d.ts +143 -0
- package/dist/types/lib/peer/transport/sctp.d.ts +56 -0
- package/dist/types/lib/peer/types/domain.d.ts +5 -0
- package/dist/types/lib/peer/types/util.d.ts +2 -0
- package/dist/types/lib/peer/utils.d.ts +73 -0
- package/dist/types/lib/rtp/codec/av1.d.ts +56 -0
- package/dist/types/lib/rtp/codec/base.d.ts +8 -0
- package/dist/types/lib/rtp/codec/h264.d.ts +32 -0
- package/dist/types/lib/rtp/codec/index.d.ts +16 -0
- package/dist/types/lib/rtp/codec/leb128.d.ts +5 -0
- package/dist/types/lib/rtp/codec/opus.d.ts +9 -0
- package/dist/types/lib/rtp/codec/vp8.d.ts +27 -0
- package/dist/types/lib/rtp/codec/vp9.d.ts +46 -0
- package/dist/types/lib/rtp/const.d.ts +1 -0
- package/dist/types/lib/rtp/helper.d.ts +8 -0
- package/dist/types/lib/rtp/imports/common.d.ts +1 -0
- package/dist/types/lib/rtp/index.d.ts +25 -0
- package/dist/types/lib/rtp/rtcp/header.d.ts +13 -0
- package/dist/types/lib/rtp/rtcp/psfb/fullIntraRequest.d.ts +16 -0
- package/dist/types/lib/rtp/rtcp/psfb/index.d.ts +14 -0
- package/dist/types/lib/rtp/rtcp/psfb/pictureLossIndication.d.ts +10 -0
- package/dist/types/lib/rtp/rtcp/psfb/remb.d.ts +16 -0
- package/dist/types/lib/rtp/rtcp/rr.d.ts +32 -0
- package/dist/types/lib/rtp/rtcp/rtcp.d.ts +10 -0
- package/dist/types/lib/rtp/rtcp/rtpfb/const.d.ts +1 -0
- package/dist/types/lib/rtp/rtcp/rtpfb/index.d.ts +14 -0
- package/dist/types/lib/rtp/rtcp/rtpfb/nack.d.ts +17 -0
- package/dist/types/lib/rtp/rtcp/rtpfb/twcc.d.ts +71 -0
- package/dist/types/lib/rtp/rtcp/sdes.d.ts +26 -0
- package/dist/types/lib/rtp/rtcp/sr.d.ts +41 -0
- package/dist/types/lib/rtp/rtp/headerExtension.d.ts +72 -0
- package/dist/types/lib/rtp/rtp/red/encoder.d.ts +13 -0
- package/dist/types/lib/rtp/rtp/red/handler.d.ts +6 -0
- package/dist/types/lib/rtp/rtp/red/packet.d.ts +26 -0
- package/dist/types/lib/rtp/rtp/rtp.d.ts +44 -0
- package/dist/types/lib/rtp/rtp/rtx.d.ts +3 -0
- package/dist/types/lib/rtp/srtp/cipher/ctr.d.ts +16 -0
- package/dist/types/lib/rtp/srtp/cipher/gcm.d.ts +17 -0
- package/dist/types/lib/rtp/srtp/cipher/index.d.ts +13 -0
- package/dist/types/lib/rtp/srtp/const.d.ts +6 -0
- package/dist/types/lib/rtp/srtp/context/context.d.ts +45 -0
- package/dist/types/lib/rtp/srtp/context/srtcp.d.ts +8 -0
- package/dist/types/lib/rtp/srtp/context/srtp.d.ts +9 -0
- package/dist/types/lib/rtp/srtp/error.d.ts +3 -0
- package/dist/types/lib/rtp/srtp/packet.d.ts +5 -0
- package/dist/types/lib/rtp/srtp/session.d.ts +19 -0
- package/dist/types/lib/rtp/srtp/srtcp.d.ts +8 -0
- package/dist/types/lib/rtp/srtp/srtp.d.ts +9 -0
- package/dist/types/lib/rtp/transport.d.ts +15 -0
- package/dist/types/lib/rtp/util.d.ts +11 -0
- package/dist/types/lib/sctp/chunk.d.ts +164 -0
- package/dist/types/lib/sctp/const.d.ts +17 -0
- package/dist/types/lib/sctp/helper.d.ts +5 -0
- package/dist/types/lib/sctp/imports/common.d.ts +1 -0
- package/dist/types/lib/sctp/index.d.ts +6 -0
- package/dist/types/lib/sctp/param.d.ts +40 -0
- package/dist/types/lib/sctp/sctp.d.ts +210 -0
- package/dist/types/lib/sctp/transport.d.ts +15 -0
- package/dist/types/lib/turn/index.d.ts +9 -0
- package/dist/types/lib/turn/node/server.d.ts +21 -0
- package/dist/types/lib/turn/node/turnServer.d.ts +91 -0
- package/dist/types/lib/turn/protocol.d.ts +47 -0
- package/dist/types/lib/turn/stun/attributes.d.ts +37 -0
- package/dist/types/lib/turn/stun/const.d.ts +28 -0
- package/dist/types/lib/turn/stun/ip.d.ts +12 -0
- package/dist/types/lib/turn/stun/message.d.ts +37 -0
- package/dist/types/lib/turn/turn/auth.d.ts +1 -0
- package/dist/types/lib/turn/turn/frame.d.ts +13 -0
- package/dist/types/lib/turn/turn/protocol.d.ts +147 -0
- package/dist/types/peer/Endpoints.d.ts +75 -0
- package/dist/types/peer/EngineConfig.d.ts +20 -0
- package/dist/types/peer/EngineConnection.d.ts +22 -0
- package/dist/types/peer/Events.d.ts +55 -0
- package/dist/types/peer/MediaCodecs.d.ts +27 -0
- package/dist/types/peer/MediaTrack.d.ts +212 -0
- package/dist/types/peer/PeerChannel.d.ts +248 -0
- package/dist/types/peer/PeerConnection.d.ts +603 -0
- package/dist/types/peer/PeerThreadChannel.d.ts +112 -0
- package/dist/types/peer/PeerThreadProtocol.d.ts +325 -0
- package/dist/types/peer/PeerThreads.d.ts +114 -0
- package/dist/types/peer/PeerWorker.d.ts +6 -0
- package/dist/types/peer/PeerWorkerCode.d.ts +5 -0
- package/dist/types/peer/RemoteConnection.d.ts +314 -0
- package/dist/types/peer/RtpPacket.d.ts +112 -0
- package/dist/types/peer/RtpTransceiver.d.ts +167 -0
- package/dist/types/peer/SignalingClient.d.ts +236 -0
- package/dist/types/protocol/SignalingProtocol.d.ts +266 -0
- package/dist/types/service/WebRTCServiceEntrypoint.d.ts +158 -0
- package/dist/types/sfu/SFU.d.ts +356 -0
- package/dist/types/sfu/SFUAccess.d.ts +48 -0
- package/dist/types/sfu/SFUClusterLeg.d.ts +101 -0
- package/dist/types/sfu/SFURoom.d.ts +148 -0
- package/dist/types/sfu/SFUWorker.d.ts +13 -0
- package/dist/types/sfu/SFUWorkerChannel.d.ts +204 -0
- package/dist/types/sfu/SFUWorkerCode.d.ts +5 -0
- package/dist/types/sfu/SFUWorkers.d.ts +247 -0
- package/dist/types/shared/ChunkedChannel.d.ts +122 -0
- package/dist/types/shared/Connections.d.ts +231 -0
- package/dist/types/shared/Emitter.d.ts +50 -0
- package/dist/types/shared/Peer.d.ts +182 -0
- package/dist/types/shared/PeerServiceProxy.d.ts +173 -0
- package/dist/types/shared/Room.d.ts +143 -0
- package/dist/types/shared/SignalingError.d.ts +40 -0
- package/dist/types/shared/SignalingSession.d.ts +97 -0
- package/dist/types/shared/Transports.d.ts +139 -0
- package/dist/types/signaling/MediaServers.d.ts +40 -0
- package/dist/types/signaling/Signaling.d.ts +573 -0
- package/dist/types/signaling/SignalingController.d.ts +128 -0
- package/dist/types/turn/TURNCredentials.d.ts +49 -0
- package/dist/types/turn/TURNIceServers.d.ts +11 -0
- package/dist/types/turn/TURNServer.d.ts +309 -0
- package/dist/types/turn/TURNWorker.d.ts +42 -0
- package/dist/types/turn/TURNWorkerCode.d.ts +5 -0
- package/dist/types/turn/TURNWorkers.d.ts +52 -0
- package/dist/types/whep/WHEP.d.ts +386 -0
- package/dist/types/whep/WHEPController.d.ts +134 -0
- package/dist/types/whip/WHIP.d.ts +426 -0
- package/dist/types/whip/WHIPController.d.ts +132 -0
- package/package.json +115 -4
|
@@ -0,0 +1,767 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransceiverManager = void 0;
|
|
4
|
+
const const_js_1 = require("./const.js");
|
|
5
|
+
const errors_js_1 = require("./errors.js");
|
|
6
|
+
const common_js_1 = require("./imports/common.js");
|
|
7
|
+
const index_js_1 = require("./media/index.js");
|
|
8
|
+
const codecCompatibility_js_1 = require("./media/codecCompatibility.js");
|
|
9
|
+
const track_js_1 = require("./media/track.js");
|
|
10
|
+
const sdp_js_1 = require("./sdp.js");
|
|
11
|
+
const utils_js_1 = require("./utils.js");
|
|
12
|
+
const log = (0, common_js_1.debug)('webrtc/peer/transceiverManager');
|
|
13
|
+
function simulcastFromSendEncodings(encodings) {
|
|
14
|
+
if (!encodings || encodings.length < 2) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
const rids = encodings
|
|
18
|
+
.map((encoding) => encoding.rid)
|
|
19
|
+
.filter((rid) => typeof rid === 'string' && rid.length > 0);
|
|
20
|
+
if (rids.length < 2) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
return rids.map((rid) => ({ rid, direction: 'send' }));
|
|
24
|
+
}
|
|
25
|
+
class TransceiverManager {
|
|
26
|
+
constructor(cname, config, router) {
|
|
27
|
+
this.cname = cname;
|
|
28
|
+
this.config = config;
|
|
29
|
+
this.router = router;
|
|
30
|
+
this.transceivers = [];
|
|
31
|
+
this.watched = new WeakSet();
|
|
32
|
+
//The media ids and the m-line indexes of the transceivers when the signaling state was stable last
|
|
33
|
+
this.stableState = new Map();
|
|
34
|
+
this.onTransceiverAdded = new common_js_1.Event();
|
|
35
|
+
this.onRemoteTransceiverAdded = new common_js_1.Event();
|
|
36
|
+
this.onTrack = new common_js_1.Event();
|
|
37
|
+
this.onNegotiationNeeded = new common_js_1.Event();
|
|
38
|
+
}
|
|
39
|
+
getTransceivers() {
|
|
40
|
+
return this.transceivers;
|
|
41
|
+
}
|
|
42
|
+
getSenders() {
|
|
43
|
+
return this.getTransceivers().map((t) => t.sender);
|
|
44
|
+
}
|
|
45
|
+
getReceivers() {
|
|
46
|
+
return this.getTransceivers().map((t) => t.receiver);
|
|
47
|
+
}
|
|
48
|
+
getTransceiverByMLineIndex(index) {
|
|
49
|
+
return this.transceivers.find((transceiver) => transceiver.mLineIndex === index);
|
|
50
|
+
}
|
|
51
|
+
pushTransceiver(t) {
|
|
52
|
+
this.watchTransceiver(t);
|
|
53
|
+
this.transceivers.push(t);
|
|
54
|
+
}
|
|
55
|
+
replaceTransceiver(t, index) {
|
|
56
|
+
this.watchTransceiver(t);
|
|
57
|
+
this.transceivers[index] = t;
|
|
58
|
+
}
|
|
59
|
+
/**m-line から外れた transceiver の購読を解除する */
|
|
60
|
+
unwatchTransceiver(t) {
|
|
61
|
+
this.watched.delete(t);
|
|
62
|
+
t.onRelease.allUnsubscribe();
|
|
63
|
+
t.onStopRequested.allUnsubscribe();
|
|
64
|
+
t.onDirectionChanged.allUnsubscribe();
|
|
65
|
+
t.sender.onStreamsChanged.allUnsubscribe();
|
|
66
|
+
}
|
|
67
|
+
watchTransceiver(t) {
|
|
68
|
+
if (this.watched.has(t)) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
this.watched.add(t);
|
|
72
|
+
t.onRelease.subscribe(() => {
|
|
73
|
+
this.router.unregisterTransceiver(t);
|
|
74
|
+
});
|
|
75
|
+
t.onStopRequested.subscribe(() => {
|
|
76
|
+
// 未関連付けの stop は m-line を作らないので交渉不要
|
|
77
|
+
if (!t.stopped) {
|
|
78
|
+
this.onNegotiationNeeded.execute();
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
//A new direction or new streams of the application are negotiated
|
|
82
|
+
t.onDirectionChanged.subscribe(() => {
|
|
83
|
+
if (!t.stopping && !t.stopped)
|
|
84
|
+
this.onNegotiationNeeded.execute();
|
|
85
|
+
});
|
|
86
|
+
t.sender.onStreamsChanged.subscribe(() => {
|
|
87
|
+
if (!t.stopping && !t.stopped)
|
|
88
|
+
this.onNegotiationNeeded.execute();
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 拒否 / 停止の交渉が確定した port 0 の位置のうち、同じ kind で
|
|
93
|
+
* まだ他の transceiver が予約していないものを返す。
|
|
94
|
+
* stopping (未交渉) の位置は先取りしない。
|
|
95
|
+
*/
|
|
96
|
+
findReusableTransceiver(kind) {
|
|
97
|
+
return this.transceivers.find((t) => t.stopped &&
|
|
98
|
+
t.kind === kind &&
|
|
99
|
+
t.mLineIndex != undefined &&
|
|
100
|
+
!this.transceivers.some((other) => other !== t && other.mLineIndex === t.mLineIndex));
|
|
101
|
+
}
|
|
102
|
+
/**旧 transceiver を m-line から外し、同じ位置に新しい transceiver を置く */
|
|
103
|
+
takeOverMLine(oldTransceiver, newTransceiver) {
|
|
104
|
+
const index = this.transceivers.indexOf(oldTransceiver);
|
|
105
|
+
newTransceiver.mLineIndex = oldTransceiver.mLineIndex;
|
|
106
|
+
oldTransceiver.mid = null;
|
|
107
|
+
oldTransceiver.mLineIndex = undefined;
|
|
108
|
+
this.unwatchTransceiver(oldTransceiver);
|
|
109
|
+
this.replaceTransceiver(newTransceiver, index);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* 既存の未関連付け transceiver を remote m-line の位置に関連付ける。
|
|
113
|
+
* 同じ位置に停止済みの旧 transceiver があれば m-line から外し、配列上でも置き換える。
|
|
114
|
+
* (旧 transceiver が位置を持ったままだと MID の割り当て先が重複する)
|
|
115
|
+
*/
|
|
116
|
+
associateMLine(transceiver, mLineIndex) {
|
|
117
|
+
const previous = this.transceivers.find((t) => t !== transceiver && t.stopped && t.mLineIndex === mLineIndex);
|
|
118
|
+
if (!previous) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
this.transceivers.splice(this.transceivers.indexOf(transceiver), 1);
|
|
122
|
+
this.takeOverMLine(previous, transceiver);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* remote offer が定義した位置のうち、関連付けられなかった未交渉 transceiver の予約を解除する。
|
|
126
|
+
* (remote が予約位置を別 kind や別 transceiver で再利用した場合、次の offer で末尾に追加させる)
|
|
127
|
+
*/
|
|
128
|
+
releaseUnassociatedReservations(associated, mLineCount) {
|
|
129
|
+
for (const t of this.transceivers) {
|
|
130
|
+
if (!associated.has(t) &&
|
|
131
|
+
t.mid == null &&
|
|
132
|
+
t.mLineIndex != undefined &&
|
|
133
|
+
t.mLineIndex < mLineCount) {
|
|
134
|
+
t.mLineIndex = undefined;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
addTransceiver(trackOrKind, dtlsTransport, options = {}, { remoteMLineIndex } = {}) {
|
|
139
|
+
const kind = typeof trackOrKind === 'string' ? trackOrKind : trackOrKind.kind;
|
|
140
|
+
const direction = options.direction || 'sendrecv';
|
|
141
|
+
if (typeof trackOrKind !== 'string') {
|
|
142
|
+
(0, track_js_1.captureTrackSourceCodecs)(trackOrKind);
|
|
143
|
+
(0, codecCompatibility_js_1.assertCodecsSupported)({
|
|
144
|
+
kind,
|
|
145
|
+
configured: this.filterCodecsByDirection(kind, direction),
|
|
146
|
+
source: (0, track_js_1.getTrackSourceCodecs)(trackOrKind),
|
|
147
|
+
preferences: undefined
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
const sender = new index_js_1.RTCRtpSender(trackOrKind, {
|
|
151
|
+
pendingRtp: this.config.pendingRtp
|
|
152
|
+
});
|
|
153
|
+
const receiver = new index_js_1.RTCRtpReceiver(this.config, kind, sender.ssrc);
|
|
154
|
+
const newTransceiver = new index_js_1.RTCRtpTransceiver(kind, dtlsTransport, receiver, sender, direction);
|
|
155
|
+
newTransceiver.onCodecPreferencesChanged.subscribe(() => {
|
|
156
|
+
this.onNegotiationNeeded.execute();
|
|
157
|
+
});
|
|
158
|
+
newTransceiver.options = {
|
|
159
|
+
...options,
|
|
160
|
+
simulcast: options.simulcast ?? simulcastFromSendEncodings(options.sendEncodings)
|
|
161
|
+
};
|
|
162
|
+
newTransceiver.sender.setStreams(options.streams ?? []);
|
|
163
|
+
newTransceiver.sender.setSendEncodings((options.sendEncodings ?? []).map((encoding) => ({ ...encoding })));
|
|
164
|
+
this.router.registerRtpSender(newTransceiver.sender);
|
|
165
|
+
// 旧 transceiver は復活させず、MID は次の offer で新しく割り当てる
|
|
166
|
+
const reusable = remoteMLineIndex == undefined
|
|
167
|
+
? this.findReusableTransceiver(kind)
|
|
168
|
+
: this.transceivers.find((t) => t.stopped && t.mLineIndex === remoteMLineIndex);
|
|
169
|
+
if (reusable) {
|
|
170
|
+
this.takeOverMLine(reusable, newTransceiver);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
this.pushTransceiver(newTransceiver);
|
|
174
|
+
}
|
|
175
|
+
if (remoteMLineIndex != undefined) {
|
|
176
|
+
this.remoteOfferSnapshot?.remoteCreated.add(newTransceiver);
|
|
177
|
+
}
|
|
178
|
+
this.onTransceiverAdded.execute(newTransceiver);
|
|
179
|
+
return newTransceiver;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Whether addTrack may give a track of a kind to a transceiver, rather than adding one
|
|
183
|
+
* @param transceiver
|
|
184
|
+
* @param kind
|
|
185
|
+
*/
|
|
186
|
+
reusableForTrack(transceiver, kind) {
|
|
187
|
+
return transceiver.sender.track == undefined &&
|
|
188
|
+
transceiver.kind === kind &&
|
|
189
|
+
!transceiver.usedForSender &&
|
|
190
|
+
!transceiver.stopping &&
|
|
191
|
+
!transceiver.stopped &&
|
|
192
|
+
!transceiver.rejected &&
|
|
193
|
+
!transceiver.pendingRejection;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Add a track: to a transceiver that may take it, else to a new one
|
|
197
|
+
* @param track
|
|
198
|
+
* @param streams
|
|
199
|
+
* @param chosen The transceiver chosen already (for a connection served in a worker thread, by the main thread): used
|
|
200
|
+
* if it may still take the track, else a new one is added, as for null
|
|
201
|
+
*/
|
|
202
|
+
addTrack(track, streams = [], chosen) {
|
|
203
|
+
if (this.getSenders().find((sender) => sender.track?.uuid === track.uuid)) {
|
|
204
|
+
throw (0, errors_js_1.createWebRtcDomException)('InvalidAccessError', 'Track already added');
|
|
205
|
+
}
|
|
206
|
+
const reusableForTrack = (t) => this.reusableForTrack(t, track.kind) &&
|
|
207
|
+
(chosen === undefined || t === chosen);
|
|
208
|
+
const emptyTrackSenderTransceiver = chosen === null ? undefined : this.transceivers.find((t) => reusableForTrack(t) && const_js_1.SenderDirections.includes(t.direction));
|
|
209
|
+
if (emptyTrackSenderTransceiver) {
|
|
210
|
+
this.validateTrackForTransceiver(track, emptyTrackSenderTransceiver);
|
|
211
|
+
const sender = emptyTrackSenderTransceiver.sender;
|
|
212
|
+
sender.setStreams(streams);
|
|
213
|
+
sender.registerTrack(track);
|
|
214
|
+
emptyTrackSenderTransceiver.options = {
|
|
215
|
+
...emptyTrackSenderTransceiver.options,
|
|
216
|
+
streams
|
|
217
|
+
};
|
|
218
|
+
emptyTrackSenderTransceiver.codecs = [];
|
|
219
|
+
return emptyTrackSenderTransceiver;
|
|
220
|
+
}
|
|
221
|
+
const notSendTransceiver = chosen === null ? undefined : this.transceivers.find((t) => reusableForTrack(t) && !const_js_1.SenderDirections.includes(t.direction));
|
|
222
|
+
if (notSendTransceiver) {
|
|
223
|
+
const nextDirection = notSendTransceiver.direction === 'recvonly'
|
|
224
|
+
? 'sendrecv'
|
|
225
|
+
: notSendTransceiver.direction === 'inactive'
|
|
226
|
+
? 'sendonly'
|
|
227
|
+
: notSendTransceiver.direction;
|
|
228
|
+
this.validateTrackForTransceiver(track, notSendTransceiver, nextDirection);
|
|
229
|
+
const sender = notSendTransceiver.sender;
|
|
230
|
+
sender.setStreams(streams);
|
|
231
|
+
sender.registerTrack(track);
|
|
232
|
+
notSendTransceiver.options = {
|
|
233
|
+
...notSendTransceiver.options,
|
|
234
|
+
streams
|
|
235
|
+
};
|
|
236
|
+
switch (notSendTransceiver.direction) {
|
|
237
|
+
case 'recvonly':
|
|
238
|
+
notSendTransceiver.setDirection('sendrecv');
|
|
239
|
+
break;
|
|
240
|
+
case 'inactive':
|
|
241
|
+
notSendTransceiver.setDirection('sendonly');
|
|
242
|
+
break;
|
|
243
|
+
}
|
|
244
|
+
notSendTransceiver.codecs = [];
|
|
245
|
+
return notSendTransceiver;
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
const transceiver = this.addTransceiver(track, undefined, {
|
|
249
|
+
direction: 'sendrecv',
|
|
250
|
+
streams
|
|
251
|
+
});
|
|
252
|
+
transceiver.addedByAddTrack = true;
|
|
253
|
+
return transceiver;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* sender から track を外す。
|
|
258
|
+
* @returns 交渉が必要な変更をした場合 true (呼び出し側が negotiationneeded を要求する)
|
|
259
|
+
*/
|
|
260
|
+
removeTrack(sender) {
|
|
261
|
+
if (!this.getSenders().find(({ ssrc }) => sender.ssrc === ssrc)) {
|
|
262
|
+
throw (0, errors_js_1.createWebRtcDomException)('InvalidAccessError', 'Sender does not exist');
|
|
263
|
+
}
|
|
264
|
+
const transceiver = this.transceivers.find(({ sender: { ssrc } }) => sender.ssrc === ssrc);
|
|
265
|
+
if (!transceiver)
|
|
266
|
+
throw new Error('No matching transceiver found');
|
|
267
|
+
if (transceiver.stopping || transceiver.stopped) {
|
|
268
|
+
return false;
|
|
269
|
+
}
|
|
270
|
+
if (sender.track == undefined) {
|
|
271
|
+
return false;
|
|
272
|
+
}
|
|
273
|
+
// sender 自体は止めず track だけ外し、同じ sender で送信を再開できるようにする
|
|
274
|
+
sender.detachTrack();
|
|
275
|
+
if (transceiver.direction === 'sendrecv') {
|
|
276
|
+
transceiver.setDirection('recvonly');
|
|
277
|
+
}
|
|
278
|
+
else if (transceiver.direction === 'sendonly') {
|
|
279
|
+
transceiver.setDirection('inactive');
|
|
280
|
+
}
|
|
281
|
+
return true;
|
|
282
|
+
}
|
|
283
|
+
assignTransceiverCodecs(transceiver) {
|
|
284
|
+
const configured = this.filterCodecsByDirection(transceiver.kind, transceiver.direction);
|
|
285
|
+
transceiver.codecs = (0, codecCompatibility_js_1.assertCodecsSupported)({
|
|
286
|
+
kind: transceiver.kind,
|
|
287
|
+
configured,
|
|
288
|
+
source: (0, track_js_1.getTrackSourceCodecs)(transceiver.sender.track),
|
|
289
|
+
preferences: transceiver.codecPreferences
|
|
290
|
+
});
|
|
291
|
+
transceiver.codecPreferencesNeedResolution = false;
|
|
292
|
+
}
|
|
293
|
+
filterCodecsByDirection(kind, direction) {
|
|
294
|
+
return this.config.codecs[kind].filter((codecCandidate) => {
|
|
295
|
+
switch (codecCandidate.direction) {
|
|
296
|
+
case 'recvonly': {
|
|
297
|
+
if (const_js_1.ReceiverDirection.includes(direction))
|
|
298
|
+
return true;
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
case 'sendonly': {
|
|
302
|
+
if (const_js_1.SenderDirections.includes(direction))
|
|
303
|
+
return true;
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
case 'sendrecv': {
|
|
307
|
+
if ([index_js_1.Sendrecv, index_js_1.Recvonly, index_js_1.Sendonly].includes(direction))
|
|
308
|
+
return true;
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
case 'all': {
|
|
312
|
+
return true;
|
|
313
|
+
}
|
|
314
|
+
default:
|
|
315
|
+
return false;
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
validateTrackForTransceiver(track, transceiver, direction = transceiver.direction) {
|
|
320
|
+
(0, track_js_1.captureTrackSourceCodecs)(track);
|
|
321
|
+
(0, codecCompatibility_js_1.assertCodecsSupported)({
|
|
322
|
+
kind: track.kind,
|
|
323
|
+
configured: this.filterCodecsByDirection(track.kind, direction),
|
|
324
|
+
source: (0, track_js_1.getTrackSourceCodecs)(track),
|
|
325
|
+
preferences: transceiver.codecPreferences
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
getLocalRtpParams(transceiver) {
|
|
329
|
+
if (transceiver.mid == undefined)
|
|
330
|
+
throw new Error('mid not assigned');
|
|
331
|
+
const rtp = {
|
|
332
|
+
codecs: transceiver.codecs,
|
|
333
|
+
muxId: transceiver.mid,
|
|
334
|
+
headerExtensions: transceiver.headerExtensions,
|
|
335
|
+
rtcp: { cname: this.cname, ssrc: transceiver.sender.ssrc, mux: true }
|
|
336
|
+
};
|
|
337
|
+
return rtp;
|
|
338
|
+
}
|
|
339
|
+
getRemoteRtpParams(media, transceiver) {
|
|
340
|
+
const receiveParameters = {
|
|
341
|
+
muxId: media.rtp.muxId,
|
|
342
|
+
rtcp: media.rtp.rtcp,
|
|
343
|
+
codecs: transceiver.codecs,
|
|
344
|
+
headerExtensions: transceiver.headerExtensions,
|
|
345
|
+
encodings: Object.values(transceiver.codecs.reduce((acc, codec) => {
|
|
346
|
+
if (codec.name.toLowerCase() === 'rtx') {
|
|
347
|
+
const params = (0, sdp_js_1.codecParametersFromString)(codec.parameters ?? '');
|
|
348
|
+
const apt = acc[params['apt']];
|
|
349
|
+
if (apt && media.ssrc.length === 2) {
|
|
350
|
+
apt.rtx = new index_js_1.RTCRtpRtxParameters({ ssrc: media.ssrc[1].ssrc });
|
|
351
|
+
}
|
|
352
|
+
return acc;
|
|
353
|
+
}
|
|
354
|
+
acc[codec.payloadType] = new index_js_1.RTCRtpCodingParameters({
|
|
355
|
+
ssrc: media.ssrc[0]?.ssrc,
|
|
356
|
+
payloadType: codec.payloadType
|
|
357
|
+
});
|
|
358
|
+
return acc;
|
|
359
|
+
}, {}))
|
|
360
|
+
};
|
|
361
|
+
return receiveParameters;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* remote offer と local (source constraint + preferences) から
|
|
365
|
+
* answer 用の codec を再解決し、sender/receiver の codec 状態も
|
|
366
|
+
* 新しい negotiated codec に同期する。
|
|
367
|
+
* setCodecPreferences() による無効化後に createAnswer() から呼ばれる。
|
|
368
|
+
* direction / headerExtensions / onTrack は setRemoteDescription() 時の
|
|
369
|
+
* まま変えない (track イベントの重複発火を避ける)。
|
|
370
|
+
*/
|
|
371
|
+
resyncAnswerCodecs(transceiver, remoteMedia) {
|
|
372
|
+
this.refreshAnswerCodecs(transceiver, remoteMedia);
|
|
373
|
+
const localParams = this.getLocalRtpParams(transceiver);
|
|
374
|
+
transceiver.sender.prepareSend(localParams);
|
|
375
|
+
if (['recvonly', 'sendrecv'].includes(transceiver.direction)) {
|
|
376
|
+
const remoteParams = this.getRemoteRtpParams(remoteMedia, transceiver);
|
|
377
|
+
for (const param of remoteMedia.simulcastParameters) {
|
|
378
|
+
this.router.registerRtpReceiverByRid(transceiver, param, remoteParams);
|
|
379
|
+
}
|
|
380
|
+
transceiver.receiver.resyncCodecs(remoteParams);
|
|
381
|
+
this.router.registerRtpReceiverBySsrc(transceiver, remoteParams);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* remote offer と local (source constraint + preferences) から
|
|
386
|
+
* answer 用の codec だけを再解決する (sender/receiver の同期なし)。
|
|
387
|
+
* setRemoteRTP() の交渉部分として使う。
|
|
388
|
+
*/
|
|
389
|
+
resolveRemoteCodecSet(localCodecs, remoteMedia, order, source) {
|
|
390
|
+
// # negotiate codecs
|
|
391
|
+
const codecName = (codec) => codec.name.toLowerCase();
|
|
392
|
+
const redPayloadTypes = (codec) => (codec.parameters ?? '')
|
|
393
|
+
.split('/')
|
|
394
|
+
.map(Number)
|
|
395
|
+
.filter((payloadType) => !Number.isNaN(payloadType));
|
|
396
|
+
const remoteByLocal = new Map();
|
|
397
|
+
const usedRemote = new Set();
|
|
398
|
+
for (const localCodec of localCodecs) {
|
|
399
|
+
if (['red', 'rtx'].includes(codecName(localCodec)))
|
|
400
|
+
continue;
|
|
401
|
+
const remoteCodec = remoteMedia.rtp.codecs.find((codec) => !usedRemote.has(codec) &&
|
|
402
|
+
codec.mimeType.toLowerCase() === localCodec.mimeType.toLowerCase() &&
|
|
403
|
+
(source == undefined ||
|
|
404
|
+
source.some((sourceCodec) => (0, codecCompatibility_js_1.isCodecCompatible)(sourceCodec, codec))));
|
|
405
|
+
if (remoteCodec) {
|
|
406
|
+
remoteByLocal.set(localCodec, remoteCodec);
|
|
407
|
+
usedRemote.add(remoteCodec);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
const negotiated = localCodecs.flatMap((localCodec) => {
|
|
411
|
+
if (codecName(localCodec) === 'red') {
|
|
412
|
+
const remotePrimaryPayloadTypes = redPayloadTypes(localCodec).flatMap((payloadType) => {
|
|
413
|
+
const localPrimary = localCodecs.find((codec) => codec.payloadType === payloadType);
|
|
414
|
+
const remotePrimary = localPrimary
|
|
415
|
+
? remoteByLocal.get(localPrimary)
|
|
416
|
+
: undefined;
|
|
417
|
+
return remotePrimary ? [remotePrimary.payloadType] : [];
|
|
418
|
+
});
|
|
419
|
+
const remoteRed = remoteMedia.rtp.codecs.find((codec) => {
|
|
420
|
+
if (codecName(codec) !== 'red' || usedRemote.has(codec))
|
|
421
|
+
return false;
|
|
422
|
+
const referenced = redPayloadTypes(codec);
|
|
423
|
+
return (referenced.length === remotePrimaryPayloadTypes.length &&
|
|
424
|
+
referenced.every((payloadType, index) => payloadType === remotePrimaryPayloadTypes[index]));
|
|
425
|
+
});
|
|
426
|
+
if (!remoteRed)
|
|
427
|
+
return [];
|
|
428
|
+
usedRemote.add(remoteRed);
|
|
429
|
+
return [remoteRed];
|
|
430
|
+
}
|
|
431
|
+
if (codecName(localCodec) !== 'rtx') {
|
|
432
|
+
const remoteCodec = remoteByLocal.get(localCodec);
|
|
433
|
+
return remoteCodec ? [remoteCodec] : [];
|
|
434
|
+
}
|
|
435
|
+
const localApt = (0, sdp_js_1.codecParametersFromString)(localCodec.parameters ?? '').apt;
|
|
436
|
+
const localPrimary = localCodecs.find((codec) => codec.payloadType === localApt);
|
|
437
|
+
if (!localPrimary)
|
|
438
|
+
return [];
|
|
439
|
+
const remotePrimary = remoteByLocal.get(localPrimary);
|
|
440
|
+
if (!remotePrimary)
|
|
441
|
+
return [];
|
|
442
|
+
const remoteRtx = remoteMedia.rtp.codecs.find((codec) => {
|
|
443
|
+
if (codecName(codec) !== 'rtx' || usedRemote.has(codec)) {
|
|
444
|
+
return false;
|
|
445
|
+
}
|
|
446
|
+
return ((0, sdp_js_1.codecParametersFromString)(codec.parameters ?? '').apt ===
|
|
447
|
+
remotePrimary.payloadType);
|
|
448
|
+
});
|
|
449
|
+
if (!remoteRtx)
|
|
450
|
+
return [];
|
|
451
|
+
usedRemote.add(remoteRtx);
|
|
452
|
+
return [remoteRtx];
|
|
453
|
+
});
|
|
454
|
+
if (order === 'remote') {
|
|
455
|
+
const remoteOrder = new Map(remoteMedia.rtp.codecs.map((codec, index) => [codec, index]));
|
|
456
|
+
negotiated.sort((left, right) => remoteOrder.get(left) - remoteOrder.get(right));
|
|
457
|
+
}
|
|
458
|
+
if (negotiated.length === 0) {
|
|
459
|
+
throw (0, errors_js_1.createWebRtcDomException)('NotSupportedError', 'No compatible codec remains after remote negotiation.');
|
|
460
|
+
}
|
|
461
|
+
return negotiated;
|
|
462
|
+
}
|
|
463
|
+
refreshAnswerCodecs(transceiver, remoteMedia) {
|
|
464
|
+
const configured = this.config.codecs[remoteMedia.kind] || [];
|
|
465
|
+
const source = (0, track_js_1.getTrackSourceCodecs)(transceiver.sender.track);
|
|
466
|
+
(0, codecCompatibility_js_1.assertCodecsSupported)({
|
|
467
|
+
kind: remoteMedia.kind,
|
|
468
|
+
configured,
|
|
469
|
+
source,
|
|
470
|
+
preferences: transceiver.codecPreferences
|
|
471
|
+
});
|
|
472
|
+
const localCodecs = (0, codecCompatibility_js_1.resolveCodecs)(configured, source, transceiver.codecPreferences);
|
|
473
|
+
transceiver.codecs = this.resolveRemoteCodecSet(localCodecs, remoteMedia, 'local', source);
|
|
474
|
+
transceiver.codecPreferencesNeedResolution = false;
|
|
475
|
+
log('negotiated codecs', transceiver.codecs);
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* remote SDP の全 audio/video m-line の codec を副作用なしで解決する。
|
|
479
|
+
* transceiver の対応付けは本適用と同じ resolver を使い、検証と適用の判定をずらさない。
|
|
480
|
+
* - port 0、停止済み / 停止中の m-line は codec 解決をしない (空)
|
|
481
|
+
* - local capability と MIME が 1 つも一致しない m-line は空とし、
|
|
482
|
+
* offer は setRemoteRTP() で拒否 (port 0 answer)、answer/pranswer は
|
|
483
|
+
* SDPManager が InvalidAccessError とする (Issue #705)
|
|
484
|
+
* - source constraint / preference / pending offer との不一致は NotSupportedError
|
|
485
|
+
*/
|
|
486
|
+
planRemoteRtpCodecs(remoteSdp, findTransceiver) {
|
|
487
|
+
const plan = new Map();
|
|
488
|
+
const isOffer = remoteSdp.type === 'offer';
|
|
489
|
+
for (const [index, remoteMedia] of remoteSdp.media.entries()) {
|
|
490
|
+
if (!['audio', 'video'].includes(remoteMedia.kind))
|
|
491
|
+
continue;
|
|
492
|
+
const transceiver = findTransceiver(remoteMedia, index);
|
|
493
|
+
if (remoteMedia.port === 0 ||
|
|
494
|
+
transceiver?.stopped ||
|
|
495
|
+
transceiver?.stopping) {
|
|
496
|
+
plan.set(index, []);
|
|
497
|
+
continue;
|
|
498
|
+
}
|
|
499
|
+
const source = (0, track_js_1.getTrackSourceCodecs)(transceiver?.sender.track);
|
|
500
|
+
const configured = this.config.codecs[remoteMedia.kind] || [];
|
|
501
|
+
const localCodecs = isOffer
|
|
502
|
+
? configured
|
|
503
|
+
: transceiver?.pendingLocalOfferCodecs || [];
|
|
504
|
+
if (!(0, codecCompatibility_js_1.hasCommonPrimaryMimeType)(localCodecs, remoteMedia.rtp.codecs)) {
|
|
505
|
+
plan.set(index, []);
|
|
506
|
+
continue;
|
|
507
|
+
}
|
|
508
|
+
if (isOffer) {
|
|
509
|
+
(0, codecCompatibility_js_1.assertCodecsSupported)({
|
|
510
|
+
kind: remoteMedia.kind,
|
|
511
|
+
configured,
|
|
512
|
+
source,
|
|
513
|
+
preferences: transceiver?.codecPreferences
|
|
514
|
+
});
|
|
515
|
+
}
|
|
516
|
+
const negotiated = this.resolveRemoteCodecSet(isOffer
|
|
517
|
+
? (0, codecCompatibility_js_1.resolveCodecs)(configured, source, transceiver?.codecPreferences)
|
|
518
|
+
: localCodecs, remoteMedia, isOffer ? 'local' : 'remote', source);
|
|
519
|
+
if (source != undefined) {
|
|
520
|
+
(0, codecCompatibility_js_1.assertCodecsSupported)({
|
|
521
|
+
kind: remoteMedia.kind,
|
|
522
|
+
configured: negotiated,
|
|
523
|
+
source,
|
|
524
|
+
preferences: undefined
|
|
525
|
+
});
|
|
526
|
+
}
|
|
527
|
+
plan.set(index, negotiated);
|
|
528
|
+
}
|
|
529
|
+
return plan;
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* remote m-line を transceiver に適用する。
|
|
533
|
+
* codecs は planRemoteRtpCodecs() で検証済みの解決結果を渡す。
|
|
534
|
+
* codec が空、または remote port 0 の m-line は拒否として扱い、
|
|
535
|
+
* sender/receiver 準備・router 登録・onTrack・TWCC を行わない。
|
|
536
|
+
* @returns 受け入れた (RTP を流す) 場合 true
|
|
537
|
+
*/
|
|
538
|
+
setRemoteRTP(transceiver, remoteMedia, type, mLineIndex, codecs) {
|
|
539
|
+
if (!transceiver.mid) {
|
|
540
|
+
transceiver.mid = remoteMedia.rtp.muxId ?? null;
|
|
541
|
+
}
|
|
542
|
+
transceiver.mLineIndex = mLineIndex;
|
|
543
|
+
if (type === 'answer')
|
|
544
|
+
transceiver.pendingLocalOfferCodecs = undefined;
|
|
545
|
+
if (transceiver.stopped) {
|
|
546
|
+
// 確定済みの停止 / 拒否 m-line は復活させない
|
|
547
|
+
return false;
|
|
548
|
+
}
|
|
549
|
+
if (transceiver.stopping) {
|
|
550
|
+
// app の stop() は自分の offer で交渉する。port 0 の answer で停止を確定する
|
|
551
|
+
if (type === 'answer' && remoteMedia.port === 0) {
|
|
552
|
+
transceiver.commitStopped({ rejected: false });
|
|
553
|
+
}
|
|
554
|
+
return false;
|
|
555
|
+
}
|
|
556
|
+
log('negotiated codecs', codecs);
|
|
557
|
+
if (remoteMedia.port === 0 || codecs.length === 0) {
|
|
558
|
+
if (type === 'answer') {
|
|
559
|
+
transceiver.commitStopped({ rejected: true });
|
|
560
|
+
}
|
|
561
|
+
else {
|
|
562
|
+
// answer が確定するまで既存の RTP pipeline / track は維持する
|
|
563
|
+
transceiver.pendingRejection = true;
|
|
564
|
+
}
|
|
565
|
+
return false;
|
|
566
|
+
}
|
|
567
|
+
transceiver.pendingRejection = false;
|
|
568
|
+
transceiver.codecs = codecs;
|
|
569
|
+
transceiver.headerExtensions = remoteMedia.rtp.headerExtensions.filter((extension) => (this.config.headerExtensions[remoteMedia.kind] ||
|
|
570
|
+
[]).find((v) => v.uri === extension.uri));
|
|
571
|
+
// # configure direction
|
|
572
|
+
const mediaDirection = remoteMedia.direction ?? 'inactive';
|
|
573
|
+
const direction = (0, utils_js_1.reverseDirection)(mediaDirection);
|
|
574
|
+
if (['answer', 'pranswer'].includes(type)) {
|
|
575
|
+
transceiver.setCurrentDirection(direction);
|
|
576
|
+
}
|
|
577
|
+
else {
|
|
578
|
+
transceiver.offerDirection = direction;
|
|
579
|
+
}
|
|
580
|
+
const localParams = this.getLocalRtpParams(transceiver);
|
|
581
|
+
transceiver.sender.prepareSend(localParams);
|
|
582
|
+
if (['recvonly', 'sendrecv'].includes(transceiver.direction)) {
|
|
583
|
+
const remotePrams = this.getRemoteRtpParams(remoteMedia, transceiver);
|
|
584
|
+
// register simulcast receiver
|
|
585
|
+
for (const param of remoteMedia.simulcastParameters) {
|
|
586
|
+
this.router.registerRtpReceiverByRid(transceiver, param, remotePrams);
|
|
587
|
+
}
|
|
588
|
+
// codec map / RTX を negotiated codec に合わせて再構築する
|
|
589
|
+
transceiver.receiver.resyncCodecs(remotePrams);
|
|
590
|
+
// register ssrc receiver
|
|
591
|
+
this.router.registerRtpReceiverBySsrc(transceiver, remotePrams);
|
|
592
|
+
}
|
|
593
|
+
if (['sendonly', 'sendrecv'].includes(mediaDirection)) {
|
|
594
|
+
const remoteStreamIds = [
|
|
595
|
+
...new Set(remoteMedia.msids.map((msid) => msid.split(' ')[0]))
|
|
596
|
+
];
|
|
597
|
+
const remoteTrackId = remoteMedia.msids[0]?.split(' ')[1];
|
|
598
|
+
transceiver.receiver.remoteStreamId = remoteStreamIds[0];
|
|
599
|
+
transceiver.receiver.remoteStreamIds = remoteStreamIds;
|
|
600
|
+
transceiver.receiver.remoteTrackId = remoteTrackId;
|
|
601
|
+
// re-offer / re-answer で同じ受信を重複通知しない
|
|
602
|
+
if (!transceiver.firedReceiving) {
|
|
603
|
+
transceiver.firedReceiving = true;
|
|
604
|
+
this.onTrack.execute({
|
|
605
|
+
track: transceiver.receiver.track,
|
|
606
|
+
transceiver,
|
|
607
|
+
streams: remoteStreamIds.map((id) => new index_js_1.MediaStream({
|
|
608
|
+
id,
|
|
609
|
+
tracks: [transceiver.receiver.track]
|
|
610
|
+
}))
|
|
611
|
+
});
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
else {
|
|
615
|
+
transceiver.firedReceiving = false;
|
|
616
|
+
}
|
|
617
|
+
return true;
|
|
618
|
+
}
|
|
619
|
+
/**
|
|
620
|
+
* The signaling state is stable: the media ids and the m-line indexes of the transceivers are kept, given back when
|
|
621
|
+
* the next local offer is rolled back
|
|
622
|
+
*/
|
|
623
|
+
markStable() {
|
|
624
|
+
this.stableState = new Map(this.transceivers.map((t) => [t, { mid: t.mid, mLineIndex: t.mLineIndex }]));
|
|
625
|
+
}
|
|
626
|
+
/**
|
|
627
|
+
* A local offer is rolled back (JSEP 4.1.8.2): the transceivers it gave a media id and an m-line are associated as
|
|
628
|
+
* before it, the ones added since not at all (an offer of the other side then associates them by their own rules, not
|
|
629
|
+
* by the media id the rolled back offer gave them)
|
|
630
|
+
*/
|
|
631
|
+
rollbackLocalOffer() {
|
|
632
|
+
for (const transceiver of this.transceivers) {
|
|
633
|
+
const state = this.stableState.get(transceiver);
|
|
634
|
+
transceiver.mid = state?.mid ?? null;
|
|
635
|
+
transceiver.mLineIndex = state?.mLineIndex;
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
/**
|
|
639
|
+
* remote offer 適用前の transceiver 対応を保存する。
|
|
640
|
+
* 同じ offer/answer 交換中に複数回呼ばれても最初の状態を保持する。
|
|
641
|
+
*/
|
|
642
|
+
beginRemoteOffer() {
|
|
643
|
+
if (this.remoteOfferSnapshot) {
|
|
644
|
+
return;
|
|
645
|
+
}
|
|
646
|
+
this.remoteOfferSnapshot = {
|
|
647
|
+
transceivers: [...this.transceivers],
|
|
648
|
+
remoteCreated: new Set(),
|
|
649
|
+
states: new Map(this.transceivers.map((t) => [
|
|
650
|
+
t,
|
|
651
|
+
{
|
|
652
|
+
mid: t.mid,
|
|
653
|
+
mLineIndex: t.mLineIndex,
|
|
654
|
+
pendingRejection: t.pendingRejection,
|
|
655
|
+
firedReceiving: t.firedReceiving
|
|
656
|
+
}
|
|
657
|
+
]))
|
|
658
|
+
};
|
|
659
|
+
}
|
|
660
|
+
/**
|
|
661
|
+
* local answer の確定で、拒否予定の m-line を停止・解放する。
|
|
662
|
+
* remote SDP 起因の停止なので negotiationneeded は要求しない。
|
|
663
|
+
*/
|
|
664
|
+
commitRemoteOffer() {
|
|
665
|
+
this.remoteOfferSnapshot = undefined;
|
|
666
|
+
for (const transceiver of this.transceivers) {
|
|
667
|
+
if (transceiver.pendingRejection) {
|
|
668
|
+
transceiver.commitStopped({ rejected: true });
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
/**remote offer の rollback で transceiver 対応を元に戻す */
|
|
673
|
+
rollbackRemoteOffer() {
|
|
674
|
+
const snapshot = this.remoteOfferSnapshot;
|
|
675
|
+
this.remoteOfferSnapshot = undefined;
|
|
676
|
+
if (!snapshot) {
|
|
677
|
+
return;
|
|
678
|
+
}
|
|
679
|
+
for (const transceiver of this.transceivers) {
|
|
680
|
+
if (snapshot.states.has(transceiver)) {
|
|
681
|
+
continue;
|
|
682
|
+
}
|
|
683
|
+
// app が追加した transceiver と、remote offer が作ったが app が addTrack で使い始めた
|
|
684
|
+
// transceiver は残し、関連付けだけ外す (track の有無ではなく作成元で判定する)
|
|
685
|
+
if (!snapshot.remoteCreated.has(transceiver) ||
|
|
686
|
+
transceiver.sender.track) {
|
|
687
|
+
transceiver.mid = null;
|
|
688
|
+
transceiver.mLineIndex = undefined;
|
|
689
|
+
snapshot.transceivers.push(transceiver);
|
|
690
|
+
continue;
|
|
691
|
+
}
|
|
692
|
+
// remote offer が作った transceiver は破棄する
|
|
693
|
+
transceiver.forceStop();
|
|
694
|
+
this.unwatchTransceiver(transceiver);
|
|
695
|
+
}
|
|
696
|
+
this.transceivers.splice(0, this.transceivers.length, ...snapshot.transceivers);
|
|
697
|
+
snapshot.transceivers.forEach((t) => this.watchTransceiver(t));
|
|
698
|
+
for (const [transceiver, state] of snapshot.states) {
|
|
699
|
+
transceiver.mid = state.mid;
|
|
700
|
+
transceiver.mLineIndex = state.mLineIndex;
|
|
701
|
+
transceiver.pendingRejection = state.pendingRejection;
|
|
702
|
+
transceiver.firedReceiving = state.firedReceiving;
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
/**
|
|
706
|
+
* answer 確定後に、stopping のまま交渉対象になり得ない transceiver の停止を確定する。
|
|
707
|
+
* (MID が確定済み local description の非ゼロ m-line にない = offer から外れる)
|
|
708
|
+
* @param negotiatedMids 確定済み local description の非ゼロ port の MID
|
|
709
|
+
* @returns 次の自分の offer で port 0 を交渉すべき transceiver があるか
|
|
710
|
+
*/
|
|
711
|
+
settleStoppingTransceivers(negotiatedMids) {
|
|
712
|
+
for (const t of this.transceivers) {
|
|
713
|
+
if (!t.stopping || t.stopped) {
|
|
714
|
+
continue;
|
|
715
|
+
}
|
|
716
|
+
if (t.mid == undefined || !negotiatedMids.has(t.mid)) {
|
|
717
|
+
t.commitStopped({ rejected: false });
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
return this.transceivers.some((t) => t.stopping && !t.stopped);
|
|
721
|
+
}
|
|
722
|
+
collectStats(timestamp) {
|
|
723
|
+
const stats = [];
|
|
724
|
+
for (const transceiver of this.transceivers) {
|
|
725
|
+
if (transceiver.sender) {
|
|
726
|
+
stats.push(...transceiver.sender.collectStats(timestamp));
|
|
727
|
+
}
|
|
728
|
+
if (transceiver.receiver) {
|
|
729
|
+
stats.push(...transceiver.receiver.collectStats(timestamp));
|
|
730
|
+
}
|
|
731
|
+
const codecStats = transceiver.collectCodecStats(timestamp);
|
|
732
|
+
if (codecStats) {
|
|
733
|
+
stats.push(...codecStats);
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
return stats;
|
|
737
|
+
}
|
|
738
|
+
getStatsRootIds(selector) {
|
|
739
|
+
if (!selector) {
|
|
740
|
+
return [];
|
|
741
|
+
}
|
|
742
|
+
const rootIds = [];
|
|
743
|
+
for (const transceiver of this.transceivers) {
|
|
744
|
+
if (transceiver.sender.track === selector) {
|
|
745
|
+
rootIds.push(...transceiver.sender.getStatsRootIds());
|
|
746
|
+
}
|
|
747
|
+
if (transceiver.receiver.tracks.includes(selector)) {
|
|
748
|
+
rootIds.push(...transceiver.receiver.getStatsRootIds(selector));
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
return rootIds;
|
|
752
|
+
}
|
|
753
|
+
/**
|
|
754
|
+
* 全トランシーバーのreceiver/senderのstopを呼ぶcloseメソッド
|
|
755
|
+
*/
|
|
756
|
+
close() {
|
|
757
|
+
for (const transceiver of this.transceivers) {
|
|
758
|
+
transceiver.forceStop();
|
|
759
|
+
this.unwatchTransceiver(transceiver);
|
|
760
|
+
}
|
|
761
|
+
this.onTransceiverAdded.allUnsubscribe();
|
|
762
|
+
this.onRemoteTransceiverAdded.allUnsubscribe();
|
|
763
|
+
this.onTrack.allUnsubscribe();
|
|
764
|
+
this.onNegotiationNeeded.allUnsubscribe();
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
exports.TransceiverManager = TransceiverManager;
|