Index: webrtc/modules/video_coding/main/source/video_receiver_unittest.cc |
diff --git a/webrtc/modules/video_coding/main/source/video_receiver_unittest.cc b/webrtc/modules/video_coding/main/source/video_receiver_unittest.cc |
deleted file mode 100644 |
index 75ea29a1ec4ad20f21110741104faf234f2e50e5..0000000000000000000000000000000000000000 |
--- a/webrtc/modules/video_coding/main/source/video_receiver_unittest.cc |
+++ /dev/null |
@@ -1,211 +0,0 @@ |
-/* |
- * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. |
- * |
- * Use of this source code is governed by a BSD-style license |
- * that can be found in the LICENSE file in the root of the source |
- * tree. An additional intellectual property rights grant can be found |
- * in the file PATENTS. All contributing project authors may |
- * be found in the AUTHORS file in the root of the source tree. |
- */ |
- |
-#include <vector> |
- |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "webrtc/base/scoped_ptr.h" |
-#include "webrtc/modules/video_coding/codecs/interface/mock/mock_video_codec_interface.h" |
-#include "webrtc/modules/video_coding/main/interface/mock/mock_vcm_callbacks.h" |
-#include "webrtc/modules/video_coding/main/interface/video_coding.h" |
-#include "webrtc/modules/video_coding/main/source/video_coding_impl.h" |
-#include "webrtc/modules/video_coding/main/test/test_util.h" |
-#include "webrtc/system_wrappers/include/clock.h" |
- |
-using ::testing::_; |
-using ::testing::NiceMock; |
- |
-namespace webrtc { |
-namespace vcm { |
-namespace { |
- |
-class TestVideoReceiver : public ::testing::Test { |
- protected: |
- static const int kUnusedPayloadType = 10; |
- |
- TestVideoReceiver() : clock_(0) {} |
- |
- virtual void SetUp() { |
- receiver_.reset(new VideoReceiver(&clock_, &event_factory_)); |
- EXPECT_EQ(0, receiver_->RegisterExternalDecoder(&decoder_, |
- kUnusedPayloadType, true)); |
- const size_t kMaxNackListSize = 250; |
- const int kMaxPacketAgeToNack = 450; |
- receiver_->SetNackSettings(kMaxNackListSize, kMaxPacketAgeToNack, 0); |
- |
- memset(&settings_, 0, sizeof(settings_)); |
- EXPECT_EQ(0, VideoCodingModule::Codec(kVideoCodecVP8, &settings_)); |
- settings_.plType = kUnusedPayloadType; // Use the mocked encoder. |
- EXPECT_EQ(0, receiver_->RegisterReceiveCodec(&settings_, 1, true)); |
- } |
- |
- void InsertAndVerifyPaddingFrame(const uint8_t* payload, |
- WebRtcRTPHeader* header) { |
- ASSERT_TRUE(header != NULL); |
- for (int j = 0; j < 5; ++j) { |
- // Padding only packets are passed to the VCM with payload size 0. |
- EXPECT_EQ(0, receiver_->IncomingPacket(payload, 0, *header)); |
- ++header->header.sequenceNumber; |
- } |
- EXPECT_EQ(0, receiver_->Process()); |
- EXPECT_CALL(decoder_, Decode(_, _, _, _, _)).Times(0); |
- EXPECT_EQ(VCM_FRAME_NOT_READY, receiver_->Decode(0)); |
- } |
- |
- void InsertAndVerifyDecodableFrame(const uint8_t* payload, |
- size_t length, |
- WebRtcRTPHeader* header) { |
- ASSERT_TRUE(header != NULL); |
- EXPECT_EQ(0, receiver_->IncomingPacket(payload, length, *header)); |
- ++header->header.sequenceNumber; |
- EXPECT_CALL(packet_request_callback_, ResendPackets(_, _)).Times(0); |
- EXPECT_EQ(0, receiver_->Process()); |
- EXPECT_CALL(decoder_, Decode(_, _, _, _, _)).Times(1); |
- EXPECT_EQ(0, receiver_->Decode(0)); |
- } |
- |
- SimulatedClock clock_; |
- NullEventFactory event_factory_; |
- VideoCodec settings_; |
- NiceMock<MockVideoDecoder> decoder_; |
- NiceMock<MockPacketRequestCallback> packet_request_callback_; |
- |
- rtc::scoped_ptr<VideoReceiver> receiver_; |
-}; |
- |
-TEST_F(TestVideoReceiver, PaddingOnlyFrames) { |
- EXPECT_EQ(0, receiver_->SetVideoProtection(kProtectionNack, true)); |
- EXPECT_EQ( |
- 0, receiver_->RegisterPacketRequestCallback(&packet_request_callback_)); |
- const size_t kPaddingSize = 220; |
- const uint8_t payload[kPaddingSize] = {0}; |
- WebRtcRTPHeader header; |
- memset(&header, 0, sizeof(header)); |
- header.frameType = kEmptyFrame; |
- header.header.markerBit = false; |
- header.header.paddingLength = kPaddingSize; |
- header.header.payloadType = kUnusedPayloadType; |
- header.header.ssrc = 1; |
- header.header.headerLength = 12; |
- header.type.Video.codec = kRtpVideoVp8; |
- for (int i = 0; i < 10; ++i) { |
- EXPECT_CALL(packet_request_callback_, ResendPackets(_, _)).Times(0); |
- InsertAndVerifyPaddingFrame(payload, &header); |
- clock_.AdvanceTimeMilliseconds(33); |
- header.header.timestamp += 3000; |
- } |
-} |
- |
-TEST_F(TestVideoReceiver, PaddingOnlyFramesWithLosses) { |
- EXPECT_EQ(0, receiver_->SetVideoProtection(kProtectionNack, true)); |
- EXPECT_EQ( |
- 0, receiver_->RegisterPacketRequestCallback(&packet_request_callback_)); |
- const size_t kFrameSize = 1200; |
- const size_t kPaddingSize = 220; |
- const uint8_t payload[kFrameSize] = {0}; |
- WebRtcRTPHeader header; |
- memset(&header, 0, sizeof(header)); |
- header.frameType = kEmptyFrame; |
- header.header.markerBit = false; |
- header.header.paddingLength = kPaddingSize; |
- header.header.payloadType = kUnusedPayloadType; |
- header.header.ssrc = 1; |
- header.header.headerLength = 12; |
- header.type.Video.codec = kRtpVideoVp8; |
- // Insert one video frame to get one frame decoded. |
- header.frameType = kVideoFrameKey; |
- header.type.Video.isFirstPacket = true; |
- header.header.markerBit = true; |
- InsertAndVerifyDecodableFrame(payload, kFrameSize, &header); |
- clock_.AdvanceTimeMilliseconds(33); |
- header.header.timestamp += 3000; |
- |
- header.frameType = kEmptyFrame; |
- header.type.Video.isFirstPacket = false; |
- header.header.markerBit = false; |
- // Insert padding frames. |
- for (int i = 0; i < 10; ++i) { |
- // Lose one packet from the 6th frame. |
- if (i == 5) { |
- ++header.header.sequenceNumber; |
- } |
- // Lose the 4th frame. |
- if (i == 3) { |
- header.header.sequenceNumber += 5; |
- } else { |
- if (i > 3 && i < 5) { |
- EXPECT_CALL(packet_request_callback_, ResendPackets(_, 5)).Times(1); |
- } else if (i >= 5) { |
- EXPECT_CALL(packet_request_callback_, ResendPackets(_, 6)).Times(1); |
- } else { |
- EXPECT_CALL(packet_request_callback_, ResendPackets(_, _)).Times(0); |
- } |
- InsertAndVerifyPaddingFrame(payload, &header); |
- } |
- clock_.AdvanceTimeMilliseconds(33); |
- header.header.timestamp += 3000; |
- } |
-} |
- |
-TEST_F(TestVideoReceiver, PaddingOnlyAndVideo) { |
- EXPECT_EQ(0, receiver_->SetVideoProtection(kProtectionNack, true)); |
- EXPECT_EQ( |
- 0, receiver_->RegisterPacketRequestCallback(&packet_request_callback_)); |
- const size_t kFrameSize = 1200; |
- const size_t kPaddingSize = 220; |
- const uint8_t payload[kFrameSize] = {0}; |
- WebRtcRTPHeader header; |
- memset(&header, 0, sizeof(header)); |
- header.frameType = kEmptyFrame; |
- header.type.Video.isFirstPacket = false; |
- header.header.markerBit = false; |
- header.header.paddingLength = kPaddingSize; |
- header.header.payloadType = kUnusedPayloadType; |
- header.header.ssrc = 1; |
- header.header.headerLength = 12; |
- header.type.Video.codec = kRtpVideoVp8; |
- header.type.Video.codecHeader.VP8.pictureId = -1; |
- header.type.Video.codecHeader.VP8.tl0PicIdx = -1; |
- for (int i = 0; i < 3; ++i) { |
- // Insert 2 video frames. |
- for (int j = 0; j < 2; ++j) { |
- if (i == 0 && j == 0) // First frame should be a key frame. |
- header.frameType = kVideoFrameKey; |
- else |
- header.frameType = kVideoFrameDelta; |
- header.type.Video.isFirstPacket = true; |
- header.header.markerBit = true; |
- InsertAndVerifyDecodableFrame(payload, kFrameSize, &header); |
- clock_.AdvanceTimeMilliseconds(33); |
- header.header.timestamp += 3000; |
- } |
- |
- // Insert 2 padding only frames. |
- header.frameType = kEmptyFrame; |
- header.type.Video.isFirstPacket = false; |
- header.header.markerBit = false; |
- for (int j = 0; j < 2; ++j) { |
- // InsertAndVerifyPaddingFrame(payload, &header); |
- clock_.AdvanceTimeMilliseconds(33); |
- header.header.timestamp += 3000; |
- } |
- } |
-} |
- |
-TEST_F(TestVideoReceiver, ReceiverDelay) { |
- EXPECT_EQ(0, receiver_->SetMinReceiverDelay(0)); |
- EXPECT_EQ(0, receiver_->SetMinReceiverDelay(5000)); |
- EXPECT_EQ(-1, receiver_->SetMinReceiverDelay(-100)); |
- EXPECT_EQ(-1, receiver_->SetMinReceiverDelay(10010)); |
-} |
- |
-} // namespace |
-} // namespace vcm |
-} // namespace webrtc |