OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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_BASE_ANDROID_MEDIA_CODEC_PLAYER_H_ | 5 #ifndef MEDIA_BASE_ANDROID_MEDIA_CODEC_PLAYER_H_ |
6 #define MEDIA_BASE_ANDROID_MEDIA_CODEC_PLAYER_H_ | 6 #define MEDIA_BASE_ANDROID_MEDIA_CODEC_PLAYER_H_ |
7 | 7 |
8 #include "base/android/scoped_java_ref.h" | 8 #include "base/android/scoped_java_ref.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/memory/weak_ptr.h" | 10 #include "base/memory/weak_ptr.h" |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 // For testing only. | 160 // For testing only. |
161 typedef base::Callback<void(DemuxerStream::Type, | 161 typedef base::Callback<void(DemuxerStream::Type, |
162 base::TimeDelta, | 162 base::TimeDelta, |
163 base::TimeDelta)> DecodersTimeCallback; | 163 base::TimeDelta)> DecodersTimeCallback; |
164 | 164 |
165 // For testing only. | 165 // For testing only. |
166 typedef base::Callback<void(DemuxerStream::Type)> CodecCreatedCallback; | 166 typedef base::Callback<void(DemuxerStream::Type)> CodecCreatedCallback; |
167 | 167 |
168 // Constructs a player with the given ID and demuxer. |manager| must outlive | 168 // Constructs a player with the given ID and demuxer. |manager| must outlive |
169 // the lifetime of this object. | 169 // the lifetime of this object. |
170 MediaCodecPlayer(int player_id, | 170 MediaCodecPlayer( |
171 base::WeakPtr<MediaPlayerManager> manager, | 171 int player_id, |
172 const RequestMediaResourcesCB& request_media_resources_cb, | 172 base::WeakPtr<MediaPlayerManager> manager, |
173 scoped_ptr<DemuxerAndroid> demuxer, | 173 const OnPlayerReleasedCB& on_player_released_cb, |
174 const GURL& frame_url); | 174 scoped_ptr<DemuxerAndroid> demuxer, |
| 175 const GURL& frame_url); |
175 ~MediaCodecPlayer() override; | 176 ~MediaCodecPlayer() override; |
176 | 177 |
177 // A helper method that performs the media thread part of initialization. | 178 // A helper method that performs the media thread part of initialization. |
178 void Initialize(); | 179 void Initialize(); |
179 | 180 |
180 // MediaPlayerAndroid implementation. | 181 // MediaPlayerAndroid implementation. |
181 void DeleteOnCorrectThread() override; | 182 void DeleteOnCorrectThread() override; |
182 void SetVideoSurface(gfx::ScopedJavaSurface surface) override; | 183 void SetVideoSurface(gfx::ScopedJavaSurface surface) override; |
183 void Start() override; | 184 void Start() override; |
184 void Pause(bool is_media_related_action) override; | 185 void Pause(bool is_media_related_action) override; |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
257 void OnDecoderDrained(DemuxerStream::Type type); | 258 void OnDecoderDrained(DemuxerStream::Type type); |
258 void OnStopDone(DemuxerStream::Type type); | 259 void OnStopDone(DemuxerStream::Type type); |
259 void OnError(); | 260 void OnError(); |
260 void OnStarvation(DemuxerStream::Type stream_type); | 261 void OnStarvation(DemuxerStream::Type stream_type); |
261 void OnTimeIntervalUpdate(DemuxerStream::Type stream_type, | 262 void OnTimeIntervalUpdate(DemuxerStream::Type stream_type, |
262 base::TimeDelta now_playing, | 263 base::TimeDelta now_playing, |
263 base::TimeDelta last_buffered, | 264 base::TimeDelta last_buffered, |
264 bool postpone); | 265 bool postpone); |
265 | 266 |
266 // Callbacks from video decoder | 267 // Callbacks from video decoder |
267 void OnVideoCodecCreated(); | |
268 void OnVideoResolutionChanged(const gfx::Size& size); | 268 void OnVideoResolutionChanged(const gfx::Size& size); |
269 | 269 |
270 // Operations called from the state machine. | 270 // Operations called from the state machine. |
271 void SetState(PlayerState new_state); | 271 void SetState(PlayerState new_state); |
272 void SetPendingStart(bool need_to_start); | 272 void SetPendingStart(bool need_to_start); |
273 bool HasPendingStart() const; | 273 bool HasPendingStart() const; |
274 void SetPendingSeek(base::TimeDelta timestamp); | 274 void SetPendingSeek(base::TimeDelta timestamp); |
275 base::TimeDelta GetPendingSeek() const; | 275 base::TimeDelta GetPendingSeek() const; |
276 bool HasVideo() const; | 276 bool HasVideo() const; |
277 bool HasAudio() const; | 277 bool HasAudio() const; |
(...skipping 25 matching lines...) Expand all Loading... |
303 | 303 |
304 // Major components: demuxer, audio and video decoders. | 304 // Major components: demuxer, audio and video decoders. |
305 scoped_ptr<DemuxerAndroid> demuxer_; | 305 scoped_ptr<DemuxerAndroid> demuxer_; |
306 scoped_ptr<MediaCodecAudioDecoder> audio_decoder_; | 306 scoped_ptr<MediaCodecAudioDecoder> audio_decoder_; |
307 scoped_ptr<MediaCodecVideoDecoder> video_decoder_; | 307 scoped_ptr<MediaCodecVideoDecoder> video_decoder_; |
308 | 308 |
309 // The state of the state machine. | 309 // The state of the state machine. |
310 PlayerState state_; | 310 PlayerState state_; |
311 | 311 |
312 // Notification callbacks, they call MediaPlayerManager. | 312 // Notification callbacks, they call MediaPlayerManager. |
313 base::Closure request_resources_cb_; | |
314 TimeUpdateCallback time_update_cb_; | 313 TimeUpdateCallback time_update_cb_; |
315 base::Closure completion_cb_; | 314 base::Closure completion_cb_; |
316 SeekDoneCallback seek_done_cb_; | 315 SeekDoneCallback seek_done_cb_; |
317 ErrorCallback error_cb_; | 316 ErrorCallback error_cb_; |
318 | 317 |
319 // A callback that updates metadata cache and calls the manager. | 318 // A callback that updates metadata cache and calls the manager. |
320 MetadataChangedCallback metadata_changed_cb_; | 319 MetadataChangedCallback metadata_changed_cb_; |
321 | 320 |
322 // We call the base class' AttachListener() and DetachListener() methods on UI | 321 // We call the base class' AttachListener() and DetachListener() methods on UI |
323 // thread with these callbacks. | 322 // thread with these callbacks. |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
358 base::WeakPtr<MediaCodecPlayer> media_weak_this_; | 357 base::WeakPtr<MediaCodecPlayer> media_weak_this_; |
359 // NOTE: Weak pointers must be invalidated before all other member variables. | 358 // NOTE: Weak pointers must be invalidated before all other member variables. |
360 base::WeakPtrFactory<MediaCodecPlayer> media_weak_factory_; | 359 base::WeakPtrFactory<MediaCodecPlayer> media_weak_factory_; |
361 | 360 |
362 DISALLOW_COPY_AND_ASSIGN(MediaCodecPlayer); | 361 DISALLOW_COPY_AND_ASSIGN(MediaCodecPlayer); |
363 }; | 362 }; |
364 | 363 |
365 } // namespace media | 364 } // namespace media |
366 | 365 |
367 #endif // MEDIA_BASE_ANDROID_MEDIA_CODEC_PLAYER_H_ | 366 #endif // MEDIA_BASE_ANDROID_MEDIA_CODEC_PLAYER_H_ |
OLD | NEW |