OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
| 5 #include "chromecast/browser/media/media_pipeline_backend_factory.h" |
5 #include "media/base/renderer.h" | 6 #include "media/base/renderer.h" |
6 | 7 |
7 namespace base { | 8 namespace base { |
8 class SingleThreadTaskRunner; | 9 class SingleThreadTaskRunner; |
9 } // namespace base | 10 } // namespace base |
10 | 11 |
11 namespace media { | 12 namespace media { |
12 class MediaLog; | 13 class MediaLog; |
13 } // namespace media | 14 } // namespace media |
14 | 15 |
15 namespace chromecast { | 16 namespace chromecast { |
16 class TaskRunnerImpl; | 17 class TaskRunnerImpl; |
17 | 18 |
18 namespace media { | 19 namespace media { |
19 class BalancedMediaTaskRunnerFactory; | 20 class BalancedMediaTaskRunnerFactory; |
20 class CmaMediaPipelineClient; | |
21 class MediaPipelineImpl; | 21 class MediaPipelineImpl; |
22 | 22 |
23 class CastRenderer : public ::media::Renderer { | 23 class CastRenderer : public ::media::Renderer { |
24 public: | 24 public: |
25 CastRenderer(const scoped_refptr<CmaMediaPipelineClient> pipeline_client, | 25 CastRenderer(const CreateMediaPipelineBackendCB& create_backend_cb, |
26 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner); | 26 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner); |
27 ~CastRenderer() final; | 27 ~CastRenderer() final; |
28 | 28 |
29 // ::media::Renderer implementation. | 29 // ::media::Renderer implementation. |
30 void Initialize(::media::DemuxerStreamProvider* demuxer_stream_provider, | 30 void Initialize(::media::DemuxerStreamProvider* demuxer_stream_provider, |
31 const ::media::PipelineStatusCB& init_cb, | 31 const ::media::PipelineStatusCB& init_cb, |
32 const ::media::StatisticsCB& statistics_cb, | 32 const ::media::StatisticsCB& statistics_cb, |
33 const ::media::BufferingStateCB& buffering_state_cb, | 33 const ::media::BufferingStateCB& buffering_state_cb, |
34 const base::Closure& ended_cb, | 34 const base::Closure& ended_cb, |
35 const ::media::PipelineStatusCB& error_cb, | 35 const ::media::PipelineStatusCB& error_cb, |
36 const base::Closure& waiting_for_decryption_key_cb) final; | 36 const base::Closure& waiting_for_decryption_key_cb) final; |
37 void SetCdm(::media::CdmContext* cdm_context, | 37 void SetCdm(::media::CdmContext* cdm_context, |
38 const ::media::CdmAttachedCB& cdm_attached_cb) final; | 38 const ::media::CdmAttachedCB& cdm_attached_cb) final; |
39 void Flush(const base::Closure& flush_cb) final; | 39 void Flush(const base::Closure& flush_cb) final; |
40 void StartPlayingFrom(base::TimeDelta time) final; | 40 void StartPlayingFrom(base::TimeDelta time) final; |
41 void SetPlaybackRate(double playback_rate) final; | 41 void SetPlaybackRate(double playback_rate) final; |
42 void SetVolume(float volume) final; | 42 void SetVolume(float volume) final; |
43 base::TimeDelta GetMediaTime() final; | 43 base::TimeDelta GetMediaTime() final; |
44 bool HasAudio() final; | 44 bool HasAudio() final; |
45 bool HasVideo() final; | 45 bool HasVideo() final; |
46 | 46 |
47 private: | 47 private: |
48 enum Stream { STREAM_AUDIO, STREAM_VIDEO }; | 48 enum Stream { STREAM_AUDIO, STREAM_VIDEO }; |
49 void OnEos(Stream stream); | 49 void OnEos(Stream stream); |
50 | 50 |
51 scoped_refptr<CmaMediaPipelineClient> pipeline_client_; | 51 const CreateMediaPipelineBackendCB create_backend_cb_; |
52 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; | 52 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
53 scoped_refptr<BalancedMediaTaskRunnerFactory> media_task_runner_factory_; | 53 scoped_refptr<BalancedMediaTaskRunnerFactory> media_task_runner_factory_; |
54 scoped_ptr<TaskRunnerImpl> backend_task_runner_; | 54 scoped_ptr<TaskRunnerImpl> backend_task_runner_; |
55 scoped_ptr<MediaPipelineImpl> pipeline_; | 55 scoped_ptr<MediaPipelineImpl> pipeline_; |
56 bool eos_[2]; | 56 bool eos_[2]; |
57 base::Closure ended_cb_; | 57 base::Closure ended_cb_; |
58 DISALLOW_COPY_AND_ASSIGN(CastRenderer); | 58 DISALLOW_COPY_AND_ASSIGN(CastRenderer); |
59 }; | 59 }; |
60 | 60 |
61 } // namespace media | 61 } // namespace media |
62 } // namespace chromecast | 62 } // namespace chromecast |
OLD | NEW |