Chromium Code Reviews| 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..d087e833bf22bd9e4be7a2b25a04ca942fcf8db6 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 */ |
|
nfullagar1
2013/01/31 18:58:50
Might sound slightly better to replicate the last
|
| ++ 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 |