A Windows 7 Historical Problem
This page details a historical problem that existed with Internet Explorer and Chrome in Windows 7. To explain this problem, some background on audio playback in Windows needs to be understood. The primary methods or APIs to play audio in Windows 7 are:
|Output Method ||First Introduced ||Basic Feature |
|waveOut||Windows 3.0||Plays sound|
|DirectSound ||Windows 95 ||Multiple sounds at same time|
|WASAPI ||Windows Vista ||Low Latency, Exclusive Mode|
To use DirectSound, DirectX has to be installed on the PC. This is supplied with Win 7, but in XP days, a user had to sometimes install DirectX seperately (usually with an application he or she installed)
Perhaps for this reason, or the fact it was already working code, IE 9 and Chrome apparently chose to use waveOut to play audio.
The Problem - Poor Interpolation
Windows 7 applications that use the WaveOut API will have poor audio quality on playback if the sample rate of the content is not the same as the default sample rate of the output device. This is because the resampler for WaveOut was changed in Win7 to use linear interpolation, according to Microsoft.
HTML5 media playback is important for enabling multi-channel AAC content delivery to the consumer. This content may be at either 44.1 or 48 kHz sampling rates, so the problem is likely to occur for at least some of the content played, no matter whether the default rate is 44.1 or 48 kHz on the user's computer.
A "request only" Windows hotfix was issued for this problem, but consumers won't recognize the problem or be able to find the hotfix. To enable HTML5 media playback in IE 9, this hotfix should be in the normal Windows Update process. We reported this problem to Microsoft, but did not receive any news of a change in status. Current (as of 2017) Windows 7 systems appear to have had this issue patched through updates.
The problem is limited to Windows 7 and Vista, and has been fixed in Windows 8 and later versions.
Windows 7 Resampler Tests
These signals test the proper operation of the Windows 7 sound mixer resampler. The signals are 2-100 Hz linear sweeps. If the mixer does a poor job of resampling, you will hear a tone in the mid or high frequencies at whichever sample rate is not the native one selected for your output device in the operating system. If you do not have the hotfix or update installed for Windows 7, you will hear the tone when using IE 9 for playback.
Fraunhofer is not the "discoverer" of this issue. It can be found on HydrogenAudio, for example: (https://hydrogenaud.io/index.php/topic,86676.0.html)
Note this is not a codec problem, you can hear this on a wav file. The Microsoft KB entry says Windows 7 uses linear interpolation for the WaveOut resampling.
The problem is detailed in this post: https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/725546ce-57bf-40d0-b7aa-47e51de9c3ae/artifacts-on-windows-7-due-to-sample-rate-conversion-slightly-ot?forum=windowspro-audiodevelopment
We have found the problem, which is a bug in waveOut on Vista and Windows 7. Windows XP does not have this problem.
In Windows XP, the sample rate conversion quality in KMixer is controlled by the Sound control panel:
In Windows Vista KMixer was removed and the audio engine was moved up into user mode. The sample rate conversion quality meter was removed from the Sound control panel.
Media Foundation, DirectShow, DirectSound, and waveOut each do sample rate conversion slightly differently. There is a bug in the waveOut sample rate conversion which results in a lower-quality sample rate conversion than was done in XP.
Matthew van Eerde