aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/backends/mmdevapi.c
Commit message (Collapse)AuthorAgeFilesLines
* Trace lparam and wparam message valuesChris Robinson2014-12-211-1/+1
|
* Check the PROPVARIANT type before useChris Robinson2014-12-211-2/+8
|
* Use VECTOR_FOR_EACH instead of a manual loopChris Robinson2014-12-211-9/+7
|
* Use a macro for the record thread nameChris Robinson2014-12-211-1/+1
|
* Support capture with mmdevapiChris Robinson2014-12-191-1/+551
|
* Check mmdevice endpoint for being headphonesChris Robinson2014-11-271-1/+31
|
* Avoid unnecessary uses of ALCdevice_Lock and ALCdevice_UnlockChris Robinson2014-11-271-8/+8
|
* Support B-Format output with the wave file writerChris Robinson2014-11-251-0/+3
|
* Fix 5.1 surround soundChris Robinson2014-11-071-8/+8
| | | | | | | | | | | | | 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.
* Check mmdevapi device ids to match the default deviceChris Robinson2014-08-281-19/+36
| | | | | Seems Windows can return different IMMDevice object pointers for the same endpoint.
* Update COPYING to the latest ↵François Cami2014-08-181-2/+2
| | | | https://www.gnu.org/licenses/old-licenses/lgpl-2.0.txt to fix the FSF' address Fix the FSF' address in the source
* Don't require pre-declaring vector typesChris Robinson2014-07-061-1/+1
|
* Iniitialize some mmdevapi backend fields in the constructorChris Robinson2014-05-021-0/+23
|
* Add a helper VECTOR_FOR_EACH macroChris Robinson2014-04-301-10/+8
|
* Convert the mmdevapi backend to the new backend APIChris Robinson2014-04-251-393/+509
|
* Use a vector for mmdevapi device listsChris Robinson2014-04-241-93/+77
|
* Use a helper to return mmdevapi message thread responsesChris Robinson2014-04-221-16/+15
|
* Rename SetThreadName to althrd_setnameChris Robinson2014-04-171-1/+1
|
* Implement a C11-like thread wrapper and use it in mmdevapi and pulseaudioChris Robinson2014-04-161-8/+8
|
* Use an al_string for the device nameChris Robinson2014-03-281-7/+2
|
* Use al_string to handle mmdevapi and dsound device namesChris Robinson2014-03-281-29/+23
|
* Reactivate the mmdevapi audio client and set the event handle on resetChris Robinson2014-03-271-10/+26
|
* Don't assume the default mmdevapi device is in the collectionChris Robinson2014-03-171-2/+2
|
* Fix a race condition in the mmdevapi message queue threadChris Robinson2014-02-091-0/+6
|
* Add some extra traces to the mmdevapi backendChris Robinson2014-02-091-0/+8
| | | | Trying to track down the cause of some reported errors.
* Add a macro for GCC to ensure stack alignmentChris Robinson2013-11-251-1/+1
|
* Remove the Lock and Unlock methods from BackendFuncsChris Robinson2013-11-041-2/+0
| | | | | All backends that still use the old interface use the default locking methods, which is also used by the ALCbackend base.
* Move the device mutex to the backendChris Robinson2013-10-281-0/+1
|
* Rework threading functionsChris Robinson2013-10-271-3/+3
|
* Set a name for the mixer and recording threadsChris Robinson2013-10-271-0/+1
|
* Fix a potential leak when mmdevapi fails to openChris Robinson2013-05-191-0/+3
|
* Filter unneeded thread messages with MMDevApiChris Robinson2012-12-241-1/+3
|
* Lock the device before calling aluHandleDisconnectChris Robinson2012-12-021-0/+6
| | | | | | PulseAudio causes an assert if being relocked inside a callback on the worker thread, where aluHandleDisconnect is called. We can assume it's already locked there, so just make sure the device is locked before being calling it.
* Use the stored buffer metrics for the mmdevapi buffer sizeChris Robinson2012-11-041-9/+1
|
* Add rudimentary latency tracking for mmdevapiChris Robinson2012-11-041-1/+16
| | | | | | | | This won't be as granular as it could be, since it only updates when the wakeup event trips (which may or may not happen more often than OpenAL's mix updates). A more correct method would be to query GetCurrentPadding directly, but that would require sending a message to the processing thread and waiting for a reply, since we can't guarantee COM on the calling thread.
* Don't include alu.h in alMain.hChris Robinson2012-09-141-2/+1
|
* Use a default method to provide a dummy latencyChris Robinson2012-08-191-8/+1
|
* Move the device lock into the backend function tableChris Robinson2012-08-181-0/+2
| | | | | For backend-specific implementations: this should hold the audio mixer loop for playback devices, and provide recursive mutex behavior.
* Add a device method to retrieve the active latencyChris Robinson2012-08-171-1/+9
| | | | | This is effectively the time until the next update will be heard by the user, or the closest approximation thereof, in nanoseconds.
* Add DEVPKEY_Device_FriendlyName declaration for mingw-w64 compatibilityChris Robinson2012-06-141-0/+3
|
* Rename AllDevice -> AllDevicesChris Robinson2012-05-091-1/+1
|
* Remove hungarian notation from dsound and mmdevapiChris Robinson2012-04-191-11/+11
|
* Remove hungarian notation from the device and context structsChris Robinson2012-04-191-1/+1
|
* Try to ensure the full mmdevapi buffer is usedChris Robinson2012-03-131-4/+12
|
* Try to ensure at least 2 mmdevapi updatesChris Robinson2012-03-131-1/+2
|
* Try to find a multiple of mmdevapi's period size nearest to the wanted ↵Chris Robinson2012-03-131-0/+3
| | | | update size
* Store a duplicate of the mmdevapi device IDChris Robinson2012-03-061-5/+9
|
* Use a separate backend callback to start playback of the deviceChris Robinson2012-03-051-30/+54
| | | | | | | | | | | | This allows us to properly update the ALCdevice and its resources with the new parameters before starting playback, instead of expecting the mixer to block and wait after it has begun. This also lets us avoid holding the device lock while resetting and starting the device, which helps prevent lock inversion on some backends (ie, one thread locking A then B, and another thread locking B then A), ultimately allowing certain backends to asynchronously update the ALCdevice without risk of lockup. Capture still has issues here, however.
* Don't use GUIDs to ID mmdevapi devices, and don't enumerate if not neededChris Robinson2012-03-011-101/+68
|
* Get and release the mmdevapi render client iface on the message threadChris Robinson2012-02-291-17/+15
|