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

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

Issue 2348603002: [chromecast] Track MediaPipelineBackend used by CastRenderer. (Closed)
Patch Set: DISALLOW_COPY_AND_ASSIGN Created 4 years, 3 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 #ifndef CHROMECAST_BROWSER_MEDIA_CAST_RENDERER_H_ 5 #ifndef CHROMECAST_BROWSER_MEDIA_CAST_RENDERER_H_
6 #define CHROMECAST_BROWSER_MEDIA_CAST_RENDERER_H_ 6 #define CHROMECAST_BROWSER_MEDIA_CAST_RENDERER_H_
7 7
8 #include "base/memory/weak_ptr.h" 8 #include "base/memory/weak_ptr.h"
9 #include "chromecast/browser/media/media_pipeline_backend_factory.h" 9 #include "chromecast/browser/media/media_pipeline_backend_factory.h"
10 #include "chromecast/browser/media/video_resolution_policy.h" 10 #include "chromecast/browser/media/video_resolution_policy.h"
11 #include "chromecast/media/base/media_resource_tracker.h"
11 #include "media/base/renderer.h" 12 #include "media/base/renderer.h"
12 #include "ui/gfx/geometry/size.h" 13 #include "ui/gfx/geometry/size.h"
13 14
14 namespace base { 15 namespace base {
15 class SingleThreadTaskRunner; 16 class SingleThreadTaskRunner;
16 } // namespace base 17 } // namespace base
17 18
18 namespace media { 19 namespace media {
19 class MediaLog; 20 class MediaLog;
20 } // namespace media 21 } // namespace media
21 22
22 namespace chromecast { 23 namespace chromecast {
23 class TaskRunnerImpl; 24 class TaskRunnerImpl;
24 25
25 namespace media { 26 namespace media {
26 class BalancedMediaTaskRunnerFactory; 27 class BalancedMediaTaskRunnerFactory;
27 class CastCdmContext; 28 class CastCdmContext;
28 class MediaPipelineImpl; 29 class MediaPipelineImpl;
29 30
30 class CastRenderer : public ::media::Renderer, 31 class CastRenderer : public ::media::Renderer,
31 public VideoResolutionPolicy::Observer { 32 public VideoResolutionPolicy::Observer {
32 public: 33 public:
33 CastRenderer(const CreateMediaPipelineBackendCB& create_backend_cb, 34 CastRenderer(const CreateMediaPipelineBackendCB& create_backend_cb,
34 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 35 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
35 const std::string& audio_device_id, 36 const std::string& audio_device_id,
36 VideoResolutionPolicy* video_resolution_policy); 37 VideoResolutionPolicy* video_resolution_policy,
38 MediaResourceTracker* media_resource_tracker);
37 ~CastRenderer() final; 39 ~CastRenderer() final;
38 40
39 // ::media::Renderer implementation. 41 // ::media::Renderer implementation.
40 void Initialize(::media::DemuxerStreamProvider* demuxer_stream_provider, 42 void Initialize(::media::DemuxerStreamProvider* demuxer_stream_provider,
41 ::media::RendererClient* client, 43 ::media::RendererClient* client,
42 const ::media::PipelineStatusCB& init_cb) final; 44 const ::media::PipelineStatusCB& init_cb) final;
43 void SetCdm(::media::CdmContext* cdm_context, 45 void SetCdm(::media::CdmContext* cdm_context,
44 const ::media::CdmAttachedCB& cdm_attached_cb) final; 46 const ::media::CdmAttachedCB& cdm_attached_cb) final;
45 void Flush(const base::Closure& flush_cb) final; 47 void Flush(const base::Closure& flush_cb) final;
46 void StartPlayingFrom(base::TimeDelta time) final; 48 void StartPlayingFrom(base::TimeDelta time) final;
(...skipping 14 matching lines...) Expand all
61 void OnBufferingStateChange(::media::BufferingState state); 63 void OnBufferingStateChange(::media::BufferingState state);
62 void OnWaitingForDecryptionKey(); 64 void OnWaitingForDecryptionKey();
63 void OnVideoNaturalSizeChange(const gfx::Size& size); 65 void OnVideoNaturalSizeChange(const gfx::Size& size);
64 void OnVideoOpacityChange(bool opaque); 66 void OnVideoOpacityChange(bool opaque);
65 void CheckVideoResolutionPolicy(); 67 void CheckVideoResolutionPolicy();
66 68
67 const CreateMediaPipelineBackendCB create_backend_cb_; 69 const CreateMediaPipelineBackendCB create_backend_cb_;
68 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 70 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
69 std::string audio_device_id_; 71 std::string audio_device_id_;
70 VideoResolutionPolicy* video_resolution_policy_; 72 VideoResolutionPolicy* video_resolution_policy_;
73 MediaResourceTracker* media_resource_tracker_;
74 // Must outlive |pipeline_| to properly count resource usage.
75 std::unique_ptr<MediaResourceTracker::ScopedUsage> media_resource_usage_;
76
71 ::media::RendererClient* client_; 77 ::media::RendererClient* client_;
72 CastCdmContext* cast_cdm_context_; 78 CastCdmContext* cast_cdm_context_;
73 scoped_refptr<BalancedMediaTaskRunnerFactory> media_task_runner_factory_; 79 scoped_refptr<BalancedMediaTaskRunnerFactory> media_task_runner_factory_;
74 std::unique_ptr<TaskRunnerImpl> backend_task_runner_; 80 std::unique_ptr<TaskRunnerImpl> backend_task_runner_;
75 std::unique_ptr<MediaPipelineImpl> pipeline_; 81 std::unique_ptr<MediaPipelineImpl> pipeline_;
76 bool eos_[2]; 82 bool eos_[2];
77 gfx::Size video_res_; 83 gfx::Size video_res_;
84
78 base::WeakPtrFactory<CastRenderer> weak_factory_; 85 base::WeakPtrFactory<CastRenderer> weak_factory_;
79
80 DISALLOW_COPY_AND_ASSIGN(CastRenderer); 86 DISALLOW_COPY_AND_ASSIGN(CastRenderer);
81 }; 87 };
82 88
83 } // namespace media 89 } // namespace media
84 } // namespace chromecast 90 } // namespace chromecast
85 91
86 #endif // CHROMECAST_BROWSER_MEDIA_CAST_RENDERER_H_ 92 #endif // CHROMECAST_BROWSER_MEDIA_CAST_RENDERER_H_
OLDNEW
« no previous file with comments | « chromecast/browser/media/cast_mojo_media_client.cc ('k') | chromecast/browser/media/cast_renderer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698