Index: webrtc/modules/rtp_rtcp/source/flexfec_sender_unittest.cc |
diff --git a/webrtc/modules/rtp_rtcp/source/flexfec_sender_unittest.cc b/webrtc/modules/rtp_rtcp/source/flexfec_sender_unittest.cc |
index c906750fe3e20e4a80b85a469d6e10699b023110..3da4510fb15fc410674cd5d5c6406d712099b6ef 100644 |
--- a/webrtc/modules/rtp_rtcp/source/flexfec_sender_unittest.cc |
+++ b/webrtc/modules/rtp_rtcp/source/flexfec_sender_unittest.cc |
@@ -16,6 +16,8 @@ |
#include "webrtc/modules/rtp_rtcp/source/fec_test_helper.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_utility.h" |
#include "webrtc/system_wrappers/include/clock.h" |
#include "webrtc/test/gtest.h" |
@@ -23,6 +25,7 @@ namespace webrtc { |
namespace { |
+using RtpUtility::Word32Align; |
using test::fec::AugmentedPacket; |
using test::fec::AugmentedPacketGenerator; |
@@ -30,6 +33,7 @@ constexpr int kFlexfecPayloadType = 123; |
constexpr uint32_t kMediaSsrc = 1234; |
constexpr uint32_t kFlexfecSsrc = 5678; |
const std::vector<RtpExtension> kNoRtpHeaderExtensions; |
+const std::vector<RtpExtensionSize> kNoRtpHeaderExtensionSizes; |
// Assume a single protected media SSRC. |
constexpr size_t kFlexfecMaxHeaderSize = 32; |
constexpr size_t kPayloadLength = 50; |
@@ -73,7 +77,8 @@ std::unique_ptr<RtpPacketToSend> GenerateSingleFlexfecPacket( |
TEST(FlexfecSenderTest, Ssrc) { |
SimulatedClock clock(kInitialSimulatedClockTime); |
FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, |
- kNoRtpHeaderExtensions, &clock); |
+ kNoRtpHeaderExtensions, kNoRtpHeaderExtensionSizes, |
+ &clock); |
EXPECT_EQ(kFlexfecSsrc, sender.ssrc()); |
} |
@@ -81,7 +86,8 @@ TEST(FlexfecSenderTest, Ssrc) { |
TEST(FlexfecSenderTest, NoFecAvailableBeforeMediaAdded) { |
SimulatedClock clock(kInitialSimulatedClockTime); |
FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, |
- kNoRtpHeaderExtensions, &clock); |
+ kNoRtpHeaderExtensions, kNoRtpHeaderExtensionSizes, |
+ &clock); |
EXPECT_FALSE(sender.FecAvailable()); |
auto fec_packets = sender.GetFecPackets(); |
@@ -91,7 +97,8 @@ TEST(FlexfecSenderTest, NoFecAvailableBeforeMediaAdded) { |
TEST(FlexfecSenderTest, ProtectOneFrameWithOneFecPacket) { |
SimulatedClock clock(kInitialSimulatedClockTime); |
FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, |
- kNoRtpHeaderExtensions, &clock); |
+ kNoRtpHeaderExtensions, kNoRtpHeaderExtensionSizes, |
+ &clock); |
auto fec_packet = GenerateSingleFlexfecPacket(&sender); |
EXPECT_EQ(kRtpHeaderSize, fec_packet->headers_size()); |
@@ -113,7 +120,8 @@ TEST(FlexfecSenderTest, ProtectTwoFramesWithOneFecPacket) { |
constexpr size_t kNumPacketsPerFrame = 2; |
SimulatedClock clock(kInitialSimulatedClockTime); |
FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, |
- kNoRtpHeaderExtensions, &clock); |
+ kNoRtpHeaderExtensions, kNoRtpHeaderExtensionSizes, |
+ &clock); |
sender.SetFecParameters(params); |
AugmentedPacketGenerator packet_generator(kMediaSsrc); |
@@ -152,7 +160,8 @@ TEST(FlexfecSenderTest, ProtectTwoFramesWithTwoFecPackets) { |
constexpr size_t kNumPacketsPerFrame = 2; |
SimulatedClock clock(kInitialSimulatedClockTime); |
FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, |
- kNoRtpHeaderExtensions, &clock); |
+ kNoRtpHeaderExtensions, kNoRtpHeaderExtensionSizes, |
+ &clock); |
sender.SetFecParameters(params); |
AugmentedPacketGenerator packet_generator(kMediaSsrc); |
@@ -187,7 +196,8 @@ TEST(FlexfecSenderTest, NoRtpHeaderExtensionsForBweByDefault) { |
const std::vector<RtpExtension> kRtpHeaderExtensions{}; |
SimulatedClock clock(kInitialSimulatedClockTime); |
FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, |
- kRtpHeaderExtensions, &clock); |
+ kRtpHeaderExtensions, kNoRtpHeaderExtensionSizes, |
+ &clock); |
auto fec_packet = GenerateSingleFlexfecPacket(&sender); |
EXPECT_FALSE(fec_packet->HasExtension<AbsoluteSendTime>()); |
@@ -200,7 +210,8 @@ TEST(FlexfecSenderTest, RegisterAbsoluteSendTimeRtpHeaderExtension) { |
{RtpExtension::kAbsSendTimeUri, 1}}; |
SimulatedClock clock(kInitialSimulatedClockTime); |
FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, |
- kRtpHeaderExtensions, &clock); |
+ kRtpHeaderExtensions, kNoRtpHeaderExtensionSizes, |
+ &clock); |
auto fec_packet = GenerateSingleFlexfecPacket(&sender); |
EXPECT_TRUE(fec_packet->HasExtension<AbsoluteSendTime>()); |
@@ -213,7 +224,8 @@ TEST(FlexfecSenderTest, RegisterTransmissionOffsetRtpHeaderExtension) { |
{RtpExtension::kTimestampOffsetUri, 1}}; |
SimulatedClock clock(kInitialSimulatedClockTime); |
FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, |
- kRtpHeaderExtensions, &clock); |
+ kRtpHeaderExtensions, kNoRtpHeaderExtensionSizes, |
+ &clock); |
auto fec_packet = GenerateSingleFlexfecPacket(&sender); |
EXPECT_FALSE(fec_packet->HasExtension<AbsoluteSendTime>()); |
@@ -226,7 +238,8 @@ TEST(FlexfecSenderTest, RegisterTransportSequenceNumberRtpHeaderExtension) { |
{RtpExtension::kTransportSequenceNumberUri, 1}}; |
SimulatedClock clock(kInitialSimulatedClockTime); |
FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, |
- kRtpHeaderExtensions, &clock); |
+ kRtpHeaderExtensions, kNoRtpHeaderExtensionSizes, |
+ &clock); |
auto fec_packet = GenerateSingleFlexfecPacket(&sender); |
EXPECT_FALSE(fec_packet->HasExtension<AbsoluteSendTime>()); |
@@ -241,7 +254,8 @@ TEST(FlexfecSenderTest, RegisterAllRtpHeaderExtensionsForBwe) { |
{RtpExtension::kTransportSequenceNumberUri, 3}}; |
SimulatedClock clock(kInitialSimulatedClockTime); |
FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, |
- kRtpHeaderExtensions, &clock); |
+ kRtpHeaderExtensions, kNoRtpHeaderExtensionSizes, |
+ &clock); |
auto fec_packet = GenerateSingleFlexfecPacket(&sender); |
EXPECT_TRUE(fec_packet->HasExtension<AbsoluteSendTime>()); |
@@ -252,9 +266,31 @@ TEST(FlexfecSenderTest, RegisterAllRtpHeaderExtensionsForBwe) { |
TEST(FlexfecSenderTest, MaxPacketOverhead) { |
SimulatedClock clock(kInitialSimulatedClockTime); |
FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, |
- kNoRtpHeaderExtensions, &clock); |
+ kNoRtpHeaderExtensions, kNoRtpHeaderExtensionSizes, |
+ &clock); |
EXPECT_EQ(kFlexfecMaxHeaderSize, sender.MaxPacketOverhead()); |
} |
+TEST(FlexfecSenderTest, MaxPacketOverheadWithExtensions) { |
+ const std::vector<RtpExtension> kRtpHeaderExtensions{ |
+ {RtpExtension::kAbsSendTimeUri, 1}, |
+ {RtpExtension::kTimestampOffsetUri, 2}, |
+ {RtpExtension::kTransportSequenceNumberUri, 3}}; |
+ SimulatedClock clock(kInitialSimulatedClockTime); |
+ const size_t kExtensionHeaderLength = 1; |
+ const size_t kRtpOneByteHeaderLength = 4; |
+ const size_t kExtensionsTotalSize = |
+ Word32Align(AbsoluteSendTime::kValueSizeBytes + |
+ TransmissionOffset::kValueSizeBytes + |
+ TransportSequenceNumber::kValueSizeBytes + |
+ kRtpOneByteHeaderLength + 3*kExtensionHeaderLength); |
danilchap
2017/05/10 18:15:10
git cl format
to add spaces round *
brandtr
2017/05/10 19:23:06
Maybe put these constants in the order that they w
erikvarga1
2017/05/11 08:40:13
Done.
|
+ FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, |
+ kRtpHeaderExtensions, RTPSender::FecExtensionSizes(), |
+ &clock); |
+ |
+ EXPECT_EQ(kExtensionsTotalSize + kFlexfecMaxHeaderSize, |
+ sender.MaxPacketOverhead()); |
+} |
+ |
} // namespace webrtc |