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*
samples,
uint32_t buffer_size, PP_TimeDelta latency,
void*
data) {
75 const PPB_Core *core = PSInterfaceCore();
76 const PPB_Audio *ppb_audio = PSInterfaceAudio();
79 ppb_audio->StopPlayback(hidden->
audio);
81 core->ReleaseResource(hidden->
audio);
85 NACLAUDIO_OpenDevice(
_THIS,
void *handle,
const char *devname,
int iscapture) {
86 PP_Instance instance = PSGetInstanceId();
87 const PPB_Audio *ppb_audio = PSInterfaceAudio();
88 const PPB_AudioConfig *ppb_audiocfg = PSInterfaceAudioConfig();
91 if (
private ==
NULL) {
100 _this->
spec.
samples = ppb_audiocfg->RecommendSampleFrameCount(
102 PP_AUDIOSAMPLERATE_44100,
108 private->audio = ppb_audio->Create(
110 ppb_audiocfg->CreateStereo16Bit(instance, PP_AUDIOSAMPLERATE_44100, _this->
spec.
samples),
115 ppb_audio->StartPlayback(
private->audio);
123 if (PSGetInstanceId() == 0) {
143 NACLAUDIO_DRIVER_NAME,
"SDL NaCl Audio Driver",
struct SDL_PrivateAudioData * hidden
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
int ProvidesOwnCallbackThread
static SDL_VideoDevice * _this
void * SDL_calloc(size_t nmemb, size_t size)
int OnlyHasDefaultOutputDevice
uint8_t Uint8
An unsigned 8-bit integer type.
void SDL_CalculateAudioSpec(SDL_AudioSpec *spec)
SDL_AudioCallback callback
int(* OpenDevice)(_THIS, void *handle, const char *devname, int iscapture)
#define SDL_OutOfMemory()
void(* CloseDevice)(_THIS)
AudioBootStrap NACLAUDIO_bootstrap