22 #include "../../SDL_internal.h" 24 #if SDL_AUDIO_DRIVER_NACL 30 #include "../SDL_audio_c.h" 31 #include "../SDL_audiodev_c.h" 33 #include "ppapi/c/pp_errors.h" 34 #include "ppapi/c/pp_instance.h" 35 #include "ppapi_simple/ps.h" 36 #include "ppapi_simple/ps_interface.h" 37 #include "ppapi_simple/ps_event.h" 40 #define NACLAUDIO_DRIVER_NAME "nacl" 42 #define SAMPLE_FRAME_COUNT 4096 45 static void nacl_audio_callback(
void*
samples,
uint32_t buffer_size, PP_TimeDelta latency,
void*
data);
48 static void nacl_audio_callback(
void*
stream,
uint32_t buffer_size, PP_TimeDelta latency,
void*
data) {
49 const int len = (int) buffer_size;
92 const PPB_Core *core = PSInterfaceCore();
93 const PPB_Audio *ppb_audio = PSInterfaceAudio();
96 ppb_audio->StopPlayback(hidden->
audio);
98 core->ReleaseResource(hidden->
audio);
102 NACLAUDIO_OpenDevice(
_THIS,
void *
handle,
const char *devname,
int iscapture) {
103 PP_Instance instance = PSGetInstanceId();
104 const PPB_Audio *ppb_audio = PSInterfaceAudio();
105 const PPB_AudioConfig *ppb_audiocfg = PSInterfaceAudioConfig();
108 if (
private ==
NULL) {
116 _this->
spec.
samples = ppb_audiocfg->RecommendSampleFrameCount(
118 PP_AUDIOSAMPLERATE_44100,
124 private->audio = ppb_audio->Create(
126 ppb_audiocfg->CreateStereo16Bit(instance, PP_AUDIOSAMPLERATE_44100, _this->
spec.
samples),
131 ppb_audio->StartPlayback(
private->audio);
139 if (PSGetInstanceId() == 0) {
159 NACLAUDIO_DRIVER_NAME,
"SDL NaCl Audio Driver",
struct SDL_PrivateAudioData * hidden
#define SDL_AudioStreamAvailable
#define SDL_AudioStreamGet
int ProvidesOwnCallbackThread
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
static SDL_VideoDevice * _this
static SDL_AudioDeviceID device
int OnlyHasDefaultOutputDevice
EGLImageKHR EGLint EGLint * handle
void(* SDL_AudioCallback)(void *userdata, Uint8 *stream, int len)
#define SDL_AudioStreamPut
static Uint32 callback(Uint32 interval, void *param)
void SDL_CalculateAudioSpec(SDL_AudioSpec *spec)
SDL_AudioCallback callback
#define SDL_assert(condition)
int(* OpenDevice)(_THIS, void *handle, const char *devname, int iscapture)
#define SDL_OutOfMemory()
void(* CloseDevice)(_THIS)
AudioBootStrap NACLAUDIO_bootstrap
#define SDL_AudioStreamClear
SDL_AudioSpec callbackspec