OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
11 #include <memory> | 11 #include <memory> |
12 #include <vector> | 12 #include <vector> |
13 | 13 |
14 #include "webrtc/modules/video_coding/include/mock/mock_vcm_callbacks.h" | 14 #include "webrtc/modules/video_coding/include/mock/mock_vcm_callbacks.h" |
15 #include "webrtc/modules/video_coding/include/mock/mock_video_codec_interface.h" | 15 #include "webrtc/modules/video_coding/include/mock/mock_video_codec_interface.h" |
16 #include "webrtc/modules/video_coding/include/video_coding.h" | 16 #include "webrtc/modules/video_coding/include/video_coding.h" |
17 #include "webrtc/modules/video_coding/test/test_util.h" | 17 #include "webrtc/modules/video_coding/test/test_util.h" |
18 #include "webrtc/modules/video_coding/timing.h" | 18 #include "webrtc/modules/video_coding/timing.h" |
19 #include "webrtc/modules/video_coding/video_coding_impl.h" | 19 #include "webrtc/modules/video_coding/video_coding_impl.h" |
20 #include "webrtc/system_wrappers/include/clock.h" | 20 #include "webrtc/system_wrappers/include/clock.h" |
21 #include "webrtc/test/gtest.h" | 21 #include "webrtc/test/gtest.h" |
22 | 22 |
23 using ::testing::_; | 23 using ::testing::_; |
| 24 using ::testing::AnyNumber; |
24 using ::testing::NiceMock; | 25 using ::testing::NiceMock; |
25 | 26 |
26 namespace webrtc { | 27 namespace webrtc { |
27 namespace vcm { | 28 namespace vcm { |
28 namespace { | 29 namespace { |
29 | 30 |
30 class TestVideoReceiver : public ::testing::Test { | 31 class TestVideoReceiver : public ::testing::Test { |
31 protected: | 32 protected: |
32 static const int kUnusedPayloadType = 10; | 33 static const int kUnusedPayloadType = 10; |
33 | 34 |
34 TestVideoReceiver() : clock_(0) {} | 35 TestVideoReceiver() : clock_(0) {} |
35 | 36 |
36 virtual void SetUp() { | 37 virtual void SetUp() { |
37 timing_.reset(new VCMTiming(&clock_)); | 38 timing_.reset(new VCMTiming(&clock_)); |
38 receiver_.reset( | 39 receiver_.reset( |
39 new VideoReceiver(&clock_, &event_factory_, nullptr, timing_.get())); | 40 new VideoReceiver(&clock_, &event_factory_, nullptr, timing_.get())); |
40 receiver_->RegisterExternalDecoder(&decoder_, kUnusedPayloadType); | 41 receiver_->RegisterExternalDecoder(&decoder_, kUnusedPayloadType); |
41 const size_t kMaxNackListSize = 250; | 42 const size_t kMaxNackListSize = 250; |
42 const int kMaxPacketAgeToNack = 450; | 43 const int kMaxPacketAgeToNack = 450; |
43 receiver_->SetNackSettings(kMaxNackListSize, kMaxPacketAgeToNack, 0); | 44 receiver_->SetNackSettings(kMaxNackListSize, kMaxPacketAgeToNack, 0); |
44 | 45 |
45 VideoCodingModule::Codec(kVideoCodecVP8, &settings_); | 46 VideoCodingModule::Codec(kVideoCodecVP8, &settings_); |
46 settings_.plType = kUnusedPayloadType; // Use the mocked encoder. | 47 settings_.plType = kUnusedPayloadType; // Use the mocked encoder. |
47 EXPECT_EQ(0, receiver_->RegisterReceiveCodec(&settings_, 1, true)); | 48 EXPECT_EQ(0, receiver_->RegisterReceiveCodec(&settings_, 1, true)); |
| 49 |
| 50 // Since we call Decode, we need to provide a valid receive callback. |
| 51 // However, for the purposes of these tests, we ignore the callbacks. |
| 52 EXPECT_CALL(receive_callback_, OnIncomingPayloadType(_)).Times(AnyNumber()); |
| 53 EXPECT_CALL(receive_callback_, OnDecoderImplementationName(_)) |
| 54 .Times(AnyNumber()); |
| 55 receiver_->RegisterReceiveCallback(&receive_callback_); |
48 } | 56 } |
49 | 57 |
50 void InsertAndVerifyPaddingFrame(const uint8_t* payload, | 58 void InsertAndVerifyPaddingFrame(const uint8_t* payload, |
51 WebRtcRTPHeader* header) { | 59 WebRtcRTPHeader* header) { |
52 ASSERT_TRUE(header != NULL); | 60 ASSERT_TRUE(header != NULL); |
53 for (int j = 0; j < 5; ++j) { | 61 for (int j = 0; j < 5; ++j) { |
54 // Padding only packets are passed to the VCM with payload size 0. | 62 // Padding only packets are passed to the VCM with payload size 0. |
55 EXPECT_EQ(0, receiver_->IncomingPacket(payload, 0, *header)); | 63 EXPECT_EQ(0, receiver_->IncomingPacket(payload, 0, *header)); |
56 ++header->header.sequenceNumber; | 64 ++header->header.sequenceNumber; |
57 } | 65 } |
(...skipping 14 matching lines...) Expand all Loading... |
72 EXPECT_EQ(0, receiver_->Decode(100)); | 80 EXPECT_EQ(0, receiver_->Decode(100)); |
73 } | 81 } |
74 | 82 |
75 SimulatedClock clock_; | 83 SimulatedClock clock_; |
76 NullEventFactory event_factory_; | 84 NullEventFactory event_factory_; |
77 VideoCodec settings_; | 85 VideoCodec settings_; |
78 NiceMock<MockVideoDecoder> decoder_; | 86 NiceMock<MockVideoDecoder> decoder_; |
79 NiceMock<MockPacketRequestCallback> packet_request_callback_; | 87 NiceMock<MockPacketRequestCallback> packet_request_callback_; |
80 | 88 |
81 std::unique_ptr<VCMTiming> timing_; | 89 std::unique_ptr<VCMTiming> timing_; |
| 90 MockVCMReceiveCallback receive_callback_; |
82 std::unique_ptr<VideoReceiver> receiver_; | 91 std::unique_ptr<VideoReceiver> receiver_; |
83 }; | 92 }; |
84 | 93 |
85 TEST_F(TestVideoReceiver, PaddingOnlyFrames) { | 94 TEST_F(TestVideoReceiver, PaddingOnlyFrames) { |
86 EXPECT_EQ(0, receiver_->SetVideoProtection(kProtectionNack, true)); | 95 EXPECT_EQ(0, receiver_->SetVideoProtection(kProtectionNack, true)); |
87 EXPECT_EQ( | 96 EXPECT_EQ( |
88 0, receiver_->RegisterPacketRequestCallback(&packet_request_callback_)); | 97 0, receiver_->RegisterPacketRequestCallback(&packet_request_callback_)); |
89 const size_t kPaddingSize = 220; | 98 const size_t kPaddingSize = 220; |
90 const uint8_t payload[kPaddingSize] = {0}; | 99 const uint8_t payload[kPaddingSize] = {0}; |
91 WebRtcRTPHeader header; | 100 WebRtcRTPHeader header; |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 TEST_F(TestVideoReceiver, ReceiverDelay) { | 213 TEST_F(TestVideoReceiver, ReceiverDelay) { |
205 EXPECT_EQ(0, receiver_->SetMinReceiverDelay(0)); | 214 EXPECT_EQ(0, receiver_->SetMinReceiverDelay(0)); |
206 EXPECT_EQ(0, receiver_->SetMinReceiverDelay(5000)); | 215 EXPECT_EQ(0, receiver_->SetMinReceiverDelay(5000)); |
207 EXPECT_EQ(-1, receiver_->SetMinReceiverDelay(-100)); | 216 EXPECT_EQ(-1, receiver_->SetMinReceiverDelay(-100)); |
208 EXPECT_EQ(-1, receiver_->SetMinReceiverDelay(10010)); | 217 EXPECT_EQ(-1, receiver_->SetMinReceiverDelay(10010)); |
209 } | 218 } |
210 | 219 |
211 } // namespace | 220 } // namespace |
212 } // namespace vcm | 221 } // namespace vcm |
213 } // namespace webrtc | 222 } // namespace webrtc |
OLD | NEW |