vlc | branch: master | Rafaël Carré <[email protected]> | Sun Jan 22 01:46:53 2012 -0500| [856597417b4f2ae3ca6e43d414b6298d81bcc378] | committer: Rafaël Carré
opensles: Add macros to reduce khronos API verbosity > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=856597417b4f2ae3ca6e43d414b6298d81bcc378 --- modules/audio_output/opensles_android.c | 68 +++++++++++++------------------ 1 files changed, 29 insertions(+), 39 deletions(-) diff --git a/modules/audio_output/opensles_android.c b/modules/audio_output/opensles_android.c index 1093ef4..2560360 100644 --- a/modules/audio_output/opensles_android.c +++ b/modules/audio_output/opensles_android.c @@ -42,6 +42,17 @@ // Maximum number of buffers to enqueue. #define BUFF_QUEUE 42 +#define Destroy(a) (*a)->Destroy(a); +#define SetPlayState(a, b) (*a)->SetPlayState(a, b) +#define RegisterCallback(a, b, c) (*a)->RegisterCallback(a, b, c) +#define GetInterface(a, b, c) (*a)->GetInterface(a, b, c) +#define Realize(a, b) (*a)->Realize(a, b) +#define CreateOutputMix(a, b, c, d, e) (*a)->CreateOutputMix(a, b, c, d, e) +#define CreateAudioPlayer(a, b, c, d, e, f, g) \ + (*a)->CreateAudioPlayer(a, b, c, d, e, f, g) +#define Enqueue(a, b, c) (*a)->Enqueue(a, b, c) +#define Clear(a) (*a)->Clear(a) + /***************************************************************************** * aout_sys_t: audio output method descriptor ***************************************************************************** @@ -106,15 +117,9 @@ vlc_module_end () static void Clean( aout_sys_t *p_sys ) { - // Destroy buffer queue audio player object - // and invalidate all associated interfaces - (*p_sys->playerObject)->Destroy( p_sys->playerObject ); - - // destroy output mix object, and invalidate all associated interfaces - (*p_sys->outputMixObject)->Destroy( p_sys->outputMixObject ); - - // destroy engine object, and invalidate all associated interfaces - (*p_sys->engineObject)->Destroy( p_sys->engineObject ); + Destroy( p_sys->playerObject ); + Destroy( p_sys->outputMixObject ); + Destroy( p_sys->engineObject ); dlclose( p_sys->p_so_handle ); @@ -131,8 +136,7 @@ static void Play( audio_output_t *p_aout, block_t *p_buffer ) for (;;) { - SLresult result = (*p_sys->playerBufferQueue)->Enqueue( - p_sys->playerBufferQueue, p_buffer->p_buffer, + SLresult result = Enqueue( p_sys->playerBufferQueue, p_buffer->p_buffer, p_buffer->i_buffer ); switch (result) @@ -213,25 +217,21 @@ static int Open( vlc_object_t *p_this ) CHECK_OPENSL_ERROR( result, "Failed to create engine" ); // realize the engine in synchronous mode - result = (*p_sys->engineObject)->Realize( p_sys->engineObject, - SL_BOOLEAN_FALSE ); + result = Realize( p_sys->engineObject, SL_BOOLEAN_FALSE ); CHECK_OPENSL_ERROR( result, "Failed to realize engine" ); // get the engine interface, needed to create other objects - result = (*p_sys->engineObject)->GetInterface( p_sys->engineObject, - *SL_IID_ENGINE, &engineEngine ); + result = GetInterface( p_sys->engineObject, *SL_IID_ENGINE, &engineEngine ); CHECK_OPENSL_ERROR( result, "Failed to get the engine interface" ); // create output mix, with environmental reverb specified as a non-required interface const SLInterfaceID ids1[] = { *SL_IID_VOLUME }; const SLboolean req1[] = { SL_BOOLEAN_FALSE }; - result = (*engineEngine)->CreateOutputMix( engineEngine, - &p_sys->outputMixObject, 1, ids1, req1 ); + result = CreateOutputMix( engineEngine, &p_sys->outputMixObject, 1, ids1, req1 ); CHECK_OPENSL_ERROR( result, "Failed to create output mix" ); // realize the output mix in synchronous mode - result = (*p_sys->outputMixObject)->Realize( p_sys->outputMixObject, - SL_BOOLEAN_FALSE ); + result = Realize( p_sys->outputMixObject, SL_BOOLEAN_FALSE ); CHECK_OPENSL_ERROR( result, "Failed to realize output mix" ); @@ -261,38 +261,29 @@ static int Open( vlc_object_t *p_this ) //create audio player const SLInterfaceID ids2[] = { *SL_IID_ANDROIDSIMPLEBUFFERQUEUE }; - const SLboolean req2[] = { SL_BOOLEAN_TRUE }; - result = (*engineEngine)->CreateAudioPlayer( engineEngine, - &p_sys->playerObject, &audioSrc, + static const SLboolean req2[] = { SL_BOOLEAN_TRUE }; + result = CreateAudioPlayer( engineEngine, &p_sys->playerObject, &audioSrc, &audioSnk, sizeof( ids2 ) / sizeof( *ids2 ), ids2, req2 ); CHECK_OPENSL_ERROR( result, "Failed to create audio player" ); - // realize the player - result = (*p_sys->playerObject)->Realize( p_sys->playerObject, - SL_BOOLEAN_FALSE ); + result = Realize( p_sys->playerObject, SL_BOOLEAN_FALSE ); CHECK_OPENSL_ERROR( result, "Failed to realize player object." ); - // get the play interface - result = (*p_sys->playerObject)->GetInterface( p_sys->playerObject, - *SL_IID_PLAY, &p_sys->playerPlay ); + result = GetInterface( p_sys->playerObject, *SL_IID_PLAY, &p_sys->playerPlay ); CHECK_OPENSL_ERROR( result, "Failed to get player interface." ); - // get the buffer queue interface - result = (*p_sys->playerObject)->GetInterface( p_sys->playerObject, - *SL_IID_ANDROIDSIMPLEBUFFERQUEUE, + result = GetInterface( p_sys->playerObject, *SL_IID_ANDROIDSIMPLEBUFFERQUEUE, &p_sys->playerBufferQueue ); CHECK_OPENSL_ERROR( result, "Failed to get buff queue interface" ); - result = (*p_sys->playerBufferQueue)->RegisterCallback( p_sys->playerBufferQueue, - PlayedCallback, - (void*)p_sys); + result = RegisterCallback( p_sys->playerBufferQueue, PlayedCallback, + (void*)p_sys); CHECK_OPENSL_ERROR( result, "Failed to register buff queue callback." ); // set the player's state to playing - result = (*p_sys->playerPlay)->SetPlayState( p_sys->playerPlay, - SL_PLAYSTATE_PLAYING ); + result = SetPlayState( p_sys->playerPlay, SL_PLAYSTATE_PLAYING ); CHECK_OPENSL_ERROR( result, "Failed to switch to playing state" ); // we want 16bit signed data little endian. @@ -318,9 +309,8 @@ static void Close( vlc_object_t *p_this ) audio_output_t *p_aout = (audio_output_t*)p_this; aout_sys_t *p_sys = p_aout->sys; - (*p_sys->playerPlay)->SetPlayState( p_sys->playerPlay, SL_PLAYSTATE_STOPPED ); + SetPlayState( p_sys->playerPlay, SL_PLAYSTATE_STOPPED ); //Flush remaining buffers if any. - (*p_sys->playerBufferQueue)->Clear( p_sys->playerBufferQueue ); + Clear( p_sys->playerBufferQueue ); Clean( p_sys ); } - _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
