我使用MSoft WaveOut api编写了一个应用程序,除了我的扬声器不播放立体声单声道外,它工作正常。当我将耳机插入两个插孔中的一个时,我得到相同的单声道行为,但另一个插孔以立体声播放文件。如果我使用的是使用DirectX api的东西,那么所有的都是立体声播放。 我的设备是戴尔Studio XP。 有人可以提出理由吗?
答案 0 :(得分:0)
你应该将Channels参数从1改为2
format.wFormatTag = 1 ' PCM
format.nChannels = 1 '1=mono , 2=Steero <<<<<<
format.nSamplesPerSec = 8000 ' 12000
format.wBitsPerSample = 16
答案 1 :(得分:0)
问题在于音量。我用以下代码设置音量:
unsigned long x = 0xFFFF;
MMRESULT result = waveOutSetVolume( _audio_device, x );
事实上,我需要这样做:
unsigned short left = unsigned(0xFFFF * v);
unsigned short right = unsigned(0xFFFF * v);
unsigned long x = left + (right << 16);
MMRESULT result = waveOutSetVolume( _audio_device, x );