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

Unified Diff: media/test/pipeline_integration_test_base.h

Issue 2808583002: RELAND: Media Remoting end to end integration tests. (Closed)
Patch Set: Fix compile error. Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: media/test/pipeline_integration_test_base.h
diff --git a/media/test/pipeline_integration_test_base.h b/media/test/pipeline_integration_test_base.h
index 580e963c658f7b0261a6b2e6c7e2b392a352a88f..9ab7ab5891d9027a90daa5037a40a9e1f09ddea9 100644
--- a/media/test/pipeline_integration_test_base.h
+++ b/media/test/pipeline_integration_test_base.h
@@ -48,6 +48,22 @@ class DummyTickClock : public base::TickClock {
base::TimeTicks now_;
};
+class PipelineTestRendererFactory {
+ public:
+ virtual ~PipelineTestRendererFactory() {}
+ // Creates and returns a Renderer.
+ virtual std::unique_ptr<Renderer> CreateRenderer(
+ ScopedVector<VideoDecoder> prepend_video_decoders =
+ ScopedVector<VideoDecoder>(),
+ ScopedVector<AudioDecoder> prepend_audio_decoders =
+ ScopedVector<AudioDecoder>()) = 0;
+};
+
+enum PipelineType {
+ Media, // Test the general media pipeline.
+ MediaRemoting, // Test Media Remoting pipeline.
+};
+
// Integration tests for Pipeline. Real demuxers, real decoders, and
// base renderer implementations are used to verify pipeline functionality. The
// renderers used in these tests rely heavily on the AudioRendererBase &
@@ -129,30 +145,11 @@ class PipelineIntegrationTestBase : public Pipeline::Client {
encrypted_media_init_data_cb_ = encrypted_media_init_data_cb;
}
- protected:
- base::MessageLoop message_loop_;
- base::MD5Context md5_context_;
- bool hashing_enabled_;
- bool clockless_playback_;
-
- // TaskScheduler is used only for FFmpegDemuxer.
- std::unique_ptr<base::test::ScopedTaskScheduler> task_scheduler_;
- std::unique_ptr<Demuxer> demuxer_;
- std::unique_ptr<DataSource> data_source_;
- std::unique_ptr<PipelineImpl> pipeline_;
- scoped_refptr<NullAudioSink> audio_sink_;
- scoped_refptr<ClocklessAudioSink> clockless_audio_sink_;
- std::unique_ptr<NullVideoSink> video_sink_;
- bool ended_;
- PipelineStatus pipeline_status_;
- Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb_;
- VideoPixelFormat last_video_frame_format_;
- ColorSpace last_video_frame_color_space_;
- DummyTickClock dummy_clock_;
- PipelineMetadata metadata_;
- scoped_refptr<VideoFrame> last_frame_;
- base::TimeDelta current_duration_;
+ std::unique_ptr<Renderer> CreateRenderer(
+ ScopedVector<VideoDecoder> prepend_video_decoders,
+ ScopedVector<AudioDecoder> prepend_audio_decoders);
+ protected:
PipelineStatus StartInternal(
std::unique_ptr<DataSource> data_source,
CdmContext* cdm_context,
@@ -183,13 +180,6 @@ class PipelineIntegrationTestBase : public Pipeline::Client {
// Creates Demuxer and sets |demuxer_|.
void CreateDemuxer(std::unique_ptr<DataSource> data_source);
- // Creates and returns a Renderer.
- virtual std::unique_ptr<Renderer> CreateRenderer(
- ScopedVector<VideoDecoder> prepend_video_decoders =
- ScopedVector<VideoDecoder>(),
- ScopedVector<AudioDecoder> prepend_audio_decoders =
- ScopedVector<AudioDecoder>());
-
void OnVideoFramePaint(const scoped_refptr<VideoFrame>& frame);
void CheckDuration();
@@ -197,6 +187,13 @@ class PipelineIntegrationTestBase : public Pipeline::Client {
// Return the media start time from |demuxer_|.
base::TimeDelta GetStartTime();
+#if BUILDFLAG(ENABLE_MEDIA_REMOTING)
+ // Proxy all control and data flows through a media remoting RPC pipeline, to
+ // test that an end-to-end media remoting pipeline works the same as a normal,
+ // local pipeline.
+ void SetUpRemotingPipeline();
+#endif // BUILDFLAG(ENABLE_MEDIA_REMOTING)
+
MOCK_METHOD1(DecryptorAttached, void(bool));
// Pipeline::Client overrides.
void OnError(PipelineStatus status) override;
@@ -211,6 +208,33 @@ class PipelineIntegrationTestBase : public Pipeline::Client {
MOCK_METHOD1(OnVideoNaturalSizeChange, void(const gfx::Size&));
MOCK_METHOD1(OnVideoOpacityChange, void(bool));
MOCK_METHOD0(OnVideoAverageKeyframeDistanceUpdate, void());
+
+ base::MessageLoop message_loop_;
+ base::MD5Context md5_context_;
+ bool hashing_enabled_;
+ bool clockless_playback_;
+
+ // TaskScheduler is used only for FFmpegDemuxer.
+ std::unique_ptr<base::test::ScopedTaskScheduler> task_scheduler_;
+ std::unique_ptr<Demuxer> demuxer_;
+ std::unique_ptr<DataSource> data_source_;
+ std::unique_ptr<PipelineImpl> pipeline_;
+ scoped_refptr<NullAudioSink> audio_sink_;
+ scoped_refptr<ClocklessAudioSink> clockless_audio_sink_;
+ std::unique_ptr<NullVideoSink> video_sink_;
+ bool ended_;
+ PipelineStatus pipeline_status_;
+ Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb_;
+ VideoPixelFormat last_video_frame_format_;
+ ColorSpace last_video_frame_color_space_;
+ DummyTickClock dummy_clock_;
+ PipelineMetadata metadata_;
+ scoped_refptr<VideoFrame> last_frame_;
+ base::TimeDelta current_duration_;
+ std::unique_ptr<PipelineTestRendererFactory> renderer_factory_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(PipelineIntegrationTestBase);
};
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698