Chris Robinson
d45dd9c668
Remove the sinc8 resampler option
...
Perf shows less than 1 percent CPU difference from the higher quality bsinc
resampler, but uses almost twice as much memory (a 128KB lookup table).
2017-02-19 16:45:17 -08:00
Chris Robinson
247f56249a
Always lock the device backend before calling aluMixData
2017-02-18 17:32:07 -08:00
Chris Robinson
2448f88e70
Return some device latency by default
...
A device will never have 0 latency. OpenAL Soft itself uses a sample buffer
length of UpdateSize*NumUpdates, and during playback will have about
(NumUpdates-1) periods filled, more or less. Without a more accurate
measurement from the playback system, this is better than reporting 0.
2017-02-18 16:55:48 -08:00
Chris Robinson
d8c42918f4
Use select() to wait for audio with OSS and Solaris
2017-02-18 15:58:15 -08:00
Chris Robinson
909193a345
Reorganize ALvoice members
...
This places the Send[] array at the end of the struct, making it easier to
handle dynamically.
2017-02-15 17:40:26 -08:00
Chris Robinson
5a50c46c22
Make ALsourceProps' Send array dynamically sized
...
ALsourceProps' Send[] array is placed at the end of the struct, and given an
indeterminate size. Extra space is allocated at the end of each struct given
the number of auxiliary sends set for the device.
2017-02-14 19:59:39 -08:00
Chris Robinson
69dd570961
Fix build with non-C11 atomics
2017-02-13 21:30:20 -08:00
Chris Robinson
0d19a20901
Make the source state atomic
...
Since it's modified by the mixer when playback is ended, a plain struct member
isn't safe.
2017-02-13 21:18:18 -08:00
Chris Robinson
0324712540
Put BsincState in a generic union
2017-02-13 11:29:32 -08:00
Chris Robinson
841d0bb893
Porperly check for and use __builtin_assume_aligned
2017-02-13 07:36:49 -08:00
Chris Robinson
65f9b2792c
Clean up the bsinc mixer a bit
2017-02-12 21:35:08 -08:00
Chris Robinson
27695e2b24
Add NEON-enhanced resamplers
2017-02-12 21:03:30 -08:00
Chris Robinson
427f484e01
Print separate messages for building sdl_sound and ffmpeg examples
2017-02-12 08:37:42 -08:00
Chris Robinson
6b030999cb
Don't require SDL_sound for alffplay
...
Also explicitly link with libz for alffplay, since static ffmpeg libs need it.
2017-02-11 12:56:13 -08:00
Chris Robinson
e92229f839
Fix more uses of unsigned sizes and offsets
2017-02-10 06:20:16 -08:00
Chris Robinson
5bd63ff03d
Remove a couple context lock wrapper functions
2017-02-07 19:32:49 -08:00
Chris Robinson
7cc8ba99f0
Properly capitalize NEON
2017-02-07 18:33:12 -08:00
Chris Robinson
317d135b96
Clear trailing whitespace from the cpu features string
2017-02-07 11:19:41 -08:00
Chris Robinson
c771b82a39
Use the correct IID for the opensl buffer queue
2017-02-07 10:55:36 -08:00
Chris Robinson
9f10ae466c
Convert the OpenSL backend to the new backend API
...
This also removes the buffer queue callback's call to aluMixData, which could
potentially block on a mutex.
2017-02-07 07:06:41 -08:00
Chris Robinson
af362c2d05
Fix for NULL JNIEnv
...
Which can happen with native-only apps
2017-02-05 14:25:17 -08:00
Chris Robinson
428cde5dc2
Call getSystemService as a non-static function
2017-02-03 09:41:21 -08:00
Chris Robinson
2c1791752a
Android's AudioManager.getProperty(String) returns a String
2017-02-02 06:14:01 -08:00
Chris Robinson
071b83ba52
Replace more ALuint with ALsizei
2017-01-29 16:42:02 -08:00
Chris Robinson
55a2474d7e
Fix late reverb low-pass filtering
2017-01-29 13:06:40 -08:00
Chris Robinson
3cc88b0aab
Use an all-pass series on each late reverb line
...
This attempts to improve the smoothness of the late reverb decay by passing
each line through multiple all-pass filters. Some work is still needed to work
better in high-density and not-so-high-diffusion environments.
This also removes the decay from the early reflections, since it's no longer
continuous feedback.
2017-01-28 17:15:47 -08:00
Chris Robinson
6b2297b508
Add more traces for the Java calls being made
2017-01-27 15:42:06 -08:00
Chris Robinson
9c019126d4
Remove __android_log_print calls for TRACEREF
...
TRACEREFs aren't normally important, and for as often as it happens, the added
function calls are wasteful even if they end up doing nothing.
2017-01-27 15:17:11 -08:00
Chris Robinson
19e96c6fef
Round and clamp the scaled update count with opensl
2017-01-27 01:46:44 -08:00
Chris Robinson
67ffdf7a78
Try to use the system sample rate with Android
2017-01-26 18:23:29 -08:00
Chris Robinson
3ba03c5a29
Also log to __android_log_print on Android
2017-01-26 18:15:19 -08:00
Chris Robinson
f0c8b7f255
Get the JavaVM handle on Android targets
2017-01-26 14:33:03 -08:00
Chris Robinson
1ebfce4cac
Improve the ambisonic upscaling methods
...
This now takes advantage of the differences seen in generated decoder matrices
for first-order compared to second- and third-order, such that with the
appropriate frequency-dependent scaling applied to first-order content, the
result is identical with a higher-order decoder matrix compared to a first-
order matrix for the same layout.
2017-01-24 19:03:51 -08:00
Chris Robinson
f4d52f43d8
Fix coefficient counts for the built-in B-Format decoders
2017-01-21 12:28:54 -08:00
Chris Robinson
7025660e8b
Use a flat sqrt(2) scale for non-directional ambient gains
2017-01-21 11:54:22 -08:00
Chris Robinson
371fda1803
Update the default basic B-Format decoders
...
This also converts them to ACN/N3D format.
2017-01-21 11:05:05 -08:00
Chris Robinson
aa56af1ecb
Move the B-Format HRTF virtual speaker stuff to InitHrtfPanning
...
This keeps the decoder matrices and coefficient mapping together for if it
changes in the future.
2017-01-18 19:16:24 -08:00
Chris Robinson
e8ac0e5bfd
Replace some ALvoid with void
2017-01-18 07:19:43 -08:00
Chris Robinson
d2e5aa79dd
Use ALsizei in more places
2017-01-18 07:13:23 -08:00
Chris Robinson
ba0944af9b
Pass the left and right buffers to the hrtf mixers directly
2017-01-17 16:49:26 -08:00
Chris Robinson
bfb7a6e4c8
Small update for the "virtual" Ambi2DDecoder coefficients
2017-01-17 11:35:19 -08:00
Chris Robinson
e9009968fb
More ALsizei, with the B-Format decoder
2017-01-16 09:37:55 -08:00
Chris Robinson
f1f93a593a
Fix a couple hard-coded array sizes
2017-01-16 09:04:58 -08:00
Chris Robinson
959812ee13
Use ALsizei in a few more places
2017-01-16 08:59:08 -08:00
Chris Robinson
325a49975a
Use ALsizei and ALint for sizes and offsets with resamplers and filters
2017-01-16 08:54:30 -08:00
Chris Robinson
cbb796bf31
Use ALsizei for sizes and offsets with the mixer
...
Unsigned 32-bit offsets actually have some potential overhead on 64-bit targets
for pointer/array accesses due to rules on integer wrapping. No idea how much
impact it has in practice, but it's nice to be correct about it.
2017-01-16 08:06:25 -08:00
Chris Robinson
9f23d17333
Use second-order ambisonics for basic HRTF rendering
...
This should improve positional quality for relatively low cost. Full HRTF
rendering still only uses first-order since the only use of the dry buffer
there is for first-order content (B-Format buffers, effects).
2017-01-15 13:57:22 -08:00
Chris Robinson
8e868823fd
Replace range-based for loops with QList iterators
...
Less than ideal, but some targets can't rely on C++11
2017-01-13 00:46:49 -08:00
Chris Robinson
e254a3f0c2
Search for and use Qt5 for alsoft-config
...
An option is provided to instead use Qt4.8 still if desired.
2017-01-12 23:53:27 -08:00
Chris Robinson
6e806848eb
Use C++11 for alsoft-config
2017-01-12 13:38:21 -08:00