[vlc-commits] opensles: Add macros to reduce khronos API verbosity
Rafaël Carré
git at videolan.org
Sun Jan 22 08:12:47 CET 2012
vlc | branch: master | Rafaël Carré <funman at videolan.org> | 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 );
}
-
More information about the vlc-commits
mailing list