https://bugs.winehq.org/show_bug.cgi?id=46450
--- Comment #5 from Gabriel Ivăncescu gabrielopcode@gmail.com --- Sure I'll do the renames. The applications I tested with were Firefox & Palemoon, Winamp with WaveOut (which had the same bug), and I also tested REAPER but it appears it handles volume changes on its own, so instead I tried all formats from REAPER but changing to an artificial 0.5 mastervol in the source code to halve the volume, and it worked fine.
PROCESS_BUFFERS is endian-specific since it uses the target's endianess to read one sample at a time for efficiency, which is important for low latency buffers (compiler will also auto-vectorize it this way, so it's much more efficient). Since the Windows API uses little-endian, it needs to match.
I can add a big-endian case, but I didn't find it worth it, since as far as I know, Windows doesn't run on Big Endian and I doubt this will run properly when compiled like that. But just in case I'll be asking: is there some macro/function I can use to bswap or do I have to read 1 byte at a time manually in such case? (the formats will still be little-endian since that's what the Windows API uses)