| Index: webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc
|
| diff --git a/webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc b/webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc
|
| index 2dab0088224653e2a3a59a7c8e474f14f745ca89..d188d3466b9195e0de89bf57d94aaa1811439696 100644
|
| --- a/webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc
|
| +++ b/webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc
|
| @@ -10,6 +10,8 @@
|
|
|
| #include "webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.h"
|
|
|
| +#include <vector>
|
| +
|
| namespace webrtc {
|
| namespace test {
|
|
|
| @@ -34,6 +36,8 @@ const int kNumFramesShort = 100;
|
| #endif
|
| const int kNumFramesLong = 299;
|
|
|
| +const std::nullptr_t kNoVisualizationParams = nullptr;
|
| +
|
| } // namespace
|
|
|
| #if defined(WEBRTC_USE_H264)
|
| @@ -44,23 +48,23 @@ const int kNumFramesLong = 299;
|
| // with H264. Therefore ProcessXPercentPacketLossH264, X != 0, unittests have
|
| // not been added.
|
| TEST_F(VideoProcessorIntegrationTest, Process0PercentPacketLossH264) {
|
| - // Bit rate and frame rate profile.
|
| - RateProfile rate_profile;
|
| - SetRateProfile(&rate_profile, 0, 500, 30, 0);
|
| - rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1;
|
| - rate_profile.num_frames = kNumFramesShort;
|
| - // Codec/network settings.
|
| SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
|
| kVerboseLogging, kBatchMode);
|
| SetCodecSettings(&config_, kVideoCodecH264, 1, false, false, true, false,
|
| kResilienceOn, kCifWidth, kCifHeight);
|
| - // Thresholds for expected quality.
|
| +
|
| + RateProfile rate_profile;
|
| + SetRateProfile(&rate_profile, 0, 500, 30, 0);
|
| + rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1;
|
| + rate_profile.num_frames = kNumFramesShort;
|
| +
|
| + std::vector<RateControlThresholds> rc_thresholds;
|
| + AddRateControlThresholds(2, 60, 20, 10, 20, 0, 1, &rc_thresholds);
|
| +
|
| QualityThresholds quality_thresholds(35.0, 25.0, 0.93, 0.70);
|
| - // Thresholds for rate control.
|
| - RateControlThresholds rc_thresholds[1];
|
| - SetRateControlThresholds(rc_thresholds, 0, 2, 60, 20, 10, 20, 0, 1);
|
| - ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds,
|
| - nullptr /* visualization_params */);
|
| +
|
| + ProcessFramesAndMaybeVerify(rate_profile, &rc_thresholds, &quality_thresholds,
|
| + kNoVisualizationParams);
|
| }
|
|
|
| #endif // defined(WEBRTC_USE_H264)
|
| @@ -72,45 +76,45 @@ TEST_F(VideoProcessorIntegrationTest, Process0PercentPacketLossH264) {
|
| // VP9: Run with no packet loss and fixed bitrate. Quality should be very high.
|
| // One key frame (first frame only) in sequence.
|
| TEST_F(VideoProcessorIntegrationTest, Process0PercentPacketLossVP9) {
|
| - // Bit rate and frame rate profile.
|
| - RateProfile rate_profile;
|
| - SetRateProfile(&rate_profile, 0, 500, 30, 0);
|
| - rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1;
|
| - rate_profile.num_frames = kNumFramesShort;
|
| - // Codec/network settings.
|
| SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
|
| kVerboseLogging, kBatchMode);
|
| SetCodecSettings(&config_, kVideoCodecVP9, 1, false, false, true, false,
|
| kResilienceOn, kCifWidth, kCifHeight);
|
| - // Thresholds for expected quality.
|
| +
|
| + RateProfile rate_profile;
|
| + SetRateProfile(&rate_profile, 0, 500, 30, 0);
|
| + rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1;
|
| + rate_profile.num_frames = kNumFramesShort;
|
| +
|
| + std::vector<RateControlThresholds> rc_thresholds;
|
| + AddRateControlThresholds(0, 40, 20, 10, 20, 0, 1, &rc_thresholds);
|
| +
|
| QualityThresholds quality_thresholds(37.0, 36.0, 0.93, 0.92);
|
| - // Thresholds for rate control.
|
| - RateControlThresholds rc_thresholds[1];
|
| - SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 20, 0, 1);
|
| - ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds,
|
| - nullptr /* visualization_params */);
|
| +
|
| + ProcessFramesAndMaybeVerify(rate_profile, &rc_thresholds, &quality_thresholds,
|
| + kNoVisualizationParams);
|
| }
|
|
|
| // VP9: Run with 5% packet loss and fixed bitrate. Quality should be a bit
|
| // lower. One key frame (first frame only) in sequence.
|
| TEST_F(VideoProcessorIntegrationTest, Process5PercentPacketLossVP9) {
|
| - // Bit rate and frame rate profile.
|
| - RateProfile rate_profile;
|
| - SetRateProfile(&rate_profile, 0, 500, 30, 0);
|
| - rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1;
|
| - rate_profile.num_frames = kNumFramesShort;
|
| - // Codec/network settings.
|
| SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.05f, kForemanCif,
|
| kVerboseLogging, kBatchMode);
|
| SetCodecSettings(&config_, kVideoCodecVP9, 1, false, false, true, false,
|
| kResilienceOn, kCifWidth, kCifHeight);
|
| - // Thresholds for expected quality.
|
| +
|
| + RateProfile rate_profile;
|
| + SetRateProfile(&rate_profile, 0, 500, 30, 0);
|
| + rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1;
|
| + rate_profile.num_frames = kNumFramesShort;
|
| +
|
| + std::vector<RateControlThresholds> rc_thresholds;
|
| + AddRateControlThresholds(0, 40, 20, 10, 20, 0, 1, &rc_thresholds);
|
| +
|
| QualityThresholds quality_thresholds(17.0, 14.0, 0.45, 0.36);
|
| - // Thresholds for rate control.
|
| - RateControlThresholds rc_thresholds[1];
|
| - SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 20, 0, 1);
|
| - ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds,
|
| - nullptr /* visualization_params */);
|
| +
|
| + ProcessFramesAndMaybeVerify(rate_profile, &rc_thresholds, &quality_thresholds,
|
| + kNoVisualizationParams);
|
| }
|
|
|
| // VP9: Run with no packet loss, with varying bitrate (3 rate updates):
|
| @@ -118,27 +122,27 @@ TEST_F(VideoProcessorIntegrationTest, Process5PercentPacketLossVP9) {
|
| // target rate/per-frame bandwidth (for each rate update) is within limits.
|
| // One key frame (first frame only) in sequence.
|
| TEST_F(VideoProcessorIntegrationTest, ProcessNoLossChangeBitRateVP9) {
|
| - // Bit rate and frame rate profile.
|
| + SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
|
| + kVerboseLogging, kBatchMode);
|
| + SetCodecSettings(&config_, kVideoCodecVP9, 1, false, false, true, false,
|
| + kResilienceOn, kCifWidth, kCifHeight);
|
| +
|
| RateProfile rate_profile;
|
| SetRateProfile(&rate_profile, 0, 200, 30, 0);
|
| SetRateProfile(&rate_profile, 1, 700, 30, 100);
|
| SetRateProfile(&rate_profile, 2, 500, 30, 200);
|
| rate_profile.frame_index_rate_update[3] = kNumFramesLong + 1;
|
| rate_profile.num_frames = kNumFramesLong;
|
| - // Codec/network settings.
|
| - SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
|
| - kVerboseLogging, kBatchMode);
|
| - SetCodecSettings(&config_, kVideoCodecVP9, 1, false, false, true, false,
|
| - kResilienceOn, kCifWidth, kCifHeight);
|
| - // Thresholds for expected quality.
|
| +
|
| + std::vector<RateControlThresholds> rc_thresholds;
|
| + AddRateControlThresholds(0, 30, 20, 20, 35, 0, 1, &rc_thresholds);
|
| + AddRateControlThresholds(2, 0, 20, 20, 60, 0, 0, &rc_thresholds);
|
| + AddRateControlThresholds(0, 0, 25, 20, 40, 0, 0, &rc_thresholds);
|
| +
|
| QualityThresholds quality_thresholds(35.5, 30.0, 0.90, 0.85);
|
| - // Thresholds for rate control.
|
| - RateControlThresholds rc_thresholds[3];
|
| - SetRateControlThresholds(rc_thresholds, 0, 0, 30, 20, 20, 35, 0, 1);
|
| - SetRateControlThresholds(rc_thresholds, 1, 2, 0, 20, 20, 60, 0, 0);
|
| - SetRateControlThresholds(rc_thresholds, 2, 0, 0, 25, 20, 40, 0, 0);
|
| - ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds,
|
| - nullptr /* visualization_params */);
|
| +
|
| + ProcessFramesAndMaybeVerify(rate_profile, &rc_thresholds, &quality_thresholds,
|
| + kNoVisualizationParams);
|
| }
|
|
|
| // VP9: Run with no packet loss, with an update (decrease) in frame rate.
|
| @@ -150,48 +154,48 @@ TEST_F(VideoProcessorIntegrationTest, ProcessNoLossChangeBitRateVP9) {
|
| // metrics averaged over whole sequence run.
|
| TEST_F(VideoProcessorIntegrationTest,
|
| ProcessNoLossChangeFrameRateFrameDropVP9) {
|
| - // Bit rate and frame rate profile.
|
| + SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
|
| + kVerboseLogging, kBatchMode);
|
| + SetCodecSettings(&config_, kVideoCodecVP9, 1, false, false, true, false,
|
| + kResilienceOn, kCifWidth, kCifHeight);
|
| +
|
| RateProfile rate_profile;
|
| SetRateProfile(&rate_profile, 0, 100, 24, 0);
|
| SetRateProfile(&rate_profile, 1, 100, 15, 100);
|
| SetRateProfile(&rate_profile, 2, 100, 10, 200);
|
| rate_profile.frame_index_rate_update[3] = kNumFramesLong + 1;
|
| rate_profile.num_frames = kNumFramesLong;
|
| - // Codec/network settings.
|
| - SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
|
| - kVerboseLogging, kBatchMode);
|
| - SetCodecSettings(&config_, kVideoCodecVP9, 1, false, false, true, false,
|
| - kResilienceOn, kCifWidth, kCifHeight);
|
| - // Thresholds for expected quality.
|
| +
|
| + std::vector<RateControlThresholds> rc_thresholds;
|
| + AddRateControlThresholds(45, 50, 95, 15, 45, 0, 1, &rc_thresholds);
|
| + AddRateControlThresholds(20, 0, 50, 10, 30, 0, 0, &rc_thresholds);
|
| + AddRateControlThresholds(5, 0, 30, 5, 25, 0, 0, &rc_thresholds);
|
| +
|
| QualityThresholds quality_thresholds(31.5, 18.0, 0.80, 0.43);
|
| - // Thresholds for rate control.
|
| - RateControlThresholds rc_thresholds[3];
|
| - SetRateControlThresholds(rc_thresholds, 0, 45, 50, 95, 15, 45, 0, 1);
|
| - SetRateControlThresholds(rc_thresholds, 1, 20, 0, 50, 10, 30, 0, 0);
|
| - SetRateControlThresholds(rc_thresholds, 2, 5, 0, 30, 5, 25, 0, 0);
|
| - ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds,
|
| - nullptr /* visualization_params */);
|
| +
|
| + ProcessFramesAndMaybeVerify(rate_profile, &rc_thresholds, &quality_thresholds,
|
| + kNoVisualizationParams);
|
| }
|
|
|
| // VP9: Run with no packet loss and denoiser on. One key frame (first frame).
|
| TEST_F(VideoProcessorIntegrationTest, ProcessNoLossDenoiserOnVP9) {
|
| - // Bit rate and frame rate profile.
|
| - RateProfile rate_profile;
|
| - SetRateProfile(&rate_profile, 0, 500, 30, 0);
|
| - rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1;
|
| - rate_profile.num_frames = kNumFramesShort;
|
| - // Codec/network settings.
|
| SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
|
| kVerboseLogging, kBatchMode);
|
| SetCodecSettings(&config_, kVideoCodecVP9, 1, false, true, true, false,
|
| kResilienceOn, kCifWidth, kCifHeight);
|
| - // Thresholds for expected quality.
|
| +
|
| + RateProfile rate_profile;
|
| + SetRateProfile(&rate_profile, 0, 500, 30, 0);
|
| + rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1;
|
| + rate_profile.num_frames = kNumFramesShort;
|
| +
|
| + std::vector<RateControlThresholds> rc_thresholds;
|
| + AddRateControlThresholds(0, 40, 20, 10, 20, 0, 1, &rc_thresholds);
|
| +
|
| QualityThresholds quality_thresholds(36.8, 35.8, 0.92, 0.91);
|
| - // Thresholds for rate control.
|
| - RateControlThresholds rc_thresholds[1];
|
| - SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 20, 0, 1);
|
| - ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds,
|
| - nullptr /* visualization_params */);
|
| +
|
| + ProcessFramesAndMaybeVerify(rate_profile, &rc_thresholds, &quality_thresholds,
|
| + kNoVisualizationParams);
|
| }
|
|
|
| // Run with no packet loss, at low bitrate.
|
| @@ -199,23 +203,23 @@ TEST_F(VideoProcessorIntegrationTest, ProcessNoLossDenoiserOnVP9) {
|
| // Resize happens on delta frame. Expect only one key frame (first frame).
|
| TEST_F(VideoProcessorIntegrationTest,
|
| DISABLED_ProcessNoLossSpatialResizeFrameDropVP9) {
|
| - // Bit rate and frame rate profile.
|
| - RateProfile rate_profile;
|
| - SetRateProfile(&rate_profile, 0, 50, 30, 0);
|
| - rate_profile.frame_index_rate_update[1] = kNumFramesLong + 1;
|
| - rate_profile.num_frames = kNumFramesLong;
|
| - // Codec/network settings.
|
| SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
|
| kVerboseLogging, kBatchMode);
|
| SetCodecSettings(&config_, kVideoCodecVP9, 1, false, false, true, true,
|
| kResilienceOn, kCifWidth, kCifHeight);
|
| - // Thresholds for expected quality.
|
| +
|
| + RateProfile rate_profile;
|
| + SetRateProfile(&rate_profile, 0, 50, 30, 0);
|
| + rate_profile.frame_index_rate_update[1] = kNumFramesLong + 1;
|
| + rate_profile.num_frames = kNumFramesLong;
|
| +
|
| + std::vector<RateControlThresholds> rc_thresholds;
|
| + AddRateControlThresholds(228, 70, 160, 15, 80, 1, 1, &rc_thresholds);
|
| +
|
| QualityThresholds quality_thresholds(24.0, 13.0, 0.65, 0.37);
|
| - // Thresholds for rate control.
|
| - RateControlThresholds rc_thresholds[1];
|
| - SetRateControlThresholds(rc_thresholds, 0, 228, 70, 160, 15, 80, 1, 1);
|
| - ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds,
|
| - nullptr /* visualization_params */);
|
| +
|
| + ProcessFramesAndMaybeVerify(rate_profile, &rc_thresholds, &quality_thresholds,
|
| + kNoVisualizationParams);
|
| }
|
|
|
| // TODO(marpan): Add temporal layer test for VP9, once changes are in
|
| @@ -227,67 +231,67 @@ TEST_F(VideoProcessorIntegrationTest,
|
| // One key frame (first frame only) in sequence. Setting |key_frame_interval|
|
| // to -1 below means no periodic key frames in test.
|
| TEST_F(VideoProcessorIntegrationTest, ProcessZeroPacketLoss) {
|
| - // Bit rate and frame rate profile.
|
| - RateProfile rate_profile;
|
| - SetRateProfile(&rate_profile, 0, 500, 30, 0);
|
| - rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1;
|
| - rate_profile.num_frames = kNumFramesShort;
|
| - // Codec/network settings.
|
| SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
|
| kVerboseLogging, kBatchMode);
|
| SetCodecSettings(&config_, kVideoCodecVP8, 1, false, true, true, false,
|
| kResilienceOn, kCifWidth, kCifHeight);
|
| - // Thresholds for expected quality.
|
| +
|
| + RateProfile rate_profile;
|
| + SetRateProfile(&rate_profile, 0, 500, 30, 0);
|
| + rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1;
|
| + rate_profile.num_frames = kNumFramesShort;
|
| +
|
| + std::vector<RateControlThresholds> rc_thresholds;
|
| + AddRateControlThresholds(0, 40, 20, 10, 15, 0, 1, &rc_thresholds);
|
| +
|
| QualityThresholds quality_thresholds(34.95, 33.0, 0.90, 0.89);
|
| - // Thresholds for rate control.
|
| - RateControlThresholds rc_thresholds[1];
|
| - SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 15, 0, 1);
|
| - ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds,
|
| - nullptr /* visualization_params */);
|
| +
|
| + ProcessFramesAndMaybeVerify(rate_profile, &rc_thresholds, &quality_thresholds,
|
| + kNoVisualizationParams);
|
| }
|
|
|
| // VP8: Run with 5% packet loss and fixed bitrate. Quality should be a bit
|
| // lower. One key frame (first frame only) in sequence.
|
| TEST_F(VideoProcessorIntegrationTest, Process5PercentPacketLoss) {
|
| - // Bit rate and frame rate profile.
|
| - RateProfile rate_profile;
|
| - SetRateProfile(&rate_profile, 0, 500, 30, 0);
|
| - rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1;
|
| - rate_profile.num_frames = kNumFramesShort;
|
| - // Codec/network settings.
|
| SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.05f, kForemanCif,
|
| kVerboseLogging, kBatchMode);
|
| SetCodecSettings(&config_, kVideoCodecVP8, 1, false, true, true, false,
|
| kResilienceOn, kCifWidth, kCifHeight);
|
| - // Thresholds for expected quality.
|
| +
|
| + RateProfile rate_profile;
|
| + SetRateProfile(&rate_profile, 0, 500, 30, 0);
|
| + rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1;
|
| + rate_profile.num_frames = kNumFramesShort;
|
| +
|
| + std::vector<RateControlThresholds> rc_thresholds;
|
| + AddRateControlThresholds(0, 40, 20, 10, 15, 0, 1, &rc_thresholds);
|
| +
|
| QualityThresholds quality_thresholds(20.0, 16.0, 0.60, 0.40);
|
| - // Thresholds for rate control.
|
| - RateControlThresholds rc_thresholds[1];
|
| - SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 15, 0, 1);
|
| - ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds,
|
| - nullptr /* visualization_params */);
|
| +
|
| + ProcessFramesAndMaybeVerify(rate_profile, &rc_thresholds, &quality_thresholds,
|
| + kNoVisualizationParams);
|
| }
|
|
|
| // VP8: Run with 10% packet loss and fixed bitrate. Quality should be lower.
|
| // One key frame (first frame only) in sequence.
|
| TEST_F(VideoProcessorIntegrationTest, Process10PercentPacketLoss) {
|
| - // Bit rate and frame rate profile.
|
| - RateProfile rate_profile;
|
| - SetRateProfile(&rate_profile, 0, 500, 30, 0);
|
| - rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1;
|
| - rate_profile.num_frames = kNumFramesShort;
|
| - // Codec/network settings.
|
| SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.1f, kForemanCif,
|
| kVerboseLogging, kBatchMode);
|
| SetCodecSettings(&config_, kVideoCodecVP8, 1, false, true, true, false,
|
| kResilienceOn, kCifWidth, kCifHeight);
|
| - // Thresholds for expected quality.
|
| +
|
| + RateProfile rate_profile;
|
| + SetRateProfile(&rate_profile, 0, 500, 30, 0);
|
| + rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1;
|
| + rate_profile.num_frames = kNumFramesShort;
|
| +
|
| + std::vector<RateControlThresholds> rc_thresholds;
|
| + AddRateControlThresholds(0, 40, 20, 10, 15, 0, 1, &rc_thresholds);
|
| +
|
| QualityThresholds quality_thresholds(19.0, 16.0, 0.50, 0.35);
|
| - // Thresholds for rate control.
|
| - RateControlThresholds rc_thresholds[1];
|
| - SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 15, 0, 1);
|
| - ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds,
|
| - nullptr /* visualization_params */);
|
| +
|
| + ProcessFramesAndMaybeVerify(rate_profile, &rc_thresholds, &quality_thresholds,
|
| + kNoVisualizationParams);
|
| }
|
|
|
| // This test is identical to VideoProcessorIntegrationTest.ProcessZeroPacketLoss
|
| @@ -295,23 +299,23 @@ TEST_F(VideoProcessorIntegrationTest, Process10PercentPacketLoss) {
|
| // that the reported stats are not wildly varying between batch mode and the
|
| // regular online mode.
|
| TEST_F(VideoProcessorIntegrationTest, ProcessInBatchMode) {
|
| - // Bit rate and frame rate profile.
|
| - RateProfile rate_profile;
|
| - SetRateProfile(&rate_profile, 0, 500, 30, 0);
|
| - rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1;
|
| - rate_profile.num_frames = kNumFramesShort;
|
| - // Codec/network settings.
|
| SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
|
| kVerboseLogging, true /* batch_mode */);
|
| SetCodecSettings(&config_, kVideoCodecVP8, 1, false, true, true, false,
|
| kResilienceOn, kCifWidth, kCifHeight);
|
| - // Thresholds for expected quality.
|
| +
|
| + RateProfile rate_profile;
|
| + SetRateProfile(&rate_profile, 0, 500, 30, 0);
|
| + rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1;
|
| + rate_profile.num_frames = kNumFramesShort;
|
| +
|
| + std::vector<RateControlThresholds> rc_thresholds;
|
| + AddRateControlThresholds(0, 40, 20, 10, 15, 0, 1, &rc_thresholds);
|
| +
|
| QualityThresholds quality_thresholds(34.95, 33.0, 0.90, 0.89);
|
| - // Thresholds for rate control.
|
| - RateControlThresholds rc_thresholds[1];
|
| - SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 15, 0, 1);
|
| - ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds,
|
| - nullptr /* visualization_params */);
|
| +
|
| + ProcessFramesAndMaybeVerify(rate_profile, &rc_thresholds, &quality_thresholds,
|
| + kNoVisualizationParams);
|
| }
|
|
|
| #endif // !defined(WEBRTC_IOS)
|
| @@ -337,27 +341,27 @@ TEST_F(VideoProcessorIntegrationTest, ProcessInBatchMode) {
|
| #define MAYBE_ProcessNoLossChangeBitRateVP8 ProcessNoLossChangeBitRateVP8
|
| #endif
|
| TEST_F(VideoProcessorIntegrationTest, MAYBE_ProcessNoLossChangeBitRateVP8) {
|
| - // Bit rate and frame rate profile.
|
| + SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
|
| + kVerboseLogging, kBatchMode);
|
| + SetCodecSettings(&config_, kVideoCodecVP8, 1, false, true, true, false,
|
| + kResilienceOn, kCifWidth, kCifHeight);
|
| +
|
| RateProfile rate_profile;
|
| SetRateProfile(&rate_profile, 0, 200, 30, 0);
|
| SetRateProfile(&rate_profile, 1, 800, 30, 100);
|
| SetRateProfile(&rate_profile, 2, 500, 30, 200);
|
| rate_profile.frame_index_rate_update[3] = kNumFramesLong + 1;
|
| rate_profile.num_frames = kNumFramesLong;
|
| - // Codec/network settings.
|
| - SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
|
| - kVerboseLogging, kBatchMode);
|
| - SetCodecSettings(&config_, kVideoCodecVP8, 1, false, true, true, false,
|
| - kResilienceOn, kCifWidth, kCifHeight);
|
| - // Thresholds for expected quality.
|
| +
|
| + std::vector<RateControlThresholds> rc_thresholds;
|
| + AddRateControlThresholds(0, 45, 20, 10, 15, 0, 1, &rc_thresholds);
|
| + AddRateControlThresholds(0, 0, 25, 20, 10, 0, 0, &rc_thresholds);
|
| + AddRateControlThresholds(0, 0, 25, 15, 10, 0, 0, &rc_thresholds);
|
| +
|
| QualityThresholds quality_thresholds(34.0, 32.0, 0.85, 0.80);
|
| - // Thresholds for rate control.
|
| - RateControlThresholds rc_thresholds[3];
|
| - SetRateControlThresholds(rc_thresholds, 0, 0, 45, 20, 10, 15, 0, 1);
|
| - SetRateControlThresholds(rc_thresholds, 1, 0, 0, 25, 20, 10, 0, 0);
|
| - SetRateControlThresholds(rc_thresholds, 2, 0, 0, 25, 15, 10, 0, 0);
|
| - ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds,
|
| - nullptr /* visualization_params */);
|
| +
|
| + ProcessFramesAndMaybeVerify(rate_profile, &rc_thresholds, &quality_thresholds,
|
| + kNoVisualizationParams);
|
| }
|
|
|
| // VP8: Run with no packet loss, with an update (decrease) in frame rate.
|
| @@ -377,27 +381,27 @@ TEST_F(VideoProcessorIntegrationTest, MAYBE_ProcessNoLossChangeBitRateVP8) {
|
| #endif
|
| TEST_F(VideoProcessorIntegrationTest,
|
| MAYBE_ProcessNoLossChangeFrameRateFrameDropVP8) {
|
| - // Bit rate and frame rate profile.
|
| + SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
|
| + kVerboseLogging, kBatchMode);
|
| + SetCodecSettings(&config_, kVideoCodecVP8, 1, false, true, true, false,
|
| + kResilienceOn, kCifWidth, kCifHeight);
|
| +
|
| RateProfile rate_profile;
|
| SetRateProfile(&rate_profile, 0, 80, 24, 0);
|
| SetRateProfile(&rate_profile, 1, 80, 15, 100);
|
| SetRateProfile(&rate_profile, 2, 80, 10, 200);
|
| rate_profile.frame_index_rate_update[3] = kNumFramesLong + 1;
|
| rate_profile.num_frames = kNumFramesLong;
|
| - // Codec/network settings.
|
| - SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
|
| - kVerboseLogging, kBatchMode);
|
| - SetCodecSettings(&config_, kVideoCodecVP8, 1, false, true, true, false,
|
| - kResilienceOn, kCifWidth, kCifHeight);
|
| - // Thresholds for expected quality.
|
| +
|
| + std::vector<RateControlThresholds> rc_thresholds;
|
| + AddRateControlThresholds(40, 20, 75, 15, 60, 0, 1, &rc_thresholds);
|
| + AddRateControlThresholds(10, 0, 25, 10, 35, 0, 0, &rc_thresholds);
|
| + AddRateControlThresholds(0, 0, 20, 10, 15, 0, 0, &rc_thresholds);
|
| +
|
| QualityThresholds quality_thresholds(31.0, 22.0, 0.80, 0.65);
|
| - // Thresholds for rate control.
|
| - RateControlThresholds rc_thresholds[3];
|
| - SetRateControlThresholds(rc_thresholds, 0, 40, 20, 75, 15, 60, 0, 1);
|
| - SetRateControlThresholds(rc_thresholds, 1, 10, 0, 25, 10, 35, 0, 0);
|
| - SetRateControlThresholds(rc_thresholds, 2, 0, 0, 20, 10, 15, 0, 0);
|
| - ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds,
|
| - nullptr /* visualization_params */);
|
| +
|
| + ProcessFramesAndMaybeVerify(rate_profile, &rc_thresholds, &quality_thresholds,
|
| + kNoVisualizationParams);
|
| }
|
|
|
| // VP8: Run with no packet loss, with 3 temporal layers, with a rate update in
|
| @@ -413,25 +417,25 @@ TEST_F(VideoProcessorIntegrationTest,
|
| #define MAYBE_ProcessNoLossTemporalLayersVP8 ProcessNoLossTemporalLayersVP8
|
| #endif
|
| TEST_F(VideoProcessorIntegrationTest, MAYBE_ProcessNoLossTemporalLayersVP8) {
|
| - // Bit rate and frame rate profile.
|
| + SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
|
| + kVerboseLogging, kBatchMode);
|
| + SetCodecSettings(&config_, kVideoCodecVP8, 3, false, true, true, false,
|
| + kResilienceOn, kCifWidth, kCifHeight);
|
| +
|
| RateProfile rate_profile;
|
| SetRateProfile(&rate_profile, 0, 200, 30, 0);
|
| SetRateProfile(&rate_profile, 1, 400, 30, 150);
|
| rate_profile.frame_index_rate_update[2] = kNumFramesLong + 1;
|
| rate_profile.num_frames = kNumFramesLong;
|
| - // Codec/network settings.
|
| - SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
|
| - kVerboseLogging, kBatchMode);
|
| - SetCodecSettings(&config_, kVideoCodecVP8, 3, false, true, true, false,
|
| - kResilienceOn, kCifWidth, kCifHeight);
|
| - // Thresholds for expected quality.
|
| +
|
| + std::vector<RateControlThresholds> rc_thresholds;
|
| + AddRateControlThresholds(0, 20, 30, 10, 10, 0, 1, &rc_thresholds);
|
| + AddRateControlThresholds(0, 0, 30, 15, 10, 0, 0, &rc_thresholds);
|
| +
|
| QualityThresholds quality_thresholds(32.5, 30.0, 0.85, 0.80);
|
| - // Thresholds for rate control.
|
| - RateControlThresholds rc_thresholds[2];
|
| - SetRateControlThresholds(rc_thresholds, 0, 0, 20, 30, 10, 10, 0, 1);
|
| - SetRateControlThresholds(rc_thresholds, 1, 0, 0, 30, 15, 10, 0, 0);
|
| - ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds,
|
| - nullptr /* visualization_params */);
|
| +
|
| + ProcessFramesAndMaybeVerify(rate_profile, &rc_thresholds, &quality_thresholds,
|
| + kNoVisualizationParams);
|
| }
|
| } // namespace test
|
| } // namespace webrtc
|
|
|