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 ...
随机推荐
- Windows 10的TPM模块到底是不是美国全球监控体系的奠基石?
http://bbs.pediy.com/showthread.php?t=202638 http://www.zhihu.com/topic/19671262/newest 2015年3月18日,微 ...
- Window环境下 Git 下载Android源码
1.需要的工具 git.vpn代理 2. 设置git代理(Google source 无法下载,git设置代理) git config --global http.proxy "localh ...
- MyEclipse Spring 学习总结三 SpringMVC
MyEclipse Spring 学习总结三 SpringMVC 一.SpringMVC原理 1.Springmvc 框架介绍 1)Spring 框架停工了构建Web应用程序的全功能MVC模块.Spr ...
- Document types require more than xhtml1.0
这个东西只会在比较低版本的浏览器中会出现,比如IE7及以下会出这个错误. 错误的根源是html页面没有考虑浏览器兼容性问题. 在页面头部加入下面的内容即可解决标题中的问题 <!DOCTYPE h ...
- eclipse导入github项目
以jeesite为例, github上面的项目大都是基于git方式进行版本控制以及使用maven构建的项目. 1 使用时,需先用eclipse的以git方式从github上下载代码. 下载后得到mav ...
- ocanvas 画板
使用ocanvas做了个简单的在线画板. ocanvas参考:http://ocanvas.org/ 效果如下: 主要代码如下: <!DOCTYPE html> <html> ...
- 在浏览器中输入Google.com并且按下回车之后发生了什么(转载)
原文地址:https://github.com/skyline75489/what-happens-when-zh_CN#id9 本文试图回答一个古老的面试问题:当你在浏览器中输入google.com ...
- python 实现二分法查找
二分查找图 二叉树: 代码 #!/usr/bin/python #-*-coding:utf-8-*- #----------------------------------------------- ...
- 关闭和开启oracle
1.使用sqlplus 启动和关闭数据库. 答:使用sqlplus以sysdba的身份登录数据库 因为我的数据库是启动状态,所以我就先演示数据库的关闭 数据库的关闭使用语句shutdown immed ...
- FileUploadInterceptor拦截器的笔记
当请求表单中包含一个文件file,FileUploadInterception拦截器会自动应用于这个文件. 表单: <s:form namespace="/xxx" acti ...