aboutsummaryrefslogtreecommitdiffstats
path: root/alc/backends/wasapi.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Avoid putting strings in fixed arrays of char arraysChris Robinson2023-09-021-21/+22
|
* Handle a null string in DeviceHelper::OnDefaultDeviceChangedChris Robinson2023-08-311-6/+6
|
* Use a string_view for the backend open methodChris Robinson2023-08-061-26/+27
|
* [UWP] Fix crash when probe capture device fail (#868)Deal(一线灵)2023-06-281-1/+4
| | | | | * [UWP] Fix crash when probe capture device fail * [UWP] Also check openDevice to avoid crash
* Set the correct dev format when autodetecting 7.1.4 in WASAPIChris Robinson2023-06-271-1/+1
|
* Get the correct audio client interface with UWPChris Robinson2023-06-071-24/+16
|
* Remove a seemingly unnecessary C++/CLI wrapperChris Robinson2023-06-061-18/+9
|
* Directly inline a couple functionsChris Robinson2023-06-061-189/+174
|
* Avoid explicit definitions of some IIDsChris Robinson2023-06-051-3/+3
|
* Fix return value for UWP buildsChris Robinson2023-06-051-3/+3
|
* Handle device added/removed events with WASAPIChris Robinson2023-06-051-90/+181
| | | | | Non-UWP only for now. The device list is managed dynamically now so it doesn't need to be probed for each enumeration query.
* Better protect the WASAPI device list with a mutexChris Robinson2023-06-041-48/+82
|
* Use the correct IID for the interface we useChris Robinson2023-06-031-7/+9
|
* Try again to fix UWP buildsChris Robinson2023-06-021-2/+2
|
* Fix UWP buildsChris Robinson2023-06-021-26/+20
|
* Fix comment typoChris Robinson2023-06-021-1/+1
|
* Start the WASAPI COM thread when initializing the backendChris Robinson2023-06-021-125/+38
| | | | | | | | | | | | | COM doesn't make this easy. We want to be able to get device change notifications without an open device, but we need an IMMDeviceEnumerator object to register the notification client, which requires COM to be initialized. COM must then stay initialized while we have the IMMDeviceEnumerator object, which we can't assume for the calling thread so it has to be done in the COM thread. Consequently, the COM thread must stay alive and can't quit while the DLL is loaded if we want to get those notifications without an open device, and as there's no reliable way to make the thread quit during DLL unload, the DLL must stay pinned until process exit.
* Remove an unused lambdaChris Robinson2023-06-011-8/+2
|
* Move althrd_setname to its own sourceChris Robinson2023-06-011-1/+1
|
* Specify the device type for the event callbackChris Robinson2023-06-011-9/+29
|
* Initialize the WASAPI device helper earlierChris Robinson2023-05-311-2/+3
|
* Don't register per-device default change handlersChris Robinson2023-05-311-128/+83
| | | | | It's global state with a global callback. No need to associate it with each open device.
* Improve wasapi backend UWP support (#853)Deal(一线灵)2023-05-311-169/+520
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Improve wasapi, support uwp build * Fix compile errors * [UWP] Support ReadALConfig from app roaming * [UWP] Post disconnect event when default device changed * [UWP] Fix appveyor ci * [WIN32] Default device change notification support * Fix warnings * Add event to notify the app when the default device changes - Event type: AL_EVENT_TYPE_DEFAULT_DEVICE_CHANGED_SOFT=0x19A7 - Event callback parameters: void _onALSoftEvent(ALenum eventType, ALuint object, // dataFlow: 0(render), 1(capture) ALuint param, // 0 ALsizei length, // 0 const ALchar* message, // Default device changed:<deviceId> void* userParam); * Fix warnings * Fire default device changed event in mixerProc thread * Fix compile warning * [UWP] Improve cmake * Revert changes * Notify default device change by system event callback * Revert insignificant change * Remove duplicate call
* Avoid using al::vector unnecessarilyChris Robinson2023-05-121-9/+9
|
* Remove custom stuff for standardChris Robinson2023-05-041-2/+2
|
* Use std::byte instead of a custom al::byteChris Robinson2023-05-041-2/+2
|
* Make and use a bit_cast functionChris Robinson2023-05-041-2/+2
| | | | Instead of reinterpret_casting between incompatible types
* Update ComPtr and use an out_ptr() functionChris Robinson2023-05-041-41/+26
|
* Distinguish a couple log messagesChris Robinson2023-01-301-3/+3
| | | | And downgrade an ERR to a WARN
* Use the correct variable for reading the WASAPI playback rateChris Robinson2022-12-051-2/+2
|
* Fix WASAPI capture handling the background COM threadChris Robinson2022-11-191-18/+30
|
* Use the correct frame size for WASAPI resamplingChris Robinson2022-11-131-2/+2
|
* Change a function to a static methodChris Robinson2022-11-131-3/+4
|
* Add a config option to prevent WASAPI from using a resamplerChris Robinson2022-11-121-1/+5
|
* Add a resampler to WASAPI outputChris Robinson2022-11-121-10/+75
| | | | | | | This allows mixing at various samples rates that WASAPI doesn't otherwise support. This is mostly helpful for users that have unnecessarily high device rates (96 or 192khz), and lets the ALC_FREQUENCY attribute or frequency config option set a lower mixing rate for more efficient processing.
* Dynamically start/stop the WASAPI message threadChris Robinson2022-11-121-86/+117
|
* Add preliminary support for 7.1.4 output modesChris Robinson2022-11-031-2/+20
| | | | | | | | I don't know how different sound APIs handle 7.1.4 ("Atmos" or "Auro3D") output, but currently it simply specifies the additional channels with the height channel labels. This isn't likely how it works for a virtualized channel bed, for playing over other with-height configurations (7.1.2, 5.1.4, etc), but this should be an okay start.
* Match exactly 5.1 Rear in WASAPIChris Robinson2022-06-161-2/+2
| | | | | So 7.1 and other configurations like it aren't detected as 5.1 Rear despite having side channels.
* Handle a blank channel mask from WASAPIChris Robinson2022-06-141-10/+18
| | | | | | | Without a channel mask, the channels are treated as "raw" or unknown. Auto- detection will only go up to stereo (assuming the first two channels are front- left and front-right), while explicit requests will work as long as there are enough channels (the user is responsible for ensuring a correct setup).
* Check and handle 5.1 Rear with WASAPI captureChris Robinson2022-06-071-3/+23
|
* Trace the WASAPI device mix formatChris Robinson2022-06-071-0/+1
|
* Track 5.1 Rear with WASAPI playbackChris Robinson2022-06-071-3/+14
|
* Use the mix format if IsFormatSupported fails for WASAPI captureChris Robinson2022-05-171-1/+6
|
* Handle 3D7.1 as a separate channel configurationChris Robinson2022-04-261-1/+5
| | | | | | | It's treated as 5.1 + 2 aux channels. This allows AL_DIRECT_CHANNELS_SOFT to behave better, not forwarding rear left/right channel inputs to lower front and upper rear, and allows reporting a more appropriate output mode to the app instead of 7.1.
* Make a couple more operator bools explicitChris Robinson2022-02-201-1/+1
|
* Don't change the requested format when it's usable with WASAPIChris Robinson2021-10-251-19/+53
|
* Use a flag to indicate headphone-like outputChris Robinson2021-10-231-2/+1
|
* Properly check the channel count for WASAPI captureChris Robinson2021-08-231-1/+2
|
* Don't store "OpenAL Soft on " in WASAPI device namesChris Robinson2021-08-221-21/+39
| | | | It's still prepended for enumeration, just not part of the name in the DevMap.
* Avoid 5.1Rear as its own channel configurationChris Robinson2021-07-301-15/+4
| | | | | | It messes with 5.1 sources using direct channels, and the surround channels are supposed to map to the side labels. Individual backends can deal with the channel order/label differences, as they already do to a degree.