// 从AudioDataSource获取WAVEFORMATEX ///////////////////////////////////////////////////////////////////////////////// WAVEFORMATEX WaveFormatEx(AudioDataSourcePtr const & dataSource) { WAVEFORMATEX wfx; wfx.wFormatTag = WAVE_FORMAT_PCM; wfx.nSamplesPerSec = dataSource->Freq(); wfx.cbSize = 0; wfx.wBitsPerSample = 8; wfx.nChannels = 1; switch (dataSource->Format()) { case AF_Mono8: wfx.wBitsPerSample = 8; wfx.nChannels = 1; break; case AF_Mono16: wfx.wBitsPerSample = 16; wfx.nChannels = 1; break; case AF_Stereo8: wfx.wBitsPerSample = 8; wfx.nChannels = 2; break; case AF_Stereo16: wfx.wBitsPerSample = 16; wfx.nChannels = 2; break; case AF_Unknown: BOOST_ASSERT(false); break; } wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; return wfx; }
WAVEFORMATEX WaveFormatEx(AudioDataSourcePtr const & data_source) { WAVEFORMATEX wfx; wfx.wFormatTag = WAVE_FORMAT_PCM; wfx.nSamplesPerSec = data_source->Freq(); wfx.cbSize = 0; wfx.wBitsPerSample = 8; wfx.nChannels = 1; switch (data_source->Format()) { case AF_Mono8: wfx.wBitsPerSample = 8; wfx.nChannels = 1; break; case AF_Mono16: wfx.wBitsPerSample = 16; wfx.nChannels = 1; break; case AF_Stereo8: wfx.wBitsPerSample = 8; wfx.nChannels = 2; break; case AF_Stereo16: wfx.wBitsPerSample = 16; wfx.nChannels = 2; break; default: KFL_UNREACHABLE("Invalid audio format"); } wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; return wfx; }