[vlc-devel] [PATCH 1/2] opensles_android: Implement TimeGet
Edward Wang
edward.c.wang at compdigitec.com
Tue Nov 13 13:27:42 CET 2012
---
modules/audio_output/opensles_android.c | 24 ++++++++++++++++++------
1 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/modules/audio_output/opensles_android.c b/modules/audio_output/opensles_android.c
index 701c55a..38061fb 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;
}
--
1.7.5.4
More information about the vlc-devel
mailing list