Seeing that Adobe closed the bug as "working as intended" (which is just plain stupid), I decided to fix it myself.
Here's the result: StopBraindeadSurround (open source, WTFPL license)
To install, just copy audioses.dll
into your Flash player directory (typically C:\Windows\SysWOW64\Macromed\Flash
if you're using 64-bit Windows). You might need to copy it again after Flash Player updates.
Here's an extract from the README:
If you are using Flash Player with a surround sound system (e.g. 5.1,
7.1), you might have noticed that Flash exhibits a strange behavior when
playing audio streams: instead of just passing the stereo audio stream
untouched like any sane program would do, it upmixes it to 5.1,
duplicating the audio streams to the rear speakers and applying its own
bass management to the LFE channel.
This is of course insanely stupid for a number of reasons. First of all
it is inconsistent with all other software out there (e.g. audio players
such as foobar2000). Second, stereo streams are not supposed to be
"expanded" when played on a 5.1 stream, as they were never meant to be
played back using rear speakers. Third, it results in excessive bass
output because acoustic summation typically results in higher sound
pressure at the listening position in the lower portion of the
spectrum. And finally, if the user really wants upmixing despite all
these issues, most audio drivers allow him to do that at the system
level anyway, which makes much more sense than doing it at the
application level.
This little piece of software (SBS: StopBraindeadSurround) is
specifically designed to prevent Flash Player from upmixing audio. Once
installed, it prevents Flash Player from opening the audio device with
more than 2 channels, thus forcing it to fall back to (hopefully)
untouched stereo output.
Those interested in the implementation will find a description of how it works in the source code (sbs.cpp
).