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

Side by Side Diff: webrtc/modules/video_coding/codecs/vp8/simulcast_unittest.h

Issue 1371043003: Unify FrameType and VideoFrameType. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years, 2 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2014 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
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 input_frame_.allocated_size(kUPlane)); 331 input_frame_.allocated_size(kUPlane));
332 memset(input_frame_.buffer(kVPlane), 0, 332 memset(input_frame_.buffer(kVPlane), 0,
333 input_frame_.allocated_size(kVPlane)); 333 input_frame_.allocated_size(kVPlane));
334 } 334 }
335 335
336 virtual void TearDown() { 336 virtual void TearDown() {
337 encoder_->Release(); 337 encoder_->Release();
338 decoder_->Release(); 338 decoder_->Release();
339 } 339 }
340 340
341 void ExpectStreams(VideoFrameType frame_type, int expected_video_streams) { 341 void ExpectStreams(FrameType frame_type, int expected_video_streams) {
342 ASSERT_GE(expected_video_streams, 0); 342 ASSERT_GE(expected_video_streams, 0);
343 ASSERT_LE(expected_video_streams, kNumberOfSimulcastStreams); 343 ASSERT_LE(expected_video_streams, kNumberOfSimulcastStreams);
344 if (expected_video_streams >= 1) { 344 if (expected_video_streams >= 1) {
345 EXPECT_CALL(encoder_callback_, Encoded( 345 EXPECT_CALL(encoder_callback_, Encoded(
346 AllOf(Field(&EncodedImage::_frameType, frame_type), 346 AllOf(Field(&EncodedImage::_frameType, frame_type),
347 Field(&EncodedImage::_encodedWidth, kDefaultWidth / 4), 347 Field(&EncodedImage::_encodedWidth, kDefaultWidth / 4),
348 Field(&EncodedImage::_encodedHeight, kDefaultHeight / 4)), _, _) 348 Field(&EncodedImage::_encodedHeight, kDefaultHeight / 4)), _, _)
349 ) 349 )
350 .Times(1) 350 .Times(1)
351 .WillRepeatedly(Return(0)); 351 .WillRepeatedly(Return(0));
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 &layer_sync, i); 389 &layer_sync, i);
390 EXPECT_EQ(expected_temporal_idx[i], temporal_layer); 390 EXPECT_EQ(expected_temporal_idx[i], temporal_layer);
391 EXPECT_EQ(expected_layer_sync[i], layer_sync); 391 EXPECT_EQ(expected_layer_sync[i], layer_sync);
392 } 392 }
393 } 393 }
394 394
395 // We currently expect all active streams to generate a key frame even though 395 // We currently expect all active streams to generate a key frame even though
396 // a key frame was only requested for some of them. 396 // a key frame was only requested for some of them.
397 void TestKeyFrameRequestsOnAllStreams() { 397 void TestKeyFrameRequestsOnAllStreams() {
398 encoder_->SetRates(kMaxBitrates[2], 30); // To get all three streams. 398 encoder_->SetRates(kMaxBitrates[2], 30); // To get all three streams.
399 std::vector<VideoFrameType> frame_types(kNumberOfSimulcastStreams, 399 std::vector<FrameType> frame_types(kNumberOfSimulcastStreams, kDeltaFrame);
400 kDeltaFrame);
401 ExpectStreams(kKeyFrame, kNumberOfSimulcastStreams); 400 ExpectStreams(kKeyFrame, kNumberOfSimulcastStreams);
402 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 401 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
403 402
404 ExpectStreams(kDeltaFrame, kNumberOfSimulcastStreams); 403 ExpectStreams(kDeltaFrame, kNumberOfSimulcastStreams);
405 input_frame_.set_timestamp(input_frame_.timestamp() + 3000); 404 input_frame_.set_timestamp(input_frame_.timestamp() + 3000);
406 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 405 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
407 406
408 frame_types[0] = kKeyFrame; 407 frame_types[0] = kKeyFrame;
409 ExpectStreams(kKeyFrame, kNumberOfSimulcastStreams); 408 ExpectStreams(kKeyFrame, kNumberOfSimulcastStreams);
410 input_frame_.set_timestamp(input_frame_.timestamp() + 3000); 409 input_frame_.set_timestamp(input_frame_.timestamp() + 3000);
(...skipping 13 matching lines...) Expand all
424 423
425 std::fill(frame_types.begin(), frame_types.end(), kDeltaFrame); 424 std::fill(frame_types.begin(), frame_types.end(), kDeltaFrame);
426 ExpectStreams(kDeltaFrame, kNumberOfSimulcastStreams); 425 ExpectStreams(kDeltaFrame, kNumberOfSimulcastStreams);
427 input_frame_.set_timestamp(input_frame_.timestamp() + 3000); 426 input_frame_.set_timestamp(input_frame_.timestamp() + 3000);
428 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 427 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
429 } 428 }
430 429
431 void TestPaddingAllStreams() { 430 void TestPaddingAllStreams() {
432 // We should always encode the base layer. 431 // We should always encode the base layer.
433 encoder_->SetRates(kMinBitrates[0] - 1, 30); 432 encoder_->SetRates(kMinBitrates[0] - 1, 30);
434 std::vector<VideoFrameType> frame_types(kNumberOfSimulcastStreams, 433 std::vector<FrameType> frame_types(kNumberOfSimulcastStreams, kDeltaFrame);
435 kDeltaFrame);
436 ExpectStreams(kKeyFrame, 1); 434 ExpectStreams(kKeyFrame, 1);
437 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 435 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
438 436
439 ExpectStreams(kDeltaFrame, 1); 437 ExpectStreams(kDeltaFrame, 1);
440 input_frame_.set_timestamp(input_frame_.timestamp() + 3000); 438 input_frame_.set_timestamp(input_frame_.timestamp() + 3000);
441 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 439 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
442 } 440 }
443 441
444 void TestPaddingTwoStreams() { 442 void TestPaddingTwoStreams() {
445 // We have just enough to get only the first stream and padding for two. 443 // We have just enough to get only the first stream and padding for two.
446 encoder_->SetRates(kMinBitrates[0], 30); 444 encoder_->SetRates(kMinBitrates[0], 30);
447 std::vector<VideoFrameType> frame_types(kNumberOfSimulcastStreams, 445 std::vector<FrameType> frame_types(kNumberOfSimulcastStreams, kDeltaFrame);
448 kDeltaFrame);
449 ExpectStreams(kKeyFrame, 1); 446 ExpectStreams(kKeyFrame, 1);
450 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 447 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
451 448
452 ExpectStreams(kDeltaFrame, 1); 449 ExpectStreams(kDeltaFrame, 1);
453 input_frame_.set_timestamp(input_frame_.timestamp() + 3000); 450 input_frame_.set_timestamp(input_frame_.timestamp() + 3000);
454 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 451 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
455 } 452 }
456 453
457 void TestPaddingTwoStreamsOneMaxedOut() { 454 void TestPaddingTwoStreamsOneMaxedOut() {
458 // We are just below limit of sending second stream, so we should get 455 // We are just below limit of sending second stream, so we should get
459 // the first stream maxed out (at |maxBitrate|), and padding for two. 456 // the first stream maxed out (at |maxBitrate|), and padding for two.
460 encoder_->SetRates(kTargetBitrates[0] + kMinBitrates[1] - 1, 30); 457 encoder_->SetRates(kTargetBitrates[0] + kMinBitrates[1] - 1, 30);
461 std::vector<VideoFrameType> frame_types(kNumberOfSimulcastStreams, 458 std::vector<FrameType> frame_types(kNumberOfSimulcastStreams, kDeltaFrame);
462 kDeltaFrame);
463 ExpectStreams(kKeyFrame, 1); 459 ExpectStreams(kKeyFrame, 1);
464 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 460 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
465 461
466 ExpectStreams(kDeltaFrame, 1); 462 ExpectStreams(kDeltaFrame, 1);
467 input_frame_.set_timestamp(input_frame_.timestamp() + 3000); 463 input_frame_.set_timestamp(input_frame_.timestamp() + 3000);
468 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 464 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
469 } 465 }
470 466
471 void TestPaddingOneStream() { 467 void TestPaddingOneStream() {
472 // We have just enough to send two streams, so padding for one stream. 468 // We have just enough to send two streams, so padding for one stream.
473 encoder_->SetRates(kTargetBitrates[0] + kMinBitrates[1], 30); 469 encoder_->SetRates(kTargetBitrates[0] + kMinBitrates[1], 30);
474 std::vector<VideoFrameType> frame_types(kNumberOfSimulcastStreams, 470 std::vector<FrameType> frame_types(kNumberOfSimulcastStreams, kDeltaFrame);
475 kDeltaFrame);
476 ExpectStreams(kKeyFrame, 2); 471 ExpectStreams(kKeyFrame, 2);
477 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 472 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
478 473
479 ExpectStreams(kDeltaFrame, 2); 474 ExpectStreams(kDeltaFrame, 2);
480 input_frame_.set_timestamp(input_frame_.timestamp() + 3000); 475 input_frame_.set_timestamp(input_frame_.timestamp() + 3000);
481 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 476 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
482 } 477 }
483 478
484 void TestPaddingOneStreamTwoMaxedOut() { 479 void TestPaddingOneStreamTwoMaxedOut() {
485 // We are just below limit of sending third stream, so we should get 480 // We are just below limit of sending third stream, so we should get
486 // first stream's rate maxed out at |targetBitrate|, second at |maxBitrate|. 481 // first stream's rate maxed out at |targetBitrate|, second at |maxBitrate|.
487 encoder_->SetRates(kTargetBitrates[0] + kTargetBitrates[1] + 482 encoder_->SetRates(kTargetBitrates[0] + kTargetBitrates[1] +
488 kMinBitrates[2] - 1, 30); 483 kMinBitrates[2] - 1, 30);
489 std::vector<VideoFrameType> frame_types(kNumberOfSimulcastStreams, 484 std::vector<FrameType> frame_types(kNumberOfSimulcastStreams, kDeltaFrame);
490 kDeltaFrame);
491 ExpectStreams(kKeyFrame, 2); 485 ExpectStreams(kKeyFrame, 2);
492 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 486 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
493 487
494 ExpectStreams(kDeltaFrame, 2); 488 ExpectStreams(kDeltaFrame, 2);
495 input_frame_.set_timestamp(input_frame_.timestamp() + 3000); 489 input_frame_.set_timestamp(input_frame_.timestamp() + 3000);
496 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 490 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
497 } 491 }
498 492
499 void TestSendAllStreams() { 493 void TestSendAllStreams() {
500 // We have just enough to send all streams. 494 // We have just enough to send all streams.
501 encoder_->SetRates(kTargetBitrates[0] + kTargetBitrates[1] + 495 encoder_->SetRates(kTargetBitrates[0] + kTargetBitrates[1] +
502 kMinBitrates[2], 30); 496 kMinBitrates[2], 30);
503 std::vector<VideoFrameType> frame_types(kNumberOfSimulcastStreams, 497 std::vector<FrameType> frame_types(kNumberOfSimulcastStreams, kDeltaFrame);
504 kDeltaFrame);
505 ExpectStreams(kKeyFrame, 3); 498 ExpectStreams(kKeyFrame, 3);
506 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 499 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
507 500
508 ExpectStreams(kDeltaFrame, 3); 501 ExpectStreams(kDeltaFrame, 3);
509 input_frame_.set_timestamp(input_frame_.timestamp() + 3000); 502 input_frame_.set_timestamp(input_frame_.timestamp() + 3000);
510 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 503 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
511 } 504 }
512 505
513 void TestDisablingStreams() { 506 void TestDisablingStreams() {
514 // We should get three media streams. 507 // We should get three media streams.
515 encoder_->SetRates(kMaxBitrates[0] + kMaxBitrates[1] + 508 encoder_->SetRates(kMaxBitrates[0] + kMaxBitrates[1] +
516 kMaxBitrates[2], 30); 509 kMaxBitrates[2], 30);
517 std::vector<VideoFrameType> frame_types(kNumberOfSimulcastStreams, 510 std::vector<FrameType> frame_types(kNumberOfSimulcastStreams, kDeltaFrame);
518 kDeltaFrame);
519 ExpectStreams(kKeyFrame, 3); 511 ExpectStreams(kKeyFrame, 3);
520 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 512 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
521 513
522 ExpectStreams(kDeltaFrame, 3); 514 ExpectStreams(kDeltaFrame, 3);
523 input_frame_.set_timestamp(input_frame_.timestamp() + 3000); 515 input_frame_.set_timestamp(input_frame_.timestamp() + 3000);
524 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 516 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
525 517
526 // We should only get two streams and padding for one. 518 // We should only get two streams and padding for one.
527 encoder_->SetRates(kTargetBitrates[0] + kTargetBitrates[1] + 519 encoder_->SetRates(kTargetBitrates[0] + kTargetBitrates[1] +
528 kMinBitrates[2] / 2, 30); 520 kMinBitrates[2] / 2, 30);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
589 maxBitrate = 0; 581 maxBitrate = 0;
590 // The highest layer has to correspond to the non-simulcast resolution. 582 // The highest layer has to correspond to the non-simulcast resolution.
591 settings_.simulcastStream[settings_.numberOfSimulcastStreams - 1]. 583 settings_.simulcastStream[settings_.numberOfSimulcastStreams - 1].
592 width = settings_.width; 584 width = settings_.width;
593 settings_.simulcastStream[settings_.numberOfSimulcastStreams - 1]. 585 settings_.simulcastStream[settings_.numberOfSimulcastStreams - 1].
594 height = settings_.height; 586 height = settings_.height;
595 EXPECT_EQ(0, encoder_->InitEncode(&settings_, 1, 1200)); 587 EXPECT_EQ(0, encoder_->InitEncode(&settings_, 1, 1200));
596 588
597 // Encode one frame and verify. 589 // Encode one frame and verify.
598 encoder_->SetRates(kMaxBitrates[0] + kMaxBitrates[1], 30); 590 encoder_->SetRates(kMaxBitrates[0] + kMaxBitrates[1], 30);
599 std::vector<VideoFrameType> frame_types(kNumberOfSimulcastStreams, 591 std::vector<FrameType> frame_types(kNumberOfSimulcastStreams, kDeltaFrame);
600 kDeltaFrame);
601 EXPECT_CALL(encoder_callback_, Encoded( 592 EXPECT_CALL(encoder_callback_, Encoded(
602 AllOf(Field(&EncodedImage::_frameType, kKeyFrame), 593 AllOf(Field(&EncodedImage::_frameType, kKeyFrame),
603 Field(&EncodedImage::_encodedWidth, width), 594 Field(&EncodedImage::_encodedWidth, width),
604 Field(&EncodedImage::_encodedHeight, height)), _, _)) 595 Field(&EncodedImage::_encodedHeight, height)), _, _))
605 .Times(1) 596 .Times(1)
606 .WillRepeatedly(Return(0)); 597 .WillRepeatedly(Return(0));
607 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 598 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
608 599
609 // Switch back. 600 // Switch back.
610 DefaultSettings(&settings_, kDefaultTemporalLayerProfile); 601 DefaultSettings(&settings_, kDefaultTemporalLayerProfile);
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
997 rtc::scoped_ptr<VP8Decoder> decoder_; 988 rtc::scoped_ptr<VP8Decoder> decoder_;
998 MockDecodedImageCallback decoder_callback_; 989 MockDecodedImageCallback decoder_callback_;
999 VideoCodec settings_; 990 VideoCodec settings_;
1000 VideoFrame input_frame_; 991 VideoFrame input_frame_;
1001 }; 992 };
1002 993
1003 } // namespace testing 994 } // namespace testing
1004 } // namespace webrtc 995 } // namespace webrtc
1005 996
1006 #endif // WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_SIMULCAST_UNITTEST_H_ 997 #endif // WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_SIMULCAST_UNITTEST_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698