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

Side by Side Diff: webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc

Issue 1323943007: VP9: Add automaticeResize to codec setting. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years, 3 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) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 // rate update is made to the encoder, for the encoder to reach within 71 // rate update is made to the encoder, for the encoder to reach within
72 // |kPercTargetvsActualMismatch| of new target rate. The metrics are defined for 72 // |kPercTargetvsActualMismatch| of new target rate. The metrics are defined for
73 // each rate update sequence. 73 // each rate update sequence.
74 struct RateControlMetrics { 74 struct RateControlMetrics {
75 int max_num_dropped_frames; 75 int max_num_dropped_frames;
76 int max_key_frame_size_mismatch; 76 int max_key_frame_size_mismatch;
77 int max_delta_frame_size_mismatch; 77 int max_delta_frame_size_mismatch;
78 int max_encoding_rate_mismatch; 78 int max_encoding_rate_mismatch;
79 int max_time_hit_target; 79 int max_time_hit_target;
80 int num_spatial_resizes; 80 int num_spatial_resizes;
81 int num_key_frames;
81 }; 82 };
82 83
83 84
84 // Sequence used is foreman (CIF): may be better to use VGA for resize test. 85 // Sequence used is foreman (CIF): may be better to use VGA for resize test.
85 const int kCIFWidth = 352; 86 const int kCIFWidth = 352;
86 const int kCIFHeight = 288; 87 const int kCIFHeight = 288;
87 const int kNbrFramesShort = 100; // Some tests are run for shorter sequence. 88 const int kNbrFramesShort = 100; // Some tests are run for shorter sequence.
88 const int kNbrFramesLong = 299; 89 const int kNbrFramesLong = 299;
89 90
90 // Parameters from VP8 wrapper, which control target size of key frames. 91 // Parameters from VP8 wrapper, which control target size of key frames.
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 config_.codec_settings->codecSpecific.VP8.keyFrameInterval = 202 config_.codec_settings->codecSpecific.VP8.keyFrameInterval =
202 kBaseKeyFrameInterval; 203 kBaseKeyFrameInterval;
203 break; 204 break;
204 case kVideoCodecVP9: 205 case kVideoCodecVP9:
205 config_.codec_settings->codecSpecific.VP9.denoisingOn = 206 config_.codec_settings->codecSpecific.VP9.denoisingOn =
206 denoising_on_; 207 denoising_on_;
207 config_.codec_settings->codecSpecific.VP9.numberOfTemporalLayers = 208 config_.codec_settings->codecSpecific.VP9.numberOfTemporalLayers =
208 num_temporal_layers_; 209 num_temporal_layers_;
209 config_.codec_settings->codecSpecific.VP9.frameDroppingOn = 210 config_.codec_settings->codecSpecific.VP9.frameDroppingOn =
210 frame_dropper_on_; 211 frame_dropper_on_;
212 config_.codec_settings->codecSpecific.VP9.automaticResizeOn =
213 spatial_resize_on_;
211 config_.codec_settings->codecSpecific.VP9.keyFrameInterval = 214 config_.codec_settings->codecSpecific.VP9.keyFrameInterval =
212 kBaseKeyFrameInterval; 215 kBaseKeyFrameInterval;
213 break; 216 break;
214 default: 217 default:
215 assert(false); 218 assert(false);
216 break; 219 break;
217 } 220 }
218 frame_reader_ = 221 frame_reader_ =
219 new webrtc::test::FrameReaderImpl(config_.input_filename, 222 new webrtc::test::FrameReaderImpl(config_.input_filename,
220 config_.frame_length_in_bytes); 223 config_.frame_length_in_bytes);
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 } 303 }
301 } 304 }
302 305
303 // Verify expected behavior of rate control and print out data. 306 // Verify expected behavior of rate control and print out data.
304 void VerifyRateControl(int update_index, 307 void VerifyRateControl(int update_index,
305 int max_key_frame_size_mismatch, 308 int max_key_frame_size_mismatch,
306 int max_delta_frame_size_mismatch, 309 int max_delta_frame_size_mismatch,
307 int max_encoding_rate_mismatch, 310 int max_encoding_rate_mismatch,
308 int max_time_hit_target, 311 int max_time_hit_target,
309 int max_num_dropped_frames, 312 int max_num_dropped_frames,
310 int num_spatial_resizes) { 313 int num_spatial_resizes,
314 int num_key_frames) {
311 int num_dropped_frames = processor_->NumberDroppedFrames(); 315 int num_dropped_frames = processor_->NumberDroppedFrames();
312 int num_resize_actions = processor_->NumberSpatialResizes(); 316 int num_resize_actions = processor_->NumberSpatialResizes();
313 printf("For update #: %d,\n " 317 printf("For update #: %d,\n "
314 " Target Bitrate: %d,\n" 318 " Target Bitrate: %d,\n"
315 " Encoding bitrate: %f,\n" 319 " Encoding bitrate: %f,\n"
316 " Frame rate: %d \n", 320 " Frame rate: %d \n",
317 update_index, bit_rate_, encoding_bitrate_total_, frame_rate_); 321 update_index, bit_rate_, encoding_bitrate_total_, frame_rate_);
318 printf(" Number of frames to approach target rate = %d, \n" 322 printf(" Number of frames to approach target rate = %d, \n"
319 " Number of dropped frames = %d, \n" 323 " Number of dropped frames = %d, \n"
320 " Number of spatial resizes = %d, \n", 324 " Number of spatial resizes = %d, \n",
(...skipping 26 matching lines...) Expand all
347 bit_rate_layer_[i], frame_rate_layer_[i], per_frame_bandwidth_[i], 351 bit_rate_layer_[i], frame_rate_layer_[i], per_frame_bandwidth_[i],
348 encoding_bitrate_[i], perc_frame_size_mismatch, 352 encoding_bitrate_[i], perc_frame_size_mismatch,
349 perc_encoding_rate_mismatch, num_frames_per_update_[i]); 353 perc_encoding_rate_mismatch, num_frames_per_update_[i]);
350 EXPECT_LE(perc_frame_size_mismatch, max_delta_frame_size_mismatch); 354 EXPECT_LE(perc_frame_size_mismatch, max_delta_frame_size_mismatch);
351 EXPECT_LE(perc_encoding_rate_mismatch, max_encoding_rate_mismatch); 355 EXPECT_LE(perc_encoding_rate_mismatch, max_encoding_rate_mismatch);
352 } 356 }
353 printf("\n"); 357 printf("\n");
354 EXPECT_LE(num_frames_to_hit_target_, max_time_hit_target); 358 EXPECT_LE(num_frames_to_hit_target_, max_time_hit_target);
355 EXPECT_LE(num_dropped_frames, max_num_dropped_frames); 359 EXPECT_LE(num_dropped_frames, max_num_dropped_frames);
356 EXPECT_EQ(num_resize_actions, num_spatial_resizes); 360 EXPECT_EQ(num_resize_actions, num_spatial_resizes);
361 EXPECT_EQ(num_key_frames_, num_key_frames);
357 } 362 }
358 363
359 // Layer index corresponding to frame number, for up to 3 layers. 364 // Layer index corresponding to frame number, for up to 3 layers.
360 void LayerIndexForFrame(int frame_number) { 365 void LayerIndexForFrame(int frame_number) {
361 if (num_temporal_layers_ == 1) { 366 if (num_temporal_layers_ == 1) {
362 layer_ = 0; 367 layer_ = 0;
363 } else if (num_temporal_layers_ == 2) { 368 } else if (num_temporal_layers_ == 2) {
364 // layer 0: 0 2 4 ... 369 // layer 0: 0 2 4 ...
365 // layer 1: 1 3 370 // layer 1: 1 3
366 if (frame_number % 2 == 0) { 371 if (frame_number % 2 == 0) {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 bit_rate_layer_[i] = bit_rate_ * bit_rate_ratio; 404 bit_rate_layer_[i] = bit_rate_ * bit_rate_ratio;
400 } 405 }
401 frame_rate_layer_[i] = frame_rate_ / static_cast<float>( 406 frame_rate_layer_[i] = frame_rate_ / static_cast<float>(
402 1 << (num_temporal_layers_ - 1)); 407 1 << (num_temporal_layers_ - 1));
403 } 408 }
404 if (num_temporal_layers_ == 3) { 409 if (num_temporal_layers_ == 3) {
405 frame_rate_layer_[2] = frame_rate_ / 2.0f; 410 frame_rate_layer_[2] = frame_rate_ / 2.0f;
406 } 411 }
407 } 412 }
408 413
409 VideoFrameType FrameType(int frame_number) {
410 if (frame_number == 0 || ((frame_number) % key_frame_interval_ == 0 &&
411 key_frame_interval_ > 0)) {
412 return kKeyFrame;
413 } else {
414 return kDeltaFrame;
415 }
416 }
417
418 void TearDown() { 414 void TearDown() {
419 delete processor_; 415 delete processor_;
420 delete packet_manipulator_; 416 delete packet_manipulator_;
421 delete frame_writer_; 417 delete frame_writer_;
422 delete frame_reader_; 418 delete frame_reader_;
423 delete decoder_; 419 delete decoder_;
424 delete encoder_; 420 delete encoder_;
425 } 421 }
426 422
427 // Processes all frames in the clip and verifies the result. 423 // Processes all frames in the clip and verifies the result.
(...skipping 19 matching lines...) Expand all
447 // Set the initial target size for key frame. 443 // Set the initial target size for key frame.
448 target_size_key_frame_initial_ = 0.5 * kInitialBufferSize * 444 target_size_key_frame_initial_ = 0.5 * kInitialBufferSize *
449 bit_rate_layer_[0]; 445 bit_rate_layer_[0];
450 processor_->SetRates(bit_rate_, frame_rate_); 446 processor_->SetRates(bit_rate_, frame_rate_);
451 // Process each frame, up to |num_frames|. 447 // Process each frame, up to |num_frames|.
452 int num_frames = rate_profile.num_frames; 448 int num_frames = rate_profile.num_frames;
453 int update_index = 0; 449 int update_index = 0;
454 ResetRateControlMetrics( 450 ResetRateControlMetrics(
455 rate_profile.frame_index_rate_update[update_index + 1]); 451 rate_profile.frame_index_rate_update[update_index + 1]);
456 int frame_number = 0; 452 int frame_number = 0;
457 VideoFrameType frame_type = kDeltaFrame; 453 VideoFrameType frame_type = kDeltaFrame;
stefan-webrtc 2015/09/05 10:45:49 I would move this declaration into the loop instea
458 while (processor_->ProcessFrame(frame_number) && 454 while (processor_->ProcessFrame(frame_number) &&
459 frame_number < num_frames) { 455 frame_number < num_frames) {
460 // Get the layer index for the frame |frame_number|. 456 // Get the layer index for the frame |frame_number|.
461 LayerIndexForFrame(frame_number); 457 LayerIndexForFrame(frame_number);
462 frame_type = FrameType(frame_number); 458 // Get the frame_type.
459 frame_type = processor_->EncodedFrameType();
463 // Counter for whole sequence run. 460 // Counter for whole sequence run.
464 ++frame_number; 461 ++frame_number;
465 // Counters for each rate update. 462 // Counters for each rate update.
466 ++num_frames_per_update_[layer_]; 463 ++num_frames_per_update_[layer_];
467 ++num_frames_total_; 464 ++num_frames_total_;
468 UpdateRateControlMetrics(frame_number, frame_type); 465 UpdateRateControlMetrics(frame_number, frame_type);
469 // If we hit another/next update, verify stats for current state and 466 // If we hit another/next update, verify stats for current state and
470 // update layers and codec with new rates. 467 // update layers and codec with new rates.
471 if (frame_number == 468 if (frame_number ==
472 rate_profile.frame_index_rate_update[update_index + 1]) { 469 rate_profile.frame_index_rate_update[update_index + 1]) {
473 VerifyRateControl( 470 VerifyRateControl(
474 update_index, 471 update_index,
475 rc_metrics[update_index].max_key_frame_size_mismatch, 472 rc_metrics[update_index].max_key_frame_size_mismatch,
476 rc_metrics[update_index].max_delta_frame_size_mismatch, 473 rc_metrics[update_index].max_delta_frame_size_mismatch,
477 rc_metrics[update_index].max_encoding_rate_mismatch, 474 rc_metrics[update_index].max_encoding_rate_mismatch,
478 rc_metrics[update_index].max_time_hit_target, 475 rc_metrics[update_index].max_time_hit_target,
479 rc_metrics[update_index].max_num_dropped_frames, 476 rc_metrics[update_index].max_num_dropped_frames,
480 rc_metrics[update_index].num_spatial_resizes); 477 rc_metrics[update_index].num_spatial_resizes,
478 rc_metrics[update_index].num_key_frames);
481 // Update layer rates and the codec with new rates. 479 // Update layer rates and the codec with new rates.
482 ++update_index; 480 ++update_index;
483 bit_rate_ = rate_profile.target_bit_rate[update_index]; 481 bit_rate_ = rate_profile.target_bit_rate[update_index];
484 frame_rate_ = rate_profile.input_frame_rate[update_index]; 482 frame_rate_ = rate_profile.input_frame_rate[update_index];
485 SetLayerRates(); 483 SetLayerRates();
486 ResetRateControlMetrics(rate_profile. 484 ResetRateControlMetrics(rate_profile.
487 frame_index_rate_update[update_index + 1]); 485 frame_index_rate_update[update_index + 1]);
488 processor_->SetRates(bit_rate_, frame_rate_); 486 processor_->SetRates(bit_rate_, frame_rate_);
489 } 487 }
490 } 488 }
491 VerifyRateControl( 489 VerifyRateControl(
492 update_index, 490 update_index,
493 rc_metrics[update_index].max_key_frame_size_mismatch, 491 rc_metrics[update_index].max_key_frame_size_mismatch,
494 rc_metrics[update_index].max_delta_frame_size_mismatch, 492 rc_metrics[update_index].max_delta_frame_size_mismatch,
495 rc_metrics[update_index].max_encoding_rate_mismatch, 493 rc_metrics[update_index].max_encoding_rate_mismatch,
496 rc_metrics[update_index].max_time_hit_target, 494 rc_metrics[update_index].max_time_hit_target,
497 rc_metrics[update_index].max_num_dropped_frames, 495 rc_metrics[update_index].max_num_dropped_frames,
498 rc_metrics[update_index].num_spatial_resizes); 496 rc_metrics[update_index].num_spatial_resizes,
497 rc_metrics[update_index].num_key_frames);
499 EXPECT_EQ(num_frames, frame_number); 498 EXPECT_EQ(num_frames, frame_number);
500 EXPECT_EQ(num_frames + 1, static_cast<int>(stats_.stats_.size())); 499 EXPECT_EQ(num_frames + 1, static_cast<int>(stats_.stats_.size()));
501 500
502 // Release encoder and decoder to make sure they have finished processing: 501 // Release encoder and decoder to make sure they have finished processing:
503 EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, encoder_->Release()); 502 EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, encoder_->Release());
504 EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, decoder_->Release()); 503 EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, decoder_->Release());
505 // Close the files before we start using them for SSIM/PSNR calculations. 504 // Close the files before we start using them for SSIM/PSNR calculations.
506 frame_reader_->Close(); 505 frame_reader_->Close();
507 frame_writer_->Close(); 506 frame_writer_->Close();
508 507
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
569 quality_metrics->minimum_min_ssim = minimum_min_ssim; 568 quality_metrics->minimum_min_ssim = minimum_min_ssim;
570 } 569 }
571 570
572 void SetRateControlMetrics(RateControlMetrics* rc_metrics, 571 void SetRateControlMetrics(RateControlMetrics* rc_metrics,
573 int update_index, 572 int update_index,
574 int max_num_dropped_frames, 573 int max_num_dropped_frames,
575 int max_key_frame_size_mismatch, 574 int max_key_frame_size_mismatch,
576 int max_delta_frame_size_mismatch, 575 int max_delta_frame_size_mismatch,
577 int max_encoding_rate_mismatch, 576 int max_encoding_rate_mismatch,
578 int max_time_hit_target, 577 int max_time_hit_target,
579 int num_spatial_resizes) { 578 int num_spatial_resizes,
579 int num_key_frames) {
580 rc_metrics[update_index].max_num_dropped_frames = max_num_dropped_frames; 580 rc_metrics[update_index].max_num_dropped_frames = max_num_dropped_frames;
581 rc_metrics[update_index].max_key_frame_size_mismatch = 581 rc_metrics[update_index].max_key_frame_size_mismatch =
582 max_key_frame_size_mismatch; 582 max_key_frame_size_mismatch;
583 rc_metrics[update_index].max_delta_frame_size_mismatch = 583 rc_metrics[update_index].max_delta_frame_size_mismatch =
584 max_delta_frame_size_mismatch; 584 max_delta_frame_size_mismatch;
585 rc_metrics[update_index].max_encoding_rate_mismatch = 585 rc_metrics[update_index].max_encoding_rate_mismatch =
586 max_encoding_rate_mismatch; 586 max_encoding_rate_mismatch;
587 rc_metrics[update_index].max_time_hit_target = max_time_hit_target; 587 rc_metrics[update_index].max_time_hit_target = max_time_hit_target;
588 rc_metrics[update_index].num_spatial_resizes = num_spatial_resizes; 588 rc_metrics[update_index].num_spatial_resizes = num_spatial_resizes;
589 rc_metrics[update_index].num_key_frames = num_key_frames;
589 } 590 }
590 591
591 // VP9: Run with no packet loss and fixed bitrate. Quality should be very high. 592 // VP9: Run with no packet loss and fixed bitrate. Quality should be very high.
592 // One key frame (first frame only) in sequence. Setting |key_frame_interval| 593 // One key frame (first frame only) in sequence. Setting |key_frame_interval|
593 // to -1 below means no periodic key frames in test. 594 // to -1 below means no periodic key frames in test.
594 TEST_F(VideoProcessorIntegrationTest, Process0PercentPacketLossVP9) { 595 TEST_F(VideoProcessorIntegrationTest, Process0PercentPacketLossVP9) {
595 // Bitrate and frame rate profile. 596 // Bitrate and frame rate profile.
596 RateProfile rate_profile; 597 RateProfile rate_profile;
597 SetRateProfilePars(&rate_profile, 0, 500, 30, 0); 598 SetRateProfilePars(&rate_profile, 0, 500, 30, 0);
598 rate_profile.frame_index_rate_update[1] = kNbrFramesShort + 1; 599 rate_profile.frame_index_rate_update[1] = kNbrFramesShort + 1;
599 rate_profile.num_frames = kNbrFramesShort; 600 rate_profile.num_frames = kNbrFramesShort;
600 // Codec/network settings. 601 // Codec/network settings.
601 CodecConfigPars process_settings; 602 CodecConfigPars process_settings;
602 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.0f, -1, 1, false, 603 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.0f, -1, 1, false,
603 false, true, false); 604 false, true, false);
604 // Metrics for expected quality. 605 // Metrics for expected quality.
605 QualityMetrics quality_metrics; 606 QualityMetrics quality_metrics;
606 SetQualityMetrics(&quality_metrics, 37.0, 36.0, 0.93, 0.92); 607 SetQualityMetrics(&quality_metrics, 37.0, 36.0, 0.93, 0.92);
607 // Metrics for rate control. 608 // Metrics for rate control.
608 RateControlMetrics rc_metrics[1]; 609 RateControlMetrics rc_metrics[1];
609 SetRateControlMetrics(rc_metrics, 0, 0, 40, 20, 10, 20, 0); 610 SetRateControlMetrics(rc_metrics, 0, 0, 40, 20, 10, 20, 0, 1);
610 ProcessFramesAndVerify(quality_metrics, 611 ProcessFramesAndVerify(quality_metrics,
611 rate_profile, 612 rate_profile,
612 process_settings, 613 process_settings,
613 rc_metrics); 614 rc_metrics);
614 } 615 }
615 616
616 // VP9: Run with 5% packet loss and fixed bitrate. Quality should be a bit 617 // VP9: Run with 5% packet loss and fixed bitrate. Quality should be a bit
617 // lower. One key frame (first frame only) in sequence. 618 // lower. One key frame (first frame only) in sequence.
618 TEST_F(VideoProcessorIntegrationTest, Process5PercentPacketLossVP9) { 619 TEST_F(VideoProcessorIntegrationTest, Process5PercentPacketLossVP9) {
619 // Bitrate and frame rate profile. 620 // Bitrate and frame rate profile.
620 RateProfile rate_profile; 621 RateProfile rate_profile;
621 SetRateProfilePars(&rate_profile, 0, 500, 30, 0); 622 SetRateProfilePars(&rate_profile, 0, 500, 30, 0);
622 rate_profile.frame_index_rate_update[1] = kNbrFramesShort + 1; 623 rate_profile.frame_index_rate_update[1] = kNbrFramesShort + 1;
623 rate_profile.num_frames = kNbrFramesShort; 624 rate_profile.num_frames = kNbrFramesShort;
624 // Codec/network settings. 625 // Codec/network settings.
625 CodecConfigPars process_settings; 626 CodecConfigPars process_settings;
626 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.05f, -1, 1, false, 627 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.05f, -1, 1, false,
627 false, true, false); 628 false, true, false);
628 // Metrics for expected quality. 629 // Metrics for expected quality.
629 QualityMetrics quality_metrics; 630 QualityMetrics quality_metrics;
630 SetQualityMetrics(&quality_metrics, 17.0, 14.0, 0.45, 0.36); 631 SetQualityMetrics(&quality_metrics, 17.0, 14.0, 0.45, 0.36);
631 // Metrics for rate control. 632 // Metrics for rate control.
632 RateControlMetrics rc_metrics[1]; 633 RateControlMetrics rc_metrics[1];
633 SetRateControlMetrics(rc_metrics, 0, 0, 40, 20, 10, 20, 0); 634 SetRateControlMetrics(rc_metrics, 0, 0, 40, 20, 10, 20, 0, 1);
634 ProcessFramesAndVerify(quality_metrics, 635 ProcessFramesAndVerify(quality_metrics,
635 rate_profile, 636 rate_profile,
636 process_settings, 637 process_settings,
637 rc_metrics); 638 rc_metrics);
638 } 639 }
639 640
640 641
641 // VP9: Run with no packet loss, with varying bitrate (3 rate updates): 642 // VP9: Run with no packet loss, with varying bitrate (3 rate updates):
642 // low to high to medium. Check that quality and encoder response to the new 643 // low to high to medium. Check that quality and encoder response to the new
643 // target rate/per-frame bandwidth (for each rate update) is within limits. 644 // target rate/per-frame bandwidth (for each rate update) is within limits.
644 // One key frame (first frame only) in sequence. 645 // One key frame (first frame only) in sequence.
645 TEST_F(VideoProcessorIntegrationTest, ProcessNoLossChangeBitRateVP9) { 646 TEST_F(VideoProcessorIntegrationTest, ProcessNoLossChangeBitRateVP9) {
646 // Bitrate and frame rate profile. 647 // Bitrate and frame rate profile.
647 RateProfile rate_profile; 648 RateProfile rate_profile;
648 SetRateProfilePars(&rate_profile, 0, 200, 30, 0); 649 SetRateProfilePars(&rate_profile, 0, 200, 30, 0);
649 SetRateProfilePars(&rate_profile, 1, 700, 30, 100); 650 SetRateProfilePars(&rate_profile, 1, 700, 30, 100);
650 SetRateProfilePars(&rate_profile, 2, 500, 30, 200); 651 SetRateProfilePars(&rate_profile, 2, 500, 30, 200);
651 rate_profile.frame_index_rate_update[3] = kNbrFramesLong + 1; 652 rate_profile.frame_index_rate_update[3] = kNbrFramesLong + 1;
652 rate_profile.num_frames = kNbrFramesLong; 653 rate_profile.num_frames = kNbrFramesLong;
653 // Codec/network settings. 654 // Codec/network settings.
654 CodecConfigPars process_settings; 655 CodecConfigPars process_settings;
655 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.0f, -1, 1, false, 656 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.0f, -1, 1, false,
656 false, true, false); 657 false, true, false);
657 // Metrics for expected quality. 658 // Metrics for expected quality.
658 QualityMetrics quality_metrics; 659 QualityMetrics quality_metrics;
659 SetQualityMetrics(&quality_metrics, 35.9, 30.0, 0.90, 0.85); 660 SetQualityMetrics(&quality_metrics, 35.9, 30.0, 0.90, 0.85);
660 // Metrics for rate control. 661 // Metrics for rate control.
661 RateControlMetrics rc_metrics[3]; 662 RateControlMetrics rc_metrics[3];
662 SetRateControlMetrics(rc_metrics, 0, 0, 30, 20, 20, 30, 0); 663 SetRateControlMetrics(rc_metrics, 0, 0, 30, 20, 20, 30, 0, 1);
663 SetRateControlMetrics(rc_metrics, 1, 2, 0, 20, 20, 60, 0); 664 SetRateControlMetrics(rc_metrics, 1, 2, 0, 20, 20, 60, 0, 0);
664 SetRateControlMetrics(rc_metrics, 2, 0, 0, 25, 20, 40, 0); 665 SetRateControlMetrics(rc_metrics, 2, 0, 0, 25, 20, 40, 0, 0);
665 ProcessFramesAndVerify(quality_metrics, 666 ProcessFramesAndVerify(quality_metrics,
666 rate_profile, 667 rate_profile,
667 process_settings, 668 process_settings,
668 rc_metrics); 669 rc_metrics);
669 } 670 }
670 671
671 // VP9: Run with no packet loss, with an update (decrease) in frame rate. 672 // VP9: Run with no packet loss, with an update (decrease) in frame rate.
672 // Lower frame rate means higher per-frame-bandwidth, so easier to encode. 673 // Lower frame rate means higher per-frame-bandwidth, so easier to encode.
673 // At the low bitrate in this test, this means better rate control after the 674 // At the low bitrate in this test, this means better rate control after the
674 // update(s) to lower frame rate. So expect less frame drops, and max values 675 // update(s) to lower frame rate. So expect less frame drops, and max values
(...skipping 12 matching lines...) Expand all
687 rate_profile.num_frames = kNbrFramesLong; 688 rate_profile.num_frames = kNbrFramesLong;
688 // Codec/network settings. 689 // Codec/network settings.
689 CodecConfigPars process_settings; 690 CodecConfigPars process_settings;
690 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.0f, -1, 1, false, 691 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.0f, -1, 1, false,
691 false, true, false); 692 false, true, false);
692 // Metrics for expected quality. 693 // Metrics for expected quality.
693 QualityMetrics quality_metrics; 694 QualityMetrics quality_metrics;
694 SetQualityMetrics(&quality_metrics, 31.5, 18.0, 0.80, 0.44); 695 SetQualityMetrics(&quality_metrics, 31.5, 18.0, 0.80, 0.44);
695 // Metrics for rate control. 696 // Metrics for rate control.
696 RateControlMetrics rc_metrics[3]; 697 RateControlMetrics rc_metrics[3];
697 SetRateControlMetrics(rc_metrics, 0, 35, 50, 70, 15, 45, 0); 698 SetRateControlMetrics(rc_metrics, 0, 35, 50, 70, 15, 45, 0, 1);
698 SetRateControlMetrics(rc_metrics, 1, 10, 0, 40, 10, 30, 0); 699 SetRateControlMetrics(rc_metrics, 1, 10, 0, 40, 10, 30, 0, 0);
699 SetRateControlMetrics(rc_metrics, 2, 5, 0, 30, 5, 20, 0); 700 SetRateControlMetrics(rc_metrics, 2, 5, 0, 30, 5, 20, 0, 0);
700 ProcessFramesAndVerify(quality_metrics, 701 ProcessFramesAndVerify(quality_metrics,
701 rate_profile, 702 rate_profile,
702 process_settings, 703 process_settings,
703 rc_metrics); 704 rc_metrics);
704 } 705 }
705 706
706 // VP9: Run with no packet loss and denoiser on. One key frame (first frame). 707 // VP9: Run with no packet loss and denoiser on. One key frame (first frame).
707 TEST_F(VideoProcessorIntegrationTest, ProcessNoLossDenoiserOnVP9) { 708 TEST_F(VideoProcessorIntegrationTest, ProcessNoLossDenoiserOnVP9) {
708 // Bitrate and frame rate profile. 709 // Bitrate and frame rate profile.
709 RateProfile rate_profile; 710 RateProfile rate_profile;
710 SetRateProfilePars(&rate_profile, 0, 500, 30, 0); 711 SetRateProfilePars(&rate_profile, 0, 500, 30, 0);
711 rate_profile.frame_index_rate_update[1] = kNbrFramesShort + 1; 712 rate_profile.frame_index_rate_update[1] = kNbrFramesShort + 1;
712 rate_profile.num_frames = kNbrFramesShort; 713 rate_profile.num_frames = kNbrFramesShort;
713 // Codec/network settings. 714 // Codec/network settings.
714 CodecConfigPars process_settings; 715 CodecConfigPars process_settings;
715 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.0f, -1, 1, false, 716 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.0f, -1, 1, false,
716 true, true, false); 717 true, true, false);
717 // Metrics for expected quality. 718 // Metrics for expected quality.
718 QualityMetrics quality_metrics; 719 QualityMetrics quality_metrics;
719 SetQualityMetrics(&quality_metrics, 36.8, 35.8, 0.92, 0.91); 720 SetQualityMetrics(&quality_metrics, 36.8, 35.8, 0.92, 0.91);
720 // Metrics for rate control. 721 // Metrics for rate control.
721 RateControlMetrics rc_metrics[1]; 722 RateControlMetrics rc_metrics[1];
722 SetRateControlMetrics(rc_metrics, 0, 0, 40, 20, 10, 20, 0); 723 SetRateControlMetrics(rc_metrics, 0, 0, 40, 20, 10, 20, 0, 1);
723 ProcessFramesAndVerify(quality_metrics, 724 ProcessFramesAndVerify(quality_metrics,
724 rate_profile, 725 rate_profile,
725 process_settings, 726 process_settings,
727 rc_metrics);
728 }
729
730 // Run with no packet loss, at low bitrate.
731 // spatial_resize is on, so expect one resize during the sequence,
732 // resize happens on delta frame. Expect only one key frame (first frame).
733 TEST_F(VideoProcessorIntegrationTest, ProcessNoLossSpatialResizeFrameDropVP9) {
734 config_.networking_config.packet_loss_probability = 0;
735 // Bitrate and frame rate profile.
736 RateProfile rate_profile;
737 SetRateProfilePars(&rate_profile, 0, 50, 30, 0);
738 rate_profile.frame_index_rate_update[1] = kNbrFramesLong + 1;
739 rate_profile.num_frames = kNbrFramesLong;
740 // Codec/network settings.
741 CodecConfigPars process_settings;
742 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.0f, -1,
743 1, false, false, true, true);
744 // Metrics for expected quality.
745 QualityMetrics quality_metrics;
746 SetQualityMetrics(&quality_metrics, 25.0, 13.0, 0.70, 0.40);
747 // Metrics for rate control.
748 RateControlMetrics rc_metrics[1];
749 SetRateControlMetrics(rc_metrics, 0, 160, 70, 120, 10, 80, 1, 1);
750 ProcessFramesAndVerify(quality_metrics,
751 rate_profile,
752 process_settings,
726 rc_metrics); 753 rc_metrics);
727 } 754 }
728 755
729 // TODO(marpan): Add temporal layer test for VP9, once changes are in 756 // TODO(marpan): Add temporal layer test for VP9, once changes are in
730 // vp9 wrapper for this. 757 // vp9 wrapper for this.
731 758
732 // VP8: Run with no packet loss and fixed bitrate. Quality should be very high. 759 // VP8: Run with no packet loss and fixed bitrate. Quality should be very high.
733 // One key frame (first frame only) in sequence. Setting |key_frame_interval| 760 // One key frame (first frame only) in sequence. Setting |key_frame_interval|
734 // to -1 below means no periodic key frames in test. 761 // to -1 below means no periodic key frames in test.
735 TEST_F(VideoProcessorIntegrationTest, ProcessZeroPacketLoss) { 762 TEST_F(VideoProcessorIntegrationTest, ProcessZeroPacketLoss) {
736 // Bitrate and frame rate profile. 763 // Bitrate and frame rate profile.
737 RateProfile rate_profile; 764 RateProfile rate_profile;
738 SetRateProfilePars(&rate_profile, 0, 500, 30, 0); 765 SetRateProfilePars(&rate_profile, 0, 500, 30, 0);
739 rate_profile.frame_index_rate_update[1] = kNbrFramesShort + 1; 766 rate_profile.frame_index_rate_update[1] = kNbrFramesShort + 1;
740 rate_profile.num_frames = kNbrFramesShort; 767 rate_profile.num_frames = kNbrFramesShort;
741 // Codec/network settings. 768 // Codec/network settings.
742 CodecConfigPars process_settings; 769 CodecConfigPars process_settings;
743 SetCodecParameters(&process_settings, kVideoCodecVP8, 0.0f, -1, 1, false, 770 SetCodecParameters(&process_settings, kVideoCodecVP8, 0.0f, -1, 1, false,
744 true, true, false); 771 true, true, false);
745 // Metrics for expected quality. 772 // Metrics for expected quality.
746 QualityMetrics quality_metrics; 773 QualityMetrics quality_metrics;
747 SetQualityMetrics(&quality_metrics, 34.95, 33.0, 0.90, 0.89); 774 SetQualityMetrics(&quality_metrics, 34.95, 33.0, 0.90, 0.89);
748 // Metrics for rate control. 775 // Metrics for rate control.
749 RateControlMetrics rc_metrics[1]; 776 RateControlMetrics rc_metrics[1];
750 SetRateControlMetrics(rc_metrics, 0, 0, 40, 20, 10, 15, 0); 777 SetRateControlMetrics(rc_metrics, 0, 0, 40, 20, 10, 15, 0, 1);
751 ProcessFramesAndVerify(quality_metrics, 778 ProcessFramesAndVerify(quality_metrics,
752 rate_profile, 779 rate_profile,
753 process_settings, 780 process_settings,
754 rc_metrics); 781 rc_metrics);
755 } 782 }
756 783
757 // VP8: Run with 5% packet loss and fixed bitrate. Quality should be a bit 784 // VP8: Run with 5% packet loss and fixed bitrate. Quality should be a bit
758 // lower. One key frame (first frame only) in sequence. 785 // lower. One key frame (first frame only) in sequence.
759 TEST_F(VideoProcessorIntegrationTest, Process5PercentPacketLoss) { 786 TEST_F(VideoProcessorIntegrationTest, Process5PercentPacketLoss) {
760 // Bitrate and frame rate profile. 787 // Bitrate and frame rate profile.
761 RateProfile rate_profile; 788 RateProfile rate_profile;
762 SetRateProfilePars(&rate_profile, 0, 500, 30, 0); 789 SetRateProfilePars(&rate_profile, 0, 500, 30, 0);
763 rate_profile.frame_index_rate_update[1] = kNbrFramesShort + 1; 790 rate_profile.frame_index_rate_update[1] = kNbrFramesShort + 1;
764 rate_profile.num_frames = kNbrFramesShort; 791 rate_profile.num_frames = kNbrFramesShort;
765 // Codec/network settings. 792 // Codec/network settings.
766 CodecConfigPars process_settings; 793 CodecConfigPars process_settings;
767 SetCodecParameters(&process_settings, kVideoCodecVP8, 0.05f, -1, 1, false, 794 SetCodecParameters(&process_settings, kVideoCodecVP8, 0.05f, -1, 1, false,
768 true, true, false); 795 true, true, false);
769 // Metrics for expected quality. 796 // Metrics for expected quality.
770 QualityMetrics quality_metrics; 797 QualityMetrics quality_metrics;
771 SetQualityMetrics(&quality_metrics, 20.0, 16.0, 0.60, 0.40); 798 SetQualityMetrics(&quality_metrics, 20.0, 16.0, 0.60, 0.40);
772 // Metrics for rate control. 799 // Metrics for rate control.
773 RateControlMetrics rc_metrics[1]; 800 RateControlMetrics rc_metrics[1];
774 SetRateControlMetrics(rc_metrics, 0, 0, 40, 20, 10, 15, 0); 801 SetRateControlMetrics(rc_metrics, 0, 0, 40, 20, 10, 15, 0, 1);
775 ProcessFramesAndVerify(quality_metrics, 802 ProcessFramesAndVerify(quality_metrics,
776 rate_profile, 803 rate_profile,
777 process_settings, 804 process_settings,
778 rc_metrics); 805 rc_metrics);
779 } 806 }
780 807
781 // VP8: Run with 10% packet loss and fixed bitrate. Quality should be lower. 808 // VP8: Run with 10% packet loss and fixed bitrate. Quality should be lower.
782 // One key frame (first frame only) in sequence. 809 // One key frame (first frame only) in sequence.
783 TEST_F(VideoProcessorIntegrationTest, Process10PercentPacketLoss) { 810 TEST_F(VideoProcessorIntegrationTest, Process10PercentPacketLoss) {
784 // Bitrate and frame rate profile. 811 // Bitrate and frame rate profile.
785 RateProfile rate_profile; 812 RateProfile rate_profile;
786 SetRateProfilePars(&rate_profile, 0, 500, 30, 0); 813 SetRateProfilePars(&rate_profile, 0, 500, 30, 0);
787 rate_profile.frame_index_rate_update[1] = kNbrFramesShort + 1; 814 rate_profile.frame_index_rate_update[1] = kNbrFramesShort + 1;
788 rate_profile.num_frames = kNbrFramesShort; 815 rate_profile.num_frames = kNbrFramesShort;
789 // Codec/network settings. 816 // Codec/network settings.
790 CodecConfigPars process_settings; 817 CodecConfigPars process_settings;
791 SetCodecParameters(&process_settings, kVideoCodecVP8, 0.1f, -1, 1, false, 818 SetCodecParameters(&process_settings, kVideoCodecVP8, 0.1f, -1, 1, false,
792 true, true, false); 819 true, true, false);
793 // Metrics for expected quality. 820 // Metrics for expected quality.
794 QualityMetrics quality_metrics; 821 QualityMetrics quality_metrics;
795 SetQualityMetrics(&quality_metrics, 19.0, 16.0, 0.50, 0.35); 822 SetQualityMetrics(&quality_metrics, 19.0, 16.0, 0.50, 0.35);
796 // Metrics for rate control. 823 // Metrics for rate control.
797 RateControlMetrics rc_metrics[1]; 824 RateControlMetrics rc_metrics[1];
798 SetRateControlMetrics(rc_metrics, 0, 0, 40, 20, 10, 15, 0); 825 SetRateControlMetrics(rc_metrics, 0, 0, 40, 20, 10, 15, 0, 1);
799 ProcessFramesAndVerify(quality_metrics, 826 ProcessFramesAndVerify(quality_metrics,
800 rate_profile, 827 rate_profile,
801 process_settings, 828 process_settings,
802 rc_metrics); 829 rc_metrics);
803 } 830 }
804 831
805 // The tests below are currently disabled for Android. For ARM, the encoder 832 // The tests below are currently disabled for Android. For ARM, the encoder
806 // uses |cpu_speed| = 12, as opposed to default |cpu_speed| <= 6 for x86, 833 // uses |cpu_speed| = 12, as opposed to default |cpu_speed| <= 6 for x86,
807 // which leads to significantly different quality. The quality and rate control 834 // which leads to significantly different quality. The quality and rate control
808 // settings in the tests below are defined for encoder speed setting 835 // settings in the tests below are defined for encoder speed setting
(...skipping 17 matching lines...) Expand all
826 rate_profile.num_frames = kNbrFramesLong; 853 rate_profile.num_frames = kNbrFramesLong;
827 // Codec/network settings. 854 // Codec/network settings.
828 CodecConfigPars process_settings; 855 CodecConfigPars process_settings;
829 SetCodecParameters(&process_settings, kVideoCodecVP8, 0.0f, -1, 1, false, 856 SetCodecParameters(&process_settings, kVideoCodecVP8, 0.0f, -1, 1, false,
830 true, true, false); 857 true, true, false);
831 // Metrics for expected quality. 858 // Metrics for expected quality.
832 QualityMetrics quality_metrics; 859 QualityMetrics quality_metrics;
833 SetQualityMetrics(&quality_metrics, 34.0, 32.0, 0.85, 0.80); 860 SetQualityMetrics(&quality_metrics, 34.0, 32.0, 0.85, 0.80);
834 // Metrics for rate control. 861 // Metrics for rate control.
835 RateControlMetrics rc_metrics[3]; 862 RateControlMetrics rc_metrics[3];
836 SetRateControlMetrics(rc_metrics, 0, 0, 45, 20, 10, 15, 0); 863 SetRateControlMetrics(rc_metrics, 0, 0, 45, 20, 10, 15, 0, 1);
837 SetRateControlMetrics(rc_metrics, 1, 0, 0, 25, 20, 10, 0); 864 SetRateControlMetrics(rc_metrics, 1, 0, 0, 25, 20, 10, 0, 0);
838 SetRateControlMetrics(rc_metrics, 2, 0, 0, 25, 15, 10, 0); 865 SetRateControlMetrics(rc_metrics, 2, 0, 0, 25, 15, 10, 0, 0);
839 ProcessFramesAndVerify(quality_metrics, 866 ProcessFramesAndVerify(quality_metrics,
840 rate_profile, 867 rate_profile,
841 process_settings, 868 process_settings,
842 rc_metrics); 869 rc_metrics);
843 } 870 }
844 871
845 // VP8: Run with no packet loss, with an update (decrease) in frame rate. 872 // VP8: Run with no packet loss, with an update (decrease) in frame rate.
846 // Lower frame rate means higher per-frame-bandwidth, so easier to encode. 873 // Lower frame rate means higher per-frame-bandwidth, so easier to encode.
847 // At the bitrate in this test, this means better rate control after the 874 // At the bitrate in this test, this means better rate control after the
848 // update(s) to lower frame rate. So expect less frame drops, and max values 875 // update(s) to lower frame rate. So expect less frame drops, and max values
(...skipping 12 matching lines...) Expand all
861 rate_profile.num_frames = kNbrFramesLong; 888 rate_profile.num_frames = kNbrFramesLong;
862 // Codec/network settings. 889 // Codec/network settings.
863 CodecConfigPars process_settings; 890 CodecConfigPars process_settings;
864 SetCodecParameters(&process_settings, kVideoCodecVP8, 0.0f, -1, 1, false, 891 SetCodecParameters(&process_settings, kVideoCodecVP8, 0.0f, -1, 1, false,
865 true, true, false); 892 true, true, false);
866 // Metrics for expected quality. 893 // Metrics for expected quality.
867 QualityMetrics quality_metrics; 894 QualityMetrics quality_metrics;
868 SetQualityMetrics(&quality_metrics, 31.0, 22.0, 0.80, 0.65); 895 SetQualityMetrics(&quality_metrics, 31.0, 22.0, 0.80, 0.65);
869 // Metrics for rate control. 896 // Metrics for rate control.
870 RateControlMetrics rc_metrics[3]; 897 RateControlMetrics rc_metrics[3];
871 SetRateControlMetrics(rc_metrics, 0, 40, 20, 75, 15, 60, 0); 898 SetRateControlMetrics(rc_metrics, 0, 40, 20, 75, 15, 60, 0, 1);
872 SetRateControlMetrics(rc_metrics, 1, 10, 0, 25, 10, 35, 0); 899 SetRateControlMetrics(rc_metrics, 1, 10, 0, 25, 10, 35, 0, 0);
873 SetRateControlMetrics(rc_metrics, 2, 0, 0, 20, 10, 15, 0); 900 SetRateControlMetrics(rc_metrics, 2, 0, 0, 20, 10, 15, 0, 0);
874 ProcessFramesAndVerify(quality_metrics, 901 ProcessFramesAndVerify(quality_metrics,
875 rate_profile, 902 rate_profile,
876 process_settings, 903 process_settings,
877 rc_metrics); 904 rc_metrics);
878 } 905 }
879 906
880 // Run with no packet loss, at low bitrate. During this time we should've 907 // Run with no packet loss, at low bitrate. During this time we should've
881 // resized once. 908 // resized once. Expect 2 key frames generated (first and one for resize).
882 TEST_F(VideoProcessorIntegrationTest, 909 TEST_F(VideoProcessorIntegrationTest,
883 DISABLED_ON_ANDROID(ProcessNoLossSpatialResizeFrameDropVP8)) { 910 DISABLED_ON_ANDROID(ProcessNoLossSpatialResizeFrameDropVP8)) {
884 config_.networking_config.packet_loss_probability = 0; 911 config_.networking_config.packet_loss_probability = 0;
885 // Bitrate and frame rate profile. 912 // Bitrate and frame rate profile.
886 RateProfile rate_profile; 913 RateProfile rate_profile;
887 SetRateProfilePars(&rate_profile, 0, 50, 30, 0); 914 SetRateProfilePars(&rate_profile, 0, 50, 30, 0);
888 rate_profile.frame_index_rate_update[1] = kNbrFramesLong + 1; 915 rate_profile.frame_index_rate_update[1] = kNbrFramesLong + 1;
889 rate_profile.num_frames = kNbrFramesLong; 916 rate_profile.num_frames = kNbrFramesLong;
890 // Codec/network settings. 917 // Codec/network settings.
891 CodecConfigPars process_settings; 918 CodecConfigPars process_settings;
892 SetCodecParameters(&process_settings, kVideoCodecVP8, 0.0f, kNbrFramesLong, 919 SetCodecParameters(&process_settings, kVideoCodecVP8, 0.0f, -1,
893 1, false, true, true, true); 920 1, false, true, true, true);
894 // Metrics for expected quality. 921 // Metrics for expected quality.
895 QualityMetrics quality_metrics; 922 QualityMetrics quality_metrics;
896 SetQualityMetrics(&quality_metrics, 25.0, 15.0, 0.70, 0.40); 923 SetQualityMetrics(&quality_metrics, 25.0, 15.0, 0.70, 0.40);
897 // Metrics for rate control. 924 // Metrics for rate control.
898 RateControlMetrics rc_metrics[1]; 925 RateControlMetrics rc_metrics[1];
899 SetRateControlMetrics(rc_metrics, 0, 160, 60, 120, 20, 70, 1); 926 SetRateControlMetrics(rc_metrics, 0, 160, 60, 120, 20, 70, 1, 2);
900 ProcessFramesAndVerify(quality_metrics, 927 ProcessFramesAndVerify(quality_metrics,
901 rate_profile, 928 rate_profile,
902 process_settings, 929 process_settings,
903 rc_metrics); 930 rc_metrics);
904 } 931 }
905 932
906 // VP8: Run with no packet loss, with 3 temporal layers, with a rate update in 933 // VP8: Run with no packet loss, with 3 temporal layers, with a rate update in
907 // the middle of the sequence. The max values for the frame size mismatch and 934 // the middle of the sequence. The max values for the frame size mismatch and
908 // encoding rate mismatch are applied to each layer. 935 // encoding rate mismatch are applied to each layer.
909 // No dropped frames in this test, and internal spatial resizer is off. 936 // No dropped frames in this test, and internal spatial resizer is off.
910 // One key frame (first frame only) in sequence, so no spatial resizing. 937 // One key frame (first frame only) in sequence, so no spatial resizing.
911 TEST_F(VideoProcessorIntegrationTest, 938 TEST_F(VideoProcessorIntegrationTest,
912 DISABLED_ON_ANDROID(ProcessNoLossTemporalLayersVP8)) { 939 DISABLED_ON_ANDROID(ProcessNoLossTemporalLayersVP8)) {
913 config_.networking_config.packet_loss_probability = 0; 940 config_.networking_config.packet_loss_probability = 0;
914 // Bitrate and frame rate profile. 941 // Bitrate and frame rate profile.
915 RateProfile rate_profile; 942 RateProfile rate_profile;
916 SetRateProfilePars(&rate_profile, 0, 200, 30, 0); 943 SetRateProfilePars(&rate_profile, 0, 200, 30, 0);
917 SetRateProfilePars(&rate_profile, 1, 400, 30, 150); 944 SetRateProfilePars(&rate_profile, 1, 400, 30, 150);
918 rate_profile.frame_index_rate_update[2] = kNbrFramesLong + 1; 945 rate_profile.frame_index_rate_update[2] = kNbrFramesLong + 1;
919 rate_profile.num_frames = kNbrFramesLong; 946 rate_profile.num_frames = kNbrFramesLong;
920 // Codec/network settings. 947 // Codec/network settings.
921 CodecConfigPars process_settings; 948 CodecConfigPars process_settings;
922 SetCodecParameters(&process_settings, kVideoCodecVP8, 0.0f, -1, 3, false, 949 SetCodecParameters(&process_settings, kVideoCodecVP8, 0.0f, -1, 3, false,
923 true, true, false); 950 true, true, false);
924 // Metrics for expected quality. 951 // Metrics for expected quality.
925 QualityMetrics quality_metrics; 952 QualityMetrics quality_metrics;
926 SetQualityMetrics(&quality_metrics, 32.5, 30.0, 0.85, 0.80); 953 SetQualityMetrics(&quality_metrics, 32.5, 30.0, 0.85, 0.80);
927 // Metrics for rate control. 954 // Metrics for rate control.
928 RateControlMetrics rc_metrics[2]; 955 RateControlMetrics rc_metrics[2];
929 SetRateControlMetrics(rc_metrics, 0, 0, 20, 30, 10, 10, 0); 956 SetRateControlMetrics(rc_metrics, 0, 0, 20, 30, 10, 10, 0, 1);
930 SetRateControlMetrics(rc_metrics, 1, 0, 0, 30, 15, 10, 0); 957 SetRateControlMetrics(rc_metrics, 1, 0, 0, 30, 15, 10, 0, 0);
931 ProcessFramesAndVerify(quality_metrics, 958 ProcessFramesAndVerify(quality_metrics,
932 rate_profile, 959 rate_profile,
933 process_settings, 960 process_settings,
934 rc_metrics); 961 rc_metrics);
935 } 962 }
936 } // namespace webrtc 963 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/video_coding/codecs/test/videoprocessor.cc ('k') | webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698