diff options
author | 2017-08-23 12:09:38 +0900 | |
---|---|---|
committer | 2017-08-23 13:09:38 +1000 | |
commit | 41e044ae012c6b33ea6c9c88860be787b4b5d09e (patch) | |
tree | 15776d71fe5bc13044c7ded734450589d534096f /3rdparty/SDL2/src/audio/android/opensl_io.h | |
parent | 1de4735438cf385ec99ea51b74c2274ddeee2616 (diff) |
Modification for Android build (NDK r14b, build-tools 21.1.2 and gradle 2.2.1) (#2585)
Diffstat (limited to '3rdparty/SDL2/src/audio/android/opensl_io.h')
-rw-r--r-- | 3rdparty/SDL2/src/audio/android/opensl_io.h | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/3rdparty/SDL2/src/audio/android/opensl_io.h b/3rdparty/SDL2/src/audio/android/opensl_io.h new file mode 100644 index 00000000000..5c04cd2fdd7 --- /dev/null +++ b/3rdparty/SDL2/src/audio/android/opensl_io.h @@ -0,0 +1,129 @@ +/* +opensl_io.c: +Android OpenSL input/output module header +Copyright (c) 2012, Victor Lazzarini +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the <organization> nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef OPENSL_IO +#define OPENSL_IO + +#include <SLES/OpenSLES.h> +#include <SLES/OpenSLES_Android.h> +#include <pthread.h> +#include <stdlib.h> + +typedef struct threadLock_{ + pthread_mutex_t m; + pthread_cond_t c; + unsigned char s; +} threadLock; + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct opensl_stream { + + // engine interfaces + SLObjectItf engineObject; + SLEngineItf engineEngine; + + // output mix interfaces + SLObjectItf outputMixObject; + + // buffer queue player interfaces + SLObjectItf bqPlayerObject; + SLPlayItf bqPlayerPlay; + SLAndroidSimpleBufferQueueItf bqPlayerBufferQueue; + SLEffectSendItf bqPlayerEffectSend; + + // recorder interfaces + SLObjectItf recorderObject; + SLRecordItf recorderRecord; + SLAndroidSimpleBufferQueueItf recorderBufferQueue; + + // buffer indexes + int currentInputIndex; + int currentOutputIndex; + + // current buffer half (0, 1) + int currentOutputBuffer; + int currentInputBuffer; + + // buffers + short *outputBuffer[2]; + short *inputBuffer[2]; + + // size of buffers + int outBufSamples; + int inBufSamples; + + // locks + void* inlock; + void* outlock; + + double time; + int inchannels; + int outchannels; + int sr; + +} OPENSL_STREAM; + + /* + Open the audio device with a given sampling rate (sr), input and output channels and IO buffer size + in frames. Returns a handle to the OpenSL stream + */ + OPENSL_STREAM* android_OpenAudioDevice(int sr, int inchannels, int outchannels, int bufferframes); + /* + Close the audio device + */ + void android_CloseAudioDevice(OPENSL_STREAM *p); + /* + Read a buffer from the OpenSL stream *p, of size samples. Returns the number of samples read. + */ + int android_AudioIn(OPENSL_STREAM *p, float *buffer,int size); + /* + Write a buffer to the OpenSL stream *p, of size samples. Returns the number of samples written. + */ + int android_AudioOut(OPENSL_STREAM *p, float *buffer,int size); + /* + Get the current IO block time in seconds + */ + double android_GetTimestamp(OPENSL_STREAM *p); + /* + Android SDL interface for playing + */ + void android_AudioOut2(OPENSL_STREAM *p); + /* + Android SDL interface for getBuffer + */ + unsigned char *android_GetDeviceBuffer(OPENSL_STREAM *p); + +#ifdef __cplusplus +}; +#endif + +#endif // #ifndef OPENSL_IO
\ No newline at end of file |