]> Repos - portaudio/commitdiff
wasapi:
authordmitrykos <dmitrykos@0f58301d-fd10-0410-b4af-bbb618454e57>
Sun, 7 Nov 2010 08:23:51 +0000 (08:23 +0000)
committerdmitrykos <dmitrykos@0f58301d-fd10-0410-b4af-bbb618454e57>
Sun, 7 Nov 2010 08:23:51 +0000 (08:23 +0000)
 - 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

src/hostapi/wasapi/pa_win_wasapi.c

index 9d48f34ebfdc5c1768b6dcadd1bb3773f4a76311..48778e837eba85f36a4632d114cb88c6c40bc897 100644 (file)
@@ -1507,14 +1507,14 @@ static PaError MakeWaveFormatFromParams(WAVEFORMATEXTENSIBLE *wavex, const PaStr
     old->nBlockAlign     = (old->nChannels * (old->wBitsPerSample/8));\r
     old->nAvgBytesPerSec = (old->nSamplesPerSec * old->nBlockAlign);\r
 \r
-    //WAVEFORMATEX\r
-    /*if ((params->channelCount <= 2) && ((bitsPerSample == 16) || (bitsPerSample == 8)))\r
+    // WAVEFORMATEX\r
+    if ((params->channelCount <= 2) && ((bitsPerSample == 16) || (bitsPerSample == 8)))\r
        {\r
         old->cbSize            = 0;\r
         old->wFormatTag        = WAVE_FORMAT_PCM;\r
     }\r
-    //WAVEFORMATEXTENSIBLE\r
-    else*/\r
+    // WAVEFORMATEXTENSIBLE\r
+    else\r
        {\r
         old->wFormatTag = WAVE_FORMAT_EXTENSIBLE;\r
         old->cbSize            = sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX);\r
@@ -1537,10 +1537,26 @@ static PaError MakeWaveFormatFromParams(WAVEFORMATEXTENSIBLE *wavex, const PaStr
                        {\r
                        case 1:  wavex->dwChannelMask = KSAUDIO_SPEAKER_MONO; break;\r
                        case 2:  wavex->dwChannelMask = KSAUDIO_SPEAKER_STEREO; break;\r
+                       case 3:  wavex->dwChannelMask = KSAUDIO_SPEAKER_STEREO|SPEAKER_LOW_FREQUENCY; break;\r
                        case 4:  wavex->dwChannelMask = KSAUDIO_SPEAKER_QUAD; break;\r
+                       case 5:  wavex->dwChannelMask = KSAUDIO_SPEAKER_QUAD|SPEAKER_LOW_FREQUENCY; break;\r
+#ifdef KSAUDIO_SPEAKER_5POINT1_SURROUND\r
+                       case 6:  wavex->dwChannelMask = KSAUDIO_SPEAKER_5POINT1_SURROUND; break;\r
+#else\r
                        case 6:  wavex->dwChannelMask = KSAUDIO_SPEAKER_5POINT1; break;\r
+#endif\r
+#ifdef KSAUDIO_SPEAKER_5POINT1_SURROUND\r
+                       case 7:  wavex->dwChannelMask = KSAUDIO_SPEAKER_5POINT1_SURROUND|SPEAKER_BACK_CENTER; break;\r
+#else\r
+                       case 7:  wavex->dwChannelMask = KSAUDIO_SPEAKER_5POINT1|SPEAKER_BACK_CENTER; break;\r
+#endif \r
+#ifdef KSAUDIO_SPEAKER_7POINT1_SURROUND\r
+                       case 8:  wavex->dwChannelMask = KSAUDIO_SPEAKER_7POINT1_SURROUND; break;\r
+#else\r
                        case 8:  wavex->dwChannelMask = KSAUDIO_SPEAKER_7POINT1; break;\r
-                       default: wavex->dwChannelMask = 0; break;\r
+#endif\r
+\r
+                       default: wavex->dwChannelMask = 0;\r
                        }\r
                }\r
        }\r