Index: media/test/pipeline_integration_test_base.cc |
diff --git a/media/test/pipeline_integration_test_base.cc b/media/test/pipeline_integration_test_base.cc |
index 6a8b8f7283a9fb085a7b4e0f3c34950ac44720fb..e455b1035ae3b4a3c07833e7ac8d8599c123d5e1 100644 |
--- a/media/test/pipeline_integration_test_base.cc |
+++ b/media/test/pipeline_integration_test_base.cc |
@@ -30,6 +30,10 @@ |
#include "media/filters/vpx_video_decoder.h" |
#endif |
+#if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
+#include "media/remoting/end2end_test_renderer.h" // nogncheck |
+#endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) |
+ |
using ::testing::_; |
using ::testing::AnyNumber; |
using ::testing::AtLeast; |
@@ -44,6 +48,61 @@ namespace media { |
const char kNullVideoHash[] = "d41d8cd98f00b204e9800998ecf8427e"; |
const char kNullAudioHash[] = "0.00,0.00,0.00,0.00,0.00,0.00,"; |
+namespace { |
+ |
+class RendererFactoryImpl final : public PipelineTestRendererFactory { |
+ public: |
+ explicit RendererFactoryImpl(PipelineIntegrationTestBase* integration_test) |
+ : integration_test_(integration_test) {} |
+ ~RendererFactoryImpl() override {} |
+ |
+ // PipelineTestRendererFactory implementation. |
+ std::unique_ptr<Renderer> CreateRenderer( |
+ ScopedVector<VideoDecoder> prepend_video_decoders = |
+ ScopedVector<VideoDecoder>(), |
+ ScopedVector<AudioDecoder> prepend_audio_decoders = |
+ ScopedVector<AudioDecoder>()) override { |
+ return integration_test_->CreateRenderer(std::move(prepend_video_decoders), |
+ std::move(prepend_audio_decoders)); |
+ } |
+ |
+ private: |
+ PipelineIntegrationTestBase* integration_test_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(RendererFactoryImpl); |
+}; |
+ |
+#if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
+class RemotingTestRendererFactory final : public PipelineTestRendererFactory { |
+ public: |
+ explicit RemotingTestRendererFactory( |
+ std::unique_ptr<PipelineTestRendererFactory> renderer_factory) |
+ : default_renderer_factory_(std::move(renderer_factory)) {} |
+ ~RemotingTestRendererFactory() override {} |
+ |
+ // PipelineTestRendererFactory implementation. |
+ std::unique_ptr<Renderer> CreateRenderer( |
+ ScopedVector<VideoDecoder> prepend_video_decoders = |
+ ScopedVector<VideoDecoder>(), |
+ ScopedVector<AudioDecoder> prepend_audio_decoders = |
+ ScopedVector<AudioDecoder>()) override { |
+ std::unique_ptr<Renderer> renderer_impl = |
+ default_renderer_factory_->CreateRenderer( |
+ std::move(prepend_video_decoders), |
+ std::move(prepend_audio_decoders)); |
+ return base::MakeUnique<remoting::End2EndTestRenderer>( |
+ std::move(renderer_impl)); |
+ } |
+ |
+ private: |
+ std::unique_ptr<PipelineTestRendererFactory> default_renderer_factory_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(RemotingTestRendererFactory); |
+}; |
+#endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) |
+ |
+} // namespace |
+ |
PipelineIntegrationTestBase::PipelineIntegrationTestBase() |
: hashing_enabled_(false), |
clockless_playback_(false), |
@@ -52,7 +111,8 @@ PipelineIntegrationTestBase::PipelineIntegrationTestBase() |
pipeline_status_(PIPELINE_OK), |
last_video_frame_format_(PIXEL_FORMAT_UNKNOWN), |
last_video_frame_color_space_(COLOR_SPACE_UNSPECIFIED), |
- current_duration_(kInfiniteDuration) { |
+ current_duration_(kInfiniteDuration), |
+ renderer_factory_(new RendererFactoryImpl(this)) { |
ResetVideoHash(); |
EXPECT_CALL(*this, OnVideoAverageKeyframeDistanceUpdate()).Times(AnyNumber()); |
} |
@@ -179,10 +239,12 @@ PipelineStatus PipelineIntegrationTestBase::StartInternal( |
EXPECT_CALL(*this, OnWaitingForDecryptionKey()).Times(0); |
pipeline_->Start( |
- demuxer_.get(), CreateRenderer(std::move(prepend_video_decoders), |
- std::move(prepend_audio_decoders)), |
- this, base::Bind(&PipelineIntegrationTestBase::OnStatusCallback, |
- base::Unretained(this))); |
+ demuxer_.get(), |
+ renderer_factory_->CreateRenderer(std::move(prepend_video_decoders), |
+ std::move(prepend_audio_decoders)), |
+ this, |
+ base::Bind(&PipelineIntegrationTestBase::OnStatusCallback, |
+ base::Unretained(this))); |
base::RunLoop().Run(); |
return pipeline_status_; |
} |
@@ -260,7 +322,7 @@ bool PipelineIntegrationTestBase::Resume(base::TimeDelta seek_time) { |
EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
.WillOnce(InvokeWithoutArgs(&message_loop_, &base::MessageLoop::QuitNow)); |
- pipeline_->Resume(CreateRenderer(), seek_time, |
+ pipeline_->Resume(renderer_factory_->CreateRenderer(), seek_time, |
base::Bind(&PipelineIntegrationTestBase::OnSeeked, |
base::Unretained(this), seek_time)); |
base::RunLoop().Run(); |
@@ -453,4 +515,12 @@ base::TimeTicks DummyTickClock::NowTicks() { |
return now_; |
} |
+#if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
+void PipelineIntegrationTestBase::SetUpRemotingPipeline() { |
+ std::unique_ptr<PipelineTestRendererFactory> factory = |
+ std::move(renderer_factory_); |
+ renderer_factory_.reset(new RemotingTestRendererFactory(std::move(factory))); |
+} |
+#endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) |
+ |
} // namespace media |