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

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

Issue 3007753002: Verify parsed QP value when frame is encoded instead of storing parsed value and verifying later. (Closed)
Patch Set: Created 3 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
« no previous file with comments | « webrtc/modules/video_coding/codecs/test/videoprocessor.cc ('k') | no next file » | 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 (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 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 384
385 static void VerifyQuality(const QualityMetricsResult& psnr_result, 385 static void VerifyQuality(const QualityMetricsResult& psnr_result,
386 const QualityMetricsResult& ssim_result, 386 const QualityMetricsResult& ssim_result,
387 const QualityThresholds& quality_thresholds) { 387 const QualityThresholds& quality_thresholds) {
388 EXPECT_GT(psnr_result.average, quality_thresholds.min_avg_psnr); 388 EXPECT_GT(psnr_result.average, quality_thresholds.min_avg_psnr);
389 EXPECT_GT(psnr_result.min, quality_thresholds.min_min_psnr); 389 EXPECT_GT(psnr_result.min, quality_thresholds.min_min_psnr);
390 EXPECT_GT(ssim_result.average, quality_thresholds.min_avg_ssim); 390 EXPECT_GT(ssim_result.average, quality_thresholds.min_avg_ssim);
391 EXPECT_GT(ssim_result.min, quality_thresholds.min_min_ssim); 391 EXPECT_GT(ssim_result.min, quality_thresholds.min_min_ssim);
392 } 392 }
393 393
394 void VerifyQpParser(int frame_number) {
395 if (!config_.hw_codec &&
396 (config_.codec_settings.codecType == kVideoCodecVP8 ||
397 config_.codec_settings.codecType == kVideoCodecVP9)) {
398 EXPECT_EQ(processor_->GetQpFromEncoder(frame_number),
399 processor_->GetQpFromBitstream(frame_number));
400 }
401 }
402
403 static int NumberOfTemporalLayers(const VideoCodec& codec_settings) { 394 static int NumberOfTemporalLayers(const VideoCodec& codec_settings) {
404 if (codec_settings.codecType == kVideoCodecVP8) { 395 if (codec_settings.codecType == kVideoCodecVP8) {
405 return codec_settings.VP8().numberOfTemporalLayers; 396 return codec_settings.VP8().numberOfTemporalLayers;
406 } else if (codec_settings.codecType == kVideoCodecVP9) { 397 } else if (codec_settings.codecType == kVideoCodecVP9) {
407 return codec_settings.VP9().numberOfTemporalLayers; 398 return codec_settings.VP9().numberOfTemporalLayers;
408 } else { 399 } else {
409 return 1; 400 return 1;
410 } 401 }
411 } 402 }
412 403
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 478
488 // Process each frame, up to |num_frames|. 479 // Process each frame, up to |num_frames|.
489 int frame_number = 0; 480 int frame_number = 0;
490 int update_index = 0; 481 int update_index = 0;
491 int num_frames = rate_profile.num_frames; 482 int num_frames = rate_profile.num_frames;
492 ResetRateControlMetrics( 483 ResetRateControlMetrics(
493 rate_profile.frame_index_rate_update[update_index + 1]); 484 rate_profile.frame_index_rate_update[update_index + 1]);
494 485
495 while (frame_number < num_frames) { 486 while (frame_number < num_frames) {
496 processor_->ProcessFrame(frame_number); 487 processor_->ProcessFrame(frame_number);
497 VerifyQpParser(frame_number);
498 const int tl_idx = TemporalLayerIndexForFrame(frame_number); 488 const int tl_idx = TemporalLayerIndexForFrame(frame_number);
499 ++num_frames_per_update_[tl_idx]; 489 ++num_frames_per_update_[tl_idx];
500 ++num_frames_total_; 490 ++num_frames_total_;
501 UpdateRateControlMetrics(frame_number); 491 UpdateRateControlMetrics(frame_number);
502 492
503 ++frame_number; 493 ++frame_number;
504 494
505 // If we hit another/next update, verify stats for current state and 495 // If we hit another/next update, verify stats for current state and
506 // update layers and codec with new rates. 496 // update layers and codec with new rates.
507 if (frame_number == 497 if (frame_number ==
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 float target_size_key_frame_initial_; 687 float target_size_key_frame_initial_;
698 float target_size_key_frame_; 688 float target_size_key_frame_;
699 float sum_key_frame_size_mismatch_; 689 float sum_key_frame_size_mismatch_;
700 int num_key_frames_; 690 int num_key_frames_;
701 }; 691 };
702 692
703 } // namespace test 693 } // namespace test
704 } // namespace webrtc 694 } // namespace webrtc
705 695
706 #endif // WEBRTC_MODULES_VIDEO_CODING_CODECS_TEST_VIDEOPROCESSOR_INTEGRATIONTES T_H_ 696 #endif // WEBRTC_MODULES_VIDEO_CODING_CODECS_TEST_VIDEOPROCESSOR_INTEGRATIONTES T_H_
OLDNEW
« no previous file with comments | « webrtc/modules/video_coding/codecs/test/videoprocessor.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698