/*========================================================================== * * Copyright (C) 1999 Microsoft Corporation. All Rights Reserved. * * File: sndutils.h * Content: Declares sound related untility functions * * History: * Date By Reason * ==== == ====== * 07/16/99 rodtoll Created * 07/30/99 rodtoll Updated util functions to take GUIDs and allow for * users to pre-create capture/playback devices and * pass them into InitXXXXDuplex * 08/25/99 rodtoll General Cleanup/Modifications to support new * compression sub-system. * 08/30/99 rodtoll Added new playback format param to sound init * 11/12/99 rodtoll Updated full duplex test to use new abstracted recording * and playback systems. * rodtoll Updated to allow passing of sounddeviceconfig flags in dwflags * parameter to init is effected by the flags specified by user * 12/01/99 rodtoll Bug #115783 - Will always adjust volume of default device * Updated to eliminate pointer to GUIDs. * 01/27/2000 rodtoll Updated tests to accept buffer descriptions and play flags/priority * 07/12/2000 rodtoll Bug #31468 - Add diagnostic spew to logfile to show what is failing the HW Wizard * 08/03/2000 rodtoll Bug #41457 - DPVOICE: need way to discover which specific dsound call failed when returning DVERR_SOUNDINITFAILURE * 08/29/2000 rodtoll Bug #43553 and Bug #43620 - Buffer lockup handling. * 11/16/2000 rodtoll Bug #47783 - DPVOICE: Improve debugging of failures caused by DirectSound errors. * ***************************************************************************/ class CAudioPlaybackBuffer; class CAudioPlaybackDevice; class CAudioRecordDevice; class CAudioRecordBuffer; // // This module contains the definition of sound relatedt utility // functions. Functions in this module manipulate WAVEFORMATEX // structures and provide full duplex initialization / testing // facilities. // // This module also contains the routines used to measure peak // of an audio buffer and for voice activation. // // #ifndef __SOUNDUTILS_H #define __SOUNDUTILS_H void DV_SetupBufferDesc( LPDSBUFFERDESC lpdsBufferDesc, LPDSBUFFERDESC lpdsBufferSource, LPWAVEFORMATEX lpwfxFormat, DWORD dwBufferSize ); HRESULT InitFullDuplex( HWND hwnd, const GUID &guidPlayback, CAudioPlaybackDevice **audioPlaybackDevice, LPDSBUFFERDESC lpdsBufferDesc, CAudioPlaybackBuffer **audioPlaybackBuffer, const GUID &guidRecord, CAudioRecordDevice **audioRecordDevice, CAudioRecordBuffer **audioRecordBuffer, const GUID &guidCT, WAVEFORMATEX *primaryFormat, WAVEFORMATEX *lpwfxPlayFormat, BOOL aso, DWORD dwPlayPriority, DWORD dwPlayFlags, DWORD dwFlags ); HRESULT InitHalfDuplex( HWND hwnd, const GUID &guidPlayback, CAudioPlaybackDevice **audioPlaybackDevice, LPDSBUFFERDESC lpdsBufferDesc, CAudioPlaybackBuffer **audioPlaybackBuffer, const GUID &guidCT, WAVEFORMATEX *primaryFormat, WAVEFORMATEX *lpwfxPlayFormat, DWORD dwPlayPriority, DWORD dwPlayFlags, DWORD dwFlags ); HRESULT InitializeRecordBuffer( HWND hwnd, const DVFULLCOMPRESSIONINFO* lpdvfInfo, CAudioRecordDevice *parecDevice, CAudioRecordBuffer **pparecBuffer, DWORD dwFlags ); BYTE FindPeak( BYTE *data, DWORD frameSize, BOOL eightBit ); void DSERTRACK_Update( const char *szAPICall, HRESULT hrResult ); void DSERRTRACK_Reset(); BOOL DSERRTRACK_Init(); void DSERRTRACK_UnInit(); extern BOOL g_fDSErrorBreak; #if defined(DEBUG) || defined(DBG) || defined(_DEBUG) #define DSASSERT(condition) if( g_fDSErrorBreak ) { DNASSERT( condition ); } #else #define DSASSERT(condition) #endif #endif