⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 talkabout.h

📁 声卡数据采集的代码,可做学习与参考,对学习数据采集的人有一定帮助
💻 H
字号:

#ifndef _SOUND_TALK_ABPUT_OUT_
#define _SOUND_TALK_ABPUT_OUT_

#include <mmsystem.h>

//设备列表,可以是回放和录音设备
typedef struct _tagSoundDevice{
	BYTE btDeviceType;		//0:replay,1:capture
	char pstrDeviceDesc[100];
	char pstrDeviceName[100];
	GUID * pDeviceGuid;
} SOUND_DEVICE;

//支持的音频格式
typedef struct _tagFormat{
	int nFormatIndex;
	char pstrFormatDesc[255];
	WAVEFORMATEX wfx;
} SOUND_FORMAT;

//支持的音频输入源
typedef struct _tagInputSource{
	UINT uLineIndex;
	MIXERLINE LineInfo;
	char pstrSourceName[255];
} SOUND_INPUT_SOURCE;

typedef BOOL (CALLBACK *LPReadDataCallback)(BYTE *, DWORD, DWORD *, HANDLE, short, LPVOID);
//BOOL CALLBACK ReadDataCallback( BYTE * pData,DWORD nDataLen, DWORD * pnDataReaded, HANDLE hDevice, short nChannel, VOID* pContext );

typedef BOOL (CALLBACK *LPCaptureDataCallback)(BYTE *, UINT, HANDLE, LPVOID);
//BOOL CALLBACK CaptureDataCallback( BYTE * pData,UINT nDataLen,HANDLE hDevice,VOID* pContext );

#ifdef __cplusplus
extern "C" {
#endif	// __cplusplus

//函数列表
//all
BOOL __stdcall TK_Destroy();

BOOL __stdcall TK_GetFIleWaveFormatex(LPCTSTR pFile, WAVEFORMATEX * pwfx);

//input
HANDLE __stdcall TK_CreateIn(HWND hMsgWnd,SOUND_DEVICE * pInputDevice);
BOOL __stdcall TK_EnumCaptureSoundDevice(SOUND_DEVICE * pDeviceList,int & nDeviceCount);  //可以在TK_CreateIn前调用

BOOL __stdcall TK_EnumInputSource(HANDLE hDevice, SOUND_INPUT_SOURCE * pSourceList,int & nSourceCount);
BOOL __stdcall TK_EnumInputFormats(HANDLE hDevice, SOUND_FORMAT * pFormatList,int & nFormatCount);

BOOL __stdcall TK_SetInputSource(HANDLE hDevice, SOUND_INPUT_SOURCE & source);
BOOL __stdcall TK_InputGetVolume(HANDLE hDevice, LONG* pVol);
BOOL __stdcall TK_InputSetVolume(HANDLE hDevice, LONG vol);
BOOL __stdcall TK_InputGetMinMaxVolume(HANDLE hDevice, LONG * pMinVol, LONG * pMaxVol);

BOOL __stdcall TK_StartCaputre(HANDLE hDevice, WAVEFORMATEX * pwfx, UINT nDataMsg, LPCaptureDataCallback fb, VOID* pContext, LPCTSTR pstrFile);
BOOL __stdcall TK_StopCaputre(HANDLE hDevice);

//output
HANDLE __stdcall TK_CreateOut(HWND hMsgWnd,SOUND_DEVICE * pOutputDevice);

BOOL __stdcall TK_EnumSoundDevice(SOUND_DEVICE * pDeviceList,int & nDeviceCount);  //可以在TK_CreateOut前调用
BOOL __stdcall TK_EnumOutputFormats(HANDLE hDevice, SOUND_FORMAT * pFormatList,int & nFormatCount);

BOOL __stdcall TK_StartPlay(HANDLE hDevice, short nChannel,WAVEFORMATEX * pwfx,LPReadDataCallback fb,VOID * pContext,LPCTSTR pstrFile);
BOOL __stdcall TK_StopPlay(HANDLE hDevice, short nChannel);

BOOL __stdcall TK_OutputGetVolume(HANDLE hDevice, short nChannel, LONG* pVol);
BOOL __stdcall TK_OutputSetVolume(HANDLE hDevice, short nChannel, LONG vol);
BOOL __stdcall TK_OutputGetMinMaxVolume(HANDLE hDevice, short nChannel, LONG * pMinVol, LONG * pMaxVol);

#ifdef __cplusplus
}
#endif	// __cplusplus

#endif //_SOUND_TALK_ABPUT_OUT_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -