Chris Robinson
c2c3846930
Expose a preliminary AL_SOFT_map_buffer extension for testing
2018-01-20 13:37:43 -08:00
Chris Robinson
03d4e4acc4
Add methods to "map" a buffer's storage
...
Requires the MAP_READ_BIT or MAP_WRITE_BIT flags to be OR'd with the format
upon a call to alBufferData, to enable mappable storage for the given access
types. This will fail if the format requires internal conversion and doesn't
resemble the original input data, so the app can be guaranteed the size, type,
and layout of the original data is the same as what's in storage.
Then alMapBufferSOFT may be called with appropriate bit flags to get a readable
and/or writable pointer to the buffer's sample storage. alUnmapBufferSOFT must
be called when access is finished. It is currently invalid to map a buffer that
is attached to a source, or to attach a buffer to a source that is currently
mapped. This restriction may be eased in the future, at least to allow read-
only access while in use (perhaps also to allow writing, if coherency can be
achieved).
Currently the access flags occupy the upper 8 bits of a 32-bit bitfield to
avoid clashing with format enum values, which don't use more than 16 or 17
bits. This means any future formats are limited to 24-bit enum values, and also
means only 8 flags are possible when declaring storage. The alternative would
be to add a new function (alBufferStorage?) with a separate flags parameter.
2018-01-20 11:49:01 -08:00
Chris Robinson
4e647bda07
Return the effective alignment from SanitizeAlignment
2018-01-19 21:00:53 -08:00
Chris Robinson
ab2295b68f
Store 8-bit sample types directly as unsigned byte
2018-01-19 20:10:31 -08:00
Chris Robinson
940c6146e8
Remove unnecessary private AL_SOFT_buffer_samples2 definitions
2018-01-19 19:28:23 -08:00
Chris Robinson
b56673bbce
Make a function static that's only used in one source file
2018-01-17 18:43:23 -08:00
Chris Robinson
2102625021
Reformat the format array
2018-01-17 18:03:31 -08:00
Chris Robinson
884fe40fd1
Store mulaw and alaw samples directly in the buffer
...
They're now decompressed on the fly in the mixer. This is not a significant
performance issue given that it only needs a 512-byte lookup table, and the
buffer stores half as much data (it may actually be faster, requiring less
overall memory).
2018-01-17 08:49:49 -08:00
Chris Robinson
3baf9d0e81
Add a method to get the system's page size
2018-01-16 19:28:10 -08:00
Chris Robinson
248832b266
Use a voice flag to indicate it being static
2018-01-16 18:07:59 -08:00
Chris Robinson
bf8c889631
Define DECL_VLA where it's used
2018-01-16 12:57:06 -08:00
Chris Robinson
273dca2fa0
Avoid using alloca in the CoreAudio backend
2018-01-16 12:54:20 -08:00
Chris Robinson
e80b016cbe
Use a global RowMixerFunc
2018-01-16 12:18:59 -08:00
Chris Robinson
8c19497340
Properly cast some parameters for MSVC
2018-01-16 09:40:34 -08:00
Chris Robinson
5deb1df8db
Add min/max/clamp functions for size_t
2018-01-16 09:39:28 -08:00
Chris Robinson
14a0df03e8
Do more samples at once with the distortion effect
2018-01-16 08:49:15 -08:00
Chris Robinson
bc44efb91d
Use ALsizei for some count/length variables
2018-01-15 18:31:43 -08:00
Chris Robinson
799dfb732b
Don't fade the all-pass delay changes
2018-01-15 18:02:11 -08:00
Chris Robinson
813b06a3a4
Fix a comment regarding the T60 filter coefficients
2018-01-15 09:22:28 -08:00
Chris Robinson
47c9b0a17e
Simplify preparing the T60 filters
2018-01-15 09:17:15 -08:00
Chris Robinson
44795b8614
Assign the HRTF storage pointers separately
2018-01-15 08:38:25 -08:00
Chris Robinson
5acb2e5165
Remove alffplay's duplicate ALC_SOFT_device_clock declarations
2018-01-15 07:14:35 -08:00
Chris Robinson
682205a3d4
Finalize ALC_SOFT_device_clock
2018-01-15 06:45:53 -08:00
Chris Robinson
7441311e3d
Use separate input and outputs for the T60 and allpass processing
2018-01-15 05:37:00 -08:00
Chris Robinson
6f48dac4cc
Use a proper type for the T60 decay filter
2018-01-15 05:23:35 -08:00
Chris Robinson
bc078e5158
Separate some anonymous structs into defined structs
2018-01-14 15:42:25 -08:00
Chris Robinson
63416bf28f
Avoid unnecessarily using type aliases
2018-01-14 09:02:59 -08:00
Chris Robinson
0152bc0d10
Remove the SAFE_CONST macro
...
Seems compilers are now allowing a pointer-to-type-array to implicitly convert
to pointer-to-const-type-array.
2018-01-14 08:51:03 -08:00
Chris Robinson
7e491ef2b2
Remove a redundant lower value clamp
2018-01-14 08:25:36 -08:00
Chris Robinson
6f532fa0e5
Don't check the modulation depth for changes multiple times
2018-01-14 07:33:53 -08:00
Chris Robinson
25b3ed3532
Use separate arrays for the T60 filter states
2018-01-14 07:29:18 -08:00
Chris Robinson
7a77a20a67
Use a macro for the number of reverb lines
2018-01-14 07:25:02 -08:00
Chris Robinson
2957d85924
Only pass the needed parameters to LateT60Filter
2018-01-14 05:24:23 -08:00
Chris Robinson
2b968766b9
Pre-apply the T60 filter midgain to the HF filter coeffs
2018-01-13 09:58:47 -08:00
Chris Robinson
78cb70a5f9
Replace some freq_mult variable names with f0norm
...
The latter is a bit more descriptive as f0 is often used to denote the
reference frequency of a filter, so f0norm indicates the normalized reference
frequency (ref_freq / sample_rate).
2018-01-13 09:14:46 -08:00
Chris Robinson
16e4e0fa7c
Use a more normal vtable setup for filter methods
2018-01-13 08:07:03 -08:00
Chris Robinson
c031b3cc6a
Avoid fixed-PATH_MAX-size buffers
...
Windows still needs to use MAX_PATH in a couple places, but that macro's
guaranteed there.
2018-01-13 04:40:20 -08:00
Chris Robinson
bbc4ebecab
Use GetProcBinary to get the executable name for PulseAudio
2018-01-13 03:41:56 -08:00
Chris Robinson
71ad3b1715
Use KERN_PROCARGS to get the process path+filename on FreeBSD
2018-01-13 03:38:10 -08:00
Chris Robinson
af8bbefcab
Support procfs on *BSD to get the process binary
2018-01-13 03:22:41 -08:00
Chris Robinson
26043269e4
Allow GetProcPath to return the filename also
2018-01-13 02:59:21 -08:00
Chris Robinson
c9edf7cf78
Add a string function to copy a wide-char range
2018-01-13 02:03:13 -08:00
Chris Robinson
77910afe57
Make NumAttrsForDevice do similar type checks as alcGetIntegerv
2018-01-12 11:34:23 -08:00
Chris Robinson
4db1328bc5
Move the FORCE_ALIGN macro to threads.h
2018-01-12 03:55:33 -08:00
Chris Robinson
e634564b26
Make a couple functions inline
2018-01-12 02:37:48 -08:00
Chris Robinson
dae5faedb0
Use atomic variables in place of volatile
2018-01-11 23:28:15 -08:00
Chris Robinson
1f236d8f20
Define a function where it's used
2018-01-11 22:42:25 -08:00
Chris Robinson
370817ba60
Move logging declarations to a separate header
2018-01-11 20:17:02 -08:00
Chris Robinson
2873abcbc0
Fix up some types for MSVC
2018-01-11 10:55:35 -08:00
Chris Robinson
e89c183231
Avoid including alMain.h in ringbuffer.c
2018-01-11 10:03:26 -08:00