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
This commit is contained in:
parent
7b3d837bbb
commit
f1e8193ae1
1 changed files with 21 additions and 5 deletions
|
|
@ -1507,14 +1507,14 @@ static PaError MakeWaveFormatFromParams(WAVEFORMATEXTENSIBLE *wavex, const PaStr
|
||||||
old->nBlockAlign = (old->nChannels * (old->wBitsPerSample/8));
|
old->nBlockAlign = (old->nChannels * (old->wBitsPerSample/8));
|
||||||
old->nAvgBytesPerSec = (old->nSamplesPerSec * old->nBlockAlign);
|
old->nAvgBytesPerSec = (old->nSamplesPerSec * old->nBlockAlign);
|
||||||
|
|
||||||
//WAVEFORMATEX
|
// WAVEFORMATEX
|
||||||
/*if ((params->channelCount <= 2) && ((bitsPerSample == 16) || (bitsPerSample == 8)))
|
if ((params->channelCount <= 2) && ((bitsPerSample == 16) || (bitsPerSample == 8)))
|
||||||
{
|
{
|
||||||
old->cbSize = 0;
|
old->cbSize = 0;
|
||||||
old->wFormatTag = WAVE_FORMAT_PCM;
|
old->wFormatTag = WAVE_FORMAT_PCM;
|
||||||
}
|
}
|
||||||
//WAVEFORMATEXTENSIBLE
|
// WAVEFORMATEXTENSIBLE
|
||||||
else*/
|
else
|
||||||
{
|
{
|
||||||
old->wFormatTag = WAVE_FORMAT_EXTENSIBLE;
|
old->wFormatTag = WAVE_FORMAT_EXTENSIBLE;
|
||||||
old->cbSize = sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX);
|
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 1: wavex->dwChannelMask = KSAUDIO_SPEAKER_MONO; break;
|
||||||
case 2: wavex->dwChannelMask = KSAUDIO_SPEAKER_STEREO; 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 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;
|
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;
|
case 8: wavex->dwChannelMask = KSAUDIO_SPEAKER_7POINT1; break;
|
||||||
default: wavex->dwChannelMask = 0; break;
|
#endif
|
||||||
|
|
||||||
|
default: wavex->dwChannelMask = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue