Index: media/renderers/media_player_renderer_host.h |
diff --git a/media/renderers/media_player_renderer_host.h b/media/renderers/media_player_renderer_host.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..97862f0b36a5c4ffa9f4d86a94973b9e054ad598 |
--- /dev/null |
+++ b/media/renderers/media_player_renderer_host.h |
@@ -0,0 +1,92 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef MEDIA_BASE_RENDERERS_MEDIA_PLAYER_RENDERER_HOST_H_ |
+#define MEDIA_BASE_RENDERERS_MEDIA_PLAYER_RENDERER_HOST_H_ |
+ |
+#include "base/callback.h" |
+#include "base/macros.h" |
+#include "base/memory/weak_ptr.h" |
+#include "cc/layers/video_frame_provider.h" |
+#include "media/base/android/stream_texture_wrapper.h" |
+#include "media/base/demuxer_stream_provider.h" |
+#include "media/base/media_log.h" |
+#include "media/base/renderer.h" |
+#include "media/base/renderer_client.h" |
+#include "media/base/video_renderer_sink.h" |
+#include "media/mojo/clients/mojo_renderer.h" |
+#include "url/gurl.h" |
+ |
+namespace media { |
+ |
+class MediaPlayerRendererHost : public Renderer, |
+ public RendererClient, |
+ public cc::VideoFrameProvider::Client, |
+ public VideoRendererSink::RenderCallback { |
+ public: |
+ MediaPlayerRendererHost( |
+ const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, |
+ MojoRenderer* mojo_renderer, |
+ StreamTextureWrapper* stream_texture_wrapper, |
+ VideoRendererSink* sink); |
+ |
+ virtual ~MediaPlayerRendererHost(); |
+ |
+ // media::Renderer implementation. |
+ void Initialize(DemuxerStreamProvider* demuxer_stream_provider, |
+ RendererClient* client, |
+ const PipelineStatusCB& init_cb) override; |
+ void SetCdm(CdmContext* cdm_context, |
+ const CdmAttachedCB& cdm_attached_cb) override; |
+ void Flush(const base::Closure& flush_cb) override; |
+ void StartPlayingFrom(base::TimeDelta time) override; |
+ void SetPlaybackRate(double playback_rate) override; |
+ void SetVolume(float volume) override; |
+ base::TimeDelta GetMediaTime() override; |
+ bool HasAudio() override; |
+ bool HasVideo() override; |
+ |
+ // cc::VideoFrameProvider::Client implementation. |
+ void StopUsingProvider() override; |
+ void StartRendering() override; |
+ void StopRendering() override; |
+ void DidReceiveFrame() override; |
+ |
+ // VideoRenderSink::RenderCallback implementation. |
+ scoped_refptr<VideoFrame> Render(base::TimeTicks deadline_min, |
+ base::TimeTicks deadline_max, |
+ bool background_rendering) override; |
+ void OnFrameDropped() override; |
+ |
+ // RendererClient implementation implementation. |
+ void OnError(PipelineStatus status) override; |
+ void OnEnded() override; |
+ void OnStatisticsUpdate(const PipelineStatistics& stats) override; |
+ void OnBufferingStateChange(BufferingState state) override; |
+ void OnWaitingForDecryptionKey() override; |
+ void OnVideoNaturalSizeChange(const gfx::Size& size) override; |
+ void OnVideoOpacityChange(bool opaque) override; |
+ void OnDurationChange(base::TimeDelta duration) override; |
+ |
+ private: |
+ void CompleteInitialization(const PipelineStatusCB& init_cb, |
+ PipelineStatus status); |
+ |
+ std::unique_ptr<MojoRenderer> mojo_renderer_; |
+ std::unique_ptr<StreamTextureWrapper> stream_texture_wrapper_; |
+ |
+ bool frame_ready_; |
+ |
+ RendererClient* client_; |
+ |
+ VideoRendererSink* sink_; |
+ |
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(MediaPlayerRendererHost); |
+}; |
+ |
+} // namespace media |
+ |
+#endif // MEDIA_BASE_RENDERERS_MEDIA_PLAYER_RENDERER_HOST_H_ |