| 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 |