86 lines
3.1 KiB
C++
86 lines
3.1 KiB
C++
/*==========================================================================
|
|
*
|
|
* Copyright (C) 1999 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: dscrecb.h
|
|
* Content: Definition of the CDirectSoundCaptureRecordBuffer class
|
|
*
|
|
* History:
|
|
* Date By Reason
|
|
* ==== == ======
|
|
* 11/04/99 rodtoll Created
|
|
* 11/22/99 rodtoll Added code to allow specification of wave device ID
|
|
* 11/23/99 rodtoll Updated to use waveIn device ID or DSound 7.1 when they are avail
|
|
* rodtoll Added SelectMicrophone call to the interface
|
|
* 12/01/99 rodtoll Bug #115783 - Will always adjust volume of default device
|
|
* Now uses new CMixerLine class for adjusting volumes/selecting mic
|
|
* 12/08/99 rodtoll Bug #121054 - DirectX 7.1 support.
|
|
* - Added hwndOwner param for capture focus support
|
|
* - Added lpfLostFocus param to GetCurrentPosition so upper
|
|
* layers can detect lost focus.
|
|
* 01/28/2000 rodtoll Bug #130465: Record Mute/Unmute must call YieldFocus() / ClaimFocus()
|
|
*
|
|
***************************************************************************/
|
|
|
|
#ifndef __DIRECTSOUNDCAPTURERECORDBUFFER_H
|
|
#define __DIRECTSOUNDCAPTURERECORDBUFFER_H
|
|
|
|
// Uncomment out to get a lockup of the recording position after LOCKUP_NUM_FRAMES_BEFORE_LOCKUP frames
|
|
//#define LOCKUP_SIMULATION 1
|
|
#define LOCKUP_NUM_CALLS_BEFORE_LOCKUP 60
|
|
|
|
// Uncomment to have Stop fail on a reset
|
|
//#define LOCKUP_STOPFAIL
|
|
|
|
// Uncomment to have Start fail on a reset
|
|
//#define LOCKUP_STARTFAIL
|
|
|
|
// CDirectSoundCaptureRecordBuffer
|
|
//
|
|
// This class provides an implementation of the CAudioRecordBuffer class
|
|
// for directsound. In the abstract sense, it represents a buffer of audio
|
|
// which can be played to the sound hardware which consists of multiple,
|
|
// equal length subbuffers.
|
|
//
|
|
class CDirectSoundCaptureRecordBuffer: public CAudioRecordBuffer
|
|
{
|
|
public:
|
|
CDirectSoundCaptureRecordBuffer( LPDIRECTSOUNDCAPTUREBUFFER lpdsBuffer, HWND hwndOwner, const GUID &guidDevice, UINT uiWaveDeviceID, LPDSCBUFFERDESC lpdsBufferDesc );
|
|
virtual ~CDirectSoundCaptureRecordBuffer();
|
|
|
|
public:
|
|
|
|
HRESULT Lock( DWORD dwWriteCursor, DWORD dwWriteBytes, LPVOID *lplpvBuffer1, LPDWORD lpdwSize1, LPVOID *lplpvBuffer2, LPDWORD lpdwSize2, DWORD dwFlags );
|
|
HRESULT UnLock( LPVOID lpvBuffer1, DWORD dwSize1, LPVOID lpvBuffer2, DWORD dwSize2 );
|
|
HRESULT GetVolume( LPLONG lplVolume );
|
|
HRESULT SetVolume( LONG lVolume );
|
|
HRESULT GetCurrentPosition( LPDWORD lpdwPosition, LPBOOL lpfLostFocus );
|
|
HRESULT Record( BOOL fLooping );
|
|
HRESULT Stop();
|
|
HRESULT SelectMicrophone( BOOL fSelect );
|
|
|
|
HRESULT YieldFocus();
|
|
HRESULT ClaimFocus();
|
|
|
|
LPWAVEFORMATEX GetRecordFormat();
|
|
DWORD GetStartupLatency();
|
|
|
|
protected:
|
|
|
|
BOOL m_fUseCaptureFocus;
|
|
HWND m_hwndOwner;
|
|
LPDIRECTSOUNDCAPTUREBUFFER m_lpdscBuffer;
|
|
LPDIRECTSOUNDCAPTUREBUFFER7_1 m_lpdscBuffer7;
|
|
UINT m_uiWaveDeviceID;
|
|
LPWAVEFORMATEX m_lpwfxRecordFormat;
|
|
GUID m_guidDevice;
|
|
CMixerLine m_mixerLine;
|
|
#ifdef LOCKUP_SIMULATION
|
|
DWORD m_dwNumSinceLastLockup;
|
|
DWORD m_dwLastPosition;
|
|
#endif
|
|
};
|
|
|
|
#endif
|
|
|