Add SetRtcpXr - set extended RTCP attributes without recreate.
Bug: webrtc:11993 Change-Id: Ie64b37c1e8a3f5b6fbcf671fce4ed642c74521cd Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/271300 Reviewed-by: Rasmus Brandt <brandtr@webrtc.org> Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org> Cr-Commit-Position: refs/heads/main@{#37776}
This commit is contained in:
parent
7dc5e11666
commit
2e809365d7
@ -305,6 +305,8 @@ class VideoReceiveStreamInterface : public MediaReceiveStreamInterface {
|
|||||||
|
|
||||||
virtual void SetUlpfecPayloadType(int ulpfec_payload_type) = 0;
|
virtual void SetUlpfecPayloadType(int ulpfec_payload_type) = 0;
|
||||||
|
|
||||||
|
virtual void SetRtcpXr(Config::Rtp::RtcpXr rtcp_xr) = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual ~VideoReceiveStreamInterface() {}
|
virtual ~VideoReceiveStreamInterface() {}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -302,6 +302,10 @@ class FakeVideoReceiveStream final
|
|||||||
config_.rtp.ulpfec_payload_type = ulpfec_payload_type;
|
config_.rtp.ulpfec_payload_type = ulpfec_payload_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetRtcpXr(Config::Rtp::RtcpXr rtcp_xr) override {
|
||||||
|
config_.rtp.rtcp_xr = rtcp_xr;
|
||||||
|
}
|
||||||
|
|
||||||
void Start() override;
|
void Start() override;
|
||||||
void Stop() override;
|
void Stop() override;
|
||||||
|
|
||||||
|
|||||||
@ -3010,9 +3010,8 @@ bool WebRtcVideoChannel::WebRtcVideoReceiveStream::ReconfigureCodecs(
|
|||||||
|
|
||||||
const bool has_rtr = HasRrtr(codec.codec);
|
const bool has_rtr = HasRrtr(codec.codec);
|
||||||
if (has_rtr != config_.rtp.rtcp_xr.receiver_reference_time_report) {
|
if (has_rtr != config_.rtp.rtcp_xr.receiver_reference_time_report) {
|
||||||
// TODO(tommi): Look into if/when this happens in practice.
|
|
||||||
config_.rtp.rtcp_xr.receiver_reference_time_report = has_rtr;
|
config_.rtp.rtcp_xr.receiver_reference_time_report = has_rtr;
|
||||||
recreate_needed = true;
|
stream_->SetRtcpXr(config_.rtp.rtcp_xr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (codec.ulpfec.red_rtx_payload_type != -1) {
|
if (codec.ulpfec.red_rtx_payload_type != -1) {
|
||||||
|
|||||||
@ -959,6 +959,11 @@ void RtpVideoStreamReceiver2::SetRtcpMode(RtcpMode mode) {
|
|||||||
rtp_rtcp_->SetRTCPStatus(mode);
|
rtp_rtcp_->SetRTCPStatus(mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RtpVideoStreamReceiver2::SetReferenceTimeReport(bool enabled) {
|
||||||
|
RTC_DCHECK_RUN_ON(&packet_sequence_checker_);
|
||||||
|
rtp_rtcp_->SetNonSenderRttMeasurement(enabled);
|
||||||
|
}
|
||||||
|
|
||||||
void RtpVideoStreamReceiver2::SetPacketSink(
|
void RtpVideoStreamReceiver2::SetPacketSink(
|
||||||
RtpPacketSinkInterface* packet_sink) {
|
RtpPacketSinkInterface* packet_sink) {
|
||||||
RTC_DCHECK_RUN_ON(&packet_sequence_checker_);
|
RTC_DCHECK_RUN_ON(&packet_sequence_checker_);
|
||||||
|
|||||||
@ -185,6 +185,8 @@ class RtpVideoStreamReceiver2 : public LossNotificationSender,
|
|||||||
// Forwards the call to set rtcp_sender_ to the RTCP mode of the rtcp sender.
|
// Forwards the call to set rtcp_sender_ to the RTCP mode of the rtcp sender.
|
||||||
void SetRtcpMode(RtcpMode mode);
|
void SetRtcpMode(RtcpMode mode);
|
||||||
|
|
||||||
|
void SetReferenceTimeReport(bool enabled);
|
||||||
|
|
||||||
// Sets or clears the callback sink that gets called for RTP packets. Used for
|
// Sets or clears the callback sink that gets called for RTP packets. Used for
|
||||||
// packet handlers such as FlexFec. Must be called on the packet delivery
|
// packet handlers such as FlexFec. Must be called on the packet delivery
|
||||||
// thread (same context as `OnRtpPacket` is called on).
|
// thread (same context as `OnRtpPacket` is called on).
|
||||||
|
|||||||
@ -556,6 +556,12 @@ void VideoReceiveStream2::SetUlpfecPayloadType(int payload_type) {
|
|||||||
rtp_video_stream_receiver_.set_ulpfec_payload_type(payload_type);
|
rtp_video_stream_receiver_.set_ulpfec_payload_type(payload_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VideoReceiveStream2::SetRtcpXr(Config::Rtp::RtcpXr rtcp_xr) {
|
||||||
|
RTC_DCHECK_RUN_ON(&packet_sequence_checker_);
|
||||||
|
rtp_video_stream_receiver_.SetReferenceTimeReport(
|
||||||
|
rtcp_xr.receiver_reference_time_report);
|
||||||
|
}
|
||||||
|
|
||||||
void VideoReceiveStream2::CreateAndRegisterExternalDecoder(
|
void VideoReceiveStream2::CreateAndRegisterExternalDecoder(
|
||||||
const Decoder& decoder) {
|
const Decoder& decoder) {
|
||||||
TRACE_EVENT0("webrtc",
|
TRACE_EVENT0("webrtc",
|
||||||
|
|||||||
@ -152,6 +152,7 @@ class VideoReceiveStream2
|
|||||||
void SetLossNotificationEnabled(bool enabled) override;
|
void SetLossNotificationEnabled(bool enabled) override;
|
||||||
void SetNackHistory(TimeDelta history) override;
|
void SetNackHistory(TimeDelta history) override;
|
||||||
void SetUlpfecPayloadType(int payload_type) override;
|
void SetUlpfecPayloadType(int payload_type) override;
|
||||||
|
void SetRtcpXr(Config::Rtp::RtcpXr rtcp_xr) override;
|
||||||
|
|
||||||
webrtc::VideoReceiveStreamInterface::Stats GetStats() const override;
|
webrtc::VideoReceiveStreamInterface::Stats GetStats() const override;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user