OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_RENDERER_MEDIA_CMA_RENDERER_H_ | 5 #ifndef CHROMECAST_RENDERER_MEDIA_CMA_RENDERER_H_ |
6 #define CHROMECAST_RENDERER_MEDIA_CMA_RENDERER_H_ | 6 #define CHROMECAST_RENDERER_MEDIA_CMA_RENDERER_H_ |
7 | 7 |
| 8 #include <memory> |
| 9 |
8 #include "base/macros.h" | 10 #include "base/macros.h" |
9 #include "base/memory/scoped_ptr.h" | |
10 #include "base/memory/weak_ptr.h" | 11 #include "base/memory/weak_ptr.h" |
11 #include "base/synchronization/lock.h" | 12 #include "base/synchronization/lock.h" |
12 #include "base/threading/thread_checker.h" | 13 #include "base/threading/thread_checker.h" |
13 #include "base/time/default_tick_clock.h" | 14 #include "base/time/default_tick_clock.h" |
14 #include "media/base/buffering_state.h" | 15 #include "media/base/buffering_state.h" |
15 #include "media/base/renderer.h" | 16 #include "media/base/renderer.h" |
16 #include "ui/gfx/geometry/size.h" | 17 #include "ui/gfx/geometry/size.h" |
17 | 18 |
18 namespace base { | 19 namespace base { |
19 class SingleThreadTaskRunner; | 20 class SingleThreadTaskRunner; |
(...skipping 10 matching lines...) Expand all Loading... |
30 namespace chromecast { | 31 namespace chromecast { |
31 namespace media { | 32 namespace media { |
32 class AudioPipelineProxy; | 33 class AudioPipelineProxy; |
33 class BalancedMediaTaskRunnerFactory; | 34 class BalancedMediaTaskRunnerFactory; |
34 class HoleFrameFactory; | 35 class HoleFrameFactory; |
35 class MediaPipelineProxy; | 36 class MediaPipelineProxy; |
36 class VideoPipelineProxy; | 37 class VideoPipelineProxy; |
37 | 38 |
38 class CmaRenderer : public ::media::Renderer { | 39 class CmaRenderer : public ::media::Renderer { |
39 public: | 40 public: |
40 CmaRenderer(scoped_ptr<MediaPipelineProxy> media_pipeline, | 41 CmaRenderer(std::unique_ptr<MediaPipelineProxy> media_pipeline, |
41 ::media::VideoRendererSink* video_renderer_sink, | 42 ::media::VideoRendererSink* video_renderer_sink, |
42 ::media::GpuVideoAcceleratorFactories* gpu_factories); | 43 ::media::GpuVideoAcceleratorFactories* gpu_factories); |
43 ~CmaRenderer() override; | 44 ~CmaRenderer() override; |
44 | 45 |
45 // ::media::Renderer implementation: | 46 // ::media::Renderer implementation: |
46 void Initialize(::media::DemuxerStreamProvider* demuxer_stream_provider, | 47 void Initialize(::media::DemuxerStreamProvider* demuxer_stream_provider, |
47 const ::media::PipelineStatusCB& init_cb, | 48 const ::media::PipelineStatusCB& init_cb, |
48 const ::media::StatisticsCB& statistics_cb, | 49 const ::media::StatisticsCB& statistics_cb, |
49 const ::media::BufferingStateCB& buffering_state_cb, | 50 const ::media::BufferingStateCB& buffering_state_cb, |
50 const base::Closure& ended_cb, | 51 const base::Closure& ended_cb, |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 void OnError(::media::PipelineStatus status); | 95 void OnError(::media::PipelineStatus status); |
95 | 96 |
96 // Begin a state transition. | 97 // Begin a state transition. |
97 // Return true if delayed because of a pending state transition. | 98 // Return true if delayed because of a pending state transition. |
98 void BeginStateTransition(); | 99 void BeginStateTransition(); |
99 void CompleteStateTransition(State new_state); | 100 void CompleteStateTransition(State new_state); |
100 | 101 |
101 base::ThreadChecker thread_checker_; | 102 base::ThreadChecker thread_checker_; |
102 | 103 |
103 scoped_refptr<BalancedMediaTaskRunnerFactory> media_task_runner_factory_; | 104 scoped_refptr<BalancedMediaTaskRunnerFactory> media_task_runner_factory_; |
104 scoped_ptr<MediaPipelineProxy> media_pipeline_; | 105 std::unique_ptr<MediaPipelineProxy> media_pipeline_; |
105 AudioPipelineProxy* audio_pipeline_; | 106 AudioPipelineProxy* audio_pipeline_; |
106 VideoPipelineProxy* video_pipeline_; | 107 VideoPipelineProxy* video_pipeline_; |
107 ::media::VideoRendererSink* video_renderer_sink_; | 108 ::media::VideoRendererSink* video_renderer_sink_; |
108 | 109 |
109 ::media::DemuxerStreamProvider* demuxer_stream_provider_; | 110 ::media::DemuxerStreamProvider* demuxer_stream_provider_; |
110 | 111 |
111 // Set of callbacks. | 112 // Set of callbacks. |
112 ::media::PipelineStatusCB init_cb_; | 113 ::media::PipelineStatusCB init_cb_; |
113 ::media::StatisticsCB statistics_cb_; | 114 ::media::StatisticsCB statistics_cb_; |
114 base::Closure ended_cb_; | 115 base::Closure ended_cb_; |
(...skipping 10 matching lines...) Expand all Loading... |
125 bool has_audio_; | 126 bool has_audio_; |
126 bool has_video_; | 127 bool has_video_; |
127 | 128 |
128 bool received_audio_eos_; | 129 bool received_audio_eos_; |
129 bool received_video_eos_; | 130 bool received_video_eos_; |
130 | 131 |
131 // Data members for helping the creation of the video hole frame. | 132 // Data members for helping the creation of the video hole frame. |
132 gfx::Size initial_natural_size_; | 133 gfx::Size initial_natural_size_; |
133 bool initial_video_hole_created_; | 134 bool initial_video_hole_created_; |
134 ::media::GpuVideoAcceleratorFactories* gpu_factories_; | 135 ::media::GpuVideoAcceleratorFactories* gpu_factories_; |
135 scoped_ptr<HoleFrameFactory> hole_frame_factory_; | 136 std::unique_ptr<HoleFrameFactory> hole_frame_factory_; |
136 | 137 |
137 // Lock protecting access to |time_interpolator_|. | 138 // Lock protecting access to |time_interpolator_|. |
138 base::Lock time_interpolator_lock_; | 139 base::Lock time_interpolator_lock_; |
139 | 140 |
140 // base::TickClock used by |time_interpolator_|. | 141 // base::TickClock used by |time_interpolator_|. |
141 base::DefaultTickClock default_tick_clock_; | 142 base::DefaultTickClock default_tick_clock_; |
142 | 143 |
143 // Tracks the most recent media time update and provides interpolated values | 144 // Tracks the most recent media time update and provides interpolated values |
144 // as playback progresses. | 145 // as playback progresses. |
145 scoped_ptr<::media::TimeDeltaInterpolator> time_interpolator_; | 146 std::unique_ptr<::media::TimeDeltaInterpolator> time_interpolator_; |
146 | 147 |
147 double playback_rate_; | 148 double playback_rate_; |
148 | 149 |
149 base::WeakPtr<CmaRenderer> weak_this_; | 150 base::WeakPtr<CmaRenderer> weak_this_; |
150 base::WeakPtrFactory<CmaRenderer> weak_factory_; | 151 base::WeakPtrFactory<CmaRenderer> weak_factory_; |
151 | 152 |
152 DISALLOW_COPY_AND_ASSIGN(CmaRenderer); | 153 DISALLOW_COPY_AND_ASSIGN(CmaRenderer); |
153 }; | 154 }; |
154 | 155 |
155 } // namespace media | 156 } // namespace media |
156 } // namespace chromecast | 157 } // namespace chromecast |
157 | 158 |
158 #endif // CHROMECAST_RENDERER_MEDIA_CMA_RENDERER_H_ | 159 #endif // CHROMECAST_RENDERER_MEDIA_CMA_RENDERER_H_ |
OLD | NEW |