Delen via


De WAVEFORMATEX-structuur gebruiken

[De functie die is gekoppeld aan deze pagina, Waveform Audio, is een verouderde functie. Het is vervangen door WASAPI- en Audio Graphs. WASAPI en Audio Graphs zijn geoptimaliseerd voor Windows 10 en Windows 11. Microsoft raadt ten zeerste aan dat nieuwe code WASAPI- en Audio Graphs gebruikt in plaats van Waveform Audio-, indien mogelijk. Microsoft stelt voor dat bestaande code die gebruikmaakt van de verouderde API's, indien mogelijk opnieuw worden geschreven om de nieuwe API's te gebruiken.]

Voor PCM-audiogegevens op niet meer dan twee kanalen en met 8-bits of 16-bits voorbeelden gebruikt u de WAVEFORMATEX- structuur om de gegevensindeling op te geven.

In het volgende voorbeeld ziet u hoe u een WAVEFORMATEX structuur instelt voor 11.025 kilohertz (kHz) 8-bits mono en voor 44,1 kHz 16-bits stereo. Nadat u WAVEFORMATEXhebt ingesteld, roept het voorbeeld de functie IsFormatSupported aan om te controleren of het PCM-waveform-uitvoerapparaat de indeling ondersteunt. De broncode voor IsFormatSupported wordt weergegeven in een voorbeeld in Ondersteuning voor niet-standaardindeling bepalen.

UINT wReturn; 
WAVEFORMATEX pcmWaveFormat; 
 
// Set up WAVEFORMATEX for 11 kHz 8-bit mono. 
 
pcmWaveFormat.wFormatTag = WAVE_FORMAT_PCM; 
pcmWaveFormat.nChannels = 1; 
pcmWaveFormat.nSamplesPerSec = 11025L; 
pcmWaveFormat.nAvgBytesPerSec = 11025L; 
pcmWaveFormat.nBlockAlign = 1; 
pcmWaveFormat.wBitsPerSample = 8; 
pcmWaveFormat.cbSize = 0;
 
// See if format is supported by any device in system. 
 
wReturn = IsFormatSupported(&pcmWaveFormat, WAVE_MAPPER); 
 
// Report results. 
 
if (wReturn == 0) 
     MessageBox(hMainWnd, "11 kHz 8-bit mono is supported.", 
       "", MB_ICONINFORMATION); 
else if (wReturn == WAVERR_BADFORMAT) 
     MessageBox(hMainWnd, "11 kHz 8-bit mono NOT supported.", 
       "", MB_ICONINFORMATION); 
else 
     MessageBox(hMainWnd, "Error opening waveform device.", 
       "Error", MB_ICONEXCLAMATION); 
 
// Set up WAVEFORMATEX for 44.1 kHz 16-bit stereo. 
 
pcmWaveFormat.wFormatTag = WAVE_FORMAT_PCM; 
pcmWaveFormat.nChannels = 2; 
pcmWaveFormat.nSamplesPerSec = 44100L; 
pcmWaveFormat.nAvgBytesPerSec = 176400L; 
pcmWaveFormat.nBlockAlign = 4; 
pcmWaveFormat.wBitsPerSample = 16; 
pcmWaveFormat.cbSize = 0;
 
// See if format is supported by any device in the system. 
 
wReturn = IsFormatSupported(&pcmWaveFormat, WAVE_MAPPER); 
 
// Report results. 
 
if (wReturn == 0) 
    MessageBox(hMainWnd, "44.1 kHz 16-bit stereo is supported.", 
      "", MB_ICONINFORMATION); 
else if (wReturn == WAVERR_BADFORMAT) 
    MessageBox(hMainWnd, "44.1 kHz 16-bit stereo NOT supported.", 
      "", MB_ICONINFORMATION); 
else 
    MessageBox(hMainWnd, "Error opening waveform device.", 
      "Error", MB_ICONEXCLAMATION);