Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Unified Diff: webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc

Issue 2303283002: Introduce helpers to RtpSender to propagate RtpPacketToSend. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: nit Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_sender.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc
index b9f061a9d3af7739a2240b67efa56d34da878a3d..2a397e33f7da7af313d898f6920d1fcf870215bd 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc
@@ -22,6 +22,8 @@
#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h"
#include "webrtc/modules/rtp_rtcp/source/rtp_format_video_generic.h"
#include "webrtc/modules/rtp_rtcp/source/rtp_header_extension.h"
+#include "webrtc/modules/rtp_rtcp/source/rtp_header_extensions.h"
+#include "webrtc/modules/rtp_rtcp/source/rtp_packet_to_send.h"
#include "webrtc/modules/rtp_rtcp/source/rtp_sender.h"
#include "webrtc/modules/rtp_rtcp/source/rtp_sender_video.h"
#include "webrtc/modules/rtp_rtcp/source/rtp_utility.h"
@@ -53,7 +55,8 @@ const VideoRotation kRotation = kVideoRotation_270;
const size_t kGenericHeaderLength = 1;
const uint8_t kPayloadData[] = {47, 11, 32, 93, 89};
-using testing::_;
+using ::testing::_;
+using ::testing::ElementsAreArray;
const uint8_t* GetPayloadData(const RTPHeader& rtp_header,
const uint8_t* packet) {
@@ -371,6 +374,101 @@ TEST_F(RtpSenderTestWithoutPacer, RegisterRtpVideoRotationHeaderExtension) {
EXPECT_EQ(0u, rtp_sender_->RtpHeaderExtensionLength());
}
+TEST_F(RtpSenderTestWithoutPacer, AllocatePacketSetCsrc) {
+ // Configure rtp_sender with csrc.
+ std::vector<uint32_t> csrcs;
+ csrcs.push_back(0x23456789);
+ rtp_sender_->SetCsrcs(csrcs);
+
+ auto packet = rtp_sender_->AllocatePacket();
+
+ ASSERT_TRUE(packet);
+ EXPECT_EQ(rtp_sender_->SSRC(), packet->Ssrc());
+ EXPECT_EQ(csrcs, packet->Csrcs());
+}
+
+TEST_F(RtpSenderTestWithoutPacer, AllocatePacketReserveExtensions) {
+ // Configure rtp_sender with extensions.
+ ASSERT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension(
+ kRtpExtensionTransmissionTimeOffset,
+ kTransmissionTimeOffsetExtensionId));
+ ASSERT_EQ(
+ 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime,
+ kAbsoluteSendTimeExtensionId));
+ ASSERT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAudioLevel,
+ kAudioLevelExtensionId));
+ ASSERT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension(
+ kRtpExtensionTransportSequenceNumber,
+ kTransportSequenceNumberExtensionId));
+ ASSERT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension(
+ kRtpExtensionVideoRotation, kVideoRotationExtensionId));
+
+ auto packet = rtp_sender_->AllocatePacket();
+
+ ASSERT_TRUE(packet);
+ // Preallocate BWE extensions RtpSender set itself.
+ EXPECT_TRUE(packet->HasExtension<TransmissionOffset>());
+ EXPECT_TRUE(packet->HasExtension<AbsoluteSendTime>());
+ EXPECT_TRUE(packet->HasExtension<TransportSequenceNumber>());
+ // Do not allocate media specific extensions.
+ EXPECT_FALSE(packet->HasExtension<AudioLevel>());
+ EXPECT_FALSE(packet->HasExtension<VideoOrientation>());
+}
+
+TEST_F(RtpSenderTestWithoutPacer, AssignSequenceNumberAdvanceSequenceNumber) {
+ auto packet = rtp_sender_->AllocatePacket();
+ ASSERT_TRUE(packet);
+ const uint16_t sequence_number = rtp_sender_->SequenceNumber();
+
+ EXPECT_TRUE(rtp_sender_->AssignSequenceNumber(packet.get()));
+
+ EXPECT_EQ(sequence_number, packet->SequenceNumber());
+ EXPECT_EQ(sequence_number + 1, rtp_sender_->SequenceNumber());
+}
+
+TEST_F(RtpSenderTestWithoutPacer, AssignSequenceNumberFailsOnNotSending) {
+ auto packet = rtp_sender_->AllocatePacket();
+ ASSERT_TRUE(packet);
+
+ rtp_sender_->SetSendingMediaStatus(false);
+ EXPECT_FALSE(rtp_sender_->AssignSequenceNumber(packet.get()));
+}
+
+TEST_F(RtpSenderTestWithoutPacer, AssignSequenceNumberMayAllowPadding) {
+ constexpr size_t kPaddingSize = 100;
+ auto packet = rtp_sender_->AllocatePacket();
+ ASSERT_TRUE(packet);
+
+ ASSERT_FALSE(rtp_sender_->SendPadData(kPaddingSize, false, 0, 0, -1));
+ packet->SetMarker(false);
+ ASSERT_TRUE(rtp_sender_->AssignSequenceNumber(packet.get()));
+ // Packet without marker bit doesn't allow padding.
+ EXPECT_FALSE(rtp_sender_->SendPadData(kPaddingSize, false, 0, 0, -1));
+
+ packet->SetMarker(true);
+ ASSERT_TRUE(rtp_sender_->AssignSequenceNumber(packet.get()));
+ // Packet with marker bit allows send padding.
+ EXPECT_TRUE(rtp_sender_->SendPadData(kPaddingSize, false, 0, 0, -1));
+}
+
+TEST_F(RtpSenderTestWithoutPacer, AssignSequenceNumberSetPaddingTimestamps) {
+ constexpr size_t kPaddingSize = 100;
+ auto packet = rtp_sender_->AllocatePacket();
+ ASSERT_TRUE(packet);
+ packet->SetMarker(true);
+ packet->SetTimestamp(kTimestamp);
+
+ ASSERT_TRUE(rtp_sender_->AssignSequenceNumber(packet.get()));
+ ASSERT_TRUE(rtp_sender_->SendPadData(kPaddingSize, false, 0, 0, -1));
+
+ ASSERT_EQ(1u, transport_.sent_packets_.size());
+ // Parse the padding packet and verify its timestamp.
+ RtpPacketToSend padding_packet(nullptr);
+ ASSERT_TRUE(padding_packet.Parse(transport_.sent_packets_[0]->data(),
+ transport_.sent_packets_[0]->size()));
+ EXPECT_EQ(kTimestamp, padding_packet.Timestamp());
+}
+
TEST_F(RtpSenderTestWithoutPacer, BuildRTPPacket) {
size_t length = static_cast<size_t>(rtp_sender_->BuildRtpHeader(
packet_, kPayload, kMarkerBit, kTimestamp, 0));
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_sender.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698