22 #include "../../SDL_internal.h" 24 #if SDL_AUDIO_DRIVER_NACL 30 #include "../SDL_audiomem.h" 31 #include "../SDL_audio_c.h" 32 #include "../SDL_audiodev_c.h" 34 #include "ppapi/c/pp_errors.h" 35 #include "ppapi/c/pp_instance.h" 36 #include "ppapi_simple/ps.h" 37 #include "ppapi_simple/ps_interface.h" 38 #include "ppapi_simple/ps_event.h" 41 #define NACLAUD_DRIVER_NAME "nacl" 43 #define SAMPLE_FRAME_COUNT 4096 46 static int NACLAUD_OpenDevice(
_THIS,
void *handle,
const char *devname,
int iscapture);
47 static void NACLAUD_CloseDevice(
_THIS);
48 static void nacl_audio_callback(
void*
samples,
uint32_t buffer_size, PP_TimeDelta latency,
void*
data);
51 static void nacl_audio_callback(
void*
samples,
uint32_t buffer_size, PP_TimeDelta latency,
void*
data) {
78 const PPB_Core *core = PSInterfaceCore();
79 const PPB_Audio *ppb_audio = PSInterfaceAudio();
82 ppb_audio->StopPlayback(hidden->
audio);
84 core->ReleaseResource(hidden->
audio);
88 NACLAUD_OpenDevice(
_THIS,
void *handle,
const char *devname,
int iscapture) {
89 PP_Instance instance = PSGetInstanceId();
90 const PPB_Audio *ppb_audio = PSInterfaceAudio();
91 const PPB_AudioConfig *ppb_audiocfg = PSInterfaceAudioConfig();
94 if (
private ==
NULL) {
103 _this->
spec.
samples = ppb_audiocfg->RecommendSampleFrameCount(
105 PP_AUDIOSAMPLERATE_44100,
111 private->audio = ppb_audio->Create(
113 ppb_audiocfg->CreateStereo16Bit(instance, PP_AUDIOSAMPLERATE_44100, _this->
spec.
samples),
118 ppb_audio->StartPlayback(
private->audio);
126 if (PSGetInstanceId() == 0) {
146 NACLAUD_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
AudioBootStrap NACLAUD_bootstrap
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)