| 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 "base/memory/weak_ptr.h" |
| 5 #include "chromecast/browser/media/media_pipeline_backend_factory.h" | 6 #include "chromecast/browser/media/media_pipeline_backend_factory.h" |
| 6 #include "media/base/renderer.h" | 7 #include "media/base/renderer.h" |
| 7 | 8 |
| 8 namespace base { | 9 namespace base { |
| 9 class SingleThreadTaskRunner; | 10 class SingleThreadTaskRunner; |
| 10 } // namespace base | 11 } // namespace base |
| 11 | 12 |
| 12 namespace media { | 13 namespace media { |
| 13 class MediaLog; | 14 class MediaLog; |
| 14 } // namespace media | 15 } // namespace media |
| 15 | 16 |
| 16 namespace chromecast { | 17 namespace chromecast { |
| 17 class TaskRunnerImpl; | 18 class TaskRunnerImpl; |
| 18 | 19 |
| 19 namespace media { | 20 namespace media { |
| 20 class BalancedMediaTaskRunnerFactory; | 21 class BalancedMediaTaskRunnerFactory; |
| 21 class MediaPipelineImpl; | 22 class MediaPipelineImpl; |
| 22 | 23 |
| 23 class CastRenderer : public ::media::Renderer { | 24 class CastRenderer : public ::media::Renderer { |
| 24 public: | 25 public: |
| 25 CastRenderer(const CreateMediaPipelineBackendCB& create_backend_cb, | 26 CastRenderer(const CreateMediaPipelineBackendCB& create_backend_cb, |
| 26 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner); | 27 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner); |
| 27 ~CastRenderer() final; | 28 ~CastRenderer() final; |
| 28 | 29 |
| 29 // ::media::Renderer implementation. | 30 // ::media::Renderer implementation. |
| 30 void Initialize(::media::DemuxerStreamProvider* demuxer_stream_provider, | 31 void Initialize(::media::DemuxerStreamProvider* demuxer_stream_provider, |
| 31 const ::media::PipelineStatusCB& init_cb, | 32 ::media::RendererClient* client, |
| 32 const ::media::StatisticsCB& statistics_cb, | 33 const ::media::PipelineStatusCB& init_cb) final; |
| 33 const ::media::BufferingStateCB& buffering_state_cb, | |
| 34 const base::Closure& ended_cb, | |
| 35 const ::media::PipelineStatusCB& error_cb, | |
| 36 const base::Closure& waiting_for_decryption_key_cb) final; | |
| 37 void SetCdm(::media::CdmContext* cdm_context, | 34 void SetCdm(::media::CdmContext* cdm_context, |
| 38 const ::media::CdmAttachedCB& cdm_attached_cb) final; | 35 const ::media::CdmAttachedCB& cdm_attached_cb) final; |
| 39 void Flush(const base::Closure& flush_cb) final; | 36 void Flush(const base::Closure& flush_cb) final; |
| 40 void StartPlayingFrom(base::TimeDelta time) final; | 37 void StartPlayingFrom(base::TimeDelta time) final; |
| 41 void SetPlaybackRate(double playback_rate) final; | 38 void SetPlaybackRate(double playback_rate) final; |
| 42 void SetVolume(float volume) final; | 39 void SetVolume(float volume) final; |
| 43 base::TimeDelta GetMediaTime() final; | 40 base::TimeDelta GetMediaTime() final; |
| 44 bool HasAudio() final; | 41 bool HasAudio() final; |
| 45 bool HasVideo() final; | 42 bool HasVideo() final; |
| 46 | 43 |
| 47 private: | 44 private: |
| 48 enum Stream { STREAM_AUDIO, STREAM_VIDEO }; | 45 enum Stream { STREAM_AUDIO, STREAM_VIDEO }; |
| 49 void OnEos(Stream stream); | 46 void OnError(::media::PipelineStatus status); |
| 47 void OnEnded(Stream stream); |
| 48 void OnStatisticsUpdate(const ::media::PipelineStatistics& stats); |
| 49 void OnBufferingStateChange(::media::BufferingState state); |
| 50 void OnWaitingForDecryptionKey(); |
| 50 | 51 |
| 51 const CreateMediaPipelineBackendCB create_backend_cb_; | 52 const CreateMediaPipelineBackendCB create_backend_cb_; |
| 52 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; | 53 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
| 54 ::media::RendererClient* client_; |
| 53 scoped_refptr<BalancedMediaTaskRunnerFactory> media_task_runner_factory_; | 55 scoped_refptr<BalancedMediaTaskRunnerFactory> media_task_runner_factory_; |
| 54 std::unique_ptr<TaskRunnerImpl> backend_task_runner_; | 56 std::unique_ptr<TaskRunnerImpl> backend_task_runner_; |
| 55 std::unique_ptr<MediaPipelineImpl> pipeline_; | 57 std::unique_ptr<MediaPipelineImpl> pipeline_; |
| 56 bool eos_[2]; | 58 bool eos_[2]; |
| 57 base::Closure ended_cb_; | 59 base::WeakPtrFactory<CastRenderer> weak_factory_; |
| 60 |
| 58 DISALLOW_COPY_AND_ASSIGN(CastRenderer); | 61 DISALLOW_COPY_AND_ASSIGN(CastRenderer); |
| 59 }; | 62 }; |
| 60 | 63 |
| 61 } // namespace media | 64 } // namespace media |
| 62 } // namespace chromecast | 65 } // namespace chromecast |
| OLD | NEW |