| Index: webrtc/modules/rtp_rtcp/source/ulpfec_receiver_unittest.cc
|
| diff --git a/webrtc/modules/rtp_rtcp/source/ulpfec_receiver_unittest.cc b/webrtc/modules/rtp_rtcp/source/ulpfec_receiver_unittest.cc
|
| index ddca65530f3c9eef79586453e0eeb1ab2c39480d..6f9243429d0e55355c93cbc9de27a56918073ddf 100644
|
| --- a/webrtc/modules/rtp_rtcp/source/ulpfec_receiver_unittest.cc
|
| +++ b/webrtc/modules/rtp_rtcp/source/ulpfec_receiver_unittest.cc
|
| @@ -16,6 +16,7 @@
|
| #include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h"
|
| #include "webrtc/modules/rtp_rtcp/include/ulpfec_receiver.h"
|
| #include "webrtc/modules/rtp_rtcp/mocks/mock_rtp_rtcp.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/fec_test_helper.h"
|
| #include "webrtc/modules/rtp_rtcp/source/forward_error_correction.h"
|
| @@ -36,13 +37,19 @@ using test::fec::UlpfecPacketGenerator;
|
|
|
| constexpr int kFecPayloadType = 96;
|
| constexpr uint32_t kMediaSsrc = 835424;
|
| +
|
| +class NullRecoveredPacketReceiver : public RecoveredPacketReceiver {
|
| + public:
|
| + void OnRecoveredPacket(const uint8_t* packet, size_t length) override {}
|
| +};
|
| +
|
| } // namespace
|
|
|
| class UlpfecReceiverTest : public ::testing::Test {
|
| protected:
|
| UlpfecReceiverTest()
|
| : fec_(ForwardErrorCorrection::CreateUlpfec()),
|
| - receiver_fec_(UlpfecReceiver::Create(&rtp_data_callback_)),
|
| + receiver_fec_(UlpfecReceiver::Create(&recovered_packet_receiver_)),
|
| packet_generator_(kMediaSsrc) {}
|
|
|
| // Generates |num_fec_packets| FEC packets, given |media_packets|.
|
| @@ -64,7 +71,7 @@ class UlpfecReceiverTest : public ::testing::Test {
|
| // to the receiver.
|
| void BuildAndAddRedFecPacket(Packet* packet);
|
|
|
| - // Ensure that |rtp_data_callback_| will be called correctly
|
| + // Ensure that |recovered_packet_receiver_| will be called correctly
|
| // and that the recovered packet will be identical to the lost packet.
|
| void VerifyReconstructedMediaPacket(const AugmentedPacket& packet,
|
| size_t times);
|
| @@ -75,7 +82,7 @@ class UlpfecReceiverTest : public ::testing::Test {
|
| size_t length,
|
| uint8_t ulpfec_payload_type);
|
|
|
| - MockRtpData rtp_data_callback_;
|
| + MockRecoveredPacketReceiver recovered_packet_receiver_;
|
| std::unique_ptr<ForwardErrorCorrection> fec_;
|
| std::unique_ptr<UlpfecReceiver> receiver_fec_;
|
| UlpfecPacketGenerator packet_generator_;
|
| @@ -134,15 +141,13 @@ void UlpfecReceiverTest::VerifyReconstructedMediaPacket(
|
| // Verify that the content of the reconstructed packet is equal to the
|
| // content of |packet|, and that the same content is received |times| number
|
| // of times in a row.
|
| - EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, packet.length))
|
| + EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, packet.length))
|
| .With(Args<0, 1>(ElementsAreArray(packet.data, packet.length)))
|
| - .Times(times)
|
| - .WillRepeatedly(Return(true));
|
| + .Times(times);
|
| }
|
|
|
| void UlpfecReceiverTest::InjectGarbagePacketLength(size_t fec_garbage_offset) {
|
| - EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _))
|
| - .WillRepeatedly(Return(true));
|
| + EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _));
|
|
|
| const size_t kNumFecPackets = 1;
|
| std::list<AugmentedPacket*> augmented_media_packets;
|
| @@ -172,7 +177,7 @@ void UlpfecReceiverTest::SurvivesMaliciousPacket(const uint8_t* data,
|
| std::unique_ptr<RtpHeaderParser> parser(RtpHeaderParser::Create());
|
| ASSERT_TRUE(parser->Parse(data, length, &header));
|
|
|
| - NullRtpData null_callback;
|
| + NullRecoveredPacketReceiver null_callback;
|
| std::unique_ptr<UlpfecReceiver> receiver_fec(
|
| UlpfecReceiver::Create(&null_callback));
|
|
|
| @@ -345,9 +350,8 @@ TEST_F(UlpfecReceiverTest, PacketNotDroppedTooEarly) {
|
| EncodeFec(media_packets_batch1, kNumFecPacketsBatch1, &fec_packets);
|
|
|
| BuildAndAddRedMediaPacket(augmented_media_packets_batch1.front());
|
| - EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _))
|
| - .Times(1)
|
| - .WillRepeatedly(Return(true));
|
| + EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _))
|
| + .Times(1);
|
| EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec());
|
| delayed_fec = fec_packets.front();
|
|
|
| @@ -362,17 +366,15 @@ TEST_F(UlpfecReceiverTest, PacketNotDroppedTooEarly) {
|
| for (auto it = augmented_media_packets_batch2.begin();
|
| it != augmented_media_packets_batch2.end(); ++it) {
|
| BuildAndAddRedMediaPacket(*it);
|
| - EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _))
|
| - .Times(1)
|
| - .WillRepeatedly(Return(true));
|
| + EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _))
|
| + .Times(1);
|
| EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec());
|
| }
|
|
|
| // Add the delayed FEC packet. One packet should be reconstructed.
|
| BuildAndAddRedFecPacket(delayed_fec);
|
| - EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _))
|
| - .Times(1)
|
| - .WillRepeatedly(Return(true));
|
| + EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _))
|
| + .Times(1);
|
| EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec());
|
| }
|
|
|
| @@ -390,9 +392,8 @@ TEST_F(UlpfecReceiverTest, PacketDroppedWhenTooOld) {
|
| EncodeFec(media_packets_batch1, kNumFecPacketsBatch1, &fec_packets);
|
|
|
| BuildAndAddRedMediaPacket(augmented_media_packets_batch1.front());
|
| - EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _))
|
| - .Times(1)
|
| - .WillRepeatedly(Return(true));
|
| + EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _))
|
| + .Times(1);
|
| EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec());
|
| delayed_fec = fec_packets.front();
|
|
|
| @@ -407,16 +408,15 @@ TEST_F(UlpfecReceiverTest, PacketDroppedWhenTooOld) {
|
| for (auto it = augmented_media_packets_batch2.begin();
|
| it != augmented_media_packets_batch2.end(); ++it) {
|
| BuildAndAddRedMediaPacket(*it);
|
| - EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _))
|
| - .Times(1)
|
| - .WillRepeatedly(Return(true));
|
| + EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _))
|
| + .Times(1);
|
| EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec());
|
| }
|
|
|
| // Add the delayed FEC packet. No packet should be reconstructed since the
|
| // first media packet of that frame has been dropped due to being too old.
|
| BuildAndAddRedFecPacket(delayed_fec);
|
| - EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _)).Times(0);
|
| + EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _)).Times(0);
|
| EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec());
|
| }
|
|
|
| @@ -435,7 +435,7 @@ TEST_F(UlpfecReceiverTest, OldFecPacketDropped) {
|
| for (auto it = fec_packets.begin(); it != fec_packets.end(); ++it) {
|
| // Only FEC packets inserted. No packets recoverable at this time.
|
| BuildAndAddRedFecPacket(*it);
|
| - EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _)).Times(0);
|
| + EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _)).Times(0);
|
| EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec());
|
| }
|
| // Move unique_ptr's to media_packets for lifetime management.
|
| @@ -450,9 +450,8 @@ TEST_F(UlpfecReceiverTest, OldFecPacketDropped) {
|
| // and should have been dropped. Only the media packet we inserted will be
|
| // returned.
|
| BuildAndAddRedMediaPacket(augmented_media_packets.front());
|
| - EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _))
|
| - .Times(1)
|
| - .WillRepeatedly(Return(true));
|
| + EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _))
|
| + .Times(1);
|
| EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec());
|
| }
|
|
|
|
|