@ -82,9 +82,9 @@
# include "utils.h" // Required for: fopen() Android mapping
# endif
o">/ / # if USE_MINI_AL
# include "external/mini_al.h" // Implemented in mini_al.c. Cannot implement this here because it conflicts with Win32 APIs such as CloseWindow(), etc.
o">/ / # else
cp"># include "external/mini_al.h" // Implemented in mini_al.c. Cannot implement this here because it conflicts with Win32 APIs such as CloseWindow(), etc.
cp"># if !defined(USE_MINI_AL) || USE_MINI_AL == 0
# if defined(__APPLE__)
# include "OpenAL/al.h" // OpenAL basic header
# include "OpenAL/alc.h" // OpenAL context header (like OpenGL, OpenAL requires a context to work)
@ -96,7 +96,7 @@
/ / OpenAL extension : AL_EXT_FLOAT32 - Support for 32 bit float samples
/ / OpenAL extension : AL_EXT_MCFORMATS - Support for multi - channel formats ( Quad , 5.1 , 6.1 , 7.1 )
o">/ / # endif
cp"># endif
# include <stdlib.h> // Required for: malloc(), free()
# include <string.h> // Required for: strcmp(), strncmp()
@ -176,22 +176,6 @@ typedef struct MusicData {
unsigned int samplesLeft ; / / Number of samples left to end
} MusicData ;
/ / AudioStreamData
typedef struct AudioStreamData AudioStreamData ;
struct AudioStreamData {
mal_dsp dsp ; / / AudioStream data needs to flow through a persistent conversion pipeline . Not doing this will result in glitches between buffer updates .
float volume ;
float pitch ;
bool playing ;
bool paused ;
bool isSubBufferProcessed [ 2 ] ;
unsigned int frameCursorPos ;
unsigned int bufferSizeInFrames ;
AudioStreamData * next ;
AudioStreamData * prev ;
unsigned char buffer [ 1 ] ;
} ;
# if defined(AUDIO_STANDALONE)
typedef enum { LOG_INFO = 0 , LOG_ERROR , LOG_WARNING , LOG_DEBUG , LOG_OTHER } TraceLogType ;
# endif
@ -245,6 +229,22 @@ struct SoundData
mal_uint8 data [ 1 ] ; / / Raw audio data .
} ;
/ / AudioStreamData
typedef struct AudioStreamData AudioStreamData ;
struct AudioStreamData {
mal_dsp dsp ; / / AudioStream data needs to flow through a persistent conversion pipeline . Not doing this will result in glitches between buffer updates .
float volume ;
float pitch ;
bool playing ;
bool paused ;
bool isSubBufferProcessed [ 2 ] ;
unsigned int frameCursorPos ;
unsigned int bufferSizeInFrames ;
AudioStreamData * next ;
AudioStreamData * prev ;
unsigned char buffer [ 1 ] ;
} ;
static mal_context context ;
static mal_device device ;
static mal_bool32 isAudioInitialized = MAL_FALSE ;
@ -1594,7 +1594,7 @@ float GetMusicTimePlayed(Music music)
return secondsPlayed ;
}
# if USE_MINI_AL
static mal_uint32 UpdateAudioStream_OnDSPRead ( mal_dsp * pDSP , mal_uint32 frameCount , void * pFramesOut , void * pUserData )
{
AudioStreamData * internalData = ( AudioStreamData * ) pUserData ;
@ -1652,6 +1652,7 @@ static mal_uint32 UpdateAudioStream_OnDSPRead(mal_dsp* pDSP, mal_uint32 frameCou
return frameCount ;
}
# endif
/ / Init audio stream ( to stream audio pcm data )
AudioStream InitAudioStream ( unsigned int sampleRate , unsigned int sampleSize , unsigned int channels )