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

Unified Diff: media/base/android/media_decoder_job.h

Issue 215783002: Fix an issue that audio and video may run out of sync (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressing wolenetz's comment Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: media/base/android/media_decoder_job.h
diff --git a/media/base/android/media_decoder_job.h b/media/base/android/media_decoder_job.h
index 77caa9feec7f059b52c0fe8896dfc7bc63b66a08..799f48b87e6b927884c225b2ef8675d87f02b4aa 100644
--- a/media/base/android/media_decoder_job.h
+++ b/media/base/android/media_decoder_job.h
@@ -29,15 +29,18 @@ class MediaDecoderJob {
};
// Callback when a decoder job finishes its work. Args: whether decode
- // finished successfully, presentation time, audio output bytes.
+ // finished successfully, presentation time, audio output bytes, current
+ // audio frame position, current time.
// If the presentation time is equal to kNoTimestamp(), the decoder job
// skipped rendering of the decoded output and the callback target should
// update its clock to avoid introducing extra delays to the next frame.
typedef base::Callback<void(MediaCodecStatus, base::TimeDelta,
- size_t)> DecoderCallback;
+ size_t, int64, base::TimeTicks)> DecoderCallback;
// Callback when a decoder job finishes releasing the output buffer.
- // Args: audio output bytes, must be 0 for video.
- typedef base::Callback<void(size_t)> ReleaseOutputCompletionCallback;
+ // Args: audio output bytes, current audio frame position, current time.
+ // All of them must be 0 or empty for video.
+ typedef base::Callback<void(size_t, int64, base::TimeTicks)>
+ ReleaseOutputCompletionCallback;
virtual ~MediaDecoderJob();
@@ -138,7 +141,9 @@ class MediaDecoderJob {
// destruction was not pending, passes its arguments to |decode_cb_|.
void OnDecodeCompleted(MediaCodecStatus status,
base::TimeDelta presentation_timestamp,
- size_t audio_output_bytes);
+ size_t audio_output_bytes,
+ int64 audio_head_position,
+ base::TimeTicks audio_render_time);
// Helper function to get the current access unit that is being decoded.
const AccessUnit& CurrentAccessUnit() const;

Powered by Google App Engine
This is Rietveld 408576698