| OLD | NEW |
| 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 29 matching lines...) Expand all Loading... |
| 40 // these unittests appears to drop "packets" in a way that is not compatible | 40 // these unittests appears to drop "packets" in a way that is not compatible |
| 41 // with H264. Therefore ProcessXPercentPacketLossH264, X != 0, unittests have | 41 // with H264. Therefore ProcessXPercentPacketLossH264, X != 0, unittests have |
| 42 // not been added. | 42 // not been added. |
| 43 TEST_F(VideoProcessorIntegrationTest, Process0PercentPacketLossH264) { | 43 TEST_F(VideoProcessorIntegrationTest, Process0PercentPacketLossH264) { |
| 44 // Bit rate and frame rate profile. | 44 // Bit rate and frame rate profile. |
| 45 RateProfile rate_profile; | 45 RateProfile rate_profile; |
| 46 SetRateProfile(&rate_profile, 0, 500, 30, 0); | 46 SetRateProfile(&rate_profile, 0, 500, 30, 0); |
| 47 rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1; | 47 rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1; |
| 48 rate_profile.num_frames = kNumFramesShort; | 48 rate_profile.num_frames = kNumFramesShort; |
| 49 // Codec/network settings. | 49 // Codec/network settings. |
| 50 ProcessParams process_settings(kHwCodec, kUseSingleCore, 0.0f, -1, | 50 SetProcessParams(&config_, kHwCodec, kUseSingleCore, 0.0f, -1, kForemanCif, |
| 51 kForemanCif, kVerboseLogging, kBatchMode); | 51 kVerboseLogging, kBatchMode); |
| 52 SetCodecSettings(&config_, &codec_settings_, kVideoCodecH264, 1, false, false, | 52 SetCodecSettings(&config_, &codec_settings_, kVideoCodecH264, 1, false, false, |
| 53 true, false, kResilienceOn, kCifWidth, kCifHeight); | 53 true, false, kResilienceOn, kCifWidth, kCifHeight); |
| 54 // Thresholds for expected quality. | 54 // Thresholds for expected quality. |
| 55 QualityThresholds quality_thresholds; | 55 QualityThresholds quality_thresholds(35.0, 25.0, 0.93, 0.70); |
| 56 SetQualityThresholds(&quality_thresholds, 35.0, 25.0, 0.93, 0.70); | |
| 57 // Thresholds for rate control. | 56 // Thresholds for rate control. |
| 58 RateControlThresholds rc_thresholds[1]; | 57 RateControlThresholds rc_thresholds[1]; |
| 59 SetRateControlThresholds(rc_thresholds, 0, 2, 60, 20, 10, 20, 0, 1); | 58 SetRateControlThresholds(rc_thresholds, 0, 2, 60, 20, 10, 20, 0, 1); |
| 60 ProcessFramesAndVerify(quality_thresholds, rate_profile, process_settings, | 59 ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds, |
| 61 rc_thresholds, nullptr /* visualization_params */); | 60 nullptr /* visualization_params */); |
| 62 } | 61 } |
| 63 | 62 |
| 64 #endif // defined(WEBRTC_VIDEOPROCESSOR_H264_TESTS) | 63 #endif // defined(WEBRTC_VIDEOPROCESSOR_H264_TESTS) |
| 65 | 64 |
| 66 // Fails on iOS. See webrtc:4755. | 65 // Fails on iOS. See webrtc:4755. |
| 67 #if !defined(WEBRTC_IOS) | 66 #if !defined(WEBRTC_IOS) |
| 68 | 67 |
| 69 #if !defined(RTC_DISABLE_VP9) | 68 #if !defined(RTC_DISABLE_VP9) |
| 70 // VP9: Run with no packet loss and fixed bitrate. Quality should be very high. | 69 // VP9: Run with no packet loss and fixed bitrate. Quality should be very high. |
| 71 // One key frame (first frame only) in sequence. Setting |key_frame_interval| | 70 // One key frame (first frame only) in sequence. Setting |key_frame_interval| |
| 72 // to -1 below means no periodic key frames in test. | 71 // to -1 below means no periodic key frames in test. |
| 73 TEST_F(VideoProcessorIntegrationTest, Process0PercentPacketLossVP9) { | 72 TEST_F(VideoProcessorIntegrationTest, Process0PercentPacketLossVP9) { |
| 74 // Bit rate and frame rate profile. | 73 // Bit rate and frame rate profile. |
| 75 RateProfile rate_profile; | 74 RateProfile rate_profile; |
| 76 SetRateProfile(&rate_profile, 0, 500, 30, 0); | 75 SetRateProfile(&rate_profile, 0, 500, 30, 0); |
| 77 rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1; | 76 rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1; |
| 78 rate_profile.num_frames = kNumFramesShort; | 77 rate_profile.num_frames = kNumFramesShort; |
| 79 // Codec/network settings. | 78 // Codec/network settings. |
| 80 ProcessParams process_settings(kHwCodec, kUseSingleCore, 0.0f, -1, | 79 SetProcessParams(&config_, kHwCodec, kUseSingleCore, 0.0f, -1, kForemanCif, |
| 81 kForemanCif, kVerboseLogging, kBatchMode); | 80 kVerboseLogging, kBatchMode); |
| 82 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP9, 1, false, false, | 81 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP9, 1, false, false, |
| 83 true, false, kResilienceOn, kCifWidth, kCifHeight); | 82 true, false, kResilienceOn, kCifWidth, kCifHeight); |
| 84 // Thresholds for expected quality. | 83 // Thresholds for expected quality. |
| 85 QualityThresholds quality_thresholds; | 84 QualityThresholds quality_thresholds(37.0, 36.0, 0.93, 0.92); |
| 86 SetQualityThresholds(&quality_thresholds, 37.0, 36.0, 0.93, 0.92); | |
| 87 // Thresholds for rate control. | 85 // Thresholds for rate control. |
| 88 RateControlThresholds rc_thresholds[1]; | 86 RateControlThresholds rc_thresholds[1]; |
| 89 SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 20, 0, 1); | 87 SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 20, 0, 1); |
| 90 ProcessFramesAndVerify(quality_thresholds, rate_profile, process_settings, | 88 ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds, |
| 91 rc_thresholds, nullptr /* visualization_params */); | 89 nullptr /* visualization_params */); |
| 92 } | 90 } |
| 93 | 91 |
| 94 // VP9: Run with 5% packet loss and fixed bitrate. Quality should be a bit | 92 // VP9: Run with 5% packet loss and fixed bitrate. Quality should be a bit |
| 95 // lower. One key frame (first frame only) in sequence. | 93 // lower. One key frame (first frame only) in sequence. |
| 96 TEST_F(VideoProcessorIntegrationTest, Process5PercentPacketLossVP9) { | 94 TEST_F(VideoProcessorIntegrationTest, Process5PercentPacketLossVP9) { |
| 97 // Bit rate and frame rate profile. | 95 // Bit rate and frame rate profile. |
| 98 RateProfile rate_profile; | 96 RateProfile rate_profile; |
| 99 SetRateProfile(&rate_profile, 0, 500, 30, 0); | 97 SetRateProfile(&rate_profile, 0, 500, 30, 0); |
| 100 rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1; | 98 rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1; |
| 101 rate_profile.num_frames = kNumFramesShort; | 99 rate_profile.num_frames = kNumFramesShort; |
| 102 // Codec/network settings. | 100 // Codec/network settings. |
| 103 ProcessParams process_settings(kHwCodec, kUseSingleCore, 0.05f, -1, | 101 SetProcessParams(&config_, kHwCodec, kUseSingleCore, 0.05f, -1, kForemanCif, |
| 104 kForemanCif, kVerboseLogging, kBatchMode); | 102 kVerboseLogging, kBatchMode); |
| 105 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP9, 1, false, false, | 103 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP9, 1, false, false, |
| 106 true, false, kResilienceOn, kCifWidth, kCifHeight); | 104 true, false, kResilienceOn, kCifWidth, kCifHeight); |
| 107 // Thresholds for expected quality. | 105 // Thresholds for expected quality. |
| 108 QualityThresholds quality_thresholds; | 106 QualityThresholds quality_thresholds(17.0, 14.0, 0.45, 0.36); |
| 109 SetQualityThresholds(&quality_thresholds, 17.0, 14.0, 0.45, 0.36); | |
| 110 // Thresholds for rate control. | 107 // Thresholds for rate control. |
| 111 RateControlThresholds rc_thresholds[1]; | 108 RateControlThresholds rc_thresholds[1]; |
| 112 SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 20, 0, 1); | 109 SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 20, 0, 1); |
| 113 ProcessFramesAndVerify(quality_thresholds, rate_profile, process_settings, | 110 ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds, |
| 114 rc_thresholds, nullptr /* visualization_params */); | 111 nullptr /* visualization_params */); |
| 115 } | 112 } |
| 116 | 113 |
| 117 // VP9: Run with no packet loss, with varying bitrate (3 rate updates): | 114 // VP9: Run with no packet loss, with varying bitrate (3 rate updates): |
| 118 // low to high to medium. Check that quality and encoder response to the new | 115 // low to high to medium. Check that quality and encoder response to the new |
| 119 // target rate/per-frame bandwidth (for each rate update) is within limits. | 116 // target rate/per-frame bandwidth (for each rate update) is within limits. |
| 120 // One key frame (first frame only) in sequence. | 117 // One key frame (first frame only) in sequence. |
| 121 TEST_F(VideoProcessorIntegrationTest, ProcessNoLossChangeBitRateVP9) { | 118 TEST_F(VideoProcessorIntegrationTest, ProcessNoLossChangeBitRateVP9) { |
| 122 // Bit rate and frame rate profile. | 119 // Bit rate and frame rate profile. |
| 123 RateProfile rate_profile; | 120 RateProfile rate_profile; |
| 124 SetRateProfile(&rate_profile, 0, 200, 30, 0); | 121 SetRateProfile(&rate_profile, 0, 200, 30, 0); |
| 125 SetRateProfile(&rate_profile, 1, 700, 30, 100); | 122 SetRateProfile(&rate_profile, 1, 700, 30, 100); |
| 126 SetRateProfile(&rate_profile, 2, 500, 30, 200); | 123 SetRateProfile(&rate_profile, 2, 500, 30, 200); |
| 127 rate_profile.frame_index_rate_update[3] = kNumFramesLong + 1; | 124 rate_profile.frame_index_rate_update[3] = kNumFramesLong + 1; |
| 128 rate_profile.num_frames = kNumFramesLong; | 125 rate_profile.num_frames = kNumFramesLong; |
| 129 // Codec/network settings. | 126 // Codec/network settings. |
| 130 ProcessParams process_settings(kHwCodec, kUseSingleCore, 0.0f, -1, | 127 SetProcessParams(&config_, kHwCodec, kUseSingleCore, 0.0f, -1, kForemanCif, |
| 131 kForemanCif, kVerboseLogging, kBatchMode); | 128 kVerboseLogging, kBatchMode); |
| 132 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP9, 1, false, false, | 129 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP9, 1, false, false, |
| 133 true, false, kResilienceOn, kCifWidth, kCifHeight); | 130 true, false, kResilienceOn, kCifWidth, kCifHeight); |
| 134 // Thresholds for expected quality. | 131 // Thresholds for expected quality. |
| 135 QualityThresholds quality_thresholds; | 132 QualityThresholds quality_thresholds(35.5, 30.0, 0.90, 0.85); |
| 136 SetQualityThresholds(&quality_thresholds, 35.5, 30.0, 0.90, 0.85); | |
| 137 // Thresholds for rate control. | 133 // Thresholds for rate control. |
| 138 RateControlThresholds rc_thresholds[3]; | 134 RateControlThresholds rc_thresholds[3]; |
| 139 SetRateControlThresholds(rc_thresholds, 0, 0, 30, 20, 20, 35, 0, 1); | 135 SetRateControlThresholds(rc_thresholds, 0, 0, 30, 20, 20, 35, 0, 1); |
| 140 SetRateControlThresholds(rc_thresholds, 1, 2, 0, 20, 20, 60, 0, 0); | 136 SetRateControlThresholds(rc_thresholds, 1, 2, 0, 20, 20, 60, 0, 0); |
| 141 SetRateControlThresholds(rc_thresholds, 2, 0, 0, 25, 20, 40, 0, 0); | 137 SetRateControlThresholds(rc_thresholds, 2, 0, 0, 25, 20, 40, 0, 0); |
| 142 ProcessFramesAndVerify(quality_thresholds, rate_profile, process_settings, | 138 ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds, |
| 143 rc_thresholds, nullptr /* visualization_params */); | 139 nullptr /* visualization_params */); |
| 144 } | 140 } |
| 145 | 141 |
| 146 // VP9: Run with no packet loss, with an update (decrease) in frame rate. | 142 // VP9: Run with no packet loss, with an update (decrease) in frame rate. |
| 147 // Lower frame rate means higher per-frame-bandwidth, so easier to encode. | 143 // Lower frame rate means higher per-frame-bandwidth, so easier to encode. |
| 148 // At the low bitrate in this test, this means better rate control after the | 144 // At the low bitrate in this test, this means better rate control after the |
| 149 // update(s) to lower frame rate. So expect less frame drops, and max values | 145 // update(s) to lower frame rate. So expect less frame drops, and max values |
| 150 // for the rate control metrics can be lower. One key frame (first frame only). | 146 // for the rate control metrics can be lower. One key frame (first frame only). |
| 151 // Note: quality after update should be higher but we currently compute quality | 147 // Note: quality after update should be higher but we currently compute quality |
| 152 // metrics averaged over whole sequence run. | 148 // metrics averaged over whole sequence run. |
| 153 TEST_F(VideoProcessorIntegrationTest, | 149 TEST_F(VideoProcessorIntegrationTest, |
| 154 ProcessNoLossChangeFrameRateFrameDropVP9) { | 150 ProcessNoLossChangeFrameRateFrameDropVP9) { |
| 155 config_.networking_config.packet_loss_probability = 0; | 151 config_.networking_config.packet_loss_probability = 0; |
| 156 // Bit rate and frame rate profile. | 152 // Bit rate and frame rate profile. |
| 157 RateProfile rate_profile; | 153 RateProfile rate_profile; |
| 158 SetRateProfile(&rate_profile, 0, 100, 24, 0); | 154 SetRateProfile(&rate_profile, 0, 100, 24, 0); |
| 159 SetRateProfile(&rate_profile, 1, 100, 15, 100); | 155 SetRateProfile(&rate_profile, 1, 100, 15, 100); |
| 160 SetRateProfile(&rate_profile, 2, 100, 10, 200); | 156 SetRateProfile(&rate_profile, 2, 100, 10, 200); |
| 161 rate_profile.frame_index_rate_update[3] = kNumFramesLong + 1; | 157 rate_profile.frame_index_rate_update[3] = kNumFramesLong + 1; |
| 162 rate_profile.num_frames = kNumFramesLong; | 158 rate_profile.num_frames = kNumFramesLong; |
| 163 // Codec/network settings. | 159 // Codec/network settings. |
| 164 ProcessParams process_settings(kHwCodec, kUseSingleCore, 0.0f, -1, | 160 SetProcessParams(&config_, kHwCodec, kUseSingleCore, 0.0f, -1, kForemanCif, |
| 165 kForemanCif, kVerboseLogging, kBatchMode); | 161 kVerboseLogging, kBatchMode); |
| 166 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP9, 1, false, false, | 162 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP9, 1, false, false, |
| 167 true, false, kResilienceOn, kCifWidth, kCifHeight); | 163 true, false, kResilienceOn, kCifWidth, kCifHeight); |
| 168 // Thresholds for expected quality. | 164 // Thresholds for expected quality. |
| 169 QualityThresholds quality_thresholds; | 165 QualityThresholds quality_thresholds(31.5, 18.0, 0.80, 0.43); |
| 170 SetQualityThresholds(&quality_thresholds, 31.5, 18.0, 0.80, 0.43); | |
| 171 // Thresholds for rate control. | 166 // Thresholds for rate control. |
| 172 RateControlThresholds rc_thresholds[3]; | 167 RateControlThresholds rc_thresholds[3]; |
| 173 SetRateControlThresholds(rc_thresholds, 0, 45, 50, 95, 15, 45, 0, 1); | 168 SetRateControlThresholds(rc_thresholds, 0, 45, 50, 95, 15, 45, 0, 1); |
| 174 SetRateControlThresholds(rc_thresholds, 1, 20, 0, 50, 10, 30, 0, 0); | 169 SetRateControlThresholds(rc_thresholds, 1, 20, 0, 50, 10, 30, 0, 0); |
| 175 SetRateControlThresholds(rc_thresholds, 2, 5, 0, 30, 5, 25, 0, 0); | 170 SetRateControlThresholds(rc_thresholds, 2, 5, 0, 30, 5, 25, 0, 0); |
| 176 ProcessFramesAndVerify(quality_thresholds, rate_profile, process_settings, | 171 ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds, |
| 177 rc_thresholds, nullptr /* visualization_params */); | 172 nullptr /* visualization_params */); |
| 178 } | 173 } |
| 179 | 174 |
| 180 // VP9: Run with no packet loss and denoiser on. One key frame (first frame). | 175 // VP9: Run with no packet loss and denoiser on. One key frame (first frame). |
| 181 TEST_F(VideoProcessorIntegrationTest, ProcessNoLossDenoiserOnVP9) { | 176 TEST_F(VideoProcessorIntegrationTest, ProcessNoLossDenoiserOnVP9) { |
| 182 // Bit rate and frame rate profile. | 177 // Bit rate and frame rate profile. |
| 183 RateProfile rate_profile; | 178 RateProfile rate_profile; |
| 184 SetRateProfile(&rate_profile, 0, 500, 30, 0); | 179 SetRateProfile(&rate_profile, 0, 500, 30, 0); |
| 185 rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1; | 180 rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1; |
| 186 rate_profile.num_frames = kNumFramesShort; | 181 rate_profile.num_frames = kNumFramesShort; |
| 187 // Codec/network settings. | 182 // Codec/network settings. |
| 188 ProcessParams process_settings(kHwCodec, kUseSingleCore, 0.0f, -1, | 183 SetProcessParams(&config_, kHwCodec, kUseSingleCore, 0.0f, -1, kForemanCif, |
| 189 kForemanCif, kVerboseLogging, kBatchMode); | 184 kVerboseLogging, kBatchMode); |
| 190 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP9, 1, false, true, | 185 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP9, 1, false, true, |
| 191 true, false, kResilienceOn, kCifWidth, kCifHeight); | 186 true, false, kResilienceOn, kCifWidth, kCifHeight); |
| 192 // Thresholds for expected quality. | 187 // Thresholds for expected quality. |
| 193 QualityThresholds quality_thresholds; | 188 QualityThresholds quality_thresholds(36.8, 35.8, 0.92, 0.91); |
| 194 SetQualityThresholds(&quality_thresholds, 36.8, 35.8, 0.92, 0.91); | |
| 195 // Thresholds for rate control. | 189 // Thresholds for rate control. |
| 196 RateControlThresholds rc_thresholds[1]; | 190 RateControlThresholds rc_thresholds[1]; |
| 197 SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 20, 0, 1); | 191 SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 20, 0, 1); |
| 198 ProcessFramesAndVerify(quality_thresholds, rate_profile, process_settings, | 192 ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds, |
| 199 rc_thresholds, nullptr /* visualization_params */); | 193 nullptr /* visualization_params */); |
| 200 } | 194 } |
| 201 | 195 |
| 202 // Run with no packet loss, at low bitrate. | 196 // Run with no packet loss, at low bitrate. |
| 203 // spatial_resize is on, for this low bitrate expect one resize in sequence. | 197 // spatial_resize is on, for this low bitrate expect one resize in sequence. |
| 204 // Resize happens on delta frame. Expect only one key frame (first frame). | 198 // Resize happens on delta frame. Expect only one key frame (first frame). |
| 205 TEST_F(VideoProcessorIntegrationTest, | 199 TEST_F(VideoProcessorIntegrationTest, |
| 206 DISABLED_ProcessNoLossSpatialResizeFrameDropVP9) { | 200 DISABLED_ProcessNoLossSpatialResizeFrameDropVP9) { |
| 207 config_.networking_config.packet_loss_probability = 0; | 201 config_.networking_config.packet_loss_probability = 0; |
| 208 // Bit rate and frame rate profile. | 202 // Bit rate and frame rate profile. |
| 209 RateProfile rate_profile; | 203 RateProfile rate_profile; |
| 210 SetRateProfile(&rate_profile, 0, 50, 30, 0); | 204 SetRateProfile(&rate_profile, 0, 50, 30, 0); |
| 211 rate_profile.frame_index_rate_update[1] = kNumFramesLong + 1; | 205 rate_profile.frame_index_rate_update[1] = kNumFramesLong + 1; |
| 212 rate_profile.num_frames = kNumFramesLong; | 206 rate_profile.num_frames = kNumFramesLong; |
| 213 // Codec/network settings. | 207 // Codec/network settings. |
| 214 ProcessParams process_settings(kHwCodec, kUseSingleCore, 0.0f, -1, | 208 SetProcessParams(&config_, kHwCodec, kUseSingleCore, 0.0f, -1, kForemanCif, |
| 215 kForemanCif, kVerboseLogging, kBatchMode); | 209 kVerboseLogging, kBatchMode); |
| 216 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP9, 1, false, false, | 210 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP9, 1, false, false, |
| 217 true, true, kResilienceOn, kCifWidth, kCifHeight); | 211 true, true, kResilienceOn, kCifWidth, kCifHeight); |
| 218 // Thresholds for expected quality. | 212 // Thresholds for expected quality. |
| 219 QualityThresholds quality_thresholds; | 213 QualityThresholds quality_thresholds(24.0, 13.0, 0.65, 0.37); |
| 220 SetQualityThresholds(&quality_thresholds, 24.0, 13.0, 0.65, 0.37); | |
| 221 // Thresholds for rate control. | 214 // Thresholds for rate control. |
| 222 RateControlThresholds rc_thresholds[1]; | 215 RateControlThresholds rc_thresholds[1]; |
| 223 SetRateControlThresholds(rc_thresholds, 0, 228, 70, 160, 15, 80, 1, 1); | 216 SetRateControlThresholds(rc_thresholds, 0, 228, 70, 160, 15, 80, 1, 1); |
| 224 ProcessFramesAndVerify(quality_thresholds, rate_profile, process_settings, | 217 ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds, |
| 225 rc_thresholds, nullptr /* visualization_params */); | 218 nullptr /* visualization_params */); |
| 226 } | 219 } |
| 227 | 220 |
| 228 // TODO(marpan): Add temporal layer test for VP9, once changes are in | 221 // TODO(marpan): Add temporal layer test for VP9, once changes are in |
| 229 // vp9 wrapper for this. | 222 // vp9 wrapper for this. |
| 230 | 223 |
| 231 #endif // !defined(RTC_DISABLE_VP9) | 224 #endif // !defined(RTC_DISABLE_VP9) |
| 232 | 225 |
| 233 // VP8: Run with no packet loss and fixed bitrate. Quality should be very high. | 226 // VP8: Run with no packet loss and fixed bitrate. Quality should be very high. |
| 234 // One key frame (first frame only) in sequence. Setting |key_frame_interval| | 227 // One key frame (first frame only) in sequence. Setting |key_frame_interval| |
| 235 // to -1 below means no periodic key frames in test. | 228 // to -1 below means no periodic key frames in test. |
| 236 TEST_F(VideoProcessorIntegrationTest, ProcessZeroPacketLoss) { | 229 TEST_F(VideoProcessorIntegrationTest, ProcessZeroPacketLoss) { |
| 237 // Bit rate and frame rate profile. | 230 // Bit rate and frame rate profile. |
| 238 RateProfile rate_profile; | 231 RateProfile rate_profile; |
| 239 SetRateProfile(&rate_profile, 0, 500, 30, 0); | 232 SetRateProfile(&rate_profile, 0, 500, 30, 0); |
| 240 rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1; | 233 rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1; |
| 241 rate_profile.num_frames = kNumFramesShort; | 234 rate_profile.num_frames = kNumFramesShort; |
| 242 // Codec/network settings. | 235 // Codec/network settings. |
| 243 ProcessParams process_settings(kHwCodec, kUseSingleCore, 0.0f, -1, | 236 SetProcessParams(&config_, kHwCodec, kUseSingleCore, 0.0f, -1, kForemanCif, |
| 244 kForemanCif, kVerboseLogging, kBatchMode); | 237 kVerboseLogging, kBatchMode); |
| 245 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP8, 1, false, true, | 238 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP8, 1, false, true, |
| 246 true, false, kResilienceOn, kCifWidth, kCifHeight); | 239 true, false, kResilienceOn, kCifWidth, kCifHeight); |
| 247 // Thresholds for expected quality. | 240 // Thresholds for expected quality. |
| 248 QualityThresholds quality_thresholds; | 241 QualityThresholds quality_thresholds(34.95, 33.0, 0.90, 0.89); |
| 249 SetQualityThresholds(&quality_thresholds, 34.95, 33.0, 0.90, 0.89); | |
| 250 // Thresholds for rate control. | 242 // Thresholds for rate control. |
| 251 RateControlThresholds rc_thresholds[1]; | 243 RateControlThresholds rc_thresholds[1]; |
| 252 SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 15, 0, 1); | 244 SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 15, 0, 1); |
| 253 ProcessFramesAndVerify(quality_thresholds, rate_profile, process_settings, | 245 ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds, |
| 254 rc_thresholds, nullptr /* visualization_params */); | 246 nullptr /* visualization_params */); |
| 255 } | 247 } |
| 256 | 248 |
| 257 // VP8: Run with 5% packet loss and fixed bitrate. Quality should be a bit | 249 // VP8: Run with 5% packet loss and fixed bitrate. Quality should be a bit |
| 258 // lower. One key frame (first frame only) in sequence. | 250 // lower. One key frame (first frame only) in sequence. |
| 259 TEST_F(VideoProcessorIntegrationTest, Process5PercentPacketLoss) { | 251 TEST_F(VideoProcessorIntegrationTest, Process5PercentPacketLoss) { |
| 260 // Bit rate and frame rate profile. | 252 // Bit rate and frame rate profile. |
| 261 RateProfile rate_profile; | 253 RateProfile rate_profile; |
| 262 SetRateProfile(&rate_profile, 0, 500, 30, 0); | 254 SetRateProfile(&rate_profile, 0, 500, 30, 0); |
| 263 rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1; | 255 rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1; |
| 264 rate_profile.num_frames = kNumFramesShort; | 256 rate_profile.num_frames = kNumFramesShort; |
| 265 // Codec/network settings. | 257 // Codec/network settings. |
| 266 ProcessParams process_settings(kHwCodec, kUseSingleCore, 0.05f, -1, | 258 SetProcessParams(&config_, kHwCodec, kUseSingleCore, 0.05f, -1, kForemanCif, |
| 267 kForemanCif, kVerboseLogging, kBatchMode); | 259 kVerboseLogging, kBatchMode); |
| 268 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP8, 1, false, true, | 260 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP8, 1, false, true, |
| 269 true, false, kResilienceOn, kCifWidth, kCifHeight); | 261 true, false, kResilienceOn, kCifWidth, kCifHeight); |
| 270 // Thresholds for expected quality. | 262 // Thresholds for expected quality. |
| 271 QualityThresholds quality_thresholds; | 263 QualityThresholds quality_thresholds(20.0, 16.0, 0.60, 0.40); |
| 272 SetQualityThresholds(&quality_thresholds, 20.0, 16.0, 0.60, 0.40); | |
| 273 // Thresholds for rate control. | 264 // Thresholds for rate control. |
| 274 RateControlThresholds rc_thresholds[1]; | 265 RateControlThresholds rc_thresholds[1]; |
| 275 SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 15, 0, 1); | 266 SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 15, 0, 1); |
| 276 ProcessFramesAndVerify(quality_thresholds, rate_profile, process_settings, | 267 ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds, |
| 277 rc_thresholds, nullptr /* visualization_params */); | 268 nullptr /* visualization_params */); |
| 278 } | 269 } |
| 279 | 270 |
| 280 // VP8: Run with 10% packet loss and fixed bitrate. Quality should be lower. | 271 // VP8: Run with 10% packet loss and fixed bitrate. Quality should be lower. |
| 281 // One key frame (first frame only) in sequence. | 272 // One key frame (first frame only) in sequence. |
| 282 TEST_F(VideoProcessorIntegrationTest, Process10PercentPacketLoss) { | 273 TEST_F(VideoProcessorIntegrationTest, Process10PercentPacketLoss) { |
| 283 // Bit rate and frame rate profile. | 274 // Bit rate and frame rate profile. |
| 284 RateProfile rate_profile; | 275 RateProfile rate_profile; |
| 285 SetRateProfile(&rate_profile, 0, 500, 30, 0); | 276 SetRateProfile(&rate_profile, 0, 500, 30, 0); |
| 286 rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1; | 277 rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1; |
| 287 rate_profile.num_frames = kNumFramesShort; | 278 rate_profile.num_frames = kNumFramesShort; |
| 288 // Codec/network settings. | 279 // Codec/network settings. |
| 289 ProcessParams process_settings(kHwCodec, kUseSingleCore, 0.1f, -1, | 280 SetProcessParams(&config_, kHwCodec, kUseSingleCore, 0.1f, -1, kForemanCif, |
| 290 kForemanCif, kVerboseLogging, kBatchMode); | 281 kVerboseLogging, kBatchMode); |
| 291 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP8, 1, false, true, | 282 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP8, 1, false, true, |
| 292 true, false, kResilienceOn, kCifWidth, kCifHeight); | 283 true, false, kResilienceOn, kCifWidth, kCifHeight); |
| 293 // Thresholds for expected quality. | 284 // Thresholds for expected quality. |
| 294 QualityThresholds quality_thresholds; | 285 QualityThresholds quality_thresholds(19.0, 16.0, 0.50, 0.35); |
| 295 SetQualityThresholds(&quality_thresholds, 19.0, 16.0, 0.50, 0.35); | |
| 296 // Thresholds for rate control. | 286 // Thresholds for rate control. |
| 297 RateControlThresholds rc_thresholds[1]; | 287 RateControlThresholds rc_thresholds[1]; |
| 298 SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 15, 0, 1); | 288 SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 15, 0, 1); |
| 299 ProcessFramesAndVerify(quality_thresholds, rate_profile, process_settings, | 289 ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds, |
| 300 rc_thresholds, nullptr /* visualization_params */); | 290 nullptr /* visualization_params */); |
| 301 } | 291 } |
| 302 | 292 |
| 303 // This test is identical to VideoProcessorIntegrationTest.ProcessZeroPacketLoss | 293 // This test is identical to VideoProcessorIntegrationTest.ProcessZeroPacketLoss |
| 304 // except that |batch_mode| is turned on. The main point of this test is to see | 294 // except that |batch_mode| is turned on. The main point of this test is to see |
| 305 // that the reported stats are not wildly varying between batch mode and the | 295 // that the reported stats are not wildly varying between batch mode and the |
| 306 // regular online mode. | 296 // regular online mode. |
| 307 TEST_F(VideoProcessorIntegrationTest, ProcessInBatchMode) { | 297 TEST_F(VideoProcessorIntegrationTest, ProcessInBatchMode) { |
| 308 // Bit rate and frame rate profile. | 298 // Bit rate and frame rate profile. |
| 309 RateProfile rate_profile; | 299 RateProfile rate_profile; |
| 310 SetRateProfile(&rate_profile, 0, 500, 30, 0); | 300 SetRateProfile(&rate_profile, 0, 500, 30, 0); |
| 311 rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1; | 301 rate_profile.frame_index_rate_update[1] = kNumFramesShort + 1; |
| 312 rate_profile.num_frames = kNumFramesShort; | 302 rate_profile.num_frames = kNumFramesShort; |
| 313 // Codec/network settings. | 303 // Codec/network settings. |
| 314 ProcessParams process_settings(kHwCodec, kUseSingleCore, 0.0f, -1, | 304 SetProcessParams(&config_, kHwCodec, kUseSingleCore, 0.0f, -1, kForemanCif, |
| 315 kForemanCif, kVerboseLogging, | 305 kVerboseLogging, true /* batch_mode */); |
| 316 true /* batch_mode */); | |
| 317 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP8, 1, false, true, | 306 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP8, 1, false, true, |
| 318 true, false, kResilienceOn, kCifWidth, kCifHeight); | 307 true, false, kResilienceOn, kCifWidth, kCifHeight); |
| 319 // Thresholds for expected quality. | 308 // Thresholds for expected quality. |
| 320 QualityThresholds quality_thresholds; | 309 QualityThresholds quality_thresholds(34.95, 33.0, 0.90, 0.89); |
| 321 SetQualityThresholds(&quality_thresholds, 34.95, 33.0, 0.90, 0.89); | |
| 322 // Thresholds for rate control. | 310 // Thresholds for rate control. |
| 323 RateControlThresholds rc_thresholds[1]; | 311 RateControlThresholds rc_thresholds[1]; |
| 324 SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 15, 0, 1); | 312 SetRateControlThresholds(rc_thresholds, 0, 0, 40, 20, 10, 15, 0, 1); |
| 325 ProcessFramesAndVerify(quality_thresholds, rate_profile, process_settings, | 313 ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds, |
| 326 rc_thresholds, nullptr /* visualization_params */); | 314 nullptr /* visualization_params */); |
| 327 } | 315 } |
| 328 | 316 |
| 329 #endif // !defined(WEBRTC_IOS) | 317 #endif // !defined(WEBRTC_IOS) |
| 330 | 318 |
| 331 // The tests below are currently disabled for Android. For ARM, the encoder | 319 // The tests below are currently disabled for Android. For ARM, the encoder |
| 332 // uses |cpu_speed| = 12, as opposed to default |cpu_speed| <= 6 for x86, | 320 // uses |cpu_speed| = 12, as opposed to default |cpu_speed| <= 6 for x86, |
| 333 // which leads to significantly different quality. The quality and rate control | 321 // which leads to significantly different quality. The quality and rate control |
| 334 // settings in the tests below are defined for encoder speed setting | 322 // settings in the tests below are defined for encoder speed setting |
| 335 // |cpu_speed| <= ~6. A number of settings would need to be significantly | 323 // |cpu_speed| <= ~6. A number of settings would need to be significantly |
| 336 // modified for the |cpu_speed| = 12 case. For now, keep the tests below | 324 // modified for the |cpu_speed| = 12 case. For now, keep the tests below |
| (...skipping 13 matching lines...) Expand all Loading... |
| 350 #endif | 338 #endif |
| 351 TEST_F(VideoProcessorIntegrationTest, MAYBE_ProcessNoLossChangeBitRateVP8) { | 339 TEST_F(VideoProcessorIntegrationTest, MAYBE_ProcessNoLossChangeBitRateVP8) { |
| 352 // Bit rate and frame rate profile. | 340 // Bit rate and frame rate profile. |
| 353 RateProfile rate_profile; | 341 RateProfile rate_profile; |
| 354 SetRateProfile(&rate_profile, 0, 200, 30, 0); | 342 SetRateProfile(&rate_profile, 0, 200, 30, 0); |
| 355 SetRateProfile(&rate_profile, 1, 800, 30, 100); | 343 SetRateProfile(&rate_profile, 1, 800, 30, 100); |
| 356 SetRateProfile(&rate_profile, 2, 500, 30, 200); | 344 SetRateProfile(&rate_profile, 2, 500, 30, 200); |
| 357 rate_profile.frame_index_rate_update[3] = kNumFramesLong + 1; | 345 rate_profile.frame_index_rate_update[3] = kNumFramesLong + 1; |
| 358 rate_profile.num_frames = kNumFramesLong; | 346 rate_profile.num_frames = kNumFramesLong; |
| 359 // Codec/network settings. | 347 // Codec/network settings. |
| 360 ProcessParams process_settings(kHwCodec, kUseSingleCore, 0.0f, -1, | 348 SetProcessParams(&config_, kHwCodec, kUseSingleCore, 0.0f, -1, kForemanCif, |
| 361 kForemanCif, kVerboseLogging, kBatchMode); | 349 kVerboseLogging, kBatchMode); |
| 362 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP8, 1, false, true, | 350 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP8, 1, false, true, |
| 363 true, false, kResilienceOn, kCifWidth, kCifHeight); | 351 true, false, kResilienceOn, kCifWidth, kCifHeight); |
| 364 // Thresholds for expected quality. | 352 // Thresholds for expected quality. |
| 365 QualityThresholds quality_thresholds; | 353 QualityThresholds quality_thresholds(34.0, 32.0, 0.85, 0.80); |
| 366 SetQualityThresholds(&quality_thresholds, 34.0, 32.0, 0.85, 0.80); | |
| 367 // Thresholds for rate control. | 354 // Thresholds for rate control. |
| 368 RateControlThresholds rc_thresholds[3]; | 355 RateControlThresholds rc_thresholds[3]; |
| 369 SetRateControlThresholds(rc_thresholds, 0, 0, 45, 20, 10, 15, 0, 1); | 356 SetRateControlThresholds(rc_thresholds, 0, 0, 45, 20, 10, 15, 0, 1); |
| 370 SetRateControlThresholds(rc_thresholds, 1, 0, 0, 25, 20, 10, 0, 0); | 357 SetRateControlThresholds(rc_thresholds, 1, 0, 0, 25, 20, 10, 0, 0); |
| 371 SetRateControlThresholds(rc_thresholds, 2, 0, 0, 25, 15, 10, 0, 0); | 358 SetRateControlThresholds(rc_thresholds, 2, 0, 0, 25, 15, 10, 0, 0); |
| 372 ProcessFramesAndVerify(quality_thresholds, rate_profile, process_settings, | 359 ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds, |
| 373 rc_thresholds, nullptr /* visualization_params */); | 360 nullptr /* visualization_params */); |
| 374 } | 361 } |
| 375 | 362 |
| 376 // VP8: Run with no packet loss, with an update (decrease) in frame rate. | 363 // VP8: Run with no packet loss, with an update (decrease) in frame rate. |
| 377 // Lower frame rate means higher per-frame-bandwidth, so easier to encode. | 364 // Lower frame rate means higher per-frame-bandwidth, so easier to encode. |
| 378 // At the bitrate in this test, this means better rate control after the | 365 // At the bitrate in this test, this means better rate control after the |
| 379 // update(s) to lower frame rate. So expect less frame drops, and max values | 366 // update(s) to lower frame rate. So expect less frame drops, and max values |
| 380 // for the rate control metrics can be lower. One key frame (first frame only). | 367 // for the rate control metrics can be lower. One key frame (first frame only). |
| 381 // Note: quality after update should be higher but we currently compute quality | 368 // Note: quality after update should be higher but we currently compute quality |
| 382 // metrics averaged over whole sequence run. | 369 // metrics averaged over whole sequence run. |
| 383 // Too slow to finish before timeout on iOS. See webrtc:4755. | 370 // Too slow to finish before timeout on iOS. See webrtc:4755. |
| 384 #if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS) | 371 #if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS) |
| 385 #define MAYBE_ProcessNoLossChangeFrameRateFrameDropVP8 \ | 372 #define MAYBE_ProcessNoLossChangeFrameRateFrameDropVP8 \ |
| 386 DISABLED_ProcessNoLossChangeFrameRateFrameDropVP8 | 373 DISABLED_ProcessNoLossChangeFrameRateFrameDropVP8 |
| 387 #else | 374 #else |
| 388 #define MAYBE_ProcessNoLossChangeFrameRateFrameDropVP8 \ | 375 #define MAYBE_ProcessNoLossChangeFrameRateFrameDropVP8 \ |
| 389 ProcessNoLossChangeFrameRateFrameDropVP8 | 376 ProcessNoLossChangeFrameRateFrameDropVP8 |
| 390 #endif | 377 #endif |
| 391 TEST_F(VideoProcessorIntegrationTest, | 378 TEST_F(VideoProcessorIntegrationTest, |
| 392 MAYBE_ProcessNoLossChangeFrameRateFrameDropVP8) { | 379 MAYBE_ProcessNoLossChangeFrameRateFrameDropVP8) { |
| 393 config_.networking_config.packet_loss_probability = 0; | 380 config_.networking_config.packet_loss_probability = 0; |
| 394 // Bit rate and frame rate profile. | 381 // Bit rate and frame rate profile. |
| 395 RateProfile rate_profile; | 382 RateProfile rate_profile; |
| 396 SetRateProfile(&rate_profile, 0, 80, 24, 0); | 383 SetRateProfile(&rate_profile, 0, 80, 24, 0); |
| 397 SetRateProfile(&rate_profile, 1, 80, 15, 100); | 384 SetRateProfile(&rate_profile, 1, 80, 15, 100); |
| 398 SetRateProfile(&rate_profile, 2, 80, 10, 200); | 385 SetRateProfile(&rate_profile, 2, 80, 10, 200); |
| 399 rate_profile.frame_index_rate_update[3] = kNumFramesLong + 1; | 386 rate_profile.frame_index_rate_update[3] = kNumFramesLong + 1; |
| 400 rate_profile.num_frames = kNumFramesLong; | 387 rate_profile.num_frames = kNumFramesLong; |
| 401 // Codec/network settings. | 388 // Codec/network settings. |
| 402 ProcessParams process_settings(kHwCodec, kUseSingleCore, 0.0f, -1, | 389 SetProcessParams(&config_, kHwCodec, kUseSingleCore, 0.0f, -1, kForemanCif, |
| 403 kForemanCif, kVerboseLogging, kBatchMode); | 390 kVerboseLogging, kBatchMode); |
| 404 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP8, 1, false, true, | 391 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP8, 1, false, true, |
| 405 true, false, kResilienceOn, kCifWidth, kCifHeight); | 392 true, false, kResilienceOn, kCifWidth, kCifHeight); |
| 406 // Thresholds for expected quality. | 393 // Thresholds for expected quality. |
| 407 QualityThresholds quality_thresholds; | 394 QualityThresholds quality_thresholds(31.0, 22.0, 0.80, 0.65); |
| 408 SetQualityThresholds(&quality_thresholds, 31.0, 22.0, 0.80, 0.65); | |
| 409 // Thresholds for rate control. | 395 // Thresholds for rate control. |
| 410 RateControlThresholds rc_thresholds[3]; | 396 RateControlThresholds rc_thresholds[3]; |
| 411 SetRateControlThresholds(rc_thresholds, 0, 40, 20, 75, 15, 60, 0, 1); | 397 SetRateControlThresholds(rc_thresholds, 0, 40, 20, 75, 15, 60, 0, 1); |
| 412 SetRateControlThresholds(rc_thresholds, 1, 10, 0, 25, 10, 35, 0, 0); | 398 SetRateControlThresholds(rc_thresholds, 1, 10, 0, 25, 10, 35, 0, 0); |
| 413 SetRateControlThresholds(rc_thresholds, 2, 0, 0, 20, 10, 15, 0, 0); | 399 SetRateControlThresholds(rc_thresholds, 2, 0, 0, 20, 10, 15, 0, 0); |
| 414 ProcessFramesAndVerify(quality_thresholds, rate_profile, process_settings, | 400 ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds, |
| 415 rc_thresholds, nullptr /* visualization_params */); | 401 nullptr /* visualization_params */); |
| 416 } | 402 } |
| 417 | 403 |
| 418 // VP8: Run with no packet loss, with 3 temporal layers, with a rate update in | 404 // VP8: Run with no packet loss, with 3 temporal layers, with a rate update in |
| 419 // the middle of the sequence. The max values for the frame size mismatch and | 405 // the middle of the sequence. The max values for the frame size mismatch and |
| 420 // encoding rate mismatch are applied to each layer. | 406 // encoding rate mismatch are applied to each layer. |
| 421 // No dropped frames in this test, and internal spatial resizer is off. | 407 // No dropped frames in this test, and internal spatial resizer is off. |
| 422 // One key frame (first frame only) in sequence, so no spatial resizing. | 408 // One key frame (first frame only) in sequence, so no spatial resizing. |
| 423 // Too slow to finish before timeout on iOS. See webrtc:4755. | 409 // Too slow to finish before timeout on iOS. See webrtc:4755. |
| 424 #if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS) | 410 #if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS) |
| 425 #define MAYBE_ProcessNoLossTemporalLayersVP8 \ | 411 #define MAYBE_ProcessNoLossTemporalLayersVP8 \ |
| 426 DISABLED_ProcessNoLossTemporalLayersVP8 | 412 DISABLED_ProcessNoLossTemporalLayersVP8 |
| 427 #else | 413 #else |
| 428 #define MAYBE_ProcessNoLossTemporalLayersVP8 ProcessNoLossTemporalLayersVP8 | 414 #define MAYBE_ProcessNoLossTemporalLayersVP8 ProcessNoLossTemporalLayersVP8 |
| 429 #endif | 415 #endif |
| 430 TEST_F(VideoProcessorIntegrationTest, MAYBE_ProcessNoLossTemporalLayersVP8) { | 416 TEST_F(VideoProcessorIntegrationTest, MAYBE_ProcessNoLossTemporalLayersVP8) { |
| 431 config_.networking_config.packet_loss_probability = 0; | 417 config_.networking_config.packet_loss_probability = 0; |
| 432 // Bit rate and frame rate profile. | 418 // Bit rate and frame rate profile. |
| 433 RateProfile rate_profile; | 419 RateProfile rate_profile; |
| 434 SetRateProfile(&rate_profile, 0, 200, 30, 0); | 420 SetRateProfile(&rate_profile, 0, 200, 30, 0); |
| 435 SetRateProfile(&rate_profile, 1, 400, 30, 150); | 421 SetRateProfile(&rate_profile, 1, 400, 30, 150); |
| 436 rate_profile.frame_index_rate_update[2] = kNumFramesLong + 1; | 422 rate_profile.frame_index_rate_update[2] = kNumFramesLong + 1; |
| 437 rate_profile.num_frames = kNumFramesLong; | 423 rate_profile.num_frames = kNumFramesLong; |
| 438 // Codec/network settings. | 424 // Codec/network settings. |
| 439 ProcessParams process_settings(kHwCodec, kUseSingleCore, 0.0f, -1, | 425 SetProcessParams(&config_, kHwCodec, kUseSingleCore, 0.0f, -1, kForemanCif, |
| 440 kForemanCif, kVerboseLogging, kBatchMode); | 426 kVerboseLogging, kBatchMode); |
| 441 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP8, 3, false, true, | 427 SetCodecSettings(&config_, &codec_settings_, kVideoCodecVP8, 3, false, true, |
| 442 true, false, kResilienceOn, kCifWidth, kCifHeight); | 428 true, false, kResilienceOn, kCifWidth, kCifHeight); |
| 443 // Thresholds for expected quality. | 429 // Thresholds for expected quality. |
| 444 QualityThresholds quality_thresholds; | 430 QualityThresholds quality_thresholds(32.5, 30.0, 0.85, 0.80); |
| 445 SetQualityThresholds(&quality_thresholds, 32.5, 30.0, 0.85, 0.80); | |
| 446 // Thresholds for rate control. | 431 // Thresholds for rate control. |
| 447 RateControlThresholds rc_thresholds[2]; | 432 RateControlThresholds rc_thresholds[2]; |
| 448 SetRateControlThresholds(rc_thresholds, 0, 0, 20, 30, 10, 10, 0, 1); | 433 SetRateControlThresholds(rc_thresholds, 0, 0, 20, 30, 10, 10, 0, 1); |
| 449 SetRateControlThresholds(rc_thresholds, 1, 0, 0, 30, 15, 10, 0, 0); | 434 SetRateControlThresholds(rc_thresholds, 1, 0, 0, 30, 15, 10, 0, 0); |
| 450 ProcessFramesAndVerify(quality_thresholds, rate_profile, process_settings, | 435 ProcessFramesAndVerify(quality_thresholds, rate_profile, rc_thresholds, |
| 451 rc_thresholds, nullptr /* visualization_params */); | 436 nullptr /* visualization_params */); |
| 452 } | 437 } |
| 453 } // namespace test | 438 } // namespace test |
| 454 } // namespace webrtc | 439 } // namespace webrtc |
| OLD | NEW |