mediasoup 3.19.21 → 3.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/node/lib/ActiveSpeakerObserver.js +34 -1
- package/node/lib/AudioLevelObserver.js +35 -2
- package/node/lib/Channel.d.ts.map +1 -1
- package/node/lib/Channel.js +37 -5
- package/node/lib/Consumer.js +39 -6
- package/node/lib/DataConsumer.d.ts.map +1 -1
- package/node/lib/DataConsumer.js +39 -5
- package/node/lib/DataConsumerTypes.d.ts +1 -0
- package/node/lib/DataConsumerTypes.d.ts.map +1 -1
- package/node/lib/DataProducer.js +37 -4
- package/node/lib/DirectTransport.js +37 -4
- package/node/lib/DirectTransportTypes.d.ts +7 -2
- package/node/lib/DirectTransportTypes.d.ts.map +1 -1
- package/node/lib/Logger.js +4 -1
- package/node/lib/PipeTransport.d.ts +3 -1
- package/node/lib/PipeTransport.d.ts.map +1 -1
- package/node/lib/PipeTransport.js +56 -5
- package/node/lib/PipeTransportTypes.d.ts +28 -8
- package/node/lib/PipeTransportTypes.d.ts.map +1 -1
- package/node/lib/PlainTransport.d.ts +3 -1
- package/node/lib/PlainTransport.d.ts.map +1 -1
- package/node/lib/PlainTransport.js +54 -3
- package/node/lib/PlainTransportTypes.d.ts +27 -7
- package/node/lib/PlainTransportTypes.d.ts.map +1 -1
- package/node/lib/Producer.js +40 -7
- package/node/lib/Router.d.ts +5 -5
- package/node/lib/Router.d.ts.map +1 -1
- package/node/lib/Router.js +81 -36
- package/node/lib/RouterTypes.d.ts +25 -3
- package/node/lib/RouterTypes.d.ts.map +1 -1
- package/node/lib/RtpObserver.js +36 -3
- package/node/lib/Transport.d.ts +3 -1
- package/node/lib/Transport.d.ts.map +1 -1
- package/node/lib/Transport.js +74 -22
- package/node/lib/TransportTypes.d.ts +2 -1
- package/node/lib/TransportTypes.d.ts.map +1 -1
- package/node/lib/WebRtcServer.js +36 -3
- package/node/lib/WebRtcTransport.d.ts +3 -1
- package/node/lib/WebRtcTransport.d.ts.map +1 -1
- package/node/lib/WebRtcTransport.js +55 -4
- package/node/lib/WebRtcTransportTypes.d.ts +27 -7
- package/node/lib/WebRtcTransportTypes.d.ts.map +1 -1
- package/node/lib/Worker.d.ts +2 -1
- package/node/lib/Worker.d.ts.map +1 -1
- package/node/lib/Worker.js +71 -25
- package/node/lib/WorkerTypes.d.ts +0 -4
- package/node/lib/WorkerTypes.d.ts.map +1 -1
- package/node/lib/enhancedEvents.d.ts +2 -2
- package/node/lib/enhancedEvents.d.ts.map +1 -1
- package/node/lib/enhancedEvents.js +0 -2
- package/node/lib/fbs/active-speaker-observer/active-speaker-observer-options.js +34 -1
- package/node/lib/fbs/active-speaker-observer/dominant-speaker-notification.js +34 -1
- package/node/lib/fbs/audio-level-observer/audio-level-observer-options.js +34 -1
- package/node/lib/fbs/audio-level-observer/volume.js +34 -1
- package/node/lib/fbs/audio-level-observer/volumes-notification.js +34 -1
- package/node/lib/fbs/common/string-string-array.js +34 -1
- package/node/lib/fbs/common/string-string.js +34 -1
- package/node/lib/fbs/common/string-uint8.js +34 -1
- package/node/lib/fbs/common/uint16-string.js +34 -1
- package/node/lib/fbs/common/uint32-string.js +34 -1
- package/node/lib/fbs/consumer/base-consumer-dump.js +34 -1
- package/node/lib/fbs/consumer/consumer-dump.js +34 -1
- package/node/lib/fbs/consumer/consumer-layers.js +34 -1
- package/node/lib/fbs/consumer/consumer-score.js +34 -1
- package/node/lib/fbs/consumer/dump-response.js +34 -1
- package/node/lib/fbs/consumer/enable-trace-event-request.js +34 -1
- package/node/lib/fbs/consumer/fir-trace-info.js +34 -1
- package/node/lib/fbs/consumer/get-stats-response.js +34 -1
- package/node/lib/fbs/consumer/key-frame-trace-info.js +34 -1
- package/node/lib/fbs/consumer/layers-change-notification.js +34 -1
- package/node/lib/fbs/consumer/pli-trace-info.js +34 -1
- package/node/lib/fbs/consumer/rtp-notification.js +34 -1
- package/node/lib/fbs/consumer/rtp-trace-info.js +34 -1
- package/node/lib/fbs/consumer/score-notification.js +34 -1
- package/node/lib/fbs/consumer/set-preferred-layers-request.js +34 -1
- package/node/lib/fbs/consumer/set-preferred-layers-response.js +34 -1
- package/node/lib/fbs/consumer/set-priority-request.js +34 -1
- package/node/lib/fbs/consumer/set-priority-response.js +34 -1
- package/node/lib/fbs/consumer/trace-notification.js +34 -1
- package/node/lib/fbs/data-consumer/add-subchannel-request.js +34 -1
- package/node/lib/fbs/data-consumer/add-subchannel-response.js +34 -1
- package/node/lib/fbs/data-consumer/buffered-amount-low-notification.js +34 -1
- package/node/lib/fbs/data-consumer/dump-response.d.ts +5 -2
- package/node/lib/fbs/data-consumer/dump-response.d.ts.map +1 -1
- package/node/lib/fbs/data-consumer/dump-response.js +60 -16
- package/node/lib/fbs/data-consumer/get-buffered-amount-response.js +34 -1
- package/node/lib/fbs/data-consumer/get-stats-response.js +34 -1
- package/node/lib/fbs/data-consumer/message-notification.js +34 -1
- package/node/lib/fbs/data-consumer/remove-subchannel-request.js +34 -1
- package/node/lib/fbs/data-consumer/remove-subchannel-response.js +34 -1
- package/node/lib/fbs/data-consumer/send-request.js +34 -1
- package/node/lib/fbs/data-consumer/set-buffered-amount-low-threshold-request.js +34 -1
- package/node/lib/fbs/data-consumer/set-subchannels-request.js +34 -1
- package/node/lib/fbs/data-consumer/set-subchannels-response.js +34 -1
- package/node/lib/fbs/data-consumer/type.d.ts +5 -0
- package/node/lib/fbs/data-consumer/type.d.ts.map +1 -0
- package/node/lib/fbs/data-consumer/type.js +10 -0
- package/node/lib/fbs/data-consumer.d.ts +1 -0
- package/node/lib/fbs/data-consumer.d.ts.map +1 -1
- package/node/lib/fbs/data-consumer.js +3 -1
- package/node/lib/fbs/data-producer/dump-response.js +34 -1
- package/node/lib/fbs/data-producer/get-stats-response.js +34 -1
- package/node/lib/fbs/data-producer/send-notification.js +34 -1
- package/node/lib/fbs/direct-transport/direct-transport-options.js +34 -1
- package/node/lib/fbs/direct-transport/dump-response.js +34 -1
- package/node/lib/fbs/direct-transport/get-stats-response.js +34 -1
- package/node/lib/fbs/direct-transport/rtcp-notification.js +34 -1
- package/node/lib/fbs/lib-uring/dump.js +34 -1
- package/node/lib/fbs/log/log.js +34 -1
- package/node/lib/fbs/message/message.js +34 -1
- package/node/lib/fbs/notification/body.d.ts +24 -22
- package/node/lib/fbs/notification/body.d.ts.map +1 -1
- package/node/lib/fbs/notification/body.js +24 -20
- package/node/lib/fbs/notification/event.d.ts +27 -26
- package/node/lib/fbs/notification/event.d.ts.map +1 -1
- package/node/lib/fbs/notification/event.js +27 -26
- package/node/lib/fbs/notification/notification.d.ts +3 -2
- package/node/lib/fbs/notification/notification.d.ts.map +1 -1
- package/node/lib/fbs/notification/notification.js +34 -1
- package/node/lib/fbs/pipe-transport/connect-request.js +34 -1
- package/node/lib/fbs/pipe-transport/connect-response.js +34 -1
- package/node/lib/fbs/pipe-transport/dump-response.js +34 -1
- package/node/lib/fbs/pipe-transport/get-stats-response.js +34 -1
- package/node/lib/fbs/pipe-transport/pipe-transport-options.js +34 -1
- package/node/lib/fbs/plain-transport/connect-request.js +34 -1
- package/node/lib/fbs/plain-transport/connect-response.js +34 -1
- package/node/lib/fbs/plain-transport/dump-response.js +34 -1
- package/node/lib/fbs/plain-transport/get-stats-response.js +34 -1
- package/node/lib/fbs/plain-transport/plain-transport-options.js +34 -1
- package/node/lib/fbs/plain-transport/rtcp-tuple-notification.js +34 -1
- package/node/lib/fbs/plain-transport/tuple-notification.js +34 -1
- package/node/lib/fbs/producer/dump-response.js +34 -1
- package/node/lib/fbs/producer/enable-trace-event-request.js +34 -1
- package/node/lib/fbs/producer/fir-trace-info.js +34 -1
- package/node/lib/fbs/producer/get-stats-response.js +34 -1
- package/node/lib/fbs/producer/key-frame-trace-info.js +34 -1
- package/node/lib/fbs/producer/pli-trace-info.js +34 -1
- package/node/lib/fbs/producer/rtp-trace-info.js +34 -1
- package/node/lib/fbs/producer/score-notification.js +34 -1
- package/node/lib/fbs/producer/score.js +34 -1
- package/node/lib/fbs/producer/send-notification.js +34 -1
- package/node/lib/fbs/producer/sr-trace-info.js +34 -1
- package/node/lib/fbs/producer/trace-notification.js +34 -1
- package/node/lib/fbs/producer/video-orientation-change-notification.js +34 -1
- package/node/lib/fbs/request/request.js +34 -1
- package/node/lib/fbs/response/response.js +34 -1
- package/node/lib/fbs/router/close-rtp-observer-request.js +34 -1
- package/node/lib/fbs/router/close-transport-request.js +34 -1
- package/node/lib/fbs/router/create-active-speaker-observer-request.js +34 -1
- package/node/lib/fbs/router/create-audio-level-observer-request.js +34 -1
- package/node/lib/fbs/router/create-direct-transport-request.js +34 -1
- package/node/lib/fbs/router/create-pipe-transport-request.js +34 -1
- package/node/lib/fbs/router/create-plain-transport-request.js +34 -1
- package/node/lib/fbs/router/create-web-rtc-transport-request.js +34 -1
- package/node/lib/fbs/router/dump-response.js +34 -1
- package/node/lib/fbs/rtp-observer/add-producer-request.js +34 -1
- package/node/lib/fbs/rtp-observer/remove-producer-request.js +34 -1
- package/node/lib/fbs/rtp-packet/dump.js +34 -1
- package/node/lib/fbs/rtp-parameters/boolean.js +34 -1
- package/node/lib/fbs/rtp-parameters/codec-mapping.js +34 -1
- package/node/lib/fbs/rtp-parameters/double.js +34 -1
- package/node/lib/fbs/rtp-parameters/encoding-mapping.js +34 -1
- package/node/lib/fbs/rtp-parameters/integer32-array.js +34 -1
- package/node/lib/fbs/rtp-parameters/integer32.js +34 -1
- package/node/lib/fbs/rtp-parameters/parameter.js +34 -1
- package/node/lib/fbs/rtp-parameters/rtcp-feedback.js +34 -1
- package/node/lib/fbs/rtp-parameters/rtcp-parameters.js +34 -1
- package/node/lib/fbs/rtp-parameters/rtp-codec-parameters.js +34 -1
- package/node/lib/fbs/rtp-parameters/rtp-encoding-parameters.js +34 -1
- package/node/lib/fbs/rtp-parameters/rtp-header-extension-parameters.js +34 -1
- package/node/lib/fbs/rtp-parameters/rtp-mapping.js +34 -1
- package/node/lib/fbs/rtp-parameters/rtp-parameters.js +34 -1
- package/node/lib/fbs/rtp-parameters/rtx.js +34 -1
- package/node/lib/fbs/rtp-parameters/string.js +34 -1
- package/node/lib/fbs/rtp-stream/base-stats.js +34 -1
- package/node/lib/fbs/rtp-stream/bitrate-by-layer.js +34 -1
- package/node/lib/fbs/rtp-stream/dump.js +34 -1
- package/node/lib/fbs/rtp-stream/params.js +34 -1
- package/node/lib/fbs/rtp-stream/recv-stats.js +34 -1
- package/node/lib/fbs/rtp-stream/send-stats.js +34 -1
- package/node/lib/fbs/rtp-stream/stats.js +34 -1
- package/node/lib/fbs/rtx-stream/params.js +34 -1
- package/node/lib/fbs/rtx-stream/rtx-dump.js +34 -1
- package/node/lib/fbs/sctp-association/sctp-negotiated-capabilities.d.ts +24 -0
- package/node/lib/fbs/sctp-association/sctp-negotiated-capabilities.d.ts.map +1 -0
- package/node/lib/fbs/sctp-association/sctp-negotiated-capabilities.js +102 -0
- package/node/lib/fbs/sctp-association.d.ts +1 -0
- package/node/lib/fbs/sctp-association.d.ts.map +1 -1
- package/node/lib/fbs/sctp-association.js +4 -1
- package/node/lib/fbs/sctp-parameters/num-sctp-streams.js +34 -1
- package/node/lib/fbs/sctp-parameters/sctp-parameters.d.ts +14 -14
- package/node/lib/fbs/sctp-parameters/sctp-parameters.d.ts.map +1 -1
- package/node/lib/fbs/sctp-parameters/sctp-parameters.js +73 -40
- package/node/lib/fbs/sctp-parameters/sctp-stream-parameters.js +34 -1
- package/node/lib/fbs/sctp-parameters.d.ts +0 -1
- package/node/lib/fbs/sctp-parameters.d.ts.map +1 -1
- package/node/lib/fbs/sctp-parameters.js +1 -4
- package/node/lib/fbs/srtp-parameters/srtp-parameters.js +34 -1
- package/node/lib/fbs/transport/bwe-trace-info.js +34 -1
- package/node/lib/fbs/transport/close-consumer-request.js +34 -1
- package/node/lib/fbs/transport/close-data-consumer-request.js +34 -1
- package/node/lib/fbs/transport/close-data-producer-request.js +34 -1
- package/node/lib/fbs/transport/close-producer-request.js +34 -1
- package/node/lib/fbs/transport/consume-data-request.d.ts +1 -1
- package/node/lib/fbs/transport/consume-data-request.js +35 -2
- package/node/lib/fbs/transport/consume-request.js +34 -1
- package/node/lib/fbs/transport/consume-response.js +34 -1
- package/node/lib/fbs/transport/dump.d.ts +7 -4
- package/node/lib/fbs/transport/dump.d.ts.map +1 -1
- package/node/lib/fbs/transport/dump.js +66 -22
- package/node/lib/fbs/transport/enable-trace-event-request.js +34 -1
- package/node/lib/fbs/transport/listen-info.js +34 -1
- package/node/lib/fbs/transport/options.d.ts +14 -14
- package/node/lib/fbs/transport/options.d.ts.map +1 -1
- package/node/lib/fbs/transport/options.js +92 -51
- package/node/lib/fbs/transport/port-range.js +34 -1
- package/node/lib/fbs/transport/produce-data-request.js +34 -1
- package/node/lib/fbs/transport/produce-request.js +34 -1
- package/node/lib/fbs/transport/produce-response.js +34 -1
- package/node/lib/fbs/transport/recv-rtp-header-extensions.js +34 -1
- package/node/lib/fbs/transport/restart-ice-response.js +34 -1
- package/node/lib/fbs/transport/rtp-listener.js +34 -1
- package/node/lib/fbs/transport/sctp-listener.js +34 -1
- package/node/lib/fbs/transport/sctp-negotiated-capabilities-notification.d.ts +22 -0
- package/node/lib/fbs/transport/sctp-negotiated-capabilities-notification.d.ts.map +1 -0
- package/node/lib/fbs/transport/sctp-negotiated-capabilities-notification.js +93 -0
- package/node/lib/fbs/transport/sctp-state-change-notification.js +34 -1
- package/node/lib/fbs/transport/send-rtcp-notification.js +34 -1
- package/node/lib/fbs/transport/set-max-incoming-bitrate-request.js +34 -1
- package/node/lib/fbs/transport/set-max-outgoing-bitrate-request.js +34 -1
- package/node/lib/fbs/transport/set-min-outgoing-bitrate-request.js +34 -1
- package/node/lib/fbs/transport/socket-flags.js +34 -1
- package/node/lib/fbs/transport/stats.js +34 -1
- package/node/lib/fbs/transport/trace-notification.js +34 -1
- package/node/lib/fbs/transport/tuple.js +34 -1
- package/node/lib/fbs/transport.d.ts +1 -0
- package/node/lib/fbs/transport.d.ts.map +1 -1
- package/node/lib/fbs/transport.js +5 -2
- package/node/lib/fbs/web-rtc-server/dump-response.js +34 -1
- package/node/lib/fbs/web-rtc-server/ice-user-name-fragment.js +34 -1
- package/node/lib/fbs/web-rtc-server/ip-port.js +34 -1
- package/node/lib/fbs/web-rtc-server/tuple-hash.js +34 -1
- package/node/lib/fbs/web-rtc-transport/connect-request.js +34 -1
- package/node/lib/fbs/web-rtc-transport/connect-response.js +34 -1
- package/node/lib/fbs/web-rtc-transport/dtls-parameters.js +34 -1
- package/node/lib/fbs/web-rtc-transport/dtls-state-change-notification.js +34 -1
- package/node/lib/fbs/web-rtc-transport/dump-response.js +34 -1
- package/node/lib/fbs/web-rtc-transport/fingerprint.js +34 -1
- package/node/lib/fbs/web-rtc-transport/get-stats-response.js +34 -1
- package/node/lib/fbs/web-rtc-transport/ice-candidate.js +34 -1
- package/node/lib/fbs/web-rtc-transport/ice-parameters.js +34 -1
- package/node/lib/fbs/web-rtc-transport/ice-selected-tuple-change-notification.js +34 -1
- package/node/lib/fbs/web-rtc-transport/ice-state-change-notification.js +34 -1
- package/node/lib/fbs/web-rtc-transport/listen-individual.js +34 -1
- package/node/lib/fbs/web-rtc-transport/listen-server.js +34 -1
- package/node/lib/fbs/web-rtc-transport/web-rtc-transport-options.js +34 -1
- package/node/lib/fbs/worker/channel-message-handlers.js +34 -1
- package/node/lib/fbs/worker/close-router-request.js +34 -1
- package/node/lib/fbs/worker/close-web-rtc-server-request.js +34 -1
- package/node/lib/fbs/worker/create-router-request.js +34 -1
- package/node/lib/fbs/worker/create-web-rtc-server-request.js +34 -1
- package/node/lib/fbs/worker/dump-response.js +34 -1
- package/node/lib/fbs/worker/resource-usage-response.js +34 -1
- package/node/lib/fbs/worker/update-settings-request.js +34 -1
- package/node/lib/index.d.ts +1 -1
- package/node/lib/index.d.ts.map +1 -1
- package/node/lib/index.js +37 -5
- package/node/lib/ortc.js +36 -3
- package/node/lib/rtpParametersFbsUtils.js +34 -1
- package/node/lib/rtpStreamStatsFbsUtils.js +35 -2
- package/node/lib/sctpParametersFbsUtils.d.ts +2 -2
- package/node/lib/sctpParametersFbsUtils.d.ts.map +1 -1
- package/node/lib/sctpParametersFbsUtils.js +44 -7
- package/node/lib/sctpParametersTypes.d.ts +10 -46
- package/node/lib/sctpParametersTypes.d.ts.map +1 -1
- package/node/lib/srtpParametersFbsUtils.js +34 -1
- package/node/lib/test/test-ActiveSpeakerObserver.js +35 -2
- package/node/lib/test/test-AudioLevelObserver.js +35 -2
- package/node/lib/test/test-Consumer.js +37 -4
- package/node/lib/test/test-DataConsumer.js +35 -2
- package/node/lib/test/test-DataProducer.js +35 -2
- package/node/lib/test/test-DirectTransport.js +36 -8
- package/node/lib/test/test-PipeTransport.js +35 -2
- package/node/lib/test/test-PlainTransport.js +45 -12
- package/node/lib/test/test-Producer.js +37 -4
- package/node/lib/test/test-Router.js +35 -2
- package/node/lib/test/test-WebRtcServer.js +34 -1
- package/node/lib/test/test-WebRtcTransport.js +51 -22
- package/node/lib/test/test-Worker.js +37 -4
- package/node/lib/test/test-mediasoup.js +36 -3
- package/node/lib/test/test-multiopus.js +35 -2
- package/node/lib/test/test-ortc.js +34 -1
- package/node/lib/test/test-werift-sctp.js +39 -5
- package/npm-scripts.mjs +2 -2
- package/package.json +13 -11
- package/worker/deps/libwebrtc/LICENSE +5 -0
- package/worker/deps/libwebrtc/README.md +3 -3
- package/worker/deps/libwebrtc/libwebrtc/mediasoup_helpers.h +13 -10
- package/worker/fbs/dataConsumer.fbs +7 -2
- package/worker/fbs/dataProducer.fbs +1 -0
- package/worker/fbs/notification.fbs +2 -0
- package/worker/fbs/sctpAssociation.fbs +4 -0
- package/worker/fbs/sctpParameters.fbs +5 -12
- package/worker/fbs/transport.fbs +12 -8
- package/worker/fuzzer/src/RTC/FuzzerDtlsTransport.cpp +13 -3
- package/worker/fuzzer/src/RTC/FuzzerRateCalculator.cpp +2 -2
- package/worker/fuzzer/src/RTC/FuzzerSeqManager.cpp +1 -1
- package/worker/fuzzer/src/RTC/FuzzerTrendCalculator.cpp +5 -5
- package/worker/fuzzer/src/RTC/ICE/FuzzerStunPacket.cpp +9 -6
- package/worker/fuzzer/src/RTC/RTP/FuzzerRetransmissionBuffer.cpp +1 -1
- package/worker/fuzzer/src/RTC/RTP/FuzzerRtpStreamSend.cpp +14 -2
- package/worker/fuzzer/src/RTC/SCTP/association/FuzzerStateCookie.cpp +1 -1
- package/worker/fuzzer/src/RTC/SCTP/packet/FuzzerPacket.cpp +5 -2
- package/worker/fuzzer/src/fuzzer.cpp +3 -10
- package/worker/include/Channel/ChannelMessageRegistrator.hpp +39 -0
- package/worker/include/Channel/ChannelMessageRegistratorInterface.hpp +32 -0
- package/worker/include/Channel/ChannelRequest.hpp +1 -1
- package/worker/include/Channel/ChannelSocket.hpp +1 -1
- package/worker/include/DepLibUV.hpp +1 -1
- package/worker/include/DepLibUring.hpp +3 -3
- package/worker/include/Logger.hpp +4 -4
- package/worker/include/MediaSoupErrors.hpp +1 -1
- package/worker/include/RTC/ActiveSpeakerObserver.hpp +11 -9
- package/worker/include/RTC/AudioLevelObserver.hpp +7 -7
- package/worker/include/RTC/Consumer.hpp +3 -3
- package/worker/include/RTC/DataConsumer.hpp +13 -17
- package/worker/include/RTC/DataProducer.hpp +6 -9
- package/worker/include/RTC/DirectTransport.hpp +4 -6
- package/worker/include/RTC/DtlsTransport.hpp +13 -11
- package/worker/include/RTC/ICE/IceServer.hpp +8 -5
- package/worker/include/RTC/ICE/StunPacket.hpp +1 -1
- package/worker/include/RTC/KeyFrameRequestManager.hpp +15 -12
- package/worker/include/RTC/NackGenerator.hpp +8 -6
- package/worker/include/RTC/PipeConsumer.hpp +1 -2
- package/worker/include/RTC/PipeTransport.hpp +4 -6
- package/worker/include/RTC/PlainTransport.hpp +4 -6
- package/worker/include/RTC/PortManager.hpp +1 -1
- package/worker/include/RTC/Producer.hpp +3 -3
- package/worker/include/RTC/RTCP/FeedbackPs.hpp +1 -1
- package/worker/include/RTC/RTCP/FeedbackRtp.hpp +1 -1
- package/worker/include/RTC/RTCP/FeedbackRtpNack.hpp +1 -1
- package/worker/include/RTC/RTCP/ReceiverReport.hpp +1 -1
- package/worker/include/RTC/RTP/Packet.hpp +2 -2
- package/worker/include/RTC/RTP/RtpStream.hpp +17 -12
- package/worker/include/RTC/RTP/RtpStreamRecv.hpp +8 -6
- package/worker/include/RTC/RTP/RtpStreamSend.hpp +4 -1
- package/worker/include/RTC/RTP/RtxStream.hpp +3 -1
- package/worker/include/RTC/RTP/SharedPacket.hpp +1 -1
- package/worker/include/RTC/RateCalculator.hpp +5 -2
- package/worker/include/RTC/Router.hpp +7 -8
- package/worker/include/RTC/RtpObserver.hpp +3 -3
- package/worker/include/RTC/SCTP/association/Association.hpp +53 -19
- package/worker/include/RTC/SCTP/association/AssociationListenerDeferrer.hpp +14 -6
- package/worker/include/RTC/SCTP/association/HeartbeatHandler.hpp +18 -14
- package/worker/include/RTC/SCTP/association/PacketSender.hpp +3 -3
- package/worker/include/RTC/SCTP/association/StateCookie.hpp +1 -1
- package/worker/include/RTC/SCTP/association/StreamResetHandler.hpp +49 -35
- package/worker/include/RTC/SCTP/association/TransmissionControlBlock.hpp +114 -31
- package/worker/include/RTC/SCTP/association/{TCBContext.hpp → TransmissionControlBlockContextInterface.hpp} +14 -8
- package/worker/include/RTC/SCTP/packet/Chunk.hpp +3 -3
- package/worker/include/RTC/SCTP/packet/TLV.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/UserData.hpp +61 -17
- package/worker/include/RTC/SCTP/packet/chunks/AnyDataChunk.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/chunks/AnyForwardTsnChunk.hpp +9 -9
- package/worker/include/RTC/SCTP/packet/chunks/AnyInitChunk.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/chunks/DataChunk.hpp +4 -2
- package/worker/include/RTC/SCTP/packet/chunks/ForwardTsnChunk.hpp +3 -3
- package/worker/include/RTC/SCTP/packet/chunks/IDataChunk.hpp +4 -2
- package/worker/include/RTC/SCTP/packet/chunks/IForwardTsnChunk.hpp +3 -3
- package/worker/include/RTC/SCTP/packet/chunks/InitAckChunk.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/chunks/InitChunk.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/chunks/SackChunk.hpp +10 -3
- package/worker/include/RTC/SCTP/packet/chunks/ShutdownChunk.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/errorCauses/InvalidStreamIdentifierErrorCause.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/errorCauses/MissingMandatoryParameterErrorCause.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/errorCauses/NoUserDataErrorCause.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/errorCauses/StaleCookieErrorCause.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/AddIncomingStreamsRequestParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/AddOutgoingStreamsRequestParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/CookiePreservativeParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/IncomingSsnResetRequestParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/OutgoingSsnResetRequestParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/ReconfigurationResponseParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/SsnTsnResetRequestParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/SupportedAddressTypesParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/SupportedExtensionsParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/ZeroChecksumAcceptableParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/public/AssociationInterface.hpp +22 -2
- package/worker/include/RTC/SCTP/public/{AssociationListener.hpp → AssociationListenerInterface.hpp} +5 -5
- package/worker/include/RTC/SCTP/public/Message.hpp +26 -10
- package/worker/include/RTC/SCTP/public/SctpOptions.hpp +28 -19
- package/worker/include/RTC/SCTP/public/SctpTypes.hpp +21 -0
- package/worker/include/RTC/SCTP/rx/DataTracker.hpp +277 -0
- package/worker/include/RTC/SCTP/rx/InterleavedReassemblyStreams.hpp +116 -0
- package/worker/include/RTC/SCTP/rx/ReassemblyQueue.hpp +202 -0
- package/worker/include/RTC/SCTP/rx/ReassemblyStreamsInterface.hpp +83 -0
- package/worker/include/RTC/SCTP/rx/TraditionalReassemblyStreams.hpp +183 -0
- package/worker/include/RTC/SCTP/tx/OutstandingData.hpp +595 -0
- package/worker/include/RTC/SCTP/tx/RetransmissionErrorCounter.hpp +3 -3
- package/worker/include/RTC/SCTP/tx/RetransmissionQueue.hpp +329 -0
- package/worker/include/RTC/SCTP/tx/RetransmissionTimeout.hpp +11 -10
- package/worker/include/RTC/SCTP/tx/RoundRobinSendQueue.hpp +356 -0
- package/worker/include/RTC/SCTP/tx/SendQueueInterface.hpp +180 -0
- package/worker/include/RTC/SCTP/tx/StreamScheduler.hpp +235 -0
- package/worker/include/RTC/SenderBandwidthEstimator.hpp +5 -1
- package/worker/include/RTC/Serializable.hpp +11 -3
- package/worker/include/RTC/SimpleConsumer.hpp +1 -2
- package/worker/include/RTC/SimulcastConsumer.hpp +1 -2
- package/worker/include/RTC/SvcConsumer.hpp +1 -2
- package/worker/include/RTC/TcpServer.hpp +2 -2
- package/worker/include/RTC/Transport.hpp +65 -86
- package/worker/include/RTC/TransportCongestionControlClient.hpp +8 -5
- package/worker/include/RTC/TransportCongestionControlServer.hpp +8 -5
- package/worker/include/RTC/TransportTuple.hpp +1 -1
- package/worker/include/RTC/UdpSocket.hpp +1 -1
- package/worker/include/RTC/WebRtcServer.hpp +3 -3
- package/worker/include/RTC/WebRtcTransport.hpp +5 -7
- package/worker/include/Settings.hpp +2 -3
- package/worker/include/Shared.hpp +64 -0
- package/worker/include/SharedInterface.hpp +77 -0
- package/worker/include/Utils/UnwrappedSequenceNumber.hpp +270 -0
- package/worker/include/Utils.hpp +10 -4
- package/worker/include/Worker.hpp +6 -6
- package/worker/include/common.hpp +12 -12
- package/worker/include/handles/BackoffTimerHandle.hpp +28 -67
- package/worker/include/handles/BackoffTimerHandleInterface.hpp +123 -0
- package/worker/include/handles/TimerHandle.hpp +29 -20
- package/worker/include/handles/TimerHandleInterface.hpp +43 -0
- package/worker/meson.build +45 -29
- package/worker/meson_options.txt +2 -1
- package/worker/mocks/include/Channel/MockChannelMessageRegistrator.hpp +45 -0
- package/worker/mocks/include/MockShared.hpp +90 -0
- package/worker/mocks/include/RTC/SCTP/association/MockAssociationListener.hpp +308 -0
- package/worker/mocks/include/RTC/SCTP/association/MockTransmissionControlBlockContext.hpp +183 -0
- package/worker/mocks/include/RTC/SCTP/tx/MockSendQueue.hpp +262 -0
- package/worker/mocks/include/handles/MockBackoffTimerHandle.hpp +153 -0
- package/worker/mocks/include/handles/MockTimerHandle.hpp +74 -0
- package/worker/mocks/include/mockTypes.hpp +15 -0
- package/worker/mocks/src/Channel/MockChannelMessageRegistrator.cpp +128 -0
- package/worker/mocks/src/MockShared.cpp +46 -0
- package/worker/mocks/src/RTC/SCTP/association/MockTransmissionControlBlockContext.cpp +39 -0
- package/worker/mocks/src/handles/MockBackoffTimerHandle.cpp +127 -0
- package/worker/scripts/clang-scripts.mjs +5 -1
- package/worker/scripts/package-lock.json +6 -7
- package/worker/src/Channel/ChannelMessageRegistrator.cpp +125 -0
- package/worker/src/Channel/ChannelSocket.cpp +3 -4
- package/worker/src/DepLibUV.cpp +1 -1
- package/worker/src/DepLibUring.cpp +3 -1
- package/worker/src/Logger.cpp +1 -1
- package/worker/src/MediaSoupErrors.cpp +2 -0
- package/worker/src/RTC/ActiveSpeakerObserver.cpp +14 -14
- package/worker/src/RTC/AudioLevelObserver.cpp +12 -10
- package/worker/src/RTC/Consumer.cpp +28 -26
- package/worker/src/RTC/DataConsumer.cpp +61 -71
- package/worker/src/RTC/DataProducer.cpp +16 -11
- package/worker/src/RTC/DirectTransport.cpp +21 -20
- package/worker/src/RTC/DtlsTransport.cpp +4 -4
- package/worker/src/RTC/ICE/IceServer.cpp +6 -5
- package/worker/src/RTC/ICE/StunPacket.cpp +1 -1
- package/worker/src/RTC/KeyFrameRequestManager.cpp +15 -15
- package/worker/src/RTC/NackGenerator.cpp +6 -6
- package/worker/src/RTC/PipeConsumer.cpp +6 -5
- package/worker/src/RTC/PipeTransport.cpp +9 -22
- package/worker/src/RTC/PlainTransport.cpp +16 -28
- package/worker/src/RTC/Producer.cpp +40 -39
- package/worker/src/RTC/RTCP/FeedbackPsAfb.cpp +1 -1
- package/worker/src/RTC/RTCP/FeedbackPsRpsi.cpp +1 -2
- package/worker/src/RTC/RTCP/FeedbackRtpTransport.cpp +1 -1
- package/worker/src/RTC/RTCP/XR.cpp +1 -1
- package/worker/src/RTC/RTP/Packet.cpp +3 -1
- package/worker/src/RTC/RTP/ProbationGenerator.cpp +4 -4
- package/worker/src/RTC/RTP/RetransmissionBuffer.cpp +1 -1
- package/worker/src/RTC/RTP/RtpStream.cpp +17 -10
- package/worker/src/RTC/RTP/RtpStreamRecv.cpp +16 -14
- package/worker/src/RTC/RTP/RtpStreamSend.cpp +12 -9
- package/worker/src/RTC/RTP/RtxStream.cpp +7 -7
- package/worker/src/RTC/RTP/SharedPacket.cpp +3 -3
- package/worker/src/RTC/RateCalculator.cpp +1 -2
- package/worker/src/RTC/Router.cpp +61 -38
- package/worker/src/RTC/RtpDictionaries/RtpCodecMimeType.cpp +1 -1
- package/worker/src/RTC/RtpObserver.cpp +2 -1
- package/worker/src/RTC/SCTP/LICENSE +44 -0
- package/worker/src/RTC/SCTP/association/Association.cpp +417 -411
- package/worker/src/RTC/SCTP/association/AssociationListenerDeferrer.cpp +46 -13
- package/worker/src/RTC/SCTP/association/HeartbeatHandler.cpp +47 -43
- package/worker/src/RTC/SCTP/association/PacketSender.cpp +8 -8
- package/worker/src/RTC/SCTP/association/StreamResetHandler.cpp +113 -101
- package/worker/src/RTC/SCTP/association/TransmissionControlBlock.cpp +291 -62
- package/worker/src/RTC/SCTP/packet/Chunk.cpp +5 -1
- package/worker/src/RTC/SCTP/packet/Packet.cpp +8 -1
- package/worker/src/RTC/SCTP/packet/chunks/DataChunk.cpp +17 -0
- package/worker/src/RTC/SCTP/packet/chunks/ForwardTsnChunk.cpp +4 -4
- package/worker/src/RTC/SCTP/packet/chunks/IDataChunk.cpp +25 -0
- package/worker/src/RTC/SCTP/packet/chunks/IForwardTsnChunk.cpp +10 -7
- package/worker/src/RTC/SCTP/packet/chunks/SackChunk.cpp +21 -4
- package/worker/src/RTC/SCTP/packet/chunks/ShutdownCompleteChunk.cpp +1 -1
- package/worker/src/RTC/SCTP/packet/errorCauses/NoUserDataErrorCause.cpp +1 -1
- package/worker/src/RTC/SCTP/packet/errorCauses/ProtocolViolationErrorCause.cpp +2 -2
- package/worker/src/RTC/SCTP/packet/errorCauses/UserInitiatedAbortErrorCause.cpp +1 -1
- package/worker/src/RTC/SCTP/public/Message.cpp +8 -0
- package/worker/src/RTC/SCTP/public/SctpOptions.cpp +90 -0
- package/worker/src/RTC/SCTP/rx/DataTracker.cpp +471 -0
- package/worker/src/RTC/SCTP/rx/InterleavedReassemblyStreams.cpp +327 -0
- package/worker/src/RTC/SCTP/rx/ReassemblyQueue.cpp +288 -0
- package/worker/src/RTC/SCTP/rx/TraditionalReassemblyStreams.cpp +453 -0
- package/worker/src/RTC/SCTP/tx/OutstandingData.cpp +912 -0
- package/worker/src/RTC/SCTP/tx/RetransmissionQueue.cpp +786 -0
- package/worker/src/RTC/SCTP/tx/RetransmissionTimeout.cpp +2 -2
- package/worker/src/RTC/SCTP/tx/RoundRobinSendQueue.cpp +752 -0
- package/worker/src/RTC/SCTP/tx/StreamScheduler.cpp +257 -0
- package/worker/src/RTC/SenderBandwidthEstimator.cpp +7 -5
- package/worker/src/RTC/SimpleConsumer.cpp +11 -11
- package/worker/src/RTC/SimulcastConsumer.cpp +16 -16
- package/worker/src/RTC/SrtpSession.cpp +1 -1
- package/worker/src/RTC/SvcConsumer.cpp +16 -16
- package/worker/src/RTC/TcpConnection.cpp +1 -1
- package/worker/src/RTC/Transport.cpp +497 -563
- package/worker/src/RTC/TransportCongestionControlClient.cpp +9 -8
- package/worker/src/RTC/TransportCongestionControlServer.cpp +5 -5
- package/worker/src/RTC/WebRtcServer.cpp +5 -4
- package/worker/src/RTC/WebRtcTransport.cpp +44 -39
- package/worker/src/Settings.cpp +9 -28
- package/worker/src/Shared.cpp +35 -0
- package/worker/src/Utils/Crypto.cpp +1 -1
- package/worker/src/Utils/String.cpp +1 -1
- package/worker/src/Worker.cpp +19 -48
- package/worker/src/handles/BackoffTimerHandle.cpp +34 -21
- package/worker/src/handles/TimerHandle.cpp +5 -4
- package/worker/src/handles/UdpSocketHandle.cpp +1 -1
- package/worker/src/lib.cpp +17 -16
- package/worker/subprojects/catch2.wrap +6 -6
- package/worker/tasks.py +1 -1
- package/worker/test/include/RTC/ICE/iceCommon.hpp +8 -7
- package/worker/test/include/RTC/RTP/rtpCommon.hpp +7 -6
- package/worker/test/include/RTC/SCTP/sctpCommon.hpp +16 -10
- package/worker/test/include/catch2Macros.hpp +31 -0
- package/worker/test/src/RTC/ICE/TestStunPacket.cpp +3 -3
- package/worker/test/src/RTC/ICE/iceCommon.cpp +2 -2
- package/worker/test/src/RTC/RTP/Codecs/TestVP8.cpp +1 -1
- package/worker/test/src/RTC/RTP/Codecs/TestVP9.cpp +1 -1
- package/worker/test/src/RTC/RTP/TestPacket.cpp +3 -3
- package/worker/test/src/RTC/RTP/TestRtpStreamRecv.cpp +16 -9
- package/worker/test/src/RTC/RTP/TestRtpStreamSend.cpp +38 -23
- package/worker/test/src/RTC/RTP/TestSharedPacket.cpp +1 -1
- package/worker/test/src/RTC/RTP/rtpCommon.cpp +2 -2
- package/worker/test/src/RTC/SCTP/association/TestHeartbeatHandler.cpp +292 -0
- package/worker/test/src/RTC/SCTP/association/TestNegotiatedCapabilities.cpp +1 -1
- package/worker/test/src/RTC/SCTP/association/TestStateCookie.cpp +1 -1
- package/worker/test/src/RTC/SCTP/association/TestTransmissionControlBlock.cpp +99 -0
- package/worker/test/src/RTC/SCTP/packet/TestChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/TestPacket.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestAbortAssociationChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestCookieAckChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestCookieEchoChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestDataChunk.cpp +77 -7
- package/worker/test/src/RTC/SCTP/packet/chunks/TestForwardTsnChunk.cpp +35 -26
- package/worker/test/src/RTC/SCTP/packet/chunks/TestHeartbeatAckChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestHeartbeatRequestChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestIDataChunk.cpp +77 -7
- package/worker/test/src/RTC/SCTP/packet/chunks/TestIForwardTsnChunk.cpp +59 -27
- package/worker/test/src/RTC/SCTP/packet/chunks/TestInitAckChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestInitChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestOperationErrorChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestReConfigChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestSackChunk.cpp +73 -35
- package/worker/test/src/RTC/SCTP/packet/chunks/TestShutdownAckChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestShutdownChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestShutdownCompleteChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestUnknownChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestCookieReceivedWhileShuttingDownErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestInvalidMandatoryParameterErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestInvalidStreamIdentifierErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestMissingMandatoryParameterErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestNoUserDataErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestOutOfResourceErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestProtocolViolationErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestRestartOfAnAssociationWithNewAddressesErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestStaleCookieErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnknownErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnrecognizedChunkTypeErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnrecognizedParametersErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnresolvableAddressErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUserInitiatedAbortErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestAddIncomingStreamsRequestParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestAddOutgoingStreamsRequestParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestCookiePreservativeParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestForwardTsnSupportedParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestHeartbeatInfoParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestIPv4AddressParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestIPv6AddressParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestIncomingSsnResetRequestParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestOutgoingSsnResetRequestParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestReconfigurationResponseParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestSsnTsnResetRequestParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestStateCookieParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestSupportedAddressTypesParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestSupportedExtensionsParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestUnknownParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestUnrecognizedParameterParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestZeroChecksumAcceptableParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/rx/TestDataTracker.cpp +1117 -0
- package/worker/test/src/RTC/SCTP/rx/TestInterleavedReassemblyStreams.cpp +565 -0
- package/worker/test/src/RTC/SCTP/rx/TestReassemblyQueue.cpp +557 -0
- package/worker/test/src/RTC/SCTP/rx/TestTraditionalReassemblyStreams.cpp +555 -0
- package/worker/test/src/RTC/SCTP/sctpCommon.cpp +2 -2
- package/worker/test/src/RTC/SCTP/tx/TestOutstandingData.cpp +1248 -0
- package/worker/test/src/RTC/SCTP/tx/TestRetransmissionErrorCounter.cpp +4 -0
- package/worker/test/src/RTC/SCTP/tx/TestRetransmissionQueue.cpp +2218 -0
- package/worker/test/src/RTC/SCTP/tx/TestRetransmissionTimeout.cpp +33 -33
- package/worker/test/src/RTC/SCTP/tx/TestRoundRobinSendQueue.cpp +1130 -0
- package/worker/test/src/RTC/SCTP/tx/TestStreamScheduler.cpp +721 -0
- package/worker/test/src/RTC/TestKeyFrameRequestManager.cpp +20 -30
- package/worker/test/src/RTC/TestNackGenerator.cpp +11 -8
- package/worker/test/src/RTC/TestRateCalculator.cpp +6 -7
- package/worker/test/src/RTC/TestSimpleConsumer.cpp +11 -11
- package/worker/test/src/RTC/TestTransportCongestionControlServer.cpp +15 -3
- package/worker/test/src/Utils/TestByte.cpp +98 -0
- package/worker/test/src/{RTC/SCTP/common → Utils}/TestUnwrappedSequenceNumber.cpp +2 -2
- package/worker/test/src/testHelpers.cpp +1 -1
- package/worker/test/src/tests.cpp +0 -12
- package/node/lib/fbs/consumer/degrade-request.d.ts +0 -30
- package/node/lib/fbs/consumer/degrade-request.d.ts.map +0 -1
- package/node/lib/fbs/consumer/degrade-request.js +0 -91
- package/node/lib/fbs/consumer/enable-delay-and-loss-request.d.ts +0 -24
- package/node/lib/fbs/consumer/enable-delay-and-loss-request.d.ts.map +0 -1
- package/node/lib/fbs/consumer/enable-delay-and-loss-request.js +0 -69
- package/node/lib/fbs/producer/degrade-request.d.ts +0 -30
- package/node/lib/fbs/producer/degrade-request.d.ts.map +0 -1
- package/node/lib/fbs/producer/degrade-request.js +0 -91
- package/node/lib/fbs/worker/close-notification.d.ts +0 -18
- package/node/lib/fbs/worker/close-notification.d.ts.map +0 -1
- package/node/lib/fbs/worker/close-notification.js +0 -45
- package/node/lib/fbs/worker/close-request.d.ts +0 -18
- package/node/lib/fbs/worker/close-request.d.ts.map +0 -1
- package/node/lib/fbs/worker/close-request.js +0 -45
- package/node/lib/fbs/worker/close-worker-notification.d.ts +0 -18
- package/node/lib/fbs/worker/close-worker-notification.d.ts.map +0 -1
- package/node/lib/fbs/worker/close-worker-notification.js +0 -45
- package/worker/include/ChannelMessageRegistrator.hpp +0 -30
- package/worker/include/DepUsrSCTP.hpp +0 -48
- package/worker/include/RTC/SCTP/TODO_SCTP.md +0 -43
- package/worker/include/RTC/SCTP/common/UnwrappedSequenceNumber.hpp +0 -274
- package/worker/include/RTC/SctpAssociation.hpp +0 -147
- package/worker/include/RTC/Shared.hpp +0 -23
- package/worker/src/ChannelMessageRegistrator.cpp +0 -119
- package/worker/src/DepUsrSCTP.cpp +0 -277
- package/worker/src/RTC/SctpAssociation.cpp +0 -1175
- package/worker/src/RTC/Shared.cpp +0 -23
- package/worker/subprojects/usrsctp.wrap +0 -8
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
#ifndef MS_RTC_SCTP_STREAM_SCHEDULER_HPP
|
|
2
|
+
#define MS_RTC_SCTP_STREAM_SCHEDULER_HPP
|
|
3
|
+
|
|
4
|
+
#include "common.hpp"
|
|
5
|
+
#include "RTC/SCTP/packet/Packet.hpp"
|
|
6
|
+
#include "RTC/SCTP/packet/chunks/IDataChunk.hpp"
|
|
7
|
+
#include "RTC/SCTP/tx/SendQueueInterface.hpp"
|
|
8
|
+
#include <set>
|
|
9
|
+
|
|
10
|
+
namespace RTC
|
|
11
|
+
{
|
|
12
|
+
namespace SCTP
|
|
13
|
+
{
|
|
14
|
+
/**
|
|
15
|
+
* A parameterized stream scheduler. Currently, it implements the round robin
|
|
16
|
+
* scheduling algorithm using virtual finish time. It is to be used as a
|
|
17
|
+
* part of a send queue and will track all active streams (streams that have
|
|
18
|
+
* any data that can be sent).
|
|
19
|
+
*
|
|
20
|
+
* The stream scheduler works with the concept of associating active streams
|
|
21
|
+
* with a "virtual finish time", which is the time when a stream is allowed
|
|
22
|
+
* to produce data. Streams are ordered by their virtual finish time, and
|
|
23
|
+
* the "current virtual time" will advance to the next following virtual
|
|
24
|
+
* finish time whenever a chunk is to be produced.
|
|
25
|
+
*
|
|
26
|
+
* In the round robin scheduling algorithm, a stream's virtual finish time
|
|
27
|
+
* will just increment by one (1) after having produced a chunk, which
|
|
28
|
+
* results in a round-robin scheduling.
|
|
29
|
+
*
|
|
30
|
+
* In WFQ scheduling algorithm, a stream's virtual finish time will be
|
|
31
|
+
* defined as the number of bytes in the next fragment to be sent, multiplied
|
|
32
|
+
* by theinverse of the stream's priority, meaning that a high priority - or
|
|
33
|
+
* a smaller fragment - results in a closer virtual finish time, compared to
|
|
34
|
+
* a stream with either a lower priority or a larger fragment to be sent.
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* - When message interleaving is enabled, the WFQ (Weighted Fair Queueing)
|
|
38
|
+
* scheduling algorithm will be used. And when it's not, round-robin
|
|
39
|
+
* scheduling will be used instead.
|
|
40
|
+
*/
|
|
41
|
+
class StreamScheduler
|
|
42
|
+
{
|
|
43
|
+
public:
|
|
44
|
+
class StreamProducer
|
|
45
|
+
{
|
|
46
|
+
public:
|
|
47
|
+
virtual ~StreamProducer() = default;
|
|
48
|
+
|
|
49
|
+
public:
|
|
50
|
+
/**
|
|
51
|
+
* Produces a fragment of data to send. The current wall time is specified
|
|
52
|
+
* as `nowMs` and should be used to skip chunks with expired limited
|
|
53
|
+
* lifetime. The parameter `maxLength` specifies the maximum amount of
|
|
54
|
+
* actual payload that may be returned. If these constraints prevents the
|
|
55
|
+
* stream from sending some data, `std::nullopt` should be returned.
|
|
56
|
+
*/
|
|
57
|
+
virtual std::optional<SendQueueInterface::DataToSend> Produce(
|
|
58
|
+
uint64_t nowMs, size_t maxLength) = 0;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Returns the number of payload bytes that is scheduled to be sent in the
|
|
62
|
+
* next enqueued message, or zero if there are no enqueued messages or if
|
|
63
|
+
* the stream has been actively paused.
|
|
64
|
+
*/
|
|
65
|
+
virtual size_t GetBytesToSendInNextMessage() const = 0;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
public:
|
|
69
|
+
class Stream
|
|
70
|
+
{
|
|
71
|
+
private:
|
|
72
|
+
friend class StreamScheduler;
|
|
73
|
+
|
|
74
|
+
private:
|
|
75
|
+
Stream(StreamScheduler* parent, StreamProducer* producer, uint16_t streamId, uint16_t priority)
|
|
76
|
+
: parent(*parent),
|
|
77
|
+
producer(*producer),
|
|
78
|
+
streamId(streamId),
|
|
79
|
+
priority(priority),
|
|
80
|
+
inverseWeight(1.0 / std::max(static_cast<double>(priority), 1e-6))
|
|
81
|
+
{
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
public:
|
|
85
|
+
uint16_t GetStreamId() const
|
|
86
|
+
{
|
|
87
|
+
return this->streamId;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
uint16_t GetPriority() const
|
|
91
|
+
{
|
|
92
|
+
return this->priority;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
void SetPriority(uint16_t priority);
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Will activate the stream if it has any data to send. That is, if the
|
|
99
|
+
* callback to `GetBytesToSendInNextMessage()` returns non-zero. If the
|
|
100
|
+
* callback returns zero, the stream will not be made active.
|
|
101
|
+
*/
|
|
102
|
+
void MayMakeActive();
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Will remove the stream from the list of active streams, and will not
|
|
106
|
+
* try to produce data from it. To make it active again, call
|
|
107
|
+
* `MayMakeActive()`.
|
|
108
|
+
*/
|
|
109
|
+
void MakeInactive();
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Make the scheduler move to another message, or another stream. This
|
|
113
|
+
* is used to abort the scheduler from continuing producing fragments
|
|
114
|
+
* for the current message in case it's deleted.
|
|
115
|
+
*/
|
|
116
|
+
void ForceReschedule()
|
|
117
|
+
{
|
|
118
|
+
this->parent.ForceReschedule();
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
private:
|
|
122
|
+
/**
|
|
123
|
+
* Produces a message from this stream. This will only be called on
|
|
124
|
+
* streams that have data.
|
|
125
|
+
*/
|
|
126
|
+
std::optional<SendQueueInterface::DataToSend> Produce(uint64_t nowMs, size_t maxLength);
|
|
127
|
+
|
|
128
|
+
void MakeActive(size_t bytesToSendNext);
|
|
129
|
+
|
|
130
|
+
void ForceMarkInactive();
|
|
131
|
+
|
|
132
|
+
double GetCurrentTime() const
|
|
133
|
+
{
|
|
134
|
+
return this->currentVirtualTime;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
double GetNextFinishTime() const
|
|
138
|
+
{
|
|
139
|
+
return this->nextFinishTime;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
size_t GetBytesToSendInNextMessage() const
|
|
143
|
+
{
|
|
144
|
+
return this->producer.GetBytesToSendInNextMessage();
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
double CalculateFinishTime(size_t bytesToSendNext) const;
|
|
148
|
+
|
|
149
|
+
private:
|
|
150
|
+
StreamScheduler& parent;
|
|
151
|
+
StreamProducer& producer;
|
|
152
|
+
const uint16_t streamId;
|
|
153
|
+
uint16_t priority;
|
|
154
|
+
double inverseWeight;
|
|
155
|
+
// This outgoing stream's "current" virtual time.
|
|
156
|
+
double currentVirtualTime{ 0.0 };
|
|
157
|
+
double nextFinishTime{ 0.0 };
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
private:
|
|
161
|
+
struct ActiveStreamComparator
|
|
162
|
+
{
|
|
163
|
+
// Ordered by virtual finish time (primary), stream-id (secondary).
|
|
164
|
+
bool operator()(Stream* a, Stream* b) const
|
|
165
|
+
{
|
|
166
|
+
const double aVft = a->GetNextFinishTime();
|
|
167
|
+
const double bVft = b->GetNextFinishTime();
|
|
168
|
+
|
|
169
|
+
if (aVft == bVft)
|
|
170
|
+
{
|
|
171
|
+
return a->GetStreamId() < b->GetStreamId();
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
return aVft < bVft;
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
public:
|
|
179
|
+
explicit StreamScheduler(size_t mtu)
|
|
180
|
+
: maxPayloadBytes(mtu - Packet::CommonHeaderLength - IDataChunk::IDataChunkHeaderLength)
|
|
181
|
+
{
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
public:
|
|
185
|
+
std::unique_ptr<Stream> CreateStream(StreamProducer* producer, uint16_t streamId, uint16_t priority)
|
|
186
|
+
{
|
|
187
|
+
return std::unique_ptr<Stream>(new Stream(this, producer, streamId, priority));
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
void EnableMessageInterleaving(bool enabled)
|
|
191
|
+
{
|
|
192
|
+
this->enableMessageInterleaving = enabled;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Makes the scheduler stop producing message from the current stream and
|
|
197
|
+
* re-evaluates which stream to produce from.
|
|
198
|
+
*/
|
|
199
|
+
void ForceReschedule()
|
|
200
|
+
{
|
|
201
|
+
this->currentlySendingAMessage = false;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Produces a fragment of data to send. The current wall time is specified
|
|
206
|
+
* as `nowMs` and will be used to skip chunks with expired limited
|
|
207
|
+
* lifetime. The parameter `maxLength` specifies the maximum amount of
|
|
208
|
+
* actual payload that may be returned. If no data can be produced,
|
|
209
|
+
* `std::nullopt` is returned.
|
|
210
|
+
*/
|
|
211
|
+
std::optional<SendQueueInterface::DataToSend> Produce(uint64_t nowMs, size_t maxLength);
|
|
212
|
+
|
|
213
|
+
std::set<uint16_t> GetActiveStreamsForTesting() const;
|
|
214
|
+
|
|
215
|
+
private:
|
|
216
|
+
void AssertIsConsistent() const;
|
|
217
|
+
|
|
218
|
+
private:
|
|
219
|
+
const size_t maxPayloadBytes;
|
|
220
|
+
// The current virtual time, as defined in the WFQ algorithm.
|
|
221
|
+
double virtualTime{ 0.0 };
|
|
222
|
+
// The current stream to send chunks from.
|
|
223
|
+
Stream* currentStream{ nullptr };
|
|
224
|
+
bool enableMessageInterleaving{ false };
|
|
225
|
+
// Indicates if the streams is currently sending a message, and should
|
|
226
|
+
// then (if message interleaving is not enabled) continue sending from
|
|
227
|
+
// this stream until that message has been sent in full.
|
|
228
|
+
bool currentlySendingAMessage{ false };
|
|
229
|
+
// The currently active streams, ordered by virtual finish time.
|
|
230
|
+
std::set<Stream*, ActiveStreamComparator> activeStreams;
|
|
231
|
+
};
|
|
232
|
+
} // namespace SCTP
|
|
233
|
+
} // namespace RTC
|
|
234
|
+
|
|
235
|
+
#endif
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
#include "RTC/RateCalculator.hpp"
|
|
7
7
|
#include "RTC/SeqManager.hpp"
|
|
8
8
|
#include "RTC/TrendCalculator.hpp"
|
|
9
|
+
#include "SharedInterface.hpp"
|
|
9
10
|
#include <map>
|
|
10
11
|
|
|
11
12
|
namespace RTC
|
|
@@ -82,7 +83,9 @@ namespace RTC
|
|
|
82
83
|
|
|
83
84
|
public:
|
|
84
85
|
SenderBandwidthEstimator(
|
|
85
|
-
RTC::SenderBandwidthEstimator::Listener* listener,
|
|
86
|
+
RTC::SenderBandwidthEstimator::Listener* listener,
|
|
87
|
+
SharedInterface* shared,
|
|
88
|
+
uint32_t initialAvailableBitrate);
|
|
86
89
|
virtual ~SenderBandwidthEstimator();
|
|
87
90
|
|
|
88
91
|
public:
|
|
@@ -98,6 +101,7 @@ namespace RTC
|
|
|
98
101
|
private:
|
|
99
102
|
// Passed by argument.
|
|
100
103
|
Listener* listener{ nullptr };
|
|
104
|
+
SharedInterface* shared{ nullptr };
|
|
101
105
|
// Others.
|
|
102
106
|
uint32_t initialAvailableBitrate{ 0u };
|
|
103
107
|
uint32_t availableBitrate{ 0u };
|
|
@@ -75,6 +75,14 @@ namespace RTC
|
|
|
75
75
|
return this->length;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Current available length of the Serializable.
|
|
80
|
+
*/
|
|
81
|
+
virtual size_t GetAvailableLength() const final
|
|
82
|
+
{
|
|
83
|
+
return this->bufferLength - this->length;
|
|
84
|
+
}
|
|
85
|
+
|
|
78
86
|
/**
|
|
79
87
|
* Serialize the Serializable into a new buffer. This method copies the
|
|
80
88
|
* bytes of the internal buffer into the new buffer and makes `GetBuffer()`
|
|
@@ -205,11 +213,11 @@ namespace RTC
|
|
|
205
213
|
|
|
206
214
|
private:
|
|
207
215
|
// Buffer holding the Serializable content.
|
|
208
|
-
uint8_t* buffer
|
|
216
|
+
uint8_t* buffer;
|
|
209
217
|
// Length of the buffer. This is the maximum length the Serializable can
|
|
210
218
|
// take.
|
|
211
|
-
size_t bufferLength
|
|
212
|
-
// Serializable exact length (includes padding bytes).
|
|
219
|
+
size_t bufferLength;
|
|
220
|
+
// Serializable current exact length (includes padding bytes).
|
|
213
221
|
size_t length{ 0u };
|
|
214
222
|
// Event listener invoked when the current buffer is released (no longer
|
|
215
223
|
// used by this Serializable)-
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
|
|
4
4
|
#include "RTC/Consumer.hpp"
|
|
5
5
|
#include "RTC/SeqManager.hpp"
|
|
6
|
-
#include "RTC/Shared.hpp"
|
|
7
6
|
#include <map>
|
|
8
7
|
|
|
9
8
|
namespace RTC
|
|
@@ -12,7 +11,7 @@ namespace RTC
|
|
|
12
11
|
{
|
|
13
12
|
public:
|
|
14
13
|
SimpleConsumer(
|
|
15
|
-
|
|
14
|
+
SharedInterface* shared,
|
|
16
15
|
const std::string& id,
|
|
17
16
|
const std::string& producerId,
|
|
18
17
|
RTC::Consumer::Listener* listener,
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
#include "RTC/Consumer.hpp"
|
|
5
5
|
#include "RTC/RTP/Codecs/PayloadDescriptorHandler.hpp"
|
|
6
6
|
#include "RTC/SeqManager.hpp"
|
|
7
|
-
#include "RTC/Shared.hpp"
|
|
8
7
|
#include <map>
|
|
9
8
|
|
|
10
9
|
namespace RTC
|
|
@@ -13,7 +12,7 @@ namespace RTC
|
|
|
13
12
|
{
|
|
14
13
|
public:
|
|
15
14
|
SimulcastConsumer(
|
|
16
|
-
|
|
15
|
+
SharedInterface* shared,
|
|
17
16
|
const std::string& id,
|
|
18
17
|
const std::string& producerId,
|
|
19
18
|
RTC::Consumer::Listener* listener,
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
#include "RTC/Consumer.hpp"
|
|
5
5
|
#include "RTC/RTP/Codecs/PayloadDescriptorHandler.hpp"
|
|
6
6
|
#include "RTC/SeqManager.hpp"
|
|
7
|
-
#include "RTC/Shared.hpp"
|
|
8
7
|
#include <map>
|
|
9
8
|
|
|
10
9
|
namespace RTC
|
|
@@ -13,7 +12,7 @@ namespace RTC
|
|
|
13
12
|
{
|
|
14
13
|
public:
|
|
15
14
|
SvcConsumer(
|
|
16
|
-
|
|
15
|
+
SharedInterface* shared,
|
|
17
16
|
const std::string& id,
|
|
18
17
|
const std::string& producerId,
|
|
19
18
|
RTC::Consumer::Listener* listener,
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
#define MS_RTC_TCP_SERVER_HPP
|
|
3
3
|
|
|
4
4
|
#include "common.hpp"
|
|
5
|
-
#include "RTC/TcpConnection.hpp"
|
|
6
|
-
#include "RTC/Transport.hpp"
|
|
7
5
|
#include "handles/TcpConnectionHandle.hpp"
|
|
8
6
|
#include "handles/TcpServerHandle.hpp"
|
|
7
|
+
#include "RTC/TcpConnection.hpp"
|
|
8
|
+
#include "RTC/Transport.hpp"
|
|
9
9
|
#include <string>
|
|
10
10
|
|
|
11
11
|
namespace RTC
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#ifndef MS_RTC_TRANSPORT_HPP
|
|
2
2
|
#define MS_RTC_TRANSPORT_HPP
|
|
3
|
+
|
|
3
4
|
// #define ENABLE_RTC_SENDER_BANDWIDTH_ESTIMATOR
|
|
4
5
|
|
|
5
6
|
#include "common.hpp"
|
|
6
|
-
#include "DepLibUV.hpp"
|
|
7
7
|
#include "Channel/ChannelNotification.hpp"
|
|
8
8
|
#include "Channel/ChannelRequest.hpp"
|
|
9
9
|
#include "Channel/ChannelSocket.hpp"
|
|
@@ -19,19 +19,17 @@
|
|
|
19
19
|
#include "RTC/RateCalculator.hpp"
|
|
20
20
|
#include "RTC/RtpListener.hpp"
|
|
21
21
|
#include "RTC/SCTP/public/AssociationInterface.hpp"
|
|
22
|
-
#include "RTC/SCTP/public/
|
|
22
|
+
#include "RTC/SCTP/public/AssociationListenerInterface.hpp"
|
|
23
23
|
#include "RTC/SCTP/public/Message.hpp"
|
|
24
24
|
#include "RTC/SCTP/public/SctpTypes.hpp"
|
|
25
|
-
// TODO: Remove once we only use built-in SCTP stack.
|
|
26
|
-
#include "RTC/SctpAssociation.hpp"
|
|
27
25
|
#include "RTC/SctpListener.hpp"
|
|
28
|
-
#include "
|
|
26
|
+
#include "SharedInterface.hpp"
|
|
29
27
|
#ifdef ENABLE_RTC_SENDER_BANDWIDTH_ESTIMATOR
|
|
30
28
|
#include "RTC/SenderBandwidthEstimator.hpp"
|
|
31
29
|
#endif
|
|
30
|
+
#include "handles/TimerHandleInterface.hpp"
|
|
32
31
|
#include "RTC/TransportCongestionControlClient.hpp"
|
|
33
32
|
#include "RTC/TransportCongestionControlServer.hpp"
|
|
34
|
-
#include "handles/TimerHandle.hpp"
|
|
35
33
|
#include <absl/container/flat_hash_map.h>
|
|
36
34
|
#include <string>
|
|
37
35
|
#include <vector>
|
|
@@ -42,9 +40,7 @@ namespace RTC
|
|
|
42
40
|
public RTC::Consumer::Listener,
|
|
43
41
|
public RTC::DataProducer::Listener,
|
|
44
42
|
public RTC::DataConsumer::Listener,
|
|
45
|
-
public RTC::SCTP::
|
|
46
|
-
// TODO: Remove once we only use built-in SCTP stack.
|
|
47
|
-
public RTC::SctpAssociation::Listener,
|
|
43
|
+
public RTC::SCTP::AssociationListenerInterface,
|
|
48
44
|
public RTC::TransportCongestionControlClient::Listener,
|
|
49
45
|
public RTC::TransportCongestionControlServer::Listener,
|
|
50
46
|
public Channel::ChannelSocket::RequestHandler,
|
|
@@ -52,7 +48,7 @@ namespace RTC
|
|
|
52
48
|
#ifdef ENABLE_RTC_SENDER_BANDWIDTH_ESTIMATOR
|
|
53
49
|
public RTC::SenderBandwidthEstimator::Listener,
|
|
54
50
|
#endif
|
|
55
|
-
public
|
|
51
|
+
public TimerHandleInterface::Listener
|
|
56
52
|
{
|
|
57
53
|
protected:
|
|
58
54
|
using onSendCallback = const std::function<void(bool sent)>;
|
|
@@ -110,9 +106,7 @@ namespace RTC
|
|
|
110
106
|
virtual void OnTransportDataProducerMessageReceived(
|
|
111
107
|
RTC::Transport* transport,
|
|
112
108
|
RTC::DataProducer* dataProducer,
|
|
113
|
-
|
|
114
|
-
size_t len,
|
|
115
|
-
uint32_t ppid,
|
|
109
|
+
RTC::SCTP::Message message,
|
|
116
110
|
std::vector<uint16_t>& subchannels,
|
|
117
111
|
std::optional<uint16_t> requiredSubchannel) = 0;
|
|
118
112
|
virtual void OnTransportNewDataConsumer(
|
|
@@ -157,7 +151,7 @@ namespace RTC
|
|
|
157
151
|
|
|
158
152
|
public:
|
|
159
153
|
Transport(
|
|
160
|
-
|
|
154
|
+
SharedInterface* shared,
|
|
161
155
|
const std::string& id,
|
|
162
156
|
RTC::Transport::Listener* listener,
|
|
163
157
|
const FBS::Transport::Options* options);
|
|
@@ -180,51 +174,51 @@ namespace RTC
|
|
|
180
174
|
|
|
181
175
|
protected:
|
|
182
176
|
// Must be called from the subclass.
|
|
183
|
-
void
|
|
184
|
-
void Connected();
|
|
185
|
-
void Disconnected();
|
|
186
|
-
void DataReceived(size_t len)
|
|
177
|
+
virtual void SetDestroying() final;
|
|
178
|
+
virtual void Connected() final;
|
|
179
|
+
virtual void Disconnected() final;
|
|
180
|
+
virtual void DataReceived(size_t len) final
|
|
187
181
|
{
|
|
188
|
-
this->recvTransmission.Update(len,
|
|
182
|
+
this->recvTransmission.Update(len, this->shared->GetTimeMs());
|
|
189
183
|
}
|
|
190
|
-
void DataSent(size_t len)
|
|
184
|
+
virtual void DataSent(size_t len) final
|
|
191
185
|
{
|
|
192
|
-
this->sendTransmission.Update(len,
|
|
186
|
+
this->sendTransmission.Update(len, this->shared->GetTimeMs());
|
|
193
187
|
}
|
|
194
|
-
void ReceiveRtpPacket(RTC::RTP::Packet* packet);
|
|
195
|
-
void ReceiveRtcpPacket(RTC::RTCP::Packet* packet);
|
|
196
|
-
void ReceiveSctpData(const uint8_t* data, size_t len);
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
RTC::Consumer* GetConsumerByMediaSsrc(uint32_t ssrc) const;
|
|
200
|
-
RTC::Consumer* GetConsumerByRtxSsrc(uint32_t ssrc) const;
|
|
201
|
-
RTC::DataProducer* GetDataProducerById(const std::string& dataProducerId) const;
|
|
202
|
-
RTC::DataConsumer* GetDataConsumerById(const std::string& dataConsumerId) const;
|
|
188
|
+
virtual void ReceiveRtpPacket(RTC::RTP::Packet* packet) final;
|
|
189
|
+
virtual void ReceiveRtcpPacket(RTC::RTCP::Packet* packet) final;
|
|
190
|
+
virtual void ReceiveSctpData(const uint8_t* data, size_t len) final;
|
|
191
|
+
virtual void SendSctpMessage(
|
|
192
|
+
RTC::DataConsumer* dataConsumer, RTC::SCTP::Message message, onQueuedCallback* cb = nullptr) final;
|
|
203
193
|
|
|
204
194
|
private:
|
|
195
|
+
virtual RTC::Producer* AssertAndGetProducerById(const std::string& producerId) const final;
|
|
196
|
+
virtual RTC::Consumer* AssertAndGetConsumerById(const std::string& consumerId) const final;
|
|
197
|
+
virtual RTC::Consumer* GetConsumerByMediaSsrc(uint32_t ssrc) const final;
|
|
198
|
+
virtual RTC::Consumer* GetConsumerByRtxSsrc(uint32_t ssrc) const final;
|
|
199
|
+
virtual RTC::DataProducer* AssertAndGetDataProducerById(const std::string& dataProducerId) const final;
|
|
200
|
+
virtual RTC::DataConsumer* AssertAndGetDataConsumerById(const std::string& dataConsumerId) const final;
|
|
201
|
+
virtual RTC::DataConsumer* GetSctpDataConsumerByStreamId(uint16_t streamId) const final;
|
|
205
202
|
virtual bool IsConnected() const = 0;
|
|
206
203
|
virtual void SendRtpPacket(
|
|
207
204
|
RTC::Consumer* consumer, RTC::RTP::Packet* packet, const onSendCallback* cb = nullptr) = 0;
|
|
208
|
-
void HandleRtcpPacket(RTC::RTCP::Packet* packet);
|
|
209
|
-
void SendRtcp(uint64_t nowMs);
|
|
205
|
+
virtual void HandleRtcpPacket(RTC::RTCP::Packet* packet) final;
|
|
206
|
+
virtual void SendRtcp(uint64_t nowMs) final;
|
|
210
207
|
virtual void SendRtcpPacket(RTC::RTCP::Packet* packet) = 0;
|
|
211
208
|
virtual void SendRtcpCompoundPacket(RTC::RTCP::CompoundPacket* packet) = 0;
|
|
212
209
|
virtual void SendMessage(
|
|
213
|
-
RTC::DataConsumer* dataConsumer,
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
virtual
|
|
219
|
-
virtual void
|
|
220
|
-
virtual void
|
|
221
|
-
|
|
222
|
-
void
|
|
223
|
-
void
|
|
224
|
-
void
|
|
225
|
-
void CheckNoProducer(const std::string& producerId) const;
|
|
226
|
-
void CheckNoDataProducer(const std::string& dataProducerId) const;
|
|
227
|
-
void CheckNoDataConsumer(const std::string& dataConsumerId) const;
|
|
210
|
+
RTC::DataConsumer* dataConsumer, RTC::SCTP::Message message, onQueuedCallback* cb = nullptr) = 0;
|
|
211
|
+
virtual bool SendData(const uint8_t* data, size_t len) = 0;
|
|
212
|
+
virtual void RecvStreamClosed(uint32_t ssrc) = 0;
|
|
213
|
+
virtual void SendStreamClosed(uint32_t ssrc) = 0;
|
|
214
|
+
virtual void DistributeAvailableOutgoingBitrate() final;
|
|
215
|
+
virtual void ComputeOutgoingDesiredBitrate(bool forceBitrate = false) final;
|
|
216
|
+
virtual void EmitTraceEventProbationType(RTC::RTP::Packet* packet) const final;
|
|
217
|
+
virtual void EmitTraceEventBweType(
|
|
218
|
+
RTC::TransportCongestionControlClient::Bitrates& bitrates) const final;
|
|
219
|
+
virtual void CheckNoDataProducer(const std::string& dataProducerId) const final;
|
|
220
|
+
virtual void CheckNoDataConsumer(const std::string& dataConsumerId) const final;
|
|
221
|
+
virtual void CheckNoSctpDataConsumer(uint16_t streamId) const final;
|
|
228
222
|
|
|
229
223
|
/* Pure virtual methods inherited from RTC::Producer::Listener. */
|
|
230
224
|
public:
|
|
@@ -269,9 +263,7 @@ namespace RTC
|
|
|
269
263
|
}
|
|
270
264
|
void OnDataProducerMessageReceived(
|
|
271
265
|
RTC::DataProducer* dataProducer,
|
|
272
|
-
|
|
273
|
-
size_t len,
|
|
274
|
-
uint32_t ppid,
|
|
266
|
+
RTC::SCTP::Message message,
|
|
275
267
|
std::vector<uint16_t>& subchannels,
|
|
276
268
|
std::optional<uint16_t> requiredSubchannel) override;
|
|
277
269
|
void OnDataProducerPaused(RTC::DataProducer* dataProducer) override;
|
|
@@ -280,16 +272,16 @@ namespace RTC
|
|
|
280
272
|
/* Pure virtual methods inherited from RTC::DataConsumer::Listener. */
|
|
281
273
|
public:
|
|
282
274
|
void OnDataConsumerSendMessage(
|
|
283
|
-
RTC::DataConsumer* dataConsumer,
|
|
284
|
-
const uint8_t* msg,
|
|
285
|
-
size_t len,
|
|
286
|
-
uint32_t ppid,
|
|
287
|
-
onQueuedCallback* cb = nullptr) override;
|
|
275
|
+
RTC::DataConsumer* dataConsumer, RTC::SCTP::Message message, onQueuedCallback* cb) override;
|
|
288
276
|
void OnDataConsumerNeedBufferedAmount(
|
|
289
|
-
RTC::DataConsumer* dataConsumer, uint32_t& bufferedAmount) override;
|
|
277
|
+
const RTC::DataConsumer* dataConsumer, uint32_t& bufferedAmount) const override;
|
|
278
|
+
void OnDataConsumerNeedBufferedAmountLowThreshold(
|
|
279
|
+
const RTC::DataConsumer* dataConsumer, uint32_t& bufferedAmountLowThreshold) const override;
|
|
280
|
+
void OnDataConsumerSetBufferedAmountLowThreshold(
|
|
281
|
+
const RTC::DataConsumer* dataConsumer, uint32_t bytes) const override;
|
|
290
282
|
void OnDataConsumerDataProducerClosed(RTC::DataConsumer* dataConsumer) override;
|
|
291
283
|
|
|
292
|
-
/* Pure virtual methods inherited from RTC::SCTP::
|
|
284
|
+
/* Pure virtual methods inherited from RTC::SCTP::AssociationListenerInterface. */
|
|
293
285
|
public:
|
|
294
286
|
bool OnAssociationSendData(const uint8_t* data, size_t len) override;
|
|
295
287
|
void OnAssociationConnecting() override;
|
|
@@ -306,25 +298,6 @@ namespace RTC
|
|
|
306
298
|
void OnAssociationStreamBufferedAmountLow(uint16_t streamId) override;
|
|
307
299
|
void OnAssociationTotalBufferedAmountLow() override;
|
|
308
300
|
bool OnAssociationIsTransportReadyForSctp() override;
|
|
309
|
-
// TODO: SCTP: Add OnAssociationLifecycleMessageXxxxxx() methods.
|
|
310
|
-
|
|
311
|
-
/* Pure virtual methods inherited from RTC::SctpAssociation::Listener. */
|
|
312
|
-
// TODO: Remove once we only use built-in SCTP stack.
|
|
313
|
-
public:
|
|
314
|
-
void OnSctpAssociationConnecting(RTC::SctpAssociation* sctpAssociation) override;
|
|
315
|
-
void OnSctpAssociationConnected(RTC::SctpAssociation* sctpAssociation) override;
|
|
316
|
-
void OnSctpAssociationFailed(RTC::SctpAssociation* sctpAssociation) override;
|
|
317
|
-
void OnSctpAssociationClosed(RTC::SctpAssociation* sctpAssociation) override;
|
|
318
|
-
void OnSctpAssociationSendData(
|
|
319
|
-
RTC::SctpAssociation* sctpAssociation, const uint8_t* data, size_t len) override;
|
|
320
|
-
void OnSctpAssociationMessageReceived(
|
|
321
|
-
RTC::SctpAssociation* sctpAssociation,
|
|
322
|
-
uint16_t streamId,
|
|
323
|
-
const uint8_t* msg,
|
|
324
|
-
size_t len,
|
|
325
|
-
uint32_t ppid) override;
|
|
326
|
-
void OnSctpAssociationBufferedAmount(
|
|
327
|
-
RTC::SctpAssociation* sctpAssociation, uint32_t bufferedAmount) override;
|
|
328
301
|
|
|
329
302
|
/* Pure virtual methods inherited from RTC::TransportCongestionControlClient::Listener. */
|
|
330
303
|
public:
|
|
@@ -350,21 +323,16 @@ namespace RTC
|
|
|
350
323
|
uint32_t previousAvailableBitrate) override;
|
|
351
324
|
#endif
|
|
352
325
|
|
|
353
|
-
/* Pure virtual methods inherited from
|
|
326
|
+
/* Pure virtual methods inherited from TimerHandleInterface::Listener. */
|
|
354
327
|
public:
|
|
355
|
-
void OnTimer(
|
|
328
|
+
void OnTimer(TimerHandleInterface* timer) override;
|
|
356
329
|
|
|
357
330
|
public:
|
|
358
331
|
// Passed by argument.
|
|
359
332
|
std::string id;
|
|
360
333
|
|
|
361
334
|
protected:
|
|
362
|
-
|
|
363
|
-
size_t maxMessageSize{ 262144u };
|
|
364
|
-
// Allocated by this.
|
|
365
|
-
std::unique_ptr<RTC::SCTP::AssociationInterface> sctpAssociation{ nullptr };
|
|
366
|
-
// TODO: Remove once we only use built-in SCTP stack.
|
|
367
|
-
RTC::SctpAssociation* oldSctpAssociation{ nullptr };
|
|
335
|
+
SharedInterface* shared{ nullptr };
|
|
368
336
|
|
|
369
337
|
private:
|
|
370
338
|
// Passed by argument.
|
|
@@ -374,9 +342,12 @@ namespace RTC
|
|
|
374
342
|
absl::flat_hash_map<std::string, RTC::Consumer*> mapConsumers;
|
|
375
343
|
absl::flat_hash_map<std::string, RTC::DataProducer*> mapDataProducers;
|
|
376
344
|
absl::flat_hash_map<std::string, RTC::DataConsumer*> mapDataConsumers;
|
|
345
|
+
absl::flat_hash_map<uint16_t, RTC::DataConsumer*> mapSctpStreamIdDataConsumers;
|
|
377
346
|
absl::flat_hash_map<uint32_t, RTC::Consumer*> mapSsrcConsumer;
|
|
378
347
|
absl::flat_hash_map<uint32_t, RTC::Consumer*> mapRtxSsrcConsumer;
|
|
379
|
-
|
|
348
|
+
TimerHandleInterface* rtcpTimer{ nullptr };
|
|
349
|
+
// Allocated by this.
|
|
350
|
+
std::unique_ptr<RTC::SCTP::AssociationInterface> sctpAssociation{ nullptr };
|
|
380
351
|
std::shared_ptr<RTC::TransportCongestionControlClient> tccClient{ nullptr };
|
|
381
352
|
std::shared_ptr<RTC::TransportCongestionControlServer> tccServer{ nullptr };
|
|
382
353
|
#ifdef ENABLE_RTC_SENDER_BANDWIDTH_ESTIMATOR
|
|
@@ -384,7 +355,7 @@ namespace RTC
|
|
|
384
355
|
#endif
|
|
385
356
|
// Others.
|
|
386
357
|
bool direct{ false }; // Whether this Transport allows direct communication.
|
|
387
|
-
bool
|
|
358
|
+
bool isDestroying{ false };
|
|
388
359
|
struct RTC::RTP::HeaderExtensionIds recvRtpHeaderExtensionIds;
|
|
389
360
|
RTC::RtpListener rtpListener;
|
|
390
361
|
RTC::SctpListener sctpListener;
|
|
@@ -400,6 +371,14 @@ namespace RTC
|
|
|
400
371
|
uint32_t maxIncomingBitrate{ 0u };
|
|
401
372
|
uint32_t maxOutgoingBitrate{ 0u };
|
|
402
373
|
uint32_t minOutgoingBitrate{ 0u };
|
|
374
|
+
// For SCTP capable transports and for direct transport.
|
|
375
|
+
size_t maxSendMessageSize{ 0u };
|
|
376
|
+
size_t maxReceiveMessageSize{ 0u };
|
|
377
|
+
// For SCTP capable transports.
|
|
378
|
+
size_t sctpSendBufferSize{ 0u };
|
|
379
|
+
size_t sctpPerStreamSendQueueLimit{ 0u };
|
|
380
|
+
size_t sctpMaxReceiverWindowBufferSize{ 0u };
|
|
381
|
+
|
|
403
382
|
struct TraceEventTypes traceEventTypes;
|
|
404
383
|
};
|
|
405
384
|
} // namespace RTC
|