[vlc-commits] opensles: more precise TimeGet
Rafaël Carré
git at videolan.org
Sun Dec 16 11:12:55 CET 2012
vlc | branch: master | Rafaël Carré <funman at videolan.org> | Sun Dec 16 10:31:05 2012 +0100| [a1d30f6095adb1432bfc353f90ea0945b59c3752] | committer: Rafaël Carré
opensles: more precise TimeGet
Take in account the time elapsed since the last callback
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a1d30f6095adb1432bfc353f90ea0945b59c3752
---
modules/audio_output/opensles_android.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/modules/audio_output/opensles_android.c b/modules/audio_output/opensles_android.c
index 5f77e65..762fd60 100644
--- a/modules/audio_output/opensles_android.c
+++ b/modules/audio_output/opensles_android.c
@@ -72,6 +72,7 @@ struct aout_sys_t
mtime_t length;
int buffers;
+ mtime_t last_callback;
/* audio buffered through opensles */
block_t *p_chain;
@@ -168,8 +169,12 @@ static int TimeGet(audio_output_t* p_aout, mtime_t* restrict drift)
vlc_mutex_lock( &p_sys->lock );
mtime_t delay = p_sys->length;
+ mtime_t last_callback = p_sys->last_callback;
vlc_mutex_unlock( &p_sys->lock );
+ if (last_callback != 0)
+ delay += last_callback - mdate();
+
SLAndroidSimpleBufferQueueState st;
SLresult res = GetState(p_sys->playerBufferQueue, &st);
if (unlikely(res != SL_RESULT_SUCCESS)) {
@@ -262,6 +267,7 @@ static void PlayedCallback (SLAndroidSimpleBufferQueueItf caller, void *pContext
vlc_mutex_lock( &p_sys->lock );
p_sys->buffers--;
+ p_sys->last_callback = mdate();
p_block = p_sys->p_chain;
assert( p_block );
More information about the vlc-commits
mailing list