vlc | branch: master | Edward Wang <[email protected]> | Tue Nov 13 07:27:42 2012 -0500| [41052ba560ae32b4559bb85611ba15a4daac6a6c] | committer: Jean-Baptiste Kempf
opensles_android: Implement TimeGet Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=41052ba560ae32b4559bb85611ba15a4daac6a6c --- modules/audio_output/opensles_android.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/modules/audio_output/opensles_android.c b/modules/audio_output/opensles_android.c index e5e2b25..e84e92c 100644 --- a/modules/audio_output/opensles_android.c +++ b/modules/audio_output/opensles_android.c @@ -138,11 +138,26 @@ static void Pause(audio_output_t *p_aout, bool pause, mtime_t date) pause ? SL_PLAYSTATE_PAUSED : SL_PLAYSTATE_PLAYING ); } +static int TimeGet(audio_output_t* p_aout, mtime_t* restrict drift) +{ + aout_sys_t *p_sys = p_aout->sys; + mtime_t delay = p_sys->length; + SLAndroidSimpleBufferQueueState st; + SLresult res = GetState(p_sys->playerBufferQueue, &st); + if (unlikely(res != SL_RESULT_SUCCESS)) { + msg_Err(p_aout, "Could not query buffer queue state in TimeGet (%lu)", res); + return -1; + } + + if (delay && st.count) + *drift = mdate() + delay; + return 0; +} + /***************************************************************************** * Play: play a sound *****************************************************************************/ -static void Play( audio_output_t *p_aout, block_t *p_buffer, - mtime_t *restrict drift ) +static void Play( audio_output_t *p_aout, block_t *p_buffer ) { aout_sys_t *p_sys = p_aout->sys; int tries = 5; @@ -161,7 +176,6 @@ static void Play( audio_output_t *p_aout, block_t *p_buffer, vlc_mutex_lock( &p_sys->lock ); - mtime_t delay = p_sys->length; p_sys->length += p_buffer->i_length; /* If something bad happens, we must remove this buffer from the FIFO */ @@ -171,9 +185,6 @@ static void Play( audio_output_t *p_aout, block_t *p_buffer, block_ChainLastAppend( &p_sys->pp_last, p_buffer ); vlc_mutex_unlock( &p_sys->lock ); - if (delay && st.count) - *drift = mdate() + delay - p_buffer->i_pts; - for (;;) { SLresult result = Enqueue( p_sys->playerBufferQueue, p_buffer->p_buffer, @@ -405,5 +416,6 @@ static int Open (vlc_object_t *obj) /* FIXME: set volume/mute here */ aout->start = Start; aout->stop = Stop; + aout->time_get = TimeGet; return VLC_SUCCESS; } _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
