| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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_SOURCE_PLAYER_H_ | 5 #ifndef MEDIA_BASE_ANDROID_MEDIA_SOURCE_PLAYER_H_ |
| 6 #define MEDIA_BASE_ANDROID_MEDIA_SOURCE_PLAYER_H_ | 6 #define MEDIA_BASE_ANDROID_MEDIA_SOURCE_PLAYER_H_ |
| 7 | 7 |
| 8 #include <jni.h> | 8 #include <jni.h> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 virtual bool IsSurfaceInUse() const OVERRIDE; | 67 virtual bool IsSurfaceInUse() const OVERRIDE; |
| 68 | 68 |
| 69 // DemuxerAndroidClient implementation. | 69 // DemuxerAndroidClient implementation. |
| 70 virtual void OnDemuxerConfigsAvailable(const DemuxerConfigs& params) OVERRIDE; | 70 virtual void OnDemuxerConfigsAvailable(const DemuxerConfigs& params) OVERRIDE; |
| 71 virtual void OnDemuxerDataAvailable(const DemuxerData& params) OVERRIDE; | 71 virtual void OnDemuxerDataAvailable(const DemuxerData& params) OVERRIDE; |
| 72 virtual void OnDemuxerSeekDone( | 72 virtual void OnDemuxerSeekDone( |
| 73 const base::TimeDelta& actual_browser_seek_time) OVERRIDE; | 73 const base::TimeDelta& actual_browser_seek_time) OVERRIDE; |
| 74 virtual void OnDemuxerDurationChanged(base::TimeDelta duration) OVERRIDE; | 74 virtual void OnDemuxerDurationChanged(base::TimeDelta duration) OVERRIDE; |
| 75 | 75 |
| 76 private: | 76 private: |
| 77 friend class MediaSourcePlayerTest; |
| 78 |
| 77 // Update the current timestamp. | 79 // Update the current timestamp. |
| 78 void UpdateTimestamps(const base::TimeDelta& presentation_timestamp, | 80 void UpdateTimestamps(const base::TimeDelta& presentation_timestamp, |
| 79 size_t audio_output_bytes); | 81 size_t audio_output_bytes); |
| 80 | 82 |
| 81 // Helper function for starting media playback. | 83 // Helper function for starting media playback. |
| 82 void StartInternal(); | 84 void StartInternal(); |
| 83 | 85 |
| 84 // Playback is completed for one channel. | 86 // Playback is completed for one channel. |
| 85 void PlaybackCompleted(bool is_audio); | 87 void PlaybackCompleted(bool is_audio); |
| 86 | 88 |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 base::TimeDelta preroll_timestamp_; | 261 base::TimeDelta preroll_timestamp_; |
| 260 | 262 |
| 261 // A cancelable task that is posted when the audio decoder starts requesting | 263 // A cancelable task that is posted when the audio decoder starts requesting |
| 262 // new data. This callback runs if no data arrives before the timeout period | 264 // new data. This callback runs if no data arrives before the timeout period |
| 263 // elapses. | 265 // elapses. |
| 264 base::CancelableClosure decoder_starvation_callback_; | 266 base::CancelableClosure decoder_starvation_callback_; |
| 265 | 267 |
| 266 // Object to calculate the current audio timestamp for A/V sync. | 268 // Object to calculate the current audio timestamp for A/V sync. |
| 267 scoped_ptr<AudioTimestampHelper> audio_timestamp_helper_; | 269 scoped_ptr<AudioTimestampHelper> audio_timestamp_helper_; |
| 268 | 270 |
| 269 // Weak pointer passed to media decoder jobs for callbacks. | |
| 270 base::WeakPtrFactory<MediaSourcePlayer> weak_this_; | |
| 271 | |
| 272 MediaDrmBridge* drm_bridge_; | 271 MediaDrmBridge* drm_bridge_; |
| 273 | 272 |
| 274 // No decryption key available to decrypt the encrypted buffer. In this case, | 273 // No decryption key available to decrypt the encrypted buffer. In this case, |
| 275 // the player should pause. When a new key is added (OnKeyAdded()), we should | 274 // the player should pause. When a new key is added (OnKeyAdded()), we should |
| 276 // try to start playback again. | 275 // try to start playback again. |
| 277 bool is_waiting_for_key_; | 276 bool is_waiting_for_key_; |
| 278 | 277 |
| 279 // Test-only callback for hooking the completion of the next decode cycle. | 278 // Test-only callback for hooking the completion of the next decode cycle. |
| 280 base::Closure decode_callback_for_testing_; | 279 base::Closure decode_callback_for_testing_; |
| 281 | 280 |
| 282 // Whether |surface_| is currently used by the player. | 281 // Whether |surface_| is currently used by the player. |
| 283 bool is_surface_in_use_; | 282 bool is_surface_in_use_; |
| 284 | 283 |
| 285 friend class MediaSourcePlayerTest; | 284 // Weak pointer passed to media decoder jobs for callbacks. |
| 285 // NOTE: Weak pointers must be invalidated before all other member variables. |
| 286 base::WeakPtrFactory<MediaSourcePlayer> weak_factory_; |
| 287 |
| 286 DISALLOW_COPY_AND_ASSIGN(MediaSourcePlayer); | 288 DISALLOW_COPY_AND_ASSIGN(MediaSourcePlayer); |
| 287 }; | 289 }; |
| 288 | 290 |
| 289 } // namespace media | 291 } // namespace media |
| 290 | 292 |
| 291 #endif // MEDIA_BASE_ANDROID_MEDIA_SOURCE_PLAYER_H_ | 293 #endif // MEDIA_BASE_ANDROID_MEDIA_SOURCE_PLAYER_H_ |
| OLD | NEW |