| Index: webrtc/call/flexfec_receive_stream_unittest.cc
|
| diff --git a/webrtc/call/flexfec_receive_stream_unittest.cc b/webrtc/call/flexfec_receive_stream_unittest.cc
|
| index c25858f02cbf10c9021583401b4f36b9843020f6..24026365d3301fa15393687c04a27f066378e0c4 100644
|
| --- a/webrtc/call/flexfec_receive_stream_unittest.cc
|
| +++ b/webrtc/call/flexfec_receive_stream_unittest.cc
|
| @@ -13,16 +13,32 @@
|
| #include "webrtc/base/array_view.h"
|
| #include "webrtc/call/flexfec_receive_stream_impl.h"
|
| #include "webrtc/modules/rtp_rtcp/include/flexfec_receiver.h"
|
| -#include "webrtc/modules/rtp_rtcp/source/byte_io.h"
|
| -#include "webrtc/modules/rtp_rtcp/source/rtp_packet_received.h"
|
| #include "webrtc/modules/rtp_rtcp/mocks/mock_recovered_packet_receiver.h"
|
| +#include "webrtc/modules/rtp_rtcp/source/byte_io.h"
|
| +#include "webrtc/modules/rtp_rtcp/source/rtp_header_extensions.h"
|
| #include "webrtc/test/gmock.h"
|
| #include "webrtc/test/gtest.h"
|
| +#include "webrtc/test/mock_transport.h"
|
|
|
| namespace webrtc {
|
|
|
| namespace {
|
|
|
| +constexpr uint8_t kFlexfecPlType = 118;
|
| +constexpr uint8_t kFlexfecSsrc[] = {0x00, 0x00, 0x00, 0x01};
|
| +constexpr uint8_t kMediaSsrc[] = {0x00, 0x00, 0x00, 0x02};
|
| +
|
| +FlexfecReceiveStream::Config CreateDefaultConfig(
|
| + Transport* rtcp_send_transport) {
|
| + FlexfecReceiveStream::Config config(rtcp_send_transport);
|
| + config.payload_type = kFlexfecPlType;
|
| + config.remote_ssrc = ByteReader<uint32_t>::ReadBigEndian(kFlexfecSsrc);
|
| + config.protected_media_ssrcs = {
|
| + ByteReader<uint32_t>::ReadBigEndian(kMediaSsrc)};
|
| + EXPECT_TRUE(config.IsCompleteAndEnabled());
|
| + return config;
|
| +}
|
| +
|
| RtpPacketReceived ParsePacket(rtc::ArrayView<const uint8_t> packet) {
|
| RtpPacketReceived parsed_packet(nullptr);
|
| EXPECT_TRUE(parsed_packet.Parse(packet));
|
| @@ -31,40 +47,58 @@ RtpPacketReceived ParsePacket(rtc::ArrayView<const uint8_t> packet) {
|
|
|
| } // namespace
|
|
|
| -TEST(FlexfecReceiveStreamTest, ConstructDestruct) {
|
| - FlexfecReceiveStream::Config config;
|
| - config.payload_type = 118;
|
| - config.remote_ssrc = 424223;
|
| - config.protected_media_ssrcs = {912512};
|
| - MockRecoveredPacketReceiver recovered_packet_receiver;
|
| +TEST(FlexfecReceiveStreamConfigTest, IsCompleteAndEnabled) {
|
| + MockTransport rtcp_send_transport;
|
| + FlexfecReceiveStream::Config config(&rtcp_send_transport);
|
| +
|
| + config.local_ssrc = 18374743;
|
| + config.rtcp_mode = RtcpMode::kCompound;
|
| + config.transport_cc = true;
|
| + config.rtp_header_extensions.emplace_back(TransportSequenceNumber::kUri, 7);
|
| + EXPECT_FALSE(config.IsCompleteAndEnabled());
|
| +
|
| + config.payload_type = 123;
|
| + EXPECT_FALSE(config.IsCompleteAndEnabled());
|
|
|
| - FlexfecReceiveStreamImpl receive_stream(config, &recovered_packet_receiver);
|
| + config.remote_ssrc = 238423838;
|
| + EXPECT_FALSE(config.IsCompleteAndEnabled());
|
| +
|
| + config.protected_media_ssrcs.push_back(138989393);
|
| + EXPECT_TRUE(config.IsCompleteAndEnabled());
|
| +
|
| + config.protected_media_ssrcs.push_back(33423423);
|
| + EXPECT_FALSE(config.IsCompleteAndEnabled());
|
| }
|
|
|
| -TEST(FlexfecReceiveStreamTest, StartStop) {
|
| - FlexfecReceiveStream::Config config;
|
| - config.payload_type = 118;
|
| - config.remote_ssrc = 1652392;
|
| - config.protected_media_ssrcs = {23300443};
|
| - MockRecoveredPacketReceiver recovered_packet_receiver;
|
| - FlexfecReceiveStreamImpl receive_stream(config, &recovered_packet_receiver);
|
| +class FlexfecReceiveStreamTest : public ::testing::Test {
|
| + protected:
|
| + FlexfecReceiveStreamTest()
|
| + : config_(CreateDefaultConfig(&rtcp_send_transport_)),
|
| + receive_stream_(config_, &recovered_packet_receiver_) {}
|
|
|
| - receive_stream.Start();
|
| - receive_stream.Stop();
|
| + FlexfecReceiveStream::Config config_;
|
| + MockRecoveredPacketReceiver recovered_packet_receiver_;
|
| + MockTransport rtcp_send_transport_;
|
| +
|
| + FlexfecReceiveStreamImpl receive_stream_;
|
| +};
|
| +
|
| +TEST_F(FlexfecReceiveStreamTest, ConstructDestruct) {}
|
| +
|
| +TEST_F(FlexfecReceiveStreamTest, StartStop) {
|
| + receive_stream_.Start();
|
| + receive_stream_.Stop();
|
| }
|
|
|
| // Create a FlexFEC packet that protects a single media packet and ensure
|
| // that the callback is called. Correctness of recovery is checked in the
|
| // FlexfecReceiver unit tests.
|
| -TEST(FlexfecReceiveStreamTest, RecoversPacketWhenStarted) {
|
| - constexpr uint8_t kFlexfecPlType = 118;
|
| +TEST_F(FlexfecReceiveStreamTest, RecoversPacketWhenStarted) {
|
| constexpr uint8_t kFlexfecSeqNum[] = {0x00, 0x01};
|
| constexpr uint8_t kFlexfecTs[] = {0x00, 0x11, 0x22, 0x33};
|
| - constexpr uint8_t kFlexfecSsrc[] = {0x00, 0x00, 0x00, 0x01};
|
| constexpr uint8_t kMediaPlType = 107;
|
| constexpr uint8_t kMediaSeqNum[] = {0x00, 0x02};
|
| constexpr uint8_t kMediaTs[] = {0xaa, 0xbb, 0xcc, 0xdd};
|
| - constexpr uint8_t kMediaSsrc[] = {0x00, 0x00, 0x00, 0x02};
|
|
|
| // This packet mask protects a single media packet, i.e., the FlexFEC payload
|
| // is a copy of that media packet. When inserted in the FlexFEC pipeline,
|
| @@ -91,13 +125,8 @@ TEST(FlexfecReceiveStreamTest, RecoversPacketWhenStarted) {
|
| kPayloadBits, kPayloadBits, kPayloadBits, kPayloadBits};
|
| // clang-format on
|
|
|
| - FlexfecReceiveStream::Config config;
|
| - config.payload_type = kFlexfecPlType;
|
| - config.remote_ssrc = ByteReader<uint32_t>::ReadBigEndian(kFlexfecSsrc);
|
| - config.protected_media_ssrcs = {
|
| - ByteReader<uint32_t>::ReadBigEndian(kMediaSsrc)};
|
| testing::StrictMock<MockRecoveredPacketReceiver> recovered_packet_receiver;
|
| - FlexfecReceiveStreamImpl receive_stream(config, &recovered_packet_receiver);
|
| + FlexfecReceiveStreamImpl receive_stream(config_, &recovered_packet_receiver);
|
|
|
| // Do not call back before being started.
|
| receive_stream.AddAndProcessReceivedPacket(ParsePacket(kFlexfecPacket));
|
|
|