temp--test audio micphone
DWORD CALLBACK waveInProc(HWAVEIN hWaveIn, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2)
{
SYZ_TRACE("waveInProc:: hWaveIn: point[%p] uMsg==[%d]", hWaveIn, uMsg);
char errorChar[256];
MMRESULT hr;
//waveInGetErrorText(hr, errorChar, 256);
//SYZ_TRACE("waveInGetErrorText :: hr[%d], ErrorText[%s]", hr, errorChar);
if (uMsg == WIM_DATA)
{
WAVEHDR* pWaveHdr = (WAVEHDR*)dwParam1;//dwParam1指向WAVEHDR的地址
wWaveRecord* pWaveRecord = (wWaveRecord*)dwInstance;
SYZ_TRACE("WAVEHDR stuct data: \
lpData[%p], dwBufferLength[%d], dwBytesRecorded[%d], dwUser[%p], dwFlags[%d], dwLoops[%d], lpNext[%p], reserved[%p]",
pWaveHdr->lpData, pWaveHdr->dwBufferLength, pWaveHdr->dwBytesRecorded, pWaveHdr->dwUser, pWaveHdr->dwFlags, pWaveHdr->dwLoops, pWaveHdr->lpNext, pWaveHdr->reserved);
pWaveRecord->Lock();
if (pWaveRecord->m_bRecording && pWaveHdr->dwBytesRecorded == MAX_BUFF_SOUNDSIZE)
{
SYZ_TRACE("befor call waveInUnprepareHeader");
hr = waveInUnprepareHeader(hWaveIn, pWaveHdr, sizeof(WAVEHDR));
SYZ_TRACE("waveInUnprepareHeader result [%d]", (hr== MMSYSERR_NOERROR));
waveInGetErrorText(hr, errorChar, 256);
SYZ_TRACE("waveInGetErrorText :: hr[%d], ErrorText[%s]", hr, errorChar);
pWaveHdr->dwBytesRecorded = 0;
pWaveHdr->dwFlags = 0;
SYZ_TRACE("befor call waveInPrepareHeader");
hr = waveInPrepareHeader(hWaveIn, pWaveHdr, sizeof(WAVEHDR));
SYZ_TRACE("waveInPrepareHeader result [%d]", (hr == MMSYSERR_NOERROR));
waveInGetErrorText(hr, errorChar, 256);
SYZ_TRACE("waveInGetErrorText :: hr[%d], ErrorText[%s]", hr , errorChar);
hr = waveInAddBuffer(hWaveIn, pWaveHdr, sizeof(WAVEHDR));
SYZ_TRACE("waveInAddBuffer result [%d]", (hr == MMSYSERR_NOERROR));
waveInGetErrorText(hr, errorChar, 256);
SYZ_TRACE("waveInGetErrorText :: hr[%d], ErrorText[%s]", hr , errorChar);
}
else
{
//clear dirty data
memset(pWaveHdr->lpData, 0, MAX_BUFF_SOUNDSIZE);
}
pWaveRecord->Unlock();
}
return 0;
}
temp--test audio micphone的更多相关文章
- 利用 Dolby® Digital Plus 提供优质音频体验
John Deutscher Azure媒体服务首席项目经理 随着媒体设备的增多,一项日益增长的需求是,视频流服务能够向用户提供超高音频质量和具有 5.1 环绕音响的优质内容.通过 Azure媒体 ...
- 《HTML5》 Audio/Video全解
一.标签解读 <audio> 标签属性 <audio id="media" src="http://www.abc.com/test.mp3" ...
- Android手机上Audio DSP频率低 memory小的应对措施
我在前面的文章(Android智能手机上的音频浅析)中说过Android手机上有一块专门用于音频处理的DSP,它的特点是频率低(一般几百MHZ).内部memory小(通常不超过100k word).要 ...
- (二)Audio子系统之new AudioRecord()
在上一篇文章<(一)Audio子系统之AudioRecord.getMinBufferSize>中已经介绍了AudioRecord如何获取最小缓冲区大小,接下来,继续分析AudioReco ...
- (三)Audio子系统之AudioRecord.startRecording
在上一篇文章<(二)Audio子系统之new AudioRecord()>中已经介绍了Audio系统如何创建AudioRecord对象以及输入流,并创建了RecordThread线程,接下 ...
- Digital Audio - Creating a WAV (RIFF) file
Abstract:This tutorial covers the creation of a WAV (RIFF) audio file. It covers bit size, sample ra ...
- html5 audio总结
前言 html5中对音频,视频播放原生支持.最近做了一个音乐播放器,得益于快过年了,才能抽出一点时间来总结一下.总的来说,html5对audio的支持非常强大, 难怪flash要死.浏览器上装播放插件 ...
- video/audio在ios/android上播放兼容
1.audio自动播放 <audio src='xxx.mp3' autoplay></audio> 上面是audio标签autoplay属性是自动播放,但是在安卓部分浏览器和 ...
- audio 基本功能实现(audio停止播放,audio如何静音,audio音量控制等)
audio最简单原始的播放.暂停.停止.静音.音量大小控制的功能,注意某些浏览器会有权限无法自动播放噢(video也会如此) <!doctype html> <html> &l ...
随机推荐
- C#先执行一段sql等后台操作后再提示是否后续操作confrim
应用场景:例如选择一个单据号打击打印后先去数据库检索是否有打打印过,如果有则提示,已打印,是否再打 如果没有则不提示,直接进行打印. 实现原理:多做一个隐藏按钮去实现打印功能,页面上的打印按钮则进行数 ...
- Java条形码生成技术-Barcode4j
背景 目前二维码的应用场景已经遍布各类互联网平台,通常是将产品/商品的唯一编号存储于二维码中以做扫码识别. 而用于生产环境的条形码技术仍然存在,如硬件设备制造.供应.物流运输等等. 在常见的产品信息管 ...
- python编码-1
help帮助系统,一个好的方法是直接看自带的帮助,尽量不用baidu help()是进入交互式帮助界面 quit是退出交互式帮助界面 [root@kvm1 python]# python Python ...
- for xml path(''),root('')
,,'') SELECT top 10 ROW_NUMBER()OVER(ORDER BY OperationID) as 'Message/MessageId', OperationID as 'I ...
- 关于CGContextSetBlendMode: invalid context 0x0的错误
在ios 7的模拟器中,选择一个输入框准备输入时,会触发这个错误,以下是出错详细日志: <Error>: CGContextSetBlendMode: invalid context 0x ...
- Hadoop学习12-配置集群环境
由于之前虚拟机都是用的桥接方式,有时候没有网络可用,想学习的时候,就狠不方便. 于是研究了一下,希望搭建一个多台虚机组成一个局域网的集群,即host-only方式 1.安装VM,网络选择“host-o ...
- BeanFactory 和ApplicationContext(Bean工厂和应用上下文)
Bean工厂(BeanFactory接口),提供了基础的依赖注入支持. 应用上下文(ApplicationContext接口),建立在Bean工厂基础之上,提供了系统架构服务. Application ...
- C#中定义数组
C#定义数组 一.一维:int[] numbers = new int[]{1,2,3,4,5,6}; //不定长 int[] numbers = new int[3]{1,2,3};//定长 二 ...
- IQ推理:红眼睛和蓝眼睛
题目: 有一个很古老的村子,这个村子的人分两种,红眼睛和蓝眼睛,这两种人并没有什么不同,小孩在没生出来之前,没人知道他是什么颜色的眼睛,这个村子中间有一个广 场,是村民们聚集的地方,现在这个村子只有 ...
- sqlserver复制报”应用复制的命令时在订阅服务器上找不到该行“解决方法
最近遇到“应用复制的命令时在订阅服务器上找不到该行”问题,报错如下: 官方给出的建议是重新同步和初始化订阅,当然,这是一种选择,但是对于动辄上百G的生产库,这种方法会消耗大量的资源和时间.可以通过定位 ...