怎样在WM上正确写录音程序

vet 2009-03-12 10:45:38
我正在开发一个WM上的录音程序,在很多手机上都没问题,但在一款smartphone手机上,回调函数AudioProc里WIM_DATA中读到dwBytesRecorded的值是0。然后发现在停止录音的时候调waveInStop->waveInReset->waveInClose就能使dwBytesRecorded的值正确。以前我是想让录音立即停止,所以没调waveInStop,只用了waveInReset->waveInClose。现在的问题是waveInStop和waveInReset一起调对吗?会不会有什么潜在的问题?记得waveInStop和waveInReset只需要调其中一个就行了。其实关键是让dwBytesRecorded的值正确就行了,但这个值是什么时候被写入的呢?哪位知道,望赐教。谢谢
...全文
325 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mouse1984dog 2009-03-23
  • 打赏
  • 举报
回复
OpenNETCF上有一个,楼长我可以传给你
vet 2009-03-13
  • 打赏
  • 举报
回复
这样写有什么意思吗?感觉没区别啊
gniquw 2009-03-12
  • 打赏
  • 举报
回复
http://blog.csdn.net/billy14/archive/2007/12/06/1921629.aspx
希望上面的贴子对你有帮助。
mad_stop 2009-03-12
  • 打赏
  • 举报
回复
你好,我也想用.net自己写一个在pocket pc上的录音机玩玩,查了一些资料,众说纷纭。
因为是自己写着学习,所以不需要复杂功能,能录音,能播放就行。
主要用WIN API中的一些函数(如WaveIn)来实现吗?
我是个菜鸟,望指点一二。
最好能说下用到的引用、函数、类等。能推荐点资料更好了,先行谢过!
sunwhite 2009-03-12
  • 打赏
  • 举报
回复
可以waveInStop和waveInReset一起调用,考虑采用以下调用顺序。
waveInStop(hWaveIn);
waveInReset(hWaveIn);
waveInUnprepareHeader(hWaveIn, ...);
waveInClose(hWaveIn);

...处是省略的代码,你可以根据自己的代码加入相关接口。
以上代码已经通过WM5.0/6.1真机上的测试。
yihan7h 2009-03-12
  • 打赏
  • 举报
回复
两者间加个判断……

if (m_hWaveIn)
{
waveInStop(m_hWaveIn);
}

if (m_hWaveIn)
{
waveInReset(m_hWaveIn);
waveInUnprepareHeader();
waveInClose(m_hWaveIn);
m_hWaveIn = NULL;
}
yihan7h 2009-03-12
  • 打赏
  • 举报
回复
两者间加个判断……

if (m_hWaveIn)
{
waveInStop(m_hWaveIn);
}

if (m_hWaveIn)
{
waveInReset(m_hWaveIn);
waveInUnprepareHeader();

vet 2009-03-12
  • 打赏
  • 举报
回复
google了一下,好像有人说2个一起调比较危险。“Be careful that when you call waveInReset it will generate another WIM_DATA message which may mess up things. I usually
call only the waveInReset not waveInStop coz this way you
get only one WIM_DATA message.
(this is a very serious problem, coz when you call waveInStop
you suppose that you won't get any more WIM_DATA messages, but
after calling waveInReset there maybe some code which hangs your
system while processing the messages. Most common case is that :
in your message processing code when you get WIM_DATA you call
the waveInReset which will generate another WIM_DATA and so on,
there will be an infinite loop which hangs up your progy”
http://www.gamedev.net/community/forums/topic.asp?topic_id=40073

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧