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

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

Issue 2706753005: Make use_single_core option configurable in VideoProcessorIntegrationTests. (Closed)
Patch Set: Created 3 years, 10 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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 56
57 // Default sequence is foreman (CIF): may be better to use VGA for resize test. 57 // Default sequence is foreman (CIF): may be better to use VGA for resize test.
58 const int kCifWidth = 352; 58 const int kCifWidth = 352;
59 const int kCifHeight = 288; 59 const int kCifHeight = 288;
60 const char kFilenameForemanCif[] = "foreman_cif"; 60 const char kFilenameForemanCif[] = "foreman_cif";
61 61
62 // Codec and network settings. 62 // Codec and network settings.
63 struct CodecConfigPars { 63 struct CodecConfigPars {
64 VideoCodecType codec_type; 64 VideoCodecType codec_type;
65 bool hw_codec; 65 bool hw_codec;
66 bool use_single_core;
66 float packet_loss; 67 float packet_loss;
67 int num_temporal_layers; 68 int num_temporal_layers;
68 int key_frame_interval; 69 int key_frame_interval;
69 bool error_concealment_on; 70 bool error_concealment_on;
70 bool denoising_on; 71 bool denoising_on;
71 bool frame_dropper_on; 72 bool frame_dropper_on;
72 bool spatial_resize_on; 73 bool spatial_resize_on;
73 int width; 74 int width;
74 int height; 75 int height;
75 std::string filename; 76 std::string filename;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 InitializeAndroidObjects(); 136 InitializeAndroidObjects();
136 137
137 external_encoder_factory_.reset( 138 external_encoder_factory_.reset(
138 new webrtc_jni::MediaCodecVideoEncoderFactory()); 139 new webrtc_jni::MediaCodecVideoEncoderFactory());
139 external_decoder_factory_.reset( 140 external_decoder_factory_.reset(
140 new webrtc_jni::MediaCodecVideoDecoderFactory()); 141 new webrtc_jni::MediaCodecVideoDecoderFactory());
141 #endif 142 #endif
142 } 143 }
143 virtual ~VideoProcessorIntegrationTest() = default; 144 virtual ~VideoProcessorIntegrationTest() = default;
144 145
145 void SetUpCodecConfig(const std::string& filename, 146 void SetUpCodecConfig(const CodecConfigPars& process) {
146 int width,
147 int height,
148 bool verbose_logging) {
149 if (hw_codec_) { 147 if (hw_codec_) {
150 #if defined(WEBRTC_VIDEOPROCESSOR_INTEGRATIONTEST_HW_CODECS_ENABLED) 148 #if defined(WEBRTC_VIDEOPROCESSOR_INTEGRATIONTEST_HW_CODECS_ENABLED)
151 #if defined(WEBRTC_ANDROID) 149 #if defined(WEBRTC_ANDROID)
152 // In general, external codecs should be destroyed by the factories that 150 // In general, external codecs should be destroyed by the factories that
153 // allocated them. For the particular case of the Android 151 // allocated them. For the particular case of the Android
154 // MediaCodecVideo{En,De}coderFactory's, however, it turns out that it is 152 // MediaCodecVideo{En,De}coderFactory's, however, it turns out that it is
155 // fine for the std::unique_ptr to destroy the owned codec directly. 153 // fine for the std::unique_ptr to destroy the owned codec directly.
156 if (codec_type_ == kVideoCodecH264) { 154 if (codec_type_ == kVideoCodecH264) {
157 encoder_.reset(external_encoder_factory_->CreateVideoEncoder( 155 encoder_.reset(external_encoder_factory_->CreateVideoEncoder(
158 cricket::VideoCodec(cricket::kH264CodecName))); 156 cricket::VideoCodec(cricket::kH264CodecName)));
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 decoder_.reset(VP8Decoder::Create()); 190 decoder_.reset(VP8Decoder::Create());
193 } else if (codec_type_ == kVideoCodecVP9) { 191 } else if (codec_type_ == kVideoCodecVP9) {
194 encoder_.reset(VP9Encoder::Create()); 192 encoder_.reset(VP9Encoder::Create());
195 decoder_.reset(VP9Decoder::Create()); 193 decoder_.reset(VP9Decoder::Create());
196 } 194 }
197 } 195 }
198 196
199 VideoCodingModule::Codec(codec_type_, &codec_settings_); 197 VideoCodingModule::Codec(codec_type_, &codec_settings_);
200 198
201 // Configure input filename. 199 // Configure input filename.
202 config_.input_filename = test::ResourcePath(filename, "yuv"); 200 config_.input_filename = test::ResourcePath(process.filename, "yuv");
203 if (verbose_logging) 201 if (process.verbose_logging)
204 printf("Filename: %s\n", filename.c_str()); 202 printf("Filename: %s\n", process.filename.c_str());
205 // Generate an output filename in a safe way. 203 // Generate an output filename in a safe way.
206 config_.output_filename = test::TempFilename( 204 config_.output_filename = test::TempFilename(
207 test::OutputPath(), "videoprocessor_integrationtest"); 205 test::OutputPath(), "videoprocessor_integrationtest");
208 config_.frame_length_in_bytes = CalcBufferSize(kI420, width, height); 206 config_.frame_length_in_bytes =
209 config_.verbose = verbose_logging; 207 CalcBufferSize(kI420, process.width, process.height);
210 // Only allow encoder/decoder to use single core, for predictability. 208 config_.verbose = process.verbose_logging;
211 config_.use_single_core = true; 209 config_.use_single_core = process.use_single_core;
212 // Key frame interval and packet loss are set for each test. 210 // Key frame interval and packet loss are set for each test.
213 config_.keyframe_interval = key_frame_interval_; 211 config_.keyframe_interval = key_frame_interval_;
214 config_.networking_config.packet_loss_probability = packet_loss_; 212 config_.networking_config.packet_loss_probability = packet_loss_;
215 213
216 // Configure codec settings. 214 // Configure codec settings.
217 config_.codec_settings = &codec_settings_; 215 config_.codec_settings = &codec_settings_;
218 config_.codec_settings->startBitrate = start_bitrate_; 216 config_.codec_settings->startBitrate = start_bitrate_;
219 config_.codec_settings->width = width; 217 config_.codec_settings->width = process.width;
220 config_.codec_settings->height = height; 218 config_.codec_settings->height = process.height;
221 219
222 // These features may be set depending on the test. 220 // These features may be set depending on the test.
223 switch (config_.codec_settings->codecType) { 221 switch (config_.codec_settings->codecType) {
224 case kVideoCodecH264: 222 case kVideoCodecH264:
225 config_.codec_settings->H264()->frameDroppingOn = frame_dropper_on_; 223 config_.codec_settings->H264()->frameDroppingOn = frame_dropper_on_;
226 config_.codec_settings->H264()->keyFrameInterval = 224 config_.codec_settings->H264()->keyFrameInterval =
227 kBaseKeyFrameInterval; 225 kBaseKeyFrameInterval;
228 break; 226 break;
229 case kVideoCodecVP8: 227 case kVideoCodecVP8:
230 config_.codec_settings->VP8()->errorConcealmentOn = 228 config_.codec_settings->VP8()->errorConcealmentOn =
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 codec_type_ = process.codec_type; 449 codec_type_ = process.codec_type;
452 hw_codec_ = process.hw_codec; 450 hw_codec_ = process.hw_codec;
453 start_bitrate_ = rate_profile.target_bit_rate[0]; 451 start_bitrate_ = rate_profile.target_bit_rate[0];
454 packet_loss_ = process.packet_loss; 452 packet_loss_ = process.packet_loss;
455 key_frame_interval_ = process.key_frame_interval; 453 key_frame_interval_ = process.key_frame_interval;
456 num_temporal_layers_ = process.num_temporal_layers; 454 num_temporal_layers_ = process.num_temporal_layers;
457 error_concealment_on_ = process.error_concealment_on; 455 error_concealment_on_ = process.error_concealment_on;
458 denoising_on_ = process.denoising_on; 456 denoising_on_ = process.denoising_on;
459 frame_dropper_on_ = process.frame_dropper_on; 457 frame_dropper_on_ = process.frame_dropper_on;
460 spatial_resize_on_ = process.spatial_resize_on; 458 spatial_resize_on_ = process.spatial_resize_on;
461 SetUpCodecConfig(process.filename, process.width, process.height, 459 SetUpCodecConfig(process);
462 process.verbose_logging);
463 // Update the layers and the codec with the initial rates. 460 // Update the layers and the codec with the initial rates.
464 bit_rate_ = rate_profile.target_bit_rate[0]; 461 bit_rate_ = rate_profile.target_bit_rate[0];
465 frame_rate_ = rate_profile.input_frame_rate[0]; 462 frame_rate_ = rate_profile.input_frame_rate[0];
466 SetLayerRates(); 463 SetLayerRates();
467 // Set the initial target size for key frame. 464 // Set the initial target size for key frame.
468 target_size_key_frame_initial_ = 465 target_size_key_frame_initial_ =
469 0.5 * kInitialBufferSize * bit_rate_layer_[0]; 466 0.5 * kInitialBufferSize * bit_rate_layer_[0];
470 processor_->SetRates(bit_rate_, frame_rate_); 467 processor_->SetRates(bit_rate_, frame_rate_);
471 468
472 // Process each frame, up to |num_frames|. 469 // Process each frame, up to |num_frames|.
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 int frame_index_rate_update) { 553 int frame_index_rate_update) {
557 rate_profile->target_bit_rate[update_index] = bit_rate; 554 rate_profile->target_bit_rate[update_index] = bit_rate;
558 rate_profile->input_frame_rate[update_index] = frame_rate; 555 rate_profile->input_frame_rate[update_index] = frame_rate;
559 rate_profile->frame_index_rate_update[update_index] = 556 rate_profile->frame_index_rate_update[update_index] =
560 frame_index_rate_update; 557 frame_index_rate_update;
561 } 558 }
562 559
563 static void SetCodecParameters(CodecConfigPars* process_settings, 560 static void SetCodecParameters(CodecConfigPars* process_settings,
564 VideoCodecType codec_type, 561 VideoCodecType codec_type,
565 bool hw_codec, 562 bool hw_codec,
563 bool use_single_core,
566 float packet_loss, 564 float packet_loss,
567 int key_frame_interval, 565 int key_frame_interval,
568 int num_temporal_layers, 566 int num_temporal_layers,
569 bool error_concealment_on, 567 bool error_concealment_on,
570 bool denoising_on, 568 bool denoising_on,
571 bool frame_dropper_on, 569 bool frame_dropper_on,
572 bool spatial_resize_on, 570 bool spatial_resize_on,
573 int width, 571 int width,
574 int height, 572 int height,
575 const std::string& filename, 573 const std::string& filename,
576 bool verbose_logging) { 574 bool verbose_logging) {
577 process_settings->codec_type = codec_type; 575 process_settings->codec_type = codec_type;
578 process_settings->hw_codec = hw_codec; 576 process_settings->hw_codec = hw_codec;
577 process_settings->use_single_core = use_single_core;
579 process_settings->packet_loss = packet_loss; 578 process_settings->packet_loss = packet_loss;
580 process_settings->key_frame_interval = key_frame_interval; 579 process_settings->key_frame_interval = key_frame_interval;
581 process_settings->num_temporal_layers = num_temporal_layers, 580 process_settings->num_temporal_layers = num_temporal_layers,
582 process_settings->error_concealment_on = error_concealment_on; 581 process_settings->error_concealment_on = error_concealment_on;
583 process_settings->denoising_on = denoising_on; 582 process_settings->denoising_on = denoising_on;
584 process_settings->frame_dropper_on = frame_dropper_on; 583 process_settings->frame_dropper_on = frame_dropper_on;
585 process_settings->spatial_resize_on = spatial_resize_on; 584 process_settings->spatial_resize_on = spatial_resize_on;
586 process_settings->width = width; 585 process_settings->width = width;
587 process_settings->height = height; 586 process_settings->height = height;
588 process_settings->filename = filename; 587 process_settings->filename = filename;
589 process_settings->verbose_logging = verbose_logging; 588 process_settings->verbose_logging = verbose_logging;
590 } 589 }
591 590
592 static void SetCodecParameters(CodecConfigPars* process_settings, 591 static void SetCodecParameters(CodecConfigPars* process_settings,
593 VideoCodecType codec_type, 592 VideoCodecType codec_type,
594 bool hw_codec, 593 bool hw_codec,
594 bool use_single_core,
595 float packet_loss, 595 float packet_loss,
596 int key_frame_interval, 596 int key_frame_interval,
597 int num_temporal_layers, 597 int num_temporal_layers,
598 bool error_concealment_on, 598 bool error_concealment_on,
599 bool denoising_on, 599 bool denoising_on,
600 bool frame_dropper_on, 600 bool frame_dropper_on,
601 bool spatial_resize_on) { 601 bool spatial_resize_on) {
602 SetCodecParameters(process_settings, codec_type, hw_codec, packet_loss, 602 SetCodecParameters(process_settings, codec_type, hw_codec, use_single_core,
603 key_frame_interval, num_temporal_layers, 603 packet_loss, key_frame_interval, num_temporal_layers,
604 error_concealment_on, denoising_on, frame_dropper_on, 604 error_concealment_on, denoising_on, frame_dropper_on,
605 spatial_resize_on, kCifWidth, kCifHeight, 605 spatial_resize_on, kCifWidth, kCifHeight,
606 kFilenameForemanCif, false /* verbose_logging */); 606 kFilenameForemanCif, false /* verbose_logging */);
607 } 607 }
608 608
609 static void SetQualityMetrics(QualityMetrics* quality_metrics, 609 static void SetQualityMetrics(QualityMetrics* quality_metrics,
610 double minimum_avg_psnr, 610 double minimum_avg_psnr,
611 double minimum_min_psnr, 611 double minimum_min_psnr,
612 double minimum_avg_ssim, 612 double minimum_avg_ssim,
613 double minimum_min_ssim) { 613 double minimum_min_ssim) {
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 bool error_concealment_on_; 686 bool error_concealment_on_;
687 bool denoising_on_; 687 bool denoising_on_;
688 bool frame_dropper_on_; 688 bool frame_dropper_on_;
689 bool spatial_resize_on_; 689 bool spatial_resize_on_;
690 }; 690 };
691 691
692 } // namespace test 692 } // namespace test
693 } // namespace webrtc 693 } // namespace webrtc
694 694
695 #endif // WEBRTC_MODULES_VIDEO_CODING_CODECS_TEST_VIDEOPROCESSOR_INTEGRATIONTES T_H_ 695 #endif // WEBRTC_MODULES_VIDEO_CODING_CODECS_TEST_VIDEOPROCESSOR_INTEGRATIONTES T_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698