Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(41)

Side by Side Diff: media/base/android/media_source_player.h

Issue 596093002: Let audio wait for video to finish prerolling after seek (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressing comments Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « media/base/android/media_decoder_job.h ('k') | media/base/android/media_source_player.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 83
84 // Playback is completed for one channel. 84 // Playback is completed for one channel.
85 void PlaybackCompleted(bool is_audio); 85 void PlaybackCompleted(bool is_audio);
86 86
87 // Called when the decoder finishes its task. 87 // Called when the decoder finishes its task.
88 void MediaDecoderCallback( 88 void MediaDecoderCallback(
89 bool is_audio, MediaCodecStatus status, 89 bool is_audio, MediaCodecStatus status,
90 base::TimeDelta current_presentation_timestamp, 90 base::TimeDelta current_presentation_timestamp,
91 base::TimeDelta max_presentation_timestamp); 91 base::TimeDelta max_presentation_timestamp);
92 92
93 bool IsPrerollFinished(bool is_audio) const;
94
93 // Gets MediaCrypto object from |drm_bridge_|. 95 // Gets MediaCrypto object from |drm_bridge_|.
94 base::android::ScopedJavaLocalRef<jobject> GetMediaCrypto(); 96 base::android::ScopedJavaLocalRef<jobject> GetMediaCrypto();
95 97
96 // Callback to notify that MediaCrypto is ready in |drm_bridge_|. 98 // Callback to notify that MediaCrypto is ready in |drm_bridge_|.
97 void OnMediaCryptoReady(); 99 void OnMediaCryptoReady();
98 100
99 // Handle pending events if all the decoder jobs are not currently decoding. 101 // Handle pending events if all the decoder jobs are not currently decoding.
100 void ProcessPendingEvents(); 102 void ProcessPendingEvents();
101 103
102 // Flush the decoders and clean up all the data needs to be decoded. 104 // Flush the decoders and clean up all the data needs to be decoded.
103 void ClearDecodingData(); 105 void ClearDecodingData();
104 106
105 // Called to decode more data. 107 // Called to decode more data.
106 void DecodeMoreAudio(); 108 void DecodeMoreAudio();
107 void DecodeMoreVideo(); 109 void DecodeMoreVideo();
108 110
109 // Functions check whether audio/video is present. 111 // Functions check whether audio/video is present.
110 bool HasVideo(); 112 bool HasVideo() const;
111 bool HasAudio(); 113 bool HasAudio() const;
112 114
113 // Functions that check whether audio/video stream has reached end of output 115 // Functions that check whether audio/video stream has reached end of output
114 // or are not present in player configuration. 116 // or are not present in player configuration.
115 bool AudioFinished(); 117 bool AudioFinished();
116 bool VideoFinished(); 118 bool VideoFinished();
117 119
118 // Determine seekability based on duration. 120 // Determine seekability based on duration.
119 bool Seekable(); 121 bool Seekable();
120 122
121 // Called when the |decoder_starvation_callback_| times out. 123 // Called when the |decoder_starvation_callback_| times out.
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 253
252 // Indicates whether the player is waiting for audio or video decoder to be 254 // Indicates whether the player is waiting for audio or video decoder to be
253 // created. This could happen if video surface is not available or key is 255 // created. This could happen if video surface is not available or key is
254 // not added. 256 // not added.
255 bool is_waiting_for_audio_decoder_; 257 bool is_waiting_for_audio_decoder_;
256 bool is_waiting_for_video_decoder_; 258 bool is_waiting_for_video_decoder_;
257 259
258 // Test-only callback for hooking the completion of the next decode cycle. 260 // Test-only callback for hooking the completion of the next decode cycle.
259 base::Closure decode_callback_for_testing_; 261 base::Closure decode_callback_for_testing_;
260 262
263 // Whether audio or video decoder is in the process of prerolling.
264 bool prerolling_;
265
261 // Weak pointer passed to media decoder jobs for callbacks. 266 // Weak pointer passed to media decoder jobs for callbacks.
262 // NOTE: Weak pointers must be invalidated before all other member variables. 267 // NOTE: Weak pointers must be invalidated before all other member variables.
263 base::WeakPtrFactory<MediaSourcePlayer> weak_factory_; 268 base::WeakPtrFactory<MediaSourcePlayer> weak_factory_;
264 base::WeakPtr<MediaSourcePlayer> weak_this_; 269 base::WeakPtr<MediaSourcePlayer> weak_this_;
265 270
266 DISALLOW_COPY_AND_ASSIGN(MediaSourcePlayer); 271 DISALLOW_COPY_AND_ASSIGN(MediaSourcePlayer);
267 }; 272 };
268 273
269 } // namespace media 274 } // namespace media
270 275
271 #endif // MEDIA_BASE_ANDROID_MEDIA_SOURCE_PLAYER_H_ 276 #endif // MEDIA_BASE_ANDROID_MEDIA_SOURCE_PLAYER_H_
OLDNEW
« no previous file with comments | « media/base/android/media_decoder_job.h ('k') | media/base/android/media_source_player.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698