| 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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 void SetVolume(double volume) override; | 56 void SetVolume(double volume) override; |
| 57 int GetVideoWidth() override; | 57 int GetVideoWidth() override; |
| 58 int GetVideoHeight() override; | 58 int GetVideoHeight() override; |
| 59 base::TimeDelta GetCurrentTime() override; | 59 base::TimeDelta GetCurrentTime() override; |
| 60 base::TimeDelta GetDuration() override; | 60 base::TimeDelta GetDuration() override; |
| 61 bool IsPlaying() override; | 61 bool IsPlaying() override; |
| 62 bool CanPause() override; | 62 bool CanPause() override; |
| 63 bool CanSeekForward() override; | 63 bool CanSeekForward() override; |
| 64 bool CanSeekBackward() override; | 64 bool CanSeekBackward() override; |
| 65 bool IsPlayerReady() override; | 65 bool IsPlayerReady() override; |
| 66 void SetCdm(BrowserCdm* cdm) override; | 66 void SetCdm(const scoped_refptr<MediaKeys>& cdm) override; |
| 67 | 67 |
| 68 // DemuxerAndroidClient implementation. | 68 // DemuxerAndroidClient implementation. |
| 69 void OnDemuxerConfigsAvailable(const DemuxerConfigs& params) override; | 69 void OnDemuxerConfigsAvailable(const DemuxerConfigs& params) override; |
| 70 void OnDemuxerDataAvailable(const DemuxerData& params) override; | 70 void OnDemuxerDataAvailable(const DemuxerData& params) override; |
| 71 void OnDemuxerSeekDone(base::TimeDelta actual_browser_seek_time) override; | 71 void OnDemuxerSeekDone(base::TimeDelta actual_browser_seek_time) override; |
| 72 void OnDemuxerDurationChanged(base::TimeDelta duration) override; | 72 void OnDemuxerDurationChanged(base::TimeDelta duration) override; |
| 73 | 73 |
| 74 private: | 74 private: |
| 75 friend class MediaSourcePlayerTest; | 75 friend class MediaSourcePlayerTest; |
| 76 | 76 |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 // Called when the demuxer config changes. | 158 // Called when the demuxer config changes. |
| 159 void OnDemuxerConfigsChanged(); | 159 void OnDemuxerConfigsChanged(); |
| 160 | 160 |
| 161 // Called when new decryption key becomes available. | 161 // Called when new decryption key becomes available. |
| 162 void OnKeyAdded(); | 162 void OnKeyAdded(); |
| 163 | 163 |
| 164 // Called to resume playback after NO_KEY is received, but a new key is | 164 // Called to resume playback after NO_KEY is received, but a new key is |
| 165 // available. | 165 // available. |
| 166 void ResumePlaybackAfterKeyAdded(); | 166 void ResumePlaybackAfterKeyAdded(); |
| 167 | 167 |
| 168 // Called when the CDM is detached. | |
| 169 void OnCdmUnset(); | |
| 170 | |
| 171 // Test-only method to setup hook for the completion of the next decode cycle. | 168 // Test-only method to setup hook for the completion of the next decode cycle. |
| 172 // This callback state is cleared when it is next run. | 169 // This callback state is cleared when it is next run. |
| 173 // Prevent usage creep by only calling this from the | 170 // Prevent usage creep by only calling this from the |
| 174 // ReleaseWithOnPrefetchDoneAlreadyPosted MediaSourcePlayerTest. | 171 // ReleaseWithOnPrefetchDoneAlreadyPosted MediaSourcePlayerTest. |
| 175 void set_decode_callback_for_testing(const base::Closure& test_decode_cb) { | 172 void set_decode_callback_for_testing(const base::Closure& test_decode_cb) { |
| 176 decode_callback_for_testing_ = test_decode_cb; | 173 decode_callback_for_testing_ = test_decode_cb; |
| 177 } | 174 } |
| 178 | 175 |
| 179 // Please keep this in sync with |kPendingEventNames| in GetEventName(). | 176 // Please keep this in sync with |kPendingEventNames| in GetEventName(). |
| 180 enum PendingEventFlags { | 177 enum PendingEventFlags { |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 | 235 |
| 239 // Track the most recent preroll target. Decoder re-creation needs this to | 236 // Track the most recent preroll target. Decoder re-creation needs this to |
| 240 // resume any in-progress preroll. | 237 // resume any in-progress preroll. |
| 241 base::TimeDelta preroll_timestamp_; | 238 base::TimeDelta preroll_timestamp_; |
| 242 | 239 |
| 243 // A cancelable task that is posted when the audio decoder starts requesting | 240 // A cancelable task that is posted when the audio decoder starts requesting |
| 244 // new data. This callback runs if no data arrives before the timeout period | 241 // new data. This callback runs if no data arrives before the timeout period |
| 245 // elapses. | 242 // elapses. |
| 246 base::CancelableClosure decoder_starvation_callback_; | 243 base::CancelableClosure decoder_starvation_callback_; |
| 247 | 244 |
| 248 MediaDrmBridge* drm_bridge_; | 245 // Holds a ref-count to the CDM. |
| 246 scoped_refptr<MediaKeys> cdm_; |
| 247 |
| 249 int cdm_registration_id_; | 248 int cdm_registration_id_; |
| 250 | 249 |
| 251 // No decryption key available to decrypt the encrypted buffer. In this case, | 250 // No decryption key available to decrypt the encrypted buffer. In this case, |
| 252 // the player should pause. When a new key is added (OnKeyAdded()), we should | 251 // the player should pause. When a new key is added (OnKeyAdded()), we should |
| 253 // try to start playback again. | 252 // try to start playback again. |
| 254 bool is_waiting_for_key_; | 253 bool is_waiting_for_key_; |
| 255 | 254 |
| 256 // Indicates the situation where new key is added during pending decode | 255 // Indicates the situation where new key is added during pending decode |
| 257 // (this variable can only be set when *_decoder_job_->is_decoding()). If this | 256 // (this variable can only be set when *_decoder_job_->is_decoding()). If this |
| 258 // variable is true and MEDIA_CODEC_NO_KEY is returned then we need to try | 257 // variable is true and MEDIA_CODEC_NO_KEY is returned then we need to try |
| (...skipping 20 matching lines...) Expand all Loading... |
| 279 base::WeakPtr<MediaSourcePlayer> weak_this_; | 278 base::WeakPtr<MediaSourcePlayer> weak_this_; |
| 280 // NOTE: Weak pointers must be invalidated before all other member variables. | 279 // NOTE: Weak pointers must be invalidated before all other member variables. |
| 281 base::WeakPtrFactory<MediaSourcePlayer> weak_factory_; | 280 base::WeakPtrFactory<MediaSourcePlayer> weak_factory_; |
| 282 | 281 |
| 283 DISALLOW_COPY_AND_ASSIGN(MediaSourcePlayer); | 282 DISALLOW_COPY_AND_ASSIGN(MediaSourcePlayer); |
| 284 }; | 283 }; |
| 285 | 284 |
| 286 } // namespace media | 285 } // namespace media |
| 287 | 286 |
| 288 #endif // MEDIA_BASE_ANDROID_MEDIA_SOURCE_PLAYER_H_ | 287 #endif // MEDIA_BASE_ANDROID_MEDIA_SOURCE_PLAYER_H_ |
| OLD | NEW |