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_MOJO_CLIENTS_MOJO_RENDERER_H_ | 5 #ifndef MEDIA_MOJO_CLIENTS_MOJO_RENDERER_H_ |
6 #define MEDIA_MOJO_CLIENTS_MOJO_RENDERER_H_ | 6 #define MEDIA_MOJO_CLIENTS_MOJO_RENDERER_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
| 11 #include "base/time/default_tick_clock.h" |
11 #include "media/base/demuxer_stream.h" | 12 #include "media/base/demuxer_stream.h" |
12 #include "media/base/renderer.h" | 13 #include "media/base/renderer.h" |
| 14 #include "media/base/time_delta_interpolator.h" |
13 #include "media/mojo/interfaces/renderer.mojom.h" | 15 #include "media/mojo/interfaces/renderer.mojom.h" |
14 #include "mojo/public/cpp/bindings/binding.h" | 16 #include "mojo/public/cpp/bindings/binding.h" |
15 | 17 |
16 namespace base { | 18 namespace base { |
17 class SingleThreadTaskRunner; | 19 class SingleThreadTaskRunner; |
18 } | 20 } |
19 | 21 |
20 namespace media { | 22 namespace media { |
21 | 23 |
22 class DemuxerStreamProvider; | 24 class DemuxerStreamProvider; |
(...skipping 29 matching lines...) Expand all Loading... |
52 void StartPlayingFrom(base::TimeDelta time) override; | 54 void StartPlayingFrom(base::TimeDelta time) override; |
53 void SetPlaybackRate(double playback_rate) override; | 55 void SetPlaybackRate(double playback_rate) override; |
54 void SetVolume(float volume) override; | 56 void SetVolume(float volume) override; |
55 base::TimeDelta GetMediaTime() override; | 57 base::TimeDelta GetMediaTime() override; |
56 bool HasAudio() override; | 58 bool HasAudio() override; |
57 bool HasVideo() override; | 59 bool HasVideo() override; |
58 | 60 |
59 private: | 61 private: |
60 // mojom::RendererClient implementation, dispatched on the | 62 // mojom::RendererClient implementation, dispatched on the |
61 // |task_runner_|. | 63 // |task_runner_|. |
62 void OnTimeUpdate(base::TimeDelta time, base::TimeDelta max_time) override; | 64 void OnTimeUpdate(base::TimeDelta time, |
| 65 base::TimeDelta max_time, |
| 66 base::TimeTicks capture_time) override; |
63 void OnBufferingStateChange(mojom::BufferingState state) override; | 67 void OnBufferingStateChange(mojom::BufferingState state) override; |
64 void OnEnded() override; | 68 void OnEnded() override; |
65 void OnError() override; | 69 void OnError() override; |
66 void OnVideoNaturalSizeChange(const gfx::Size& size) override; | 70 void OnVideoNaturalSizeChange(const gfx::Size& size) override; |
67 void OnVideoOpacityChange(bool opaque) override; | 71 void OnVideoOpacityChange(bool opaque) override; |
68 void OnWaitingForDecryptionKey() override; | 72 void OnWaitingForDecryptionKey() override; |
69 void OnStatisticsUpdate(const PipelineStatistics& stats) override; | 73 void OnStatisticsUpdate(const PipelineStatistics& stats) override; |
70 void OnDurationChange(base::TimeDelta duration) override; | 74 void OnDurationChange(base::TimeDelta duration) override; |
71 | 75 |
72 // Binds |remote_renderer_| to the mojo message pipe. Can be called multiple | 76 // Binds |remote_renderer_| to the mojo message pipe. Can be called multiple |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 | 137 |
134 // Binding for RendererClient, bound to the |task_runner_|. | 138 // Binding for RendererClient, bound to the |task_runner_|. |
135 mojo::Binding<RendererClient> binding_; | 139 mojo::Binding<RendererClient> binding_; |
136 | 140 |
137 bool encountered_error_ = false; | 141 bool encountered_error_ = false; |
138 | 142 |
139 PipelineStatusCB init_cb_; | 143 PipelineStatusCB init_cb_; |
140 base::Closure flush_cb_; | 144 base::Closure flush_cb_; |
141 CdmAttachedCB cdm_attached_cb_; | 145 CdmAttachedCB cdm_attached_cb_; |
142 | 146 |
143 // Lock used to serialize access for |time_|. | 147 // Lock used to serialize access for |time_interpolator_|. |
144 mutable base::Lock lock_; | 148 mutable base::Lock lock_; |
145 base::TimeDelta time_; | 149 base::DefaultTickClock media_clock_; |
| 150 media::TimeDeltaInterpolator media_time_interpolator_; |
146 | 151 |
147 DISALLOW_COPY_AND_ASSIGN(MojoRenderer); | 152 DISALLOW_COPY_AND_ASSIGN(MojoRenderer); |
148 }; | 153 }; |
149 | 154 |
150 } // namespace media | 155 } // namespace media |
151 | 156 |
152 #endif // MEDIA_MOJO_CLIENTS_MOJO_RENDERER_H_ | 157 #endif // MEDIA_MOJO_CLIENTS_MOJO_RENDERER_H_ |
OLD | NEW |