Chromium Code Reviews| Index: media/base/android/media_source_player.h |
| diff --git a/media/base/android/media_source_player.h b/media/base/android/media_source_player.h |
| index 0163eaa80d1c07dc76dd57cad28bf78428227c41..f726c4f453da1b820119eb9f8c16363553f80fd9 100644 |
| --- a/media/base/android/media_source_player.h |
| +++ b/media/base/android/media_source_player.h |
| @@ -59,6 +59,9 @@ class MediaDecoderJob { |
| // Causes this instance to be deleted on the thread it is bound to. |
| void Release(); |
| + // Called on the UI thread to indicate that one decode cycle has completed. |
| + void OnDecodeCompleted(); |
| + |
| protected: |
| MediaDecoderJob(base::Thread* thread, bool is_audio); |
| @@ -96,8 +99,12 @@ class MediaDecoderJob { |
| // Whether this is an audio decoder. |
| bool is_audio_; |
| - // Weak pointer passed to media decoder jobs for callbacks. |
| + // Weak pointer passed to media decoder jobs for callbacks. It is bounded to |
| + // the decoder thread. |
| base::WeakPtrFactory<MediaDecoderJob> weak_this_; |
| + |
| + // Whether the decoder is actively decoding data. |
| + bool decoding_; |
| }; |
| typedef scoped_ptr<MediaDecoderJob, MediaDecoderJob::Deleter> |
| @@ -131,7 +138,7 @@ class MEDIA_EXPORT MediaSourcePlayer : public MediaPlayerAndroid { |
| virtual bool CanSeekForward() OVERRIDE; |
| virtual bool CanSeekBackward() OVERRIDE; |
| virtual bool IsPlayerReady() OVERRIDE; |
| - virtual void OnSeekRequestAck() OVERRIDE; |
| + virtual void OnSeekRequestAck(unsigned request_id) OVERRIDE; |
|
acolwell GONE FROM CHROMIUM
2013/06/04 15:19:14
nit:ditto
qinmin
2013/06/04 19:03:23
Done.
|
| // Called when the demuxer is ready. |
| virtual void DemuxerReady( |
| @@ -162,6 +169,9 @@ class MEDIA_EXPORT MediaSourcePlayer : public MediaPlayerAndroid { |
| // Handle pending events when all the decoder jobs finished. |
| void ProcessPendingEvents(); |
| + // Helper method to create the decoder jobs. |
| + void CreateMediaDecoderJobs(bool config_change); |
| + |
| // Flush the decoders and clean up all the data needs to be decoded. |
| void ClearDecodingData(); |
| @@ -177,6 +187,7 @@ class MEDIA_EXPORT MediaSourcePlayer : public MediaPlayerAndroid { |
| NO_EVENT_PENDING = 0, |
| SEEK_EVENT_PENDING = 1 << 0, |
| SURFACE_CHANGE_EVENT_PENDING = 1 << 1, |
| + CONFIG_CHANGE_EVENT_PENDING = 1 << 2, |
| }; |
| // Pending event that the player needs to do. |
| unsigned pending_event_; |
| @@ -184,6 +195,9 @@ class MEDIA_EXPORT MediaSourcePlayer : public MediaPlayerAndroid { |
| // Number of active decoding tasks. |
| int active_decoding_tasks_; |
| + // ID to keep track of whether all the seek requests are acked. |
| + unsigned seek_request_id_; |
| + |
| // Stats about the media. |
| base::TimeDelta duration_; |
| int width_; |
| @@ -208,7 +222,10 @@ class MEDIA_EXPORT MediaSourcePlayer : public MediaPlayerAndroid { |
| base::Time start_wallclock_time_; |
| base::TimeDelta start_presentation_timestamp_; |
| - // Decoder jobs. |
| + // The surface object currently owned by the player. |
| + gfx::ScopedJavaSurface surface_; |
| + |
| + // Decoder jobs |
| ScopedMediaDecoderJob audio_decoder_job_; |
| ScopedMediaDecoderJob video_decoder_job_; |
| @@ -222,9 +239,6 @@ class MEDIA_EXPORT MediaSourcePlayer : public MediaPlayerAndroid { |
| MediaPlayerHostMsg_ReadFromDemuxerAck_Params received_audio_; |
| MediaPlayerHostMsg_ReadFromDemuxerAck_Params received_video_; |
| - // Whether the video decoder need to use anempty surface. |
| - bool use_empty_surface_; |
| - |
| // Weak pointer passed to media decoder jobs for callbacks. |
| base::WeakPtrFactory<MediaSourcePlayer> weak_this_; |