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 MEDIA_RENDERERS_RENDERER_IMPL_H_ | 5 #ifndef MEDIA_RENDERERS_RENDERER_IMPL_H_ |
6 #define MEDIA_RENDERERS_RENDERER_IMPL_H_ | 6 #define MEDIA_RENDERERS_RENDERER_IMPL_H_ |
7 | 7 |
8 #include <memory> | 8 #include <memory> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/cancelable_callback.h" | 11 #include "base/cancelable_callback.h" |
12 #include "base/macros.h" | 12 #include "base/macros.h" |
13 #include "base/memory/ref_counted.h" | 13 #include "base/memory/ref_counted.h" |
14 #include "base/memory/weak_ptr.h" | 14 #include "base/memory/weak_ptr.h" |
15 #include "base/synchronization/lock.h" | 15 #include "base/synchronization/lock.h" |
16 #include "base/time/clock.h" | 16 #include "base/time/clock.h" |
17 #include "base/time/default_tick_clock.h" | 17 #include "base/time/default_tick_clock.h" |
18 #include "base/time/time.h" | 18 #include "base/time/time.h" |
| 19 #include "base/timer/timer.h" |
19 #include "media/base/buffering_state.h" | 20 #include "media/base/buffering_state.h" |
20 #include "media/base/decryptor.h" | 21 #include "media/base/decryptor.h" |
21 #include "media/base/demuxer_stream.h" | 22 #include "media/base/demuxer_stream.h" |
22 #include "media/base/media_export.h" | 23 #include "media/base/media_export.h" |
23 #include "media/base/pipeline_status.h" | 24 #include "media/base/pipeline_status.h" |
24 #include "media/base/renderer.h" | 25 #include "media/base/renderer.h" |
25 #include "ui/gfx/geometry/size.h" | 26 #include "ui/gfx/geometry/size.h" |
26 | 27 |
27 namespace base { | 28 namespace base { |
28 class SingleThreadTaskRunner; | 29 class SingleThreadTaskRunner; |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 // Callbacks executed when a renderer has ended. | 141 // Callbacks executed when a renderer has ended. |
141 void OnRendererEnded(DemuxerStream::Type type); | 142 void OnRendererEnded(DemuxerStream::Type type); |
142 bool PlaybackHasEnded() const; | 143 bool PlaybackHasEnded() const; |
143 void RunEndedCallbackIfNeeded(); | 144 void RunEndedCallbackIfNeeded(); |
144 | 145 |
145 // Callback executed when a runtime error happens. | 146 // Callback executed when a runtime error happens. |
146 void OnError(PipelineStatus error); | 147 void OnError(PipelineStatus error); |
147 void OnWaitingForDecryptionKey(); | 148 void OnWaitingForDecryptionKey(); |
148 void OnVideoNaturalSizeChange(const gfx::Size& size); | 149 void OnVideoNaturalSizeChange(const gfx::Size& size); |
149 void OnVideoOpacityChange(bool opaque); | 150 void OnVideoOpacityChange(bool opaque); |
| 151 void OnTimeUpdate(base::TimeDelta curr_time, |
| 152 base::TimeDelta max_time, |
| 153 base::TimeTicks capture_time); |
| 154 |
| 155 // Periodically polls the media time from |time_source_| to notify |client_|. |
| 156 void UpdateMediaTime(); |
| 157 void SchedulePeriodicMediaTimeUpdates(); |
| 158 void CancelPeriodicMediaTimeUpdates(); |
150 | 159 |
151 State state_; | 160 State state_; |
152 | 161 |
153 // Task runner used to execute pipeline tasks. | 162 // Task runner used to execute pipeline tasks. |
154 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; | 163 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
155 | 164 |
156 DemuxerStreamProvider* demuxer_stream_provider_; | 165 DemuxerStreamProvider* demuxer_stream_provider_; |
157 RendererClient* client_; | 166 RendererClient* client_; |
158 | 167 |
159 // Temporary callback used for Initialize() and Flush(). | 168 // Temporary callback used for Initialize() and Flush(). |
160 PipelineStatusCB init_cb_; | 169 PipelineStatusCB init_cb_; |
161 base::Closure flush_cb_; | 170 base::Closure flush_cb_; |
162 | 171 |
163 std::unique_ptr<RendererClientInternal> audio_renderer_client_; | 172 std::unique_ptr<RendererClientInternal> audio_renderer_client_; |
164 std::unique_ptr<RendererClientInternal> video_renderer_client_; | 173 std::unique_ptr<RendererClientInternal> video_renderer_client_; |
165 std::unique_ptr<AudioRenderer> audio_renderer_; | 174 std::unique_ptr<AudioRenderer> audio_renderer_; |
166 std::unique_ptr<VideoRenderer> video_renderer_; | 175 std::unique_ptr<VideoRenderer> video_renderer_; |
167 | 176 |
168 // Renderer-provided time source used to control playback. | 177 // Renderer-provided time source used to control playback. |
169 TimeSource* time_source_; | 178 TimeSource* time_source_; |
170 std::unique_ptr<WallClockTimeSource> wall_clock_time_source_; | 179 std::unique_ptr<WallClockTimeSource> wall_clock_time_source_; |
171 bool time_ticking_; | 180 bool time_ticking_; |
| 181 base::RepeatingTimer time_update_timer_; |
172 double playback_rate_; | 182 double playback_rate_; |
173 | 183 |
174 // The time to start playback from after starting/seeking has completed. | 184 // The time to start playback from after starting/seeking has completed. |
175 base::TimeDelta start_time_; | 185 base::TimeDelta start_time_; |
176 | 186 |
177 BufferingState audio_buffering_state_; | 187 BufferingState audio_buffering_state_; |
178 BufferingState video_buffering_state_; | 188 BufferingState video_buffering_state_; |
179 | 189 |
180 // Whether we've received the audio/video ended events. | 190 // Whether we've received the audio/video ended events. |
181 bool audio_ended_; | 191 bool audio_ended_; |
(...skipping 20 matching lines...) Expand all Loading... |
202 | 212 |
203 base::WeakPtr<RendererImpl> weak_this_; | 213 base::WeakPtr<RendererImpl> weak_this_; |
204 base::WeakPtrFactory<RendererImpl> weak_factory_; | 214 base::WeakPtrFactory<RendererImpl> weak_factory_; |
205 | 215 |
206 DISALLOW_COPY_AND_ASSIGN(RendererImpl); | 216 DISALLOW_COPY_AND_ASSIGN(RendererImpl); |
207 }; | 217 }; |
208 | 218 |
209 } // namespace media | 219 } // namespace media |
210 | 220 |
211 #endif // MEDIA_RENDERERS_RENDERER_IMPL_H_ | 221 #endif // MEDIA_RENDERERS_RENDERER_IMPL_H_ |
OLD | NEW |