Move DeliverRtcp function to ArrayView
Bug: webrtc:42225170
Change-Id: Icdc1d89dce85117f29ede86267133deb570ad602
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/399420
Reviewed-by: Evan Shrubsole <eshr@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45108}
diff --git a/audio/audio_receive_stream.cc b/audio/audio_receive_stream.cc
index f703ae0..ab2383f 100644
--- a/audio/audio_receive_stream.cc
+++ b/audio/audio_receive_stream.cc
@@ -429,9 +429,9 @@
return channel_receive_->SetMinimumPlayoutDelay(delay_ms);
}
-void AudioReceiveStreamImpl::DeliverRtcp(const uint8_t* packet, size_t length) {
+void AudioReceiveStreamImpl::DeliverRtcp(ArrayView<const uint8_t> packet) {
RTC_DCHECK_RUN_ON(&worker_thread_checker_);
- channel_receive_->ReceivedRTCPPacket(packet, length);
+ channel_receive_->ReceivedRTCPPacket(packet.data(), packet.size());
}
void AudioReceiveStreamImpl::SetSyncGroup(absl::string_view sync_group) {
diff --git a/audio/audio_receive_stream.h b/audio/audio_receive_stream.h
index bc24812..0d78482 100644
--- a/audio/audio_receive_stream.h
+++ b/audio/audio_receive_stream.h
@@ -20,6 +20,7 @@
#include <vector>
#include "absl/strings/string_view.h"
+#include "api/array_view.h"
#include "api/audio/audio_frame.h"
#include "api/audio/audio_mixer.h"
#include "api/audio_codecs/audio_format.h"
@@ -123,7 +124,7 @@
int64_t time_ms) override;
bool SetMinimumPlayoutDelay(int delay_ms) override;
- void DeliverRtcp(const uint8_t* packet, size_t length);
+ void DeliverRtcp(ArrayView<const uint8_t> packet);
void SetSyncGroup(absl::string_view sync_group);
diff --git a/audio/audio_receive_stream_unittest.cc b/audio/audio_receive_stream_unittest.cc
index 35d846b..e969923 100644
--- a/audio/audio_receive_stream_unittest.cc
+++ b/audio/audio_receive_stream_unittest.cc
@@ -242,7 +242,7 @@
EXPECT_CALL(*helper.channel_receive(),
ReceivedRTCPPacket(&rtcp_packet[0], rtcp_packet.size()))
.WillOnce(Return());
- recv_stream->DeliverRtcp(&rtcp_packet[0], rtcp_packet.size());
+ recv_stream->DeliverRtcp(rtcp_packet);
recv_stream->UnregisterFromTransport();
}
}
diff --git a/audio/audio_send_stream.cc b/audio/audio_send_stream.cc
index 692527d..5c7fa93 100644
--- a/audio/audio_send_stream.cc
+++ b/audio/audio_send_stream.cc
@@ -20,6 +20,7 @@
#include "absl/strings/str_cat.h"
#include "absl/strings/string_view.h"
+#include "api/array_view.h"
#include "api/audio/audio_frame.h"
#include "api/audio/audio_processing.h"
#include "api/audio_codecs/audio_encoder.h"
@@ -489,9 +490,9 @@
return stats;
}
-void AudioSendStream::DeliverRtcp(const uint8_t* packet, size_t length) {
+void AudioSendStream::DeliverRtcp(ArrayView<const uint8_t> packet) {
RTC_DCHECK_RUN_ON(&worker_thread_checker_);
- channel_send_->ReceivedRTCPPacket(packet, length);
+ channel_send_->ReceivedRTCPPacket(packet.data(), packet.size());
// Poll if overhead has changed, which it can do if ack triggers us to stop
// sending mid/rid.
UpdateOverheadPerPacket();
diff --git a/audio/audio_send_stream.h b/audio/audio_send_stream.h
index 4fee61b..9bac560 100644
--- a/audio/audio_send_stream.h
+++ b/audio/audio_send_stream.h
@@ -18,6 +18,7 @@
#include <utility>
#include <vector>
+#include "api/array_view.h"
#include "api/call/bitrate_allocation.h"
#include "api/environment/environment.h"
#include "api/field_trials_view.h"
@@ -102,7 +103,7 @@
webrtc::AudioSendStream::Stats GetStats(
bool has_remote_tracks) const override;
- void DeliverRtcp(const uint8_t* packet, size_t length);
+ void DeliverRtcp(ArrayView<const uint8_t> packet);
// Implements BitrateAllocatorObserver.
uint32_t OnBitrateUpdated(BitrateAllocationUpdate update) override;
diff --git a/call/call.cc b/call/call.cc
index d6d0e4b..f20a58a 100644
--- a/call/call.cc
+++ b/call/call.cc
@@ -26,6 +26,7 @@
#include "absl/functional/bind_front.h"
#include "absl/strings/string_view.h"
#include "api/adaptation/resource.h"
+#include "api/array_view.h"
#include "api/environment/environment.h"
#include "api/fec_controller.h"
#include "api/field_trials_view.h"
@@ -1406,23 +1407,24 @@
receive_stats_.AddReceivedRtcpBytes(static_cast<int>(packet.size()));
bool rtcp_delivered = false;
+ ArrayView<const uint8_t> packet_view(packet.cdata(), packet.size());
for (VideoReceiveStream2* stream : video_receive_streams_) {
- if (stream->DeliverRtcp(packet.cdata(), packet.size()))
+ if (stream->DeliverRtcp(packet_view))
rtcp_delivered = true;
}
for (AudioReceiveStreamImpl* stream : audio_receive_streams_) {
- stream->DeliverRtcp(packet.cdata(), packet.size());
+ stream->DeliverRtcp(packet_view);
rtcp_delivered = true;
}
for (VideoSendStreamImpl* stream : video_send_streams_) {
- stream->DeliverRtcp(packet.cdata(), packet.size());
+ stream->DeliverRtcp(packet);
rtcp_delivered = true;
}
for (auto& kv : audio_send_ssrcs_) {
- kv.second->DeliverRtcp(packet.cdata(), packet.size());
+ kv.second->DeliverRtcp(packet_view);
rtcp_delivered = true;
}
diff --git a/call/rtp_video_sender.cc b/call/rtp_video_sender.cc
index 282fba8..25cc813 100644
--- a/call/rtp_video_sender.cc
+++ b/call/rtp_video_sender.cc
@@ -720,10 +720,10 @@
return post_encode_overhead;
}
-void RtpVideoSender::DeliverRtcp(const uint8_t* packet, size_t length) {
+void RtpVideoSender::DeliverRtcp(ArrayView<const uint8_t> packet) {
// Runs on a network thread.
for (const RtpStreamSender& stream : rtp_streams_)
- stream.rtp_rtcp->IncomingRtcpPacket(MakeArrayView(packet, length));
+ stream.rtp_rtcp->IncomingRtcpPacket(packet);
}
void RtpVideoSender::ConfigureSsrcs(
diff --git a/call/rtp_video_sender.h b/call/rtp_video_sender.h
index 86a5338..77f60ef 100644
--- a/call/rtp_video_sender.h
+++ b/call/rtp_video_sender.h
@@ -113,9 +113,8 @@
std::map<uint32_t, RtpPayloadState> GetRtpPayloadStates() const
RTC_LOCKS_EXCLUDED(mutex_) override;
- void DeliverRtcp(const uint8_t* packet, size_t length)
+ void DeliverRtcp(ArrayView<const uint8_t> packet)
RTC_LOCKS_EXCLUDED(mutex_) override;
-
// Implements webrtc::VCMProtectionCallback.
int ProtectionRequest(const FecProtectionParams* delta_params,
const FecProtectionParams* key_params,
diff --git a/call/rtp_video_sender_interface.h b/call/rtp_video_sender_interface.h
index 70c0800..754fe03 100644
--- a/call/rtp_video_sender_interface.h
+++ b/call/rtp_video_sender_interface.h
@@ -40,7 +40,7 @@
virtual std::map<uint32_t, RtpState> GetRtpStates() const = 0;
virtual std::map<uint32_t, RtpPayloadState> GetRtpPayloadStates() const = 0;
- virtual void DeliverRtcp(const uint8_t* packet, size_t length) = 0;
+ virtual void DeliverRtcp(ArrayView<const uint8_t> packet) = 0;
virtual void OnBitrateAllocationUpdated(
const VideoBitrateAllocation& bitrate) = 0;
diff --git a/call/rtp_video_sender_unittest.cc b/call/rtp_video_sender_unittest.cc
index c7c83eb..9465967 100644
--- a/call/rtp_video_sender_unittest.cc
+++ b/call/rtp_video_sender_unittest.cc
@@ -548,7 +548,7 @@
ByteReader<uint16_t>::ReadBigEndian(payload.data()));
return true;
});
- test.router()->DeliverRtcp(nack_buffer.data(), nack_buffer.size());
+ test.router()->DeliverRtcp(nack_buffer);
test.AdvanceTime(TimeDelta::Millis(33));
// Verify that both packets were retransmitted.
@@ -589,7 +589,7 @@
ByteReader<uint16_t>::ReadBigEndian(payload.data()));
return true;
});
- test.router()->DeliverRtcp(nack_buffer.data(), nack_buffer.size());
+ test.router()->DeliverRtcp(nack_buffer);
test.AdvanceTime(TimeDelta::Millis(33));
}
@@ -988,8 +988,8 @@
EXPECT_TRUE(rtp_packet.Parse(packet));
return true;
});
- test.router()->DeliverRtcp(nack_buffer1.data(), nack_buffer1.size());
- test.router()->DeliverRtcp(nack_buffer2.data(), nack_buffer2.size());
+ test.router()->DeliverRtcp(nack_buffer1);
+ test.router()->DeliverRtcp(nack_buffer2);
test.AdvanceTime(TimeDelta::Millis(33));
@@ -1598,7 +1598,7 @@
ByteReader<uint16_t>::ReadBigEndian(payload.data()));
return true;
});
- test.router()->DeliverRtcp(nack_buffer.data(), nack_buffer.size());
+ test.router()->DeliverRtcp(nack_buffer);
test.AdvanceTime(TimeDelta::Millis(33));
// Verify that only base layer packet was retransmitted.
diff --git a/video/rtp_video_stream_receiver2.cc b/video/rtp_video_stream_receiver2.cc
index 4407791..f2715d3 100644
--- a/video/rtp_video_stream_receiver2.cc
+++ b/video/rtp_video_stream_receiver2.cc
@@ -1322,15 +1322,15 @@
}
}
-bool RtpVideoStreamReceiver2::DeliverRtcp(const uint8_t* rtcp_packet,
- size_t rtcp_packet_length) {
+bool RtpVideoStreamReceiver2::DeliverRtcp(
+ ArrayView<const uint8_t> rtcp_packet) {
RTC_DCHECK_RUN_ON(&packet_sequence_checker_);
if (!receiving_) {
return false;
}
- rtp_rtcp_->IncomingRtcpPacket(MakeArrayView(rtcp_packet, rtcp_packet_length));
+ rtp_rtcp_->IncomingRtcpPacket((rtcp_packet));
std::optional<TimeDelta> rtt = rtp_rtcp_->LastRtt();
if (!rtt.has_value()) {
diff --git a/video/rtp_video_stream_receiver2.h b/video/rtp_video_stream_receiver2.h
index c4a3c7a..18ee7ff 100644
--- a/video/rtp_video_stream_receiver2.h
+++ b/video/rtp_video_stream_receiver2.h
@@ -20,6 +20,7 @@
#include <variant>
#include <vector>
+#include "api/array_view.h"
#include "api/crypto/frame_decryptor_interface.h"
#include "api/environment/environment.h"
#include "api/frame_transformer_interface.h"
@@ -131,7 +132,7 @@
// Produces the transport-related timestamps; current_delay_ms is left unset.
std::optional<Syncable::Info> GetSyncInfo() const;
- bool DeliverRtcp(const uint8_t* rtcp_packet, size_t rtcp_packet_length);
+ bool DeliverRtcp(ArrayView<const uint8_t> rtcp_packet);
void FrameContinuous(int64_t seq_num);
diff --git a/video/video_receive_stream2.cc b/video/video_receive_stream2.cc
index c7c1c30..2e8bc0b 100644
--- a/video/video_receive_stream2.cc
+++ b/video/video_receive_stream2.cc
@@ -11,7 +11,6 @@
#include "video/video_receive_stream2.h"
#include <stdlib.h>
-#include <string.h>
#include <algorithm>
#include <cmath>
@@ -349,9 +348,9 @@
rtp_video_stream_receiver_.SignalNetworkState(state);
}
-bool VideoReceiveStream2::DeliverRtcp(const uint8_t* packet, size_t length) {
+bool VideoReceiveStream2::DeliverRtcp(ArrayView<const uint8_t> packet) {
RTC_DCHECK_RUN_ON(&packet_sequence_checker_);
- return rtp_video_stream_receiver_.DeliverRtcp(packet, length);
+ return rtp_video_stream_receiver_.DeliverRtcp(packet);
}
void VideoReceiveStream2::SetSync(Syncable* audio_syncable) {
diff --git a/video/video_receive_stream2.h b/video/video_receive_stream2.h
index aae2b3e..d6d27a5 100644
--- a/video/video_receive_stream2.h
+++ b/video/video_receive_stream2.h
@@ -20,6 +20,7 @@
#include <string>
#include <vector>
+#include "api/array_view.h"
#include "api/crypto/frame_decryptor_interface.h"
#include "api/environment/environment.h"
#include "api/frame_transformer_interface.h"
@@ -150,7 +151,7 @@
}
void SignalNetworkState(NetworkState state);
- bool DeliverRtcp(const uint8_t* packet, size_t length);
+ bool DeliverRtcp(ArrayView<const uint8_t> packet);
void SetSync(Syncable* audio_syncable);
diff --git a/video/video_send_stream_impl.cc b/video/video_send_stream_impl.cc
index 9164f53..ac65b34 100644
--- a/video/video_send_stream_impl.cc
+++ b/video/video_send_stream_impl.cc
@@ -628,9 +628,9 @@
}
}
-void VideoSendStreamImpl::DeliverRtcp(const uint8_t* packet, size_t length) {
+void VideoSendStreamImpl::DeliverRtcp(ArrayView<const uint8_t> packet) {
RTC_DCHECK_RUN_ON(&thread_checker_);
- rtp_video_sender_->DeliverRtcp(packet, length);
+ rtp_video_sender_->DeliverRtcp(packet);
}
bool VideoSendStreamImpl::started() {
diff --git a/video/video_send_stream_impl.h b/video/video_send_stream_impl.h
index a8e7858..9885bd8 100644
--- a/video/video_send_stream_impl.h
+++ b/video/video_send_stream_impl.h
@@ -104,7 +104,7 @@
video_stream_encoder_for_test = nullptr);
~VideoSendStreamImpl() override;
- void DeliverRtcp(const uint8_t* packet, size_t length);
+ void DeliverRtcp(ArrayView<const uint8_t> packet);
// webrtc::VideoSendStream implementation.
void Start() override;
diff --git a/video/video_send_stream_impl_unittest.cc b/video/video_send_stream_impl_unittest.cc
index 72ef458..3f13e64 100644
--- a/video/video_send_stream_impl_unittest.cc
+++ b/video/video_send_stream_impl_unittest.cc
@@ -102,7 +102,7 @@
GetRtpPayloadStates,
(),
(const, override));
- MOCK_METHOD(void, DeliverRtcp, (const uint8_t*, size_t), (override));
+ MOCK_METHOD(void, DeliverRtcp, (ArrayView<const uint8_t>), (override));
MOCK_METHOD(void,
OnBitrateAllocationUpdated,
(const VideoBitrateAllocation&),