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
3832b25f30
Move the ringbuffer declarations to a separate header
...
And rename alcRing.c to ringbuffer.c for consistency.
2018-01-11 09:16:28 -08:00
Chris Robinson
ec13cf6c9c
Add casts to silence MSVC
2017-06-29 10:28:22 -07:00
Chris Robinson
2f2d941edb
Trace the message name in the message handler loop
2017-06-26 08:57:29 -07:00
Chris Robinson
55c329b462
Clean up some messy rounding code
2017-06-26 06:54:45 -07:00
Chris Robinson
5d5eff7502
Ensure the mmdevapi capture buffer is at least 100ms
2017-06-26 06:14:11 -07:00
Chris Robinson
d1bb04d588
Improve traces for the mmdevapi capture conversions
2017-06-23 09:54:26 -07:00
Chris Robinson
31b02e044f
Trace the capture converter formats for mmdevapi
2017-06-22 13:58:32 -07:00
Chris Robinson
901804d724
Store the ambisonic order separate from the channel enum
2017-04-12 18:26:07 -07:00
Chris Robinson
78d5492d2c
Use the converters to enable mmdevapi capture
2017-04-11 09:41:23 -07:00
Chris Robinson
26144ca9df
Rename al_string_* functions to alstr_*
2017-04-04 06:58:53 -07:00
Chris Robinson
247f56249a
Always lock the device backend before calling aluMixData
2017-02-18 17:32:07 -08:00
Chris Robinson
58f84170b6
Avoid using some LP types
2017-01-10 05:12:54 -08:00
Chris Robinson
a0e4696f55
Include wtypes.h for defining Windows' property keys
2016-10-04 11:20:01 -07:00
Chris Robinson
d89624b03c
Recognize Headset formfactors as headphones
2016-09-21 15:16:09 -07:00
Chris Robinson
ef67d17a84
Simplify mmdevapi's device name search
...
Avoids converting each enumerated devid from WSTR to UTF-8, and instead just
converts the device name from UTF-8 to WSTR once if needed.
2016-09-07 09:22:34 -07:00
Dmytry Lavrov
6b7e14f11f
mmdevapi: Allow specifying output device by it's audio endpoint GUID or by the device id string (Oculus VR api requires you to play back on a specific device).
2016-09-06 19:25:44 -05:00
Chris Robinson
bff5268ed4
Remove DevFmtBFormat3D, which is covered by DevFmtAmbi1
2016-07-31 08:13:41 -07:00
Chris Robinson
b5b3ea95f8
Add a config to output first-, second-, or third-order ambisonics
...
Currently incomplete, as second- and third-order output will not correctly
handle B-Format input buffers. A standalone up-sampler will be needed, similar
to the high-quality decoder.
Also, output is ACN ordering with SN3D normalization. A config option will
eventually be provided to change this if desired.
2016-07-29 21:55:43 -07:00
Chris Robinson
5e11a738c6
Combine VECTOR_RESIZE and VECTOR_RESERVE
2016-07-26 12:02:03 -07:00
Chris Robinson
6d4380a48c
Change the backend getLatency method to return the clock time too
...
This will also allow backends to better synchronize the tracked clock time with
the device output latency, without necessarily needing to lock if the backend
API can allow for it.
2016-05-28 00:43:14 -07:00
Chris Robinson
e8b274d349
Properly pluralize some messages
2016-05-22 21:03:16 -07:00
Chris Robinson
f4ff5fc106
Shorten VECTOR_ITER_ macros to VECTOR_
2016-04-15 12:22:54 -07:00
Chris Robinson
f4fa41487c
Replace some CreateEvent calls with CreateEventW
2016-02-07 16:14:27 -08:00
Chris Robinson
e45ff47361
Reformat Windows device name dressing
2015-12-04 15:52:43 -08:00
Chris Robinson
d6f4e5139f
Add another cast for MSVC
2015-11-06 02:23:42 -08:00
Chris Robinson
46bbf95bae
Disable mmdevapi capture and update changelog
...
Unfortunately mmdevapi does not do channel remixing or resampling, even for
capture, so the device can only be opened in the mode it's configured for.
For now, fallback to dsound or winmm to get the conversion until we can do it
ourselves.
2015-09-18 03:19:16 -07:00
Chris Robinson
87f3babe2c
Append "on OpenAL Soft" to mmdevapi, dsound, and winmm device names
...
Would be nicer to have a more backend-agnostic method of doing this, Perhaps
even also only when the router is being used.
2015-09-10 22:15:40 -07:00
Chris Robinson
23729c2083
Replace another vector loop with VECTOR_FIND_IF
2015-09-03 14:53:46 -07:00
Chris Robinson
87e4ec6620
Use the correct device name when opening a device by name
...
Duplicate device names will have a '#2 ' or such appended, so the device's
reported name may be incorrect.
2015-09-03 11:56:46 -07:00
Chris Robinson
53f6590b17
Set the WAVEFORMATEX cbSize field for mmdevapi capture
2015-08-18 00:19:22 -07:00
Chris Robinson
d90dfc8d1f
Check for duplicate device names in the mmdevapi backend
2015-06-30 07:44:56 -07:00
Chris Robinson
c24f4f230f
Use the lockless ringbuffer for mmdevapi capture
...
The backend's capture funcs are already called while under a lock, so multiple
threads shouldn't be able to read from it at once.
2015-06-30 07:42:09 -07:00
Chris Robinson
e5964d6dc4
Double check the mmdevapi capture format
...
This isn't a real solution, but it should get IAudioClient_IsFormatSupported to
stop failing.
2015-06-07 13:05:07 -07:00
Chris Robinson
9f49ac0fda
Add a macro to simplify allocating and constructing an object
2015-05-18 16:39:44 -07:00
Chris Robinson
199646ac2b
Fix X7DOT1_NARROW name to X7DOT1_WIDE
2015-01-15 09:27:37 -08:00
Chris Robinson
c1607300bb
Accept a "narrow" layout for 7.1 with mmdevapi
2015-01-15 01:56:04 -08:00
Chris Robinson
ed05c83ee7
Fix the flags type
2015-01-11 15:02:26 -08:00
Chris Robinson
c2975b5f44
Trace lparam and wparam message values
2014-12-21 12:37:02 -08:00
Chris Robinson
a91bca64f8
Check the PROPVARIANT type before use
2014-12-21 12:20:31 -08:00
Chris Robinson
13092d94b7
Use VECTOR_FOR_EACH instead of a manual loop
2014-12-21 10:45:10 -08:00
Chris Robinson
28a9f0826c
Use a macro for the record thread name
2014-12-21 10:38:40 -08:00
Chris Robinson
abf0bd13ca
Support capture with mmdevapi
2014-12-19 15:49:37 -08:00
Chris Robinson
6883619b14
Check mmdevice endpoint for being headphones
2014-11-27 17:43:37 -08:00
Chris Robinson
8d6d2e9a2b
Avoid unnecessary uses of ALCdevice_Lock and ALCdevice_Unlock
2014-11-27 15:27:43 -08:00
Chris Robinson
bdbf6613ef
Support B-Format output with the wave file writer
2014-11-25 22:20:00 -08:00
Chris Robinson
0051a96376
Fix 5.1 surround sound
...
Apparently, 5.1 surround sound is supposed to use the "side" channels, not the
back channels, and we've been wrong this whole time. That means the "5.1 Side"
is actually the correct 5.1 setup, and using the back channels is anomalous.
Additionally, this means the 5.1 buffer format should also use the the side
channels instead of the back channels.
A final note: the 5.1 mixing coefficients are changed so both use the original
5.1 surround sound set (with the surround channels at +/-110 degrees). So the
only difference now between 5.1 "side" and 5.1 "back" is the channel labels.
2014-11-07 00:54:16 -08:00
Chris Robinson
f18d2f2445
Check mmdevapi device ids to match the default device
...
Seems Windows can return different IMMDevice object pointers for the same
endpoint.
2014-08-28 18:22:17 -07:00
François Cami
3c13e1e333
Update COPYING to the latest https://www.gnu.org/licenses/old-licenses/lgpl-2.0.txt to fix the FSF' address Fix the FSF' address in the source
2014-08-18 11:34:29 -07:00