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

Side by Side Diff: chromecast/browser/media/cast_renderer.h

Issue 2016053003: Add audio_device_id in mojo media ServiceFactory CreateRenderer api. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Add implementation to use audio_device_id in CastRender. Created 4 years, 5 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 unified diff | Download patch
OLDNEW
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 "base/memory/weak_ptr.h"
6 #include "chromecast/browser/media/media_pipeline_backend_factory.h" 6 #include "chromecast/browser/media/media_pipeline_backend_factory.h"
7 #include "media/base/renderer.h" 7 #include "media/base/renderer.h"
8 #include "ui/gfx/geometry/size.h" 8 #include "ui/gfx/geometry/size.h"
9 9
10 namespace base { 10 namespace base {
11 class SingleThreadTaskRunner; 11 class SingleThreadTaskRunner;
12 } // namespace base 12 } // namespace base
13 13
14 namespace media { 14 namespace media {
15 class MediaLog; 15 class MediaLog;
16 } // namespace media 16 } // namespace media
17 17
18 namespace chromecast { 18 namespace chromecast {
19 class TaskRunnerImpl; 19 class TaskRunnerImpl;
20 20
21 namespace media { 21 namespace media {
22 class BalancedMediaTaskRunnerFactory; 22 class BalancedMediaTaskRunnerFactory;
23 class CastCdmContext; 23 class CastCdmContext;
24 class MediaPipelineImpl; 24 class MediaPipelineImpl;
25 25
26 class CastRenderer : public ::media::Renderer { 26 class CastRenderer : public ::media::Renderer {
27 public: 27 public:
28 CastRenderer(const CreateMediaPipelineBackendCB& create_backend_cb, 28 CastRenderer(const CreateMediaPipelineBackendCB& create_backend_cb,
29 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner); 29 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
30 const std::string& audio_device_id);
30 ~CastRenderer() final; 31 ~CastRenderer() final;
31 32
32 // ::media::Renderer implementation. 33 // ::media::Renderer implementation.
33 void Initialize(::media::DemuxerStreamProvider* demuxer_stream_provider, 34 void Initialize(::media::DemuxerStreamProvider* demuxer_stream_provider,
34 ::media::RendererClient* client, 35 ::media::RendererClient* client,
35 const ::media::PipelineStatusCB& init_cb) final; 36 const ::media::PipelineStatusCB& init_cb) final;
36 void SetCdm(::media::CdmContext* cdm_context, 37 void SetCdm(::media::CdmContext* cdm_context,
37 const ::media::CdmAttachedCB& cdm_attached_cb) final; 38 const ::media::CdmAttachedCB& cdm_attached_cb) final;
38 void Flush(const base::Closure& flush_cb) final; 39 void Flush(const base::Closure& flush_cb) final;
39 void StartPlayingFrom(base::TimeDelta time) final; 40 void StartPlayingFrom(base::TimeDelta time) final;
40 void SetPlaybackRate(double playback_rate) final; 41 void SetPlaybackRate(double playback_rate) final;
41 void SetVolume(float volume) final; 42 void SetVolume(float volume) final;
42 base::TimeDelta GetMediaTime() final; 43 base::TimeDelta GetMediaTime() final;
43 bool HasAudio() final; 44 bool HasAudio() final;
44 bool HasVideo() final; 45 bool HasVideo() final;
45 46
46 private: 47 private:
47 enum Stream { STREAM_AUDIO, STREAM_VIDEO }; 48 enum Stream { STREAM_AUDIO, STREAM_VIDEO };
48 void OnError(::media::PipelineStatus status); 49 void OnError(::media::PipelineStatus status);
49 void OnEnded(Stream stream); 50 void OnEnded(Stream stream);
50 void OnStatisticsUpdate(const ::media::PipelineStatistics& stats); 51 void OnStatisticsUpdate(const ::media::PipelineStatistics& stats);
51 void OnBufferingStateChange(::media::BufferingState state); 52 void OnBufferingStateChange(::media::BufferingState state);
52 void OnWaitingForDecryptionKey(); 53 void OnWaitingForDecryptionKey();
53 void OnVideoNaturalSizeChange(const gfx::Size& size); 54 void OnVideoNaturalSizeChange(const gfx::Size& size);
54 void OnVideoOpacityChange(bool opaque); 55 void OnVideoOpacityChange(bool opaque);
55 56
56 const CreateMediaPipelineBackendCB create_backend_cb_; 57 const CreateMediaPipelineBackendCB create_backend_cb_;
57 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 58 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
59 std::string audio_device_id_;
58 ::media::RendererClient* client_; 60 ::media::RendererClient* client_;
59 CastCdmContext* cast_cdm_context_; 61 CastCdmContext* cast_cdm_context_;
60 scoped_refptr<BalancedMediaTaskRunnerFactory> media_task_runner_factory_; 62 scoped_refptr<BalancedMediaTaskRunnerFactory> media_task_runner_factory_;
61 std::unique_ptr<TaskRunnerImpl> backend_task_runner_; 63 std::unique_ptr<TaskRunnerImpl> backend_task_runner_;
62 std::unique_ptr<MediaPipelineImpl> pipeline_; 64 std::unique_ptr<MediaPipelineImpl> pipeline_;
63 bool eos_[2]; 65 bool eos_[2];
64 base::WeakPtrFactory<CastRenderer> weak_factory_; 66 base::WeakPtrFactory<CastRenderer> weak_factory_;
65 67
66 DISALLOW_COPY_AND_ASSIGN(CastRenderer); 68 DISALLOW_COPY_AND_ASSIGN(CastRenderer);
67 }; 69 };
68 70
69 } // namespace media 71 } // namespace media
70 } // namespace chromecast 72 } // namespace chromecast
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698