| Index: libraries/openal-soft/nacl-openal-soft.patch
|
| diff --git a/libraries/openal-soft/nacl-openal-soft.patch b/libraries/openal-soft/nacl-openal-soft.patch
|
| index 4fac7f7712f69239359fde4ff91b7fd5c1888fca..704b1776d565244507fc6188f151e4e200dd4a31 100644
|
| --- a/libraries/openal-soft/nacl-openal-soft.patch
|
| +++ b/libraries/openal-soft/nacl-openal-soft.patch
|
| @@ -21,10 +21,10 @@ diff -Naur openal-soft-1.13/Alc/ALc.c openal-soft-1.13-nacl/Alc/ALc.c
|
| { "null", alc_null_init, alc_null_deinit, alc_null_probe, EmptyFuncs },
|
| #ifdef HAVE_WAVE
|
| { "wave", alc_wave_init, alc_wave_deinit, alc_wave_probe, EmptyFuncs },
|
| -diff -Naur openal-soft-1.13/Alc/ppapi.c openal-soft-1.13-nacl/Alc/ppapi.c
|
| +diff -Naur openal-soft-1.13/Alc/ppapi.c openal-soft-1.13.nacl/Alc/ppapi.c
|
| --- openal-soft-1.13/Alc/ppapi.c 1969-12-31 16:00:00.000000000 -0800
|
| -+++ openal-soft-1.13-nacl/Alc/ppapi.c 2012-01-23 15:46:21.000000000 -0800
|
| -@@ -0,0 +1,411 @@
|
| ++++ openal-soft-1.13.nacl/Alc/ppapi.c 2013-01-31 08:54:09.078478389 -0800
|
| +@@ -0,0 +1,421 @@
|
| +/**
|
| + * OpenAL cross platform audio library
|
| + * Copyright (C) 2012
|
| @@ -84,7 +84,7 @@ diff -Naur openal-soft-1.13/Alc/ppapi.c openal-soft-1.13-nacl/Alc/ppapi.c
|
| + PP_Resource audio_config_resource;
|
| + PP_Resource audio_resource;
|
| + ALuint sample_frame_count;
|
| -+
|
| ++
|
| + volatile ALuint read_ptr;
|
| + volatile ALuint write_ptr;
|
| +
|
| @@ -117,10 +117,13 @@ diff -Naur openal-soft-1.13/Alc/ppapi.c openal-soft-1.13-nacl/Alc/ppapi.c
|
| + if (data->read_ptr > data->write_ptr)
|
| + write_proxy = data->write_ptr + data->size;
|
| +
|
| -+ if (data->read_ptr + buffer_size_in_bytes > write_proxy)
|
| ++ int available_bytes = write_proxy - data->read_ptr;
|
| ++ if (available_bytes < buffer_size_in_bytes)
|
| + {
|
| -+ AL_PRINT("buffer underrun\n");
|
| -+ return;
|
| ++ AL_PRINT("buffer underrun (buffer size=%d) (only buffering %d)\n", buffer_size_in_bytes, available_bytes);
|
| ++ /* Zero the part of the buffer that we cannot fill */
|
| ++ memset(sample_buffer + available_bytes, 0, buffer_size_in_bytes - available_bytes);
|
| ++ buffer_size_in_bytes = available_bytes;
|
| + }
|
| +
|
| + if (data->read_ptr + buffer_size_in_bytes > data->size)
|
| @@ -154,11 +157,16 @@ diff -Naur openal-soft-1.13/Alc/ppapi.c openal-soft-1.13-nacl/Alc/ppapi.c
|
| +
|
| + ALuint UpdateSizeInBytes = Device->UpdateSize * kFrameSizeInBytes;
|
| + ALuint SampleFrameInBytes = data->sample_frame_count * kFrameSizeInBytes;
|
| ++
|
| + /* Start to buffer when less than this many bytes are buffered. Keep this
|
| + * small for low latency but large enough so we don't starve Pepper.
|
| ++ *
|
| ++ * SampleFrameInBytes is the size of the buffer that PPAPI asks for each
|
| ++ * callback. We want to keep twice this amount in the buffer at any given
|
| ++ * time.
|
| + */
|
| -+ const ALuint MinBufferSizeInBytes =
|
| -+ min(max(SampleFrameInBytes*4, UpdateSizeInBytes), data->size/2);
|
| ++ const ALuint MinBufferSizeInBytes = max(SampleFrameInBytes*2,
|
| ++ UpdateSizeInBytes);
|
| +
|
| + while(!data->killNow && Device->Connected)
|
| + {
|
| @@ -216,7 +224,7 @@ diff -Naur openal-soft-1.13/Alc/ppapi.c openal-soft-1.13-nacl/Alc/ppapi.c
|
| + data->sample_frame_count);
|
| +
|
| + if (PP_FALSE == data->audio_config->IsAudioConfig(data->audio_config_resource)) {
|
| -+ AL_PRINT("PPAPI initialization: audio config creation failed.");
|
| ++ AL_PRINT("PPAPI initialization: audio config creation failed.");
|
| + data->main_thread_init_status = -1;
|
| + return;
|
| + }
|
| @@ -227,13 +235,13 @@ diff -Naur openal-soft-1.13/Alc/ppapi.c openal-soft-1.13-nacl/Alc/ppapi.c
|
| + (void*)data);
|
| +
|
| + if (PP_FALSE == data->audio->IsAudio(data->audio_resource)) {
|
| -+ AL_PRINT("PPAPI initialization: audio resource creation failed.");
|
| ++ AL_PRINT("PPAPI initialization: audio resource creation failed.");
|
| + data->main_thread_init_status = -1;
|
| + return;
|
| + }
|
| +
|
| + if (PP_FALSE == data->audio->StartPlayback(data->audio_resource)) {
|
| -+ AL_PRINT("PPAPI initialization: start playback failed.");
|
| ++ AL_PRINT("PPAPI initialization: start playback failed.");
|
| + data->main_thread_init_status = -1;
|
| + return;
|
| + }
|
| @@ -246,9 +254,9 @@ diff -Naur openal-soft-1.13/Alc/ppapi.c openal-soft-1.13-nacl/Alc/ppapi.c
|
| +{
|
| + ppapi_data *data;
|
| +
|
| -+ if(!deviceName)
|
| ++ if (!deviceName)
|
| + deviceName = ppapiDevice;
|
| -+ else if(strcmp(deviceName, ppapiDevice) != 0)
|
| ++ else if (strcmp(deviceName, ppapiDevice) != 0)
|
| + return ALC_FALSE;
|
| +
|
| + int channels = ChannelsFromDevFmt(device->FmtChans);
|
| @@ -353,13 +361,15 @@ diff -Naur openal-soft-1.13/Alc/ppapi.c openal-soft-1.13-nacl/Alc/ppapi.c
|
| + ppapi_data *data = (ppapi_data*)device->ExtraData;
|
| +
|
| + ALuint UpdateSizeInBytes = device->UpdateSize * kFrameSizeInBytes;
|
| ++ ALuint SampleFrameInBytes = data->sample_frame_count * kFrameSizeInBytes;
|
| + /* kBufferPadMult is added to protect against buffer underruns. */
|
| -+ data->size = UpdateSizeInBytes * kBufferPadMult;
|
| ++ data->size = max(UpdateSizeInBytes, SampleFrameInBytes) * kBufferPadMult;
|
| ++
|
| + /* Extra UpdateSize added so we can read off the end of the buffer in one
|
| + * shot from aluMixData, but treat the buffer like it's of size data->size.
|
| + */
|
| + data->buffer = calloc(1, data->size + UpdateSizeInBytes);
|
| -+ if(!data->buffer)
|
| ++ if (!data->buffer)
|
| + {
|
| + AL_PRINT("buffer malloc failed\n");
|
| + return ALC_FALSE;
|
| @@ -369,7 +379,7 @@ diff -Naur openal-soft-1.13/Alc/ppapi.c openal-soft-1.13-nacl/Alc/ppapi.c
|
| + data->read_ptr = 0;
|
| + data->write_ptr = 0;
|
| + data->thread = StartThread(PpapiProc, device);
|
| -+ if(data->thread == NULL)
|
| ++ if (data->thread == NULL)
|
| + {
|
| + free(data->buffer);
|
| + data->buffer = NULL;
|
| @@ -383,7 +393,7 @@ diff -Naur openal-soft-1.13/Alc/ppapi.c openal-soft-1.13-nacl/Alc/ppapi.c
|
| +{
|
| + ppapi_data *data = (ppapi_data*)device->ExtraData;
|
| +
|
| -+ if(!data->thread)
|
| ++ if (!data->thread)
|
| + return;
|
| +
|
| + data->killNow = 1;
|
| @@ -431,9 +441,9 @@ diff -Naur openal-soft-1.13/Alc/ppapi.c openal-soft-1.13-nacl/Alc/ppapi.c
|
| +
|
| +void alc_ppapi_probe(int type)
|
| +{
|
| -+ if(type == DEVICE_PROBE)
|
| ++ if (type == DEVICE_PROBE)
|
| + AppendDeviceList(ppapiDevice);
|
| -+ else if(type == ALL_DEVICE_PROBE)
|
| ++ else if (type == ALL_DEVICE_PROBE)
|
| + AppendAllDeviceList(ppapiDevice);
|
| +}
|
| diff -Naur openal-soft-1.13/Alc/wave.c openal-soft-1.13-nacl/Alc/wave.c
|
| @@ -541,3 +551,22 @@ diff -Naur openal-soft-1.13/XCompile-nacl.txt openal-soft-1.13-nacl/XCompile-nac
|
| +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
| +set(CMAKE_REQUIRED_INCLUDES "${NACL_SDK_ROOT}/include")
|
| +include_directories(${NACL_SDK_ROOT}/include)
|
| +diff -Naur openal-soft-1.13/include/AL/alc.h openal-soft-1.13.nacl/include/AL/alc.h
|
| +--- openal-soft-1.13/include/AL/alc.h 2010-11-28 14:51:15.000000000 -0800
|
| ++++ openal-soft-1.13.nacl/include/AL/alc.h 2013-01-31 11:01:44.812082634 -0800
|
| +@@ -270,6 +270,15 @@
|
| + #pragma export off
|
| + #endif
|
| +
|
| ++#if defined(__native_client__)
|
| ++#include <ppapi/c/ppp.h>
|
| ++#include <ppapi/c/ppp_instance.h>
|
| ++/* This function is part of the NaCl libopenal port and is
|
| ++ * required to be called before OpenAL initialization.
|
| ++ */
|
| ++extern void alSetPpapiInfo(PP_Instance, PPB_GetInterface);
|
| ++#endif
|
| ++
|
| + #if defined(__cplusplus)
|
| + }
|
| + #endif
|
|
|