Windows多媒体API -低阶(二)
来源:互联网 发布:知柏地黄丸怎么服用 编辑:程序博客网 时间:2024/04/29 15:39
1.1 WAVEOUTUNPREPAREHEADER
//声明:
waveOutUnprepareHeader(
): MMRESULT; {成功返回 0; 可能的错误值见下:}
MMSYSERR_INVALHANDLE = 5; {设备句柄无效}
MMSYSERR_HANDLEBUSY = 12; {设备已被另一线程使用}
WAVERR_STILLPLAYING = 33; {缓冲区还在队列中}
//TWaveHdr 是 wavehdr_tag 结构的重定义
wavehdr_tag = record
end;
//TWaveHdr 中的 dwFlags 的可选值:
WHDR_DONE = $00000001; {设备已使用完缓冲区, 并返回给程序}
WHDR_PREPARED = $00000002; {waveInPrepareHeader 或 waveOutPrepareHeader 已将缓冲区准备好}
WHDR_BEGINLOOP = $00000004; {缓冲区是循环中的第一个缓冲区, 仅用于输出}
WHDR_ENDLOOP = $00000008; {缓冲区是循环中的最后一个缓冲区, 仅用于输出}
WHDR_INQUEUE = $00000010; { reserved for driver }
提示:
设备使用完数据块后, 须调用此函数;
释放(GlobalFree)缓冲区前, 须调用此函数;
取消一个尚未准备的缓冲区将无效, 但函数返回 0
1.2 WAVEINGETNUMDEVS
waveInGetNumDevs:UINT;无参数;返回波形输入设备的数目。
1.3 WAVEINCAPSA
typedef struct tagWAVEINCAPSA {
} WAVEINCAPSA, *PWAVEINCAPSA, *NPWAVEINCAPSA, *LPWAVEINCAPSA;
1.4 WAVEINGETDEVCAPS
waveInGetDevCaps - 查询输入设备的性能
//声明:
waveInGetDevCaps(
): MMRESULT; {成功返回 0; 可能的错误值见下:}
MMSYSERR_BADDEVICEID = 2; {设备ID超界}
MMSYSERR_NODRIVER = 6; {没有安装驱动程序}
//TWaveInCaps 是 tagWAVEINCAPSA 结构的重定义:
tagWAVEINCAPSA = record
end;
//dwFormats:
WAVE_INVALIDFORMAT = $00000000; {invalid format}
WAVE_FORMAT_1M08 = $00000001; {11.025 kHz, Mono, 8-bit }
WAVE_FORMAT_1S08 = $00000002; {11.025 kHz, Stereo, 8-bit }
WAVE_FORMAT_1M16 = $00000004; {11.025 kHz, Mono, 16-bit}
WAVE_FORMAT_1S16 = $00000008; {11.025 kHz, Stereo, 16-bit}
WAVE_FORMAT_2M08 = $00000010; {22.05 kHz, Mono, 8-bit }
WAVE_FORMAT_2S08 = $00000020; {22.05 kHz, Stereo, 8-bit }
WAVE_FORMAT_2M16 = $00000040; {22.05 kHz, Mono, 16-bit}
WAVE_FORMAT_2S16 = $00000080; {22.05 kHz, Stereo, 16-bit}
WAVE_FORMAT_4M08 = $00000100; {44.1 kHz, Mono, 8-bit }
WAVE_FORMAT_4S08 = $00000200; {44.1 kHz, Stereo, 8-bit }
WAVE_FORMAT_4M16 = $00000400; {44.1 kHz, Mono, 16-bit}
WAVE_FORMAT_4S16 = $00000800; {44.1 kHz, Stereo, 16-bit}
1.5 WAVEINOPEN
waveInOpen是动态连接库winmm.dll之函数,用以开启波形输入设备。
waveInOpen之原形为︰
MMRESULT waveInOpen(
解述︰
LPHWAVEIN phwi 为一指针,以指示返回输入设备。
UINT_PTR uDeviceID 乃所用波形输入设备之ID。若此为 WAVE_MAPPER,系统则会自动寻找合适设备。
LPWAVEFORMATEX pwfx ,指向波形声音格式数据类型(WAVEFORMAT)之指针。
DWORD_PTR dwCallback 为指向回调函数的指针或窗口句柄,用于处理波形声音输入过程中产生的消息。
DWORD_PTR dwCallbackInstance为传递给回调函数的数据,以回调函数的参数方式传递。注意:若回调方式为窗口方式,该项不适用。
DWORD fdwOpen用于打开一些该函数中定义的选项,通常为0。
函数返回值:
若函数正常调用,返回值为0,其中可能的错误及返回值为︰
MMSYSERR_BADDEVICEID = 2; {设备ID超界};
MMSYSERR_ALLOCATED = 4; {指定的资源已被分配};
MMSYSERR_NODRIVER = 6; {没有安装驱动程序};
MMSYSERR_NOMEM = 7; {不能分配或锁定内存};
WAVERR_BADFORMAT = 32; {设备不支持请求的波形格式}
函数用法:
在一个标准的通过波形声音输入设备记录声音的程序中,函数应该按照以下顺序调用:获取波形声音输入设备,设置波形声音格式;waveInOpen,打开波形声音输入设备;waveInPrepareHeader,为波形声音输入设备准备一个缓冲区;waveInAddBuffer 向波形声音输入设备添加缓冲区;waveInStart 开始录音。
回调函数:
当指定函数回调方式为回调函数时,需定义回调函数,其原形为:
void CALLBACK waveInProc(
);
注意事项:
该函数不能为动态生成的函数,所以一般情况下不能作为类的成员函数,但可以作为静态函数,此时可通过dwInstance传递类的地址。
可以处理的消息有:
WIM_OPEN 录音设备打开
WIM_CLOSE 录音设备关闭
WIM_DATA 数据缓存区被写满
当消息类型为WIM_DATA时,dwParam1中为指向被写满的header的首地址,此时可以读取写入的数据。
1.6 WAVEINSTOP
waveInStop - 停止输入
提示: 如果未启动则调用无效, 但也返回 0; 缓冲区会被返回, TWaveHdr 结构中的 dwBytesRecorded 将包含返回的实际数据的长度.
//声明:
waveInStop(
): MMRESULT; {成功返回 0; 可能的错误值见下:}
MMSYSERR_INVALHANDLE = 5; {设备句柄无效}
MMSYSERR_HANDLEBUSY = 12; {设备已被另一线程使用}
1.7 WAVEINCLOSE
waveInClose - 关闭指定的波形输入设备
提示: 若 waveInAddBuffer 送出的缓冲区未返回则失败; 可用 waveInReset 放弃所有未用完的缓冲区.
//声明:
waveInClose(
): MMRESULT; {成功返回 0; 可能的错误值见下:}
MMSYSERR_INVALHANDLE = 5; {设备句柄无效}
WAVERR_STILLPLAYING = 33; {缓冲区还在队列中}
0 0
- Windows多媒体API -低阶(二)
- Windows多媒体API -低阶(一)
- Windows多媒体API -低阶(三)
- Windows多媒体API
- Windows多媒体定时器(精确到1ms) (二)
- WINDOWS API 简介(二)
- Android多媒体(二)
- 多媒体API
- Windows API之图形界面(二)
- Windows自动更新API (二)
- Windows HOOK API (二)
- MCI多媒体空间(二)
- spark streaming kafka1.4.1中的低阶api createDirectStream使用总结
- spark的kafka的低阶API createDirectStream的一些总结。
- spark streaming kafka1.4.1中的低阶api createDirectStream使用总结
- spark streaming kafka1.4.1中的低阶api createDirectStream使用总结
- spark streaming kafka1.4.1中的低阶api createDirectStream使用总结
- Windows API函数大全二
- Windows多媒体API -低阶(一)
- POJ-3252 Round Numbers
- test
- vc 改变文件大小
- 堆 和 栈的 区别
- Windows多媒体API -低阶(二)
- (实验经验分享)网络攻击与对抗 > 实验六:IPC$管道的利用与远程控制
- oracle临时表
- hdu--1856--More is better
- 希尔排序的实现
- Windows多媒体API -低阶(三)
- java位操作、BitSet例程
- IOS 霓虹灯效果(oc)
- toptop