Commit a1d30f60 authored by Rafaël Carré's avatar Rafaël Carré

opensles: more precise TimeGet

Take in account the time elapsed since the last callback
parent 8b573812
...@@ -72,6 +72,7 @@ struct aout_sys_t ...@@ -72,6 +72,7 @@ struct aout_sys_t
mtime_t length; mtime_t length;
int buffers; int buffers;
mtime_t last_callback;
/* audio buffered through opensles */ /* audio buffered through opensles */
block_t *p_chain; block_t *p_chain;
...@@ -168,8 +169,12 @@ static int TimeGet(audio_output_t* p_aout, mtime_t* restrict drift) ...@@ -168,8 +169,12 @@ static int TimeGet(audio_output_t* p_aout, mtime_t* restrict drift)
vlc_mutex_lock( &p_sys->lock ); vlc_mutex_lock( &p_sys->lock );
mtime_t delay = p_sys->length; mtime_t delay = p_sys->length;
mtime_t last_callback = p_sys->last_callback;
vlc_mutex_unlock( &p_sys->lock ); vlc_mutex_unlock( &p_sys->lock );
if (last_callback != 0)
delay += last_callback - mdate();
SLAndroidSimpleBufferQueueState st; SLAndroidSimpleBufferQueueState st;
SLresult res = GetState(p_sys->playerBufferQueue, &st); SLresult res = GetState(p_sys->playerBufferQueue, &st);
if (unlikely(res != SL_RESULT_SUCCESS)) { if (unlikely(res != SL_RESULT_SUCCESS)) {
...@@ -262,6 +267,7 @@ static void PlayedCallback (SLAndroidSimpleBufferQueueItf caller, void *pContext ...@@ -262,6 +267,7 @@ static void PlayedCallback (SLAndroidSimpleBufferQueueItf caller, void *pContext
vlc_mutex_lock( &p_sys->lock ); vlc_mutex_lock( &p_sys->lock );
p_sys->buffers--; p_sys->buffers--;
p_sys->last_callback = mdate();
p_block = p_sys->p_chain; p_block = p_sys->p_chain;
assert( p_block ); assert( p_block );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment