Brendan Shanks (@bshanks) commented about dlls/winecoreaudio.drv/coreaudio.c:
UINT32 i; - AudioObjectPropertyAddress prop_addr = { - kAudioDevicePropertyVolumeScalar, - kAudioObjectPropertyScopeGlobal, - kAudioObjectPropertyElementMain - }; - - sc = AudioObjectSetPropertyData(stream->dev_id, &prop_addr, 0, NULL, sizeof(float), &level); - if (sc == noErr) - level = 1.0f; - else - WARN("Couldn't set master volume, applying it directly to the channels: %x\n", (int)sc);
- for (i = 1; i <= stream->fmt->nChannels; ++i) { - const float vol = level * params->session_volumes[i - 1] * params->volumes[i - 1]; + WARN("CoreAudio doesn't support per-channel volume control\n");
We don't need to print this warning if all channels have the same volume/session volume (which they often do). This could also be a good candidate to be in an `if (once)` block, so there aren't constant warnings while moving a volume slider around. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/7920#note_104157