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 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 // For testing only. | 179 // For testing only. |
180 typedef base::Callback<void(DemuxerStream::Type, | 180 typedef base::Callback<void(DemuxerStream::Type, |
181 base::TimeDelta, | 181 base::TimeDelta, |
182 base::TimeDelta)> DecodersTimeCallback; | 182 base::TimeDelta)> DecodersTimeCallback; |
183 | 183 |
184 // For testing only. | 184 // For testing only. |
185 typedef base::Callback<void(DemuxerStream::Type)> CodecCreatedCallback; | 185 typedef base::Callback<void(DemuxerStream::Type)> CodecCreatedCallback; |
186 | 186 |
187 // Constructs a player with the given ID and demuxer. |manager| must outlive | 187 // Constructs a player with the given ID and demuxer. |manager| must outlive |
188 // the lifetime of this object. | 188 // the lifetime of this object. |
189 MediaCodecPlayer(int player_id, | 189 MediaCodecPlayer( |
190 base::WeakPtr<MediaPlayerManager> manager, | 190 int player_id, |
191 const RequestMediaResourcesCB& request_media_resources_cb, | 191 base::WeakPtr<MediaPlayerManager> manager, |
192 scoped_ptr<DemuxerAndroid> demuxer, | 192 const OnDecoderResourcesReleasedCB& on_decoder_resources_released_cb, |
193 const GURL& frame_url); | 193 scoped_ptr<DemuxerAndroid> demuxer, |
| 194 const GURL& frame_url); |
194 ~MediaCodecPlayer() override; | 195 ~MediaCodecPlayer() override; |
195 | 196 |
196 // A helper method that performs the media thread part of initialization. | 197 // A helper method that performs the media thread part of initialization. |
197 void Initialize(); | 198 void Initialize(); |
198 | 199 |
199 // MediaPlayerAndroid implementation. | 200 // MediaPlayerAndroid implementation. |
200 void DeleteOnCorrectThread() override; | 201 void DeleteOnCorrectThread() override; |
201 void SetVideoSurface(gfx::ScopedJavaSurface surface) override; | 202 void SetVideoSurface(gfx::ScopedJavaSurface surface) override; |
202 void Start() override; | 203 void Start() override; |
203 void Pause(bool is_media_related_action) override; | 204 void Pause(bool is_media_related_action) override; |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 void OnStopDone(DemuxerStream::Type type); | 291 void OnStopDone(DemuxerStream::Type type); |
291 void OnMissingKeyReported(DemuxerStream::Type type); | 292 void OnMissingKeyReported(DemuxerStream::Type type); |
292 void OnError(); | 293 void OnError(); |
293 void OnStarvation(DemuxerStream::Type stream_type); | 294 void OnStarvation(DemuxerStream::Type stream_type); |
294 void OnTimeIntervalUpdate(DemuxerStream::Type stream_type, | 295 void OnTimeIntervalUpdate(DemuxerStream::Type stream_type, |
295 base::TimeDelta now_playing, | 296 base::TimeDelta now_playing, |
296 base::TimeDelta last_buffered, | 297 base::TimeDelta last_buffered, |
297 bool postpone); | 298 bool postpone); |
298 | 299 |
299 // Callbacks from video decoder | 300 // Callbacks from video decoder |
300 void OnVideoCodecCreated(); | |
301 void OnVideoResolutionChanged(const gfx::Size& size); | 301 void OnVideoResolutionChanged(const gfx::Size& size); |
302 | 302 |
303 // Callbacks from CDM | 303 // Callbacks from CDM |
304 void OnMediaCryptoReady(MediaDrmBridge::JavaObjectPtr media_crypto, | 304 void OnMediaCryptoReady(MediaDrmBridge::JavaObjectPtr media_crypto, |
305 bool needs_protected_surface); | 305 bool needs_protected_surface); |
306 void OnKeyAdded(); | 306 void OnKeyAdded(); |
307 void OnCdmUnset(); | 307 void OnCdmUnset(); |
308 | 308 |
309 // Operations called from the state machine. | 309 // Operations called from the state machine. |
310 void SetState(PlayerState new_state); | 310 void SetState(PlayerState new_state); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 | 343 |
344 // Major components: demuxer, audio and video decoders. | 344 // Major components: demuxer, audio and video decoders. |
345 scoped_ptr<DemuxerAndroid> demuxer_; | 345 scoped_ptr<DemuxerAndroid> demuxer_; |
346 scoped_ptr<MediaCodecAudioDecoder> audio_decoder_; | 346 scoped_ptr<MediaCodecAudioDecoder> audio_decoder_; |
347 scoped_ptr<MediaCodecVideoDecoder> video_decoder_; | 347 scoped_ptr<MediaCodecVideoDecoder> video_decoder_; |
348 | 348 |
349 // The state of the state machine. | 349 // The state of the state machine. |
350 PlayerState state_; | 350 PlayerState state_; |
351 | 351 |
352 // Notification callbacks, they call MediaPlayerManager. | 352 // Notification callbacks, they call MediaPlayerManager. |
353 base::Closure request_resources_cb_; | |
354 TimeUpdateCallback time_update_cb_; | 353 TimeUpdateCallback time_update_cb_; |
355 base::Closure completion_cb_; | 354 base::Closure completion_cb_; |
356 base::Closure waiting_for_decryption_key_cb_; | 355 base::Closure waiting_for_decryption_key_cb_; |
357 SeekDoneCallback seek_done_cb_; | 356 SeekDoneCallback seek_done_cb_; |
358 ErrorCallback error_cb_; | 357 ErrorCallback error_cb_; |
359 | 358 |
360 // A callback that updates metadata cache and calls the manager. | 359 // A callback that updates metadata cache and calls the manager. |
361 MetadataChangedCallback metadata_changed_cb_; | 360 MetadataChangedCallback metadata_changed_cb_; |
362 | 361 |
363 // We call the base class' AttachListener() and DetachListener() methods on UI | 362 // We call the base class' AttachListener() and DetachListener() methods on UI |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
417 base::WeakPtr<MediaCodecPlayer> media_weak_this_; | 416 base::WeakPtr<MediaCodecPlayer> media_weak_this_; |
418 // NOTE: Weak pointers must be invalidated before all other member variables. | 417 // NOTE: Weak pointers must be invalidated before all other member variables. |
419 base::WeakPtrFactory<MediaCodecPlayer> media_weak_factory_; | 418 base::WeakPtrFactory<MediaCodecPlayer> media_weak_factory_; |
420 | 419 |
421 DISALLOW_COPY_AND_ASSIGN(MediaCodecPlayer); | 420 DISALLOW_COPY_AND_ASSIGN(MediaCodecPlayer); |
422 }; | 421 }; |
423 | 422 |
424 } // namespace media | 423 } // namespace media |
425 | 424 |
426 #endif // MEDIA_BASE_ANDROID_MEDIA_CODEC_PLAYER_H_ | 425 #endif // MEDIA_BASE_ANDROID_MEDIA_CODEC_PLAYER_H_ |
OLD | NEW |