From: dmitrykos Date: Sun, 7 Nov 2010 08:23:51 +0000 (+0000) Subject: wasapi: X-Git-Tag: pa_stable_v19_20110326_r1647~78 X-Git-Url: https://andrewgundersen.net/repos?a=commitdiff_plain;h=f1e8193ae1b590bd56e58ae9fc45c80aad7ec480;p=portaudio wasapi: - using WAVE_FORMAT_PCM for mono/stereo 8/16-bit stream configuration to avoid possible driver refusal upon audio client creation - modified default speaker mask for 5.1 and 7.1 configuration to _SURROUND (correct) versions, added default speaker configuration for 2.1, 4.1, 6.1 cases --- diff --git a/src/hostapi/wasapi/pa_win_wasapi.c b/src/hostapi/wasapi/pa_win_wasapi.c index 9d48f34..48778e8 100644 --- a/src/hostapi/wasapi/pa_win_wasapi.c +++ b/src/hostapi/wasapi/pa_win_wasapi.c @@ -1507,14 +1507,14 @@ static PaError MakeWaveFormatFromParams(WAVEFORMATEXTENSIBLE *wavex, const PaStr old->nBlockAlign = (old->nChannels * (old->wBitsPerSample/8)); old->nAvgBytesPerSec = (old->nSamplesPerSec * old->nBlockAlign); - //WAVEFORMATEX - /*if ((params->channelCount <= 2) && ((bitsPerSample == 16) || (bitsPerSample == 8))) + // WAVEFORMATEX + if ((params->channelCount <= 2) && ((bitsPerSample == 16) || (bitsPerSample == 8))) { old->cbSize = 0; old->wFormatTag = WAVE_FORMAT_PCM; } - //WAVEFORMATEXTENSIBLE - else*/ + // WAVEFORMATEXTENSIBLE + else { old->wFormatTag = WAVE_FORMAT_EXTENSIBLE; old->cbSize = sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX); @@ -1537,10 +1537,26 @@ static PaError MakeWaveFormatFromParams(WAVEFORMATEXTENSIBLE *wavex, const PaStr { case 1: wavex->dwChannelMask = KSAUDIO_SPEAKER_MONO; break; case 2: wavex->dwChannelMask = KSAUDIO_SPEAKER_STEREO; break; + case 3: wavex->dwChannelMask = KSAUDIO_SPEAKER_STEREO|SPEAKER_LOW_FREQUENCY; break; case 4: wavex->dwChannelMask = KSAUDIO_SPEAKER_QUAD; break; + case 5: wavex->dwChannelMask = KSAUDIO_SPEAKER_QUAD|SPEAKER_LOW_FREQUENCY; break; +#ifdef KSAUDIO_SPEAKER_5POINT1_SURROUND + case 6: wavex->dwChannelMask = KSAUDIO_SPEAKER_5POINT1_SURROUND; break; +#else case 6: wavex->dwChannelMask = KSAUDIO_SPEAKER_5POINT1; break; +#endif +#ifdef KSAUDIO_SPEAKER_5POINT1_SURROUND + case 7: wavex->dwChannelMask = KSAUDIO_SPEAKER_5POINT1_SURROUND|SPEAKER_BACK_CENTER; break; +#else + case 7: wavex->dwChannelMask = KSAUDIO_SPEAKER_5POINT1|SPEAKER_BACK_CENTER; break; +#endif +#ifdef KSAUDIO_SPEAKER_7POINT1_SURROUND + case 8: wavex->dwChannelMask = KSAUDIO_SPEAKER_7POINT1_SURROUND; break; +#else case 8: wavex->dwChannelMask = KSAUDIO_SPEAKER_7POINT1; break; - default: wavex->dwChannelMask = 0; break; +#endif + + default: wavex->dwChannelMask = 0; } } }