Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(679)

Side by Side Diff: webrtc/video/rtp_video_stream_receiver_unittest.cc

Issue 2926253002: Rename class RtpStreamReceiver --> RtpVideoStreamReceiver. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/video/rtp_video_stream_receiver.cc ('k') | webrtc/video/video_receive_stream.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2017 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2017 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 "webrtc/test/gtest.h" 11 #include "webrtc/test/gtest.h"
12 #include "webrtc/test/gmock.h" 12 #include "webrtc/test/gmock.h"
13 13
14 #include "webrtc/base/bytebuffer.h" 14 #include "webrtc/base/bytebuffer.h"
15 #include "webrtc/base/logging.h" 15 #include "webrtc/base/logging.h"
16 #include "webrtc/common_video/h264/h264_common.h" 16 #include "webrtc/common_video/h264/h264_common.h"
17 #include "webrtc/media/base/mediaconstants.h" 17 #include "webrtc/media/base/mediaconstants.h"
18 #include "webrtc/modules/pacing/packet_router.h" 18 #include "webrtc/modules/pacing/packet_router.h"
19 #include "webrtc/modules/video_coding/include/video_coding_defines.h" 19 #include "webrtc/modules/video_coding/include/video_coding_defines.h"
20 #include "webrtc/modules/video_coding/frame_object.h" 20 #include "webrtc/modules/video_coding/frame_object.h"
21 #include "webrtc/modules/video_coding/packet.h" 21 #include "webrtc/modules/video_coding/packet.h"
22 #include "webrtc/modules/video_coding/rtp_frame_reference_finder.h" 22 #include "webrtc/modules/video_coding/rtp_frame_reference_finder.h"
23 #include "webrtc/modules/video_coding/timing.h" 23 #include "webrtc/modules/video_coding/timing.h"
24 #include "webrtc/modules/utility/include/process_thread.h" 24 #include "webrtc/modules/utility/include/process_thread.h"
25 #include "webrtc/system_wrappers/include/clock.h" 25 #include "webrtc/system_wrappers/include/clock.h"
26 #include "webrtc/system_wrappers/include/field_trial_default.h" 26 #include "webrtc/system_wrappers/include/field_trial_default.h"
27 #include "webrtc/test/field_trial.h" 27 #include "webrtc/test/field_trial.h"
28 #include "webrtc/video/rtp_stream_receiver.h" 28 #include "webrtc/video/rtp_video_stream_receiver.h"
29 29
30 using testing::_; 30 using testing::_;
31 31
32 namespace webrtc { 32 namespace webrtc {
33 33
34 namespace { 34 namespace {
35 35
36 const char kNewJitterBufferFieldTrialEnabled[] = 36 const char kNewJitterBufferFieldTrialEnabled[] =
37 "WebRTC-NewVideoJitterBuffer/Enabled/"; 37 "WebRTC-NewVideoJitterBuffer/Enabled/";
38 const uint8_t kH264StartCode[] = {0x00, 0x00, 0x00, 0x01}; 38 const uint8_t kH264StartCode[] = {0x00, 0x00, 0x00, 0x01};
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 } 88 }
89 void AppendExpectedBitstream(const uint8_t data[], size_t size_in_bytes) { 89 void AppendExpectedBitstream(const uint8_t data[], size_t size_in_bytes) {
90 // TODO(Johan): Let rtc::ByteBuffer handle uint8_t* instead of char*. 90 // TODO(Johan): Let rtc::ByteBuffer handle uint8_t* instead of char*.
91 buffer_.WriteBytes(reinterpret_cast<const char*>(data), size_in_bytes); 91 buffer_.WriteBytes(reinterpret_cast<const char*>(data), size_in_bytes);
92 } 92 }
93 rtc::ByteBufferWriter buffer_; 93 rtc::ByteBufferWriter buffer_;
94 }; 94 };
95 95
96 } // namespace 96 } // namespace
97 97
98 class RtpStreamReceiverTest : public testing::Test { 98 class RtpVideoStreamReceiverTest : public testing::Test {
99 public: 99 public:
100 RtpStreamReceiverTest() 100 RtpVideoStreamReceiverTest()
101 : config_(CreateConfig()), 101 : config_(CreateConfig()),
102 timing_(Clock::GetRealTimeClock()), 102 timing_(Clock::GetRealTimeClock()),
103 process_thread_(ProcessThread::Create("TestThread")) {} 103 process_thread_(ProcessThread::Create("TestThread")) {}
104 104
105 void SetUp() { 105 void SetUp() {
106 rtp_stream_receiver_.reset(new RtpStreamReceiver( 106 rtp_video_stream_receiver_.reset(new RtpVideoStreamReceiver(
107 &mock_transport_, nullptr, &packet_router_, &config_, 107 &mock_transport_, nullptr, &packet_router_, &config_,
108 nullptr, process_thread_.get(), &mock_nack_sender_, 108 nullptr, process_thread_.get(), &mock_nack_sender_,
109 &mock_key_frame_request_sender_, &mock_on_complete_frame_callback_, 109 &mock_key_frame_request_sender_, &mock_on_complete_frame_callback_,
110 &timing_)); 110 &timing_));
111 } 111 }
112 112
113 WebRtcRTPHeader GetDefaultPacket() { 113 WebRtcRTPHeader GetDefaultPacket() {
114 WebRtcRTPHeader packet; 114 WebRtcRTPHeader packet;
115 memset(&packet, 0, sizeof(packet)); 115 memset(&packet, 0, sizeof(packet));
116 packet.type.Video.codec = kRtpVideoH264; 116 packet.type.Video.codec = kRtpVideoH264;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 webrtc::test::ScopedFieldTrials override_field_trials_{ 168 webrtc::test::ScopedFieldTrials override_field_trials_{
169 kNewJitterBufferFieldTrialEnabled}; 169 kNewJitterBufferFieldTrialEnabled};
170 VideoReceiveStream::Config config_; 170 VideoReceiveStream::Config config_;
171 MockNackSender mock_nack_sender_; 171 MockNackSender mock_nack_sender_;
172 MockKeyFrameRequestSender mock_key_frame_request_sender_; 172 MockKeyFrameRequestSender mock_key_frame_request_sender_;
173 MockTransport mock_transport_; 173 MockTransport mock_transport_;
174 MockOnCompleteFrameCallback mock_on_complete_frame_callback_; 174 MockOnCompleteFrameCallback mock_on_complete_frame_callback_;
175 PacketRouter packet_router_; 175 PacketRouter packet_router_;
176 VCMTiming timing_; 176 VCMTiming timing_;
177 std::unique_ptr<ProcessThread> process_thread_; 177 std::unique_ptr<ProcessThread> process_thread_;
178 std::unique_ptr<RtpStreamReceiver> rtp_stream_receiver_; 178 std::unique_ptr<RtpVideoStreamReceiver> rtp_video_stream_receiver_;
179 }; 179 };
180 180
181 TEST_F(RtpStreamReceiverTest, GenericKeyFrame) { 181 TEST_F(RtpVideoStreamReceiverTest, GenericKeyFrame) {
182 WebRtcRTPHeader rtp_header; 182 WebRtcRTPHeader rtp_header;
183 const std::vector<uint8_t> data({1, 2, 3, 4}); 183 const std::vector<uint8_t> data({1, 2, 3, 4});
184 memset(&rtp_header, 0, sizeof(rtp_header)); 184 memset(&rtp_header, 0, sizeof(rtp_header));
185 rtp_header.header.sequenceNumber = 1; 185 rtp_header.header.sequenceNumber = 1;
186 rtp_header.header.markerBit = 1; 186 rtp_header.header.markerBit = 1;
187 rtp_header.type.Video.is_first_packet_in_frame = true; 187 rtp_header.type.Video.is_first_packet_in_frame = true;
188 rtp_header.frameType = kVideoFrameKey; 188 rtp_header.frameType = kVideoFrameKey;
189 rtp_header.type.Video.codec = kRtpVideoGeneric; 189 rtp_header.type.Video.codec = kRtpVideoGeneric;
190 mock_on_complete_frame_callback_.AppendExpectedBitstream(data.data(), 190 mock_on_complete_frame_callback_.AppendExpectedBitstream(data.data(),
191 data.size()); 191 data.size());
192 EXPECT_CALL(mock_on_complete_frame_callback_, DoOnCompleteFrame(_)); 192 EXPECT_CALL(mock_on_complete_frame_callback_, DoOnCompleteFrame(_));
193 rtp_stream_receiver_->OnReceivedPayloadData(data.data(), data.size(), 193 rtp_video_stream_receiver_->OnReceivedPayloadData(data.data(), data.size(),
194 &rtp_header); 194 &rtp_header);
195 } 195 }
196 196
197 TEST_F(RtpStreamReceiverTest, GenericKeyFrameBitstreamError) { 197 TEST_F(RtpVideoStreamReceiverTest, GenericKeyFrameBitstreamError) {
198 WebRtcRTPHeader rtp_header; 198 WebRtcRTPHeader rtp_header;
199 const std::vector<uint8_t> data({1, 2, 3, 4}); 199 const std::vector<uint8_t> data({1, 2, 3, 4});
200 memset(&rtp_header, 0, sizeof(rtp_header)); 200 memset(&rtp_header, 0, sizeof(rtp_header));
201 rtp_header.header.sequenceNumber = 1; 201 rtp_header.header.sequenceNumber = 1;
202 rtp_header.header.markerBit = 1; 202 rtp_header.header.markerBit = 1;
203 rtp_header.type.Video.is_first_packet_in_frame = true; 203 rtp_header.type.Video.is_first_packet_in_frame = true;
204 rtp_header.frameType = kVideoFrameKey; 204 rtp_header.frameType = kVideoFrameKey;
205 rtp_header.type.Video.codec = kRtpVideoGeneric; 205 rtp_header.type.Video.codec = kRtpVideoGeneric;
206 constexpr uint8_t expected_bitsteam[] = {1, 2, 3, 0xff}; 206 constexpr uint8_t expected_bitsteam[] = {1, 2, 3, 0xff};
207 mock_on_complete_frame_callback_.AppendExpectedBitstream( 207 mock_on_complete_frame_callback_.AppendExpectedBitstream(
208 expected_bitsteam, sizeof(expected_bitsteam)); 208 expected_bitsteam, sizeof(expected_bitsteam));
209 EXPECT_CALL(mock_on_complete_frame_callback_, 209 EXPECT_CALL(mock_on_complete_frame_callback_,
210 DoOnCompleteFrameFailBitstream(_)); 210 DoOnCompleteFrameFailBitstream(_));
211 rtp_stream_receiver_->OnReceivedPayloadData(data.data(), data.size(), 211 rtp_video_stream_receiver_->OnReceivedPayloadData(data.data(), data.size(),
212 &rtp_header); 212 &rtp_header);
213 } 213 }
214 214
215 TEST_F(RtpStreamReceiverTest, InBandSpsPps) { 215 TEST_F(RtpVideoStreamReceiverTest, InBandSpsPps) {
216 std::vector<uint8_t> sps_data; 216 std::vector<uint8_t> sps_data;
217 WebRtcRTPHeader sps_packet = GetDefaultPacket(); 217 WebRtcRTPHeader sps_packet = GetDefaultPacket();
218 AddSps(&sps_packet, 0, &sps_data); 218 AddSps(&sps_packet, 0, &sps_data);
219 sps_packet.header.sequenceNumber = 0; 219 sps_packet.header.sequenceNumber = 0;
220 mock_on_complete_frame_callback_.AppendExpectedBitstream( 220 mock_on_complete_frame_callback_.AppendExpectedBitstream(
221 kH264StartCode, sizeof(kH264StartCode)); 221 kH264StartCode, sizeof(kH264StartCode));
222 mock_on_complete_frame_callback_.AppendExpectedBitstream(sps_data.data(), 222 mock_on_complete_frame_callback_.AppendExpectedBitstream(sps_data.data(),
223 sps_data.size()); 223 sps_data.size());
224 rtp_stream_receiver_->OnReceivedPayloadData(sps_data.data(), sps_data.size(), 224 rtp_video_stream_receiver_->OnReceivedPayloadData(
225 &sps_packet); 225 sps_data.data(), sps_data.size(), &sps_packet);
226 226
227 std::vector<uint8_t> pps_data; 227 std::vector<uint8_t> pps_data;
228 WebRtcRTPHeader pps_packet = GetDefaultPacket(); 228 WebRtcRTPHeader pps_packet = GetDefaultPacket();
229 AddPps(&pps_packet, 0, 1, &pps_data); 229 AddPps(&pps_packet, 0, 1, &pps_data);
230 pps_packet.header.sequenceNumber = 1; 230 pps_packet.header.sequenceNumber = 1;
231 mock_on_complete_frame_callback_.AppendExpectedBitstream( 231 mock_on_complete_frame_callback_.AppendExpectedBitstream(
232 kH264StartCode, sizeof(kH264StartCode)); 232 kH264StartCode, sizeof(kH264StartCode));
233 mock_on_complete_frame_callback_.AppendExpectedBitstream(pps_data.data(), 233 mock_on_complete_frame_callback_.AppendExpectedBitstream(pps_data.data(),
234 pps_data.size()); 234 pps_data.size());
235 rtp_stream_receiver_->OnReceivedPayloadData(pps_data.data(), pps_data.size(), 235 rtp_video_stream_receiver_->OnReceivedPayloadData(
236 &pps_packet); 236 pps_data.data(), pps_data.size(), &pps_packet);
237 237
238 std::vector<uint8_t> idr_data; 238 std::vector<uint8_t> idr_data;
239 WebRtcRTPHeader idr_packet = GetDefaultPacket(); 239 WebRtcRTPHeader idr_packet = GetDefaultPacket();
240 AddIdr(&idr_packet, 1); 240 AddIdr(&idr_packet, 1);
241 idr_packet.type.Video.is_first_packet_in_frame = true; 241 idr_packet.type.Video.is_first_packet_in_frame = true;
242 idr_packet.header.sequenceNumber = 2; 242 idr_packet.header.sequenceNumber = 2;
243 idr_packet.header.markerBit = 1; 243 idr_packet.header.markerBit = 1;
244 idr_packet.type.Video.is_first_packet_in_frame = true; 244 idr_packet.type.Video.is_first_packet_in_frame = true;
245 idr_packet.frameType = kVideoFrameKey; 245 idr_packet.frameType = kVideoFrameKey;
246 idr_packet.type.Video.codec = kRtpVideoH264; 246 idr_packet.type.Video.codec = kRtpVideoH264;
247 idr_data.insert(idr_data.end(), {0x65, 1, 2, 3}); 247 idr_data.insert(idr_data.end(), {0x65, 1, 2, 3});
248 mock_on_complete_frame_callback_.AppendExpectedBitstream( 248 mock_on_complete_frame_callback_.AppendExpectedBitstream(
249 kH264StartCode, sizeof(kH264StartCode)); 249 kH264StartCode, sizeof(kH264StartCode));
250 mock_on_complete_frame_callback_.AppendExpectedBitstream(idr_data.data(), 250 mock_on_complete_frame_callback_.AppendExpectedBitstream(idr_data.data(),
251 idr_data.size()); 251 idr_data.size());
252 EXPECT_CALL(mock_on_complete_frame_callback_, DoOnCompleteFrame(_)); 252 EXPECT_CALL(mock_on_complete_frame_callback_, DoOnCompleteFrame(_));
253 rtp_stream_receiver_->OnReceivedPayloadData(idr_data.data(), idr_data.size(), 253 rtp_video_stream_receiver_->OnReceivedPayloadData(
254 &idr_packet); 254 idr_data.data(), idr_data.size(), &idr_packet);
255 } 255 }
256 256
257 TEST_F(RtpStreamReceiverTest, OutOfBandFmtpSpsPps) { 257 TEST_F(RtpVideoStreamReceiverTest, OutOfBandFmtpSpsPps) {
258 constexpr int kPayloadType = 99; 258 constexpr int kPayloadType = 99;
259 VideoCodec codec; 259 VideoCodec codec;
260 codec.plType = kPayloadType; 260 codec.plType = kPayloadType;
261 std::map<std::string, std::string> codec_params; 261 std::map<std::string, std::string> codec_params;
262 // Example parameter sets from https://tools.ietf.org/html/rfc3984#section-8.2 262 // Example parameter sets from https://tools.ietf.org/html/rfc3984#section-8.2
263 // . 263 // .
264 codec_params.insert( 264 codec_params.insert(
265 {cricket::kH264FmtpSpropParameterSets, "Z0IACpZTBYmI,aMljiA=="}); 265 {cricket::kH264FmtpSpropParameterSets, "Z0IACpZTBYmI,aMljiA=="});
266 rtp_stream_receiver_->AddReceiveCodec(codec, codec_params); 266 rtp_video_stream_receiver_->AddReceiveCodec(codec, codec_params);
267 const uint8_t binary_sps[] = {0x67, 0x42, 0x00, 0x0a, 0x96, 267 const uint8_t binary_sps[] = {0x67, 0x42, 0x00, 0x0a, 0x96,
268 0x53, 0x05, 0x89, 0x88}; 268 0x53, 0x05, 0x89, 0x88};
269 mock_on_complete_frame_callback_.AppendExpectedBitstream( 269 mock_on_complete_frame_callback_.AppendExpectedBitstream(
270 kH264StartCode, sizeof(kH264StartCode)); 270 kH264StartCode, sizeof(kH264StartCode));
271 mock_on_complete_frame_callback_.AppendExpectedBitstream(binary_sps, 271 mock_on_complete_frame_callback_.AppendExpectedBitstream(binary_sps,
272 sizeof(binary_sps)); 272 sizeof(binary_sps));
273 const uint8_t binary_pps[] = {0x68, 0xc9, 0x63, 0x88}; 273 const uint8_t binary_pps[] = {0x68, 0xc9, 0x63, 0x88};
274 mock_on_complete_frame_callback_.AppendExpectedBitstream( 274 mock_on_complete_frame_callback_.AppendExpectedBitstream(
275 kH264StartCode, sizeof(kH264StartCode)); 275 kH264StartCode, sizeof(kH264StartCode));
276 mock_on_complete_frame_callback_.AppendExpectedBitstream(binary_pps, 276 mock_on_complete_frame_callback_.AppendExpectedBitstream(binary_pps,
277 sizeof(binary_pps)); 277 sizeof(binary_pps));
278 278
279 std::vector<uint8_t> data; 279 std::vector<uint8_t> data;
280 WebRtcRTPHeader idr_packet = GetDefaultPacket(); 280 WebRtcRTPHeader idr_packet = GetDefaultPacket();
281 AddIdr(&idr_packet, 0); 281 AddIdr(&idr_packet, 0);
282 idr_packet.header.payloadType = kPayloadType; 282 idr_packet.header.payloadType = kPayloadType;
283 idr_packet.type.Video.is_first_packet_in_frame = true; 283 idr_packet.type.Video.is_first_packet_in_frame = true;
284 idr_packet.header.sequenceNumber = 2; 284 idr_packet.header.sequenceNumber = 2;
285 idr_packet.header.markerBit = 1; 285 idr_packet.header.markerBit = 1;
286 idr_packet.type.Video.is_first_packet_in_frame = true; 286 idr_packet.type.Video.is_first_packet_in_frame = true;
287 idr_packet.frameType = kVideoFrameKey; 287 idr_packet.frameType = kVideoFrameKey;
288 idr_packet.type.Video.codec = kRtpVideoH264; 288 idr_packet.type.Video.codec = kRtpVideoH264;
289 data.insert(data.end(), {1, 2, 3}); 289 data.insert(data.end(), {1, 2, 3});
290 mock_on_complete_frame_callback_.AppendExpectedBitstream( 290 mock_on_complete_frame_callback_.AppendExpectedBitstream(
291 kH264StartCode, sizeof(kH264StartCode)); 291 kH264StartCode, sizeof(kH264StartCode));
292 mock_on_complete_frame_callback_.AppendExpectedBitstream(data.data(), 292 mock_on_complete_frame_callback_.AppendExpectedBitstream(data.data(),
293 data.size()); 293 data.size());
294 EXPECT_CALL(mock_on_complete_frame_callback_, DoOnCompleteFrame(_)); 294 EXPECT_CALL(mock_on_complete_frame_callback_, DoOnCompleteFrame(_));
295 rtp_stream_receiver_->OnReceivedPayloadData(data.data(), data.size(), 295 rtp_video_stream_receiver_->OnReceivedPayloadData(data.data(), data.size(),
296 &idr_packet); 296 &idr_packet);
297 } 297 }
298 298
299 TEST_F(RtpStreamReceiverTest, PaddingInMediaStream) { 299 TEST_F(RtpVideoStreamReceiverTest, PaddingInMediaStream) {
300 WebRtcRTPHeader header = GetDefaultPacket(); 300 WebRtcRTPHeader header = GetDefaultPacket();
301 std::vector<uint8_t> data; 301 std::vector<uint8_t> data;
302 data.insert(data.end(), {1, 2, 3}); 302 data.insert(data.end(), {1, 2, 3});
303 header.header.payloadType = 99; 303 header.header.payloadType = 99;
304 header.type.Video.is_first_packet_in_frame = true; 304 header.type.Video.is_first_packet_in_frame = true;
305 header.header.sequenceNumber = 2; 305 header.header.sequenceNumber = 2;
306 header.header.markerBit = true; 306 header.header.markerBit = true;
307 header.frameType = kVideoFrameKey; 307 header.frameType = kVideoFrameKey;
308 header.type.Video.codec = kRtpVideoGeneric; 308 header.type.Video.codec = kRtpVideoGeneric;
309 mock_on_complete_frame_callback_.AppendExpectedBitstream(data.data(), 309 mock_on_complete_frame_callback_.AppendExpectedBitstream(data.data(),
310 data.size()); 310 data.size());
311 311
312 EXPECT_CALL(mock_on_complete_frame_callback_, DoOnCompleteFrame(_)); 312 EXPECT_CALL(mock_on_complete_frame_callback_, DoOnCompleteFrame(_));
313 rtp_stream_receiver_->OnReceivedPayloadData(data.data(), data.size(), 313 rtp_video_stream_receiver_->OnReceivedPayloadData(data.data(), data.size(),
314 &header); 314 &header);
315 315
316 header.header.sequenceNumber = 3; 316 header.header.sequenceNumber = 3;
317 rtp_stream_receiver_->OnReceivedPayloadData(nullptr, 0, &header); 317 rtp_video_stream_receiver_->OnReceivedPayloadData(nullptr, 0, &header);
318 318
319 header.frameType = kVideoFrameDelta; 319 header.frameType = kVideoFrameDelta;
320 header.header.sequenceNumber = 4; 320 header.header.sequenceNumber = 4;
321 EXPECT_CALL(mock_on_complete_frame_callback_, DoOnCompleteFrame(_)); 321 EXPECT_CALL(mock_on_complete_frame_callback_, DoOnCompleteFrame(_));
322 rtp_stream_receiver_->OnReceivedPayloadData(data.data(), data.size(), 322 rtp_video_stream_receiver_->OnReceivedPayloadData(data.data(), data.size(),
323 &header); 323 &header);
324 324
325 header.header.sequenceNumber = 6; 325 header.header.sequenceNumber = 6;
326 rtp_stream_receiver_->OnReceivedPayloadData(data.data(), data.size(), 326 rtp_video_stream_receiver_->OnReceivedPayloadData(data.data(), data.size(),
327 &header); 327 &header);
328 328
329 EXPECT_CALL(mock_on_complete_frame_callback_, DoOnCompleteFrame(_)); 329 EXPECT_CALL(mock_on_complete_frame_callback_, DoOnCompleteFrame(_));
330 header.header.sequenceNumber = 5; 330 header.header.sequenceNumber = 5;
331 rtp_stream_receiver_->OnReceivedPayloadData(nullptr, 0, &header); 331 rtp_video_stream_receiver_->OnReceivedPayloadData(nullptr, 0, &header);
332 } 332 }
333 333
334 TEST_F(RtpStreamReceiverTest, RequestKeyframeIfFirstFrameIsDelta) { 334 TEST_F(RtpVideoStreamReceiverTest, RequestKeyframeIfFirstFrameIsDelta) {
335 WebRtcRTPHeader rtp_header; 335 WebRtcRTPHeader rtp_header;
336 const std::vector<uint8_t> data({1, 2, 3, 4}); 336 const std::vector<uint8_t> data({1, 2, 3, 4});
337 memset(&rtp_header, 0, sizeof(rtp_header)); 337 memset(&rtp_header, 0, sizeof(rtp_header));
338 rtp_header.header.sequenceNumber = 1; 338 rtp_header.header.sequenceNumber = 1;
339 rtp_header.header.markerBit = 1; 339 rtp_header.header.markerBit = 1;
340 rtp_header.type.Video.is_first_packet_in_frame = true; 340 rtp_header.type.Video.is_first_packet_in_frame = true;
341 rtp_header.frameType = kVideoFrameDelta; 341 rtp_header.frameType = kVideoFrameDelta;
342 rtp_header.type.Video.codec = kRtpVideoGeneric; 342 rtp_header.type.Video.codec = kRtpVideoGeneric;
343 343
344 EXPECT_CALL(mock_key_frame_request_sender_, RequestKeyFrame()); 344 EXPECT_CALL(mock_key_frame_request_sender_, RequestKeyFrame());
345 rtp_stream_receiver_->OnReceivedPayloadData(data.data(), data.size(), 345 rtp_video_stream_receiver_->OnReceivedPayloadData(data.data(), data.size(),
346 &rtp_header); 346 &rtp_header);
347 } 347 }
348 348
349 } // namespace webrtc 349 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/rtp_video_stream_receiver.cc ('k') | webrtc/video/video_receive_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698