From 8180fa66de5d747d226672b9aa483e7724472789 Mon Sep 17 00:00:00 2001 From: brandtr Date: Thu, 7 Sep 2017 08:57:46 -0700 Subject: [PATCH] Fix VideoProcessorIntegrationTest on iOS. BUG=webrtc:6634 Review-Url: https://codereview.webrtc.org/3013463002 Cr-Commit-Position: refs/heads/master@{#19730} --- .../test/videoprocessor_integrationtest.cc | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc b/webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc index 5d54caa753..508316b7fa 100644 --- a/webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc +++ b/webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc @@ -189,11 +189,12 @@ void VideoProcessorIntegrationTest::ProcessFramesAndMaybeVerify( // In order to not overwhelm the OpenMAX buffers in the Android // MediaCodec API, we roughly pace the frames here. The downside // of this is that the encode run will be done in real-time. - // TODO(brandtr): Investigate if this is needed on iOS. +#if defined(WEBRTC_ANDROID) if (config_.hw_encoder || config_.hw_decoder) { SleepMs(rtc::kNumMillisecsPerSec / rate_profile.input_frame_rate[rate_update_index]); } +#endif task_queue.PostTask([this] { processor_->ProcessFrame(); }); ++frame_number; @@ -302,23 +303,27 @@ void VideoProcessorIntegrationTest::CreateEncoderAndDecoder() { decoder_factory_.reset(new cricket::InternalDecoderFactory()); } - cricket::VideoCodec encoder_codec; + cricket::VideoCodec codec; + cricket::VideoDecoderParams decoder_params; // Empty. switch (config_.codec_settings.codecType) { case kVideoCodecVP8: - encoder_codec = cricket::VideoCodec(cricket::kVp8CodecName); - encoder_.reset(encoder_factory->CreateVideoEncoder(encoder_codec)); - decoder_ = decoder_factory_->CreateVideoDecoder(kVideoCodecVP8); + codec = cricket::VideoCodec(cricket::kVp8CodecName); + encoder_.reset(encoder_factory->CreateVideoEncoder(codec)); + decoder_ = + decoder_factory_->CreateVideoDecoderWithParams(codec, decoder_params); break; case kVideoCodecVP9: - encoder_codec = cricket::VideoCodec(cricket::kVp9CodecName); - encoder_.reset(encoder_factory->CreateVideoEncoder(encoder_codec)); - decoder_ = decoder_factory_->CreateVideoDecoder(kVideoCodecVP9); + codec = cricket::VideoCodec(cricket::kVp9CodecName); + encoder_.reset(encoder_factory->CreateVideoEncoder(codec)); + decoder_ = + decoder_factory_->CreateVideoDecoderWithParams(codec, decoder_params); break; case kVideoCodecH264: // TODO(brandtr): Generalize so that we support multiple profiles here. - encoder_codec = cricket::VideoCodec(cricket::kH264CodecName); - encoder_.reset(encoder_factory->CreateVideoEncoder(encoder_codec)); - decoder_ = decoder_factory_->CreateVideoDecoder(kVideoCodecH264); + codec = cricket::VideoCodec(cricket::kH264CodecName); + encoder_.reset(encoder_factory->CreateVideoEncoder(codec)); + decoder_ = + decoder_factory_->CreateVideoDecoderWithParams(codec, decoder_params); break; default: RTC_NOTREACHED(); @@ -327,7 +332,7 @@ void VideoProcessorIntegrationTest::CreateEncoderAndDecoder() { if (config_.sw_fallback_encoder) { encoder_ = rtc::MakeUnique( - encoder_codec, std::move(encoder_)); + codec, std::move(encoder_)); } EXPECT_TRUE(encoder_) << "Encoder not successfully created.";