急,请教DirectSound编程

bluestar 2002-01-22 02:35:10
不知道谁有《DirectSound从入门到精通这本书的配套光盘》,小弟把这张光盘搞丢了,现在急需第17章DirectSoundCapture的源码,谁有发给我一个。

另外,谁有DirectSound编程的心得,代码,给大家说说,谢谢!

我的E-MAIL, mainblue@sina.com

...全文
451 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyinfeng 2002-01-25
  • 打赏
  • 举报
回复
可以,不过我的代码写的很滥,请别见怪。
bluestar 2002-01-25
  • 打赏
  • 举报
回复
谢谢liuyinfeng,俺把分结了先,
可否给我个DirectCapture一边录,一边放的源代码,如果涉及公司机密那也不勉强了。

万分感谢。E-MAIL: mainblue@sina.com
liuyinfeng 2002-01-25
  • 打赏
  • 举报
回复
hi:
这好像是我的程序才有的问题呀?嘻嘻。
嘀嘀声来源于捕获缓冲的数据不能及时的和回放缓冲同步,在衔接点就会有嘀嘀声,解决这个问题需要解决同步,缓冲大小的合理控制等很多问题。这个需要慢慢的调了。
bluestar 2002-01-25
  • 打赏
  • 举报
回复
谢谢!谢谢!

还有问题要请教啊

为什么声音中夹有嘀嘀的噪声呢?自始自终都有,间隔很短。

万分感谢!
liuyinfeng 2002-01-25
  • 打赏
  • 举报
回复
hi,你好:
如果想让应用程序无论有没有焦点都正常录放,需要在初始化DirectSoundBuffer对象和//初始化DirectSoundCaptureBuffer对象时都加上DSBCAPS_GLOBALFOCUS属性,就是DSBUFFERDESC结构的dwFlags的值加上DSBCAPS_GLOBALFOCUS。
对不起,我没有看到您的贴子,可能回贴慢了些,多包涵。
bluestar 2002-01-25
  • 打赏
  • 举报
回复
最新问题:失去应用程序焦点后,就不能录、放音了,是不能录还是不能放不清楚
可否指点一下还有什么地方不对。
谢谢!
liuyinfeng 2002-01-24
  • 打赏
  • 举报
回复
hi:
如果想完成全双工操作,我们就必须定义DirectSound,和DirectSoundCapture两个对象,然后分别开辟缓冲,接下来,我的做法是(之所以说我的做法,是因为可能和例程不符)定义两个Notify对象,分别监控两个缓冲,开两个线程,捕获线程如果被通知事件到达,就将数据写入一个链表,会放线程如果被通知事件到达,就从链表内获得数据并写入,如果没有数据就写入静音。

不知道我说的是否清楚。不清楚您再问。
bluestar 2002-01-24
  • 打赏
  • 举报
回复
可否再请教个问题

就是如何一边录,一边放音?
liuyinfeng 2002-01-23
  • 打赏
  • 举报
回复
从道理上讲,DirectSoundCapture,和DirectSound是一致的。
1,初始化COM环境,创建DirectSoundCapture对象
2,创建DirectSoundCaptureBuffer对象,用于音频捕获
3,创建DirectSoundCaptureNotify对象,初始化事件,用于缓冲内捕获位置的界定
4,等待事件
5,事件产生,锁定缓冲区,拷贝出数据
6,缓冲区解锁。
完毕,您明白了吗?
bluestar 2002-01-23
  • 打赏
  • 举报
回复
现在还没什么头绪,我想知道如何做一个DirectSoundCapture的编程
liuyinfeng 2002-01-23
  • 打赏
  • 举报
回复
盘我没有,如果有问题,请说出具体问题
liuyinfeng 2002-01-23
  • 打赏
  • 举报
回复
你想知道什么?
liuyinfeng 2002-01-23
  • 打赏
  • 举报
回复
是的,我以往的程序是开线程完成的,而且是线程套循环。为什么呢?
1,DirectSoundBuffer内一般不止一个通知点,第一个通知点触发了MsgWaitForMultipleObjects后,需要继续监测仪等待下一个通知点,最后一个通知点触发了以后返回来等待第一个通知点,在这里,请注意环形缓冲的概念。
2,MsgWaitForMultipleObjects是阻塞等待状态的,除非有事件发生,或者你选择了其它消息触发,因此,线程套循环不会占用太多的CPU资源,所以不必担心资源问题。
ok?
bluestar 2002-01-23
  • 打赏
  • 举报
回复
消息循环等待事件发生的程序,需要再开线程吗?
我看DirectX的例子没有用多线程。
是不是再开个线程好些?

谢谢liuyinfeng和提供帮助的朋友
liuyinfeng 2002-01-23
  • 打赏
  • 举报
回复
hi:
关于IDirectSoundNotify的作用就是在DirectSoundBuffer内设置通知,如果你想使用它:
首先,初始化IDirectSoundNotify,初始化一些事件。
然后,用SetNotificationPositions函数设置通知点。
然后,用MsgWaitForMultipleObjects等待事件通知。
事件到达后就可以操作缓冲区了。
明白了吗?
liuyinfeng 2002-01-23
  • 打赏
  • 举报
回复
星星:
_IID_IDirectSoundNotify 联结错误的原因是您没有联结dxguid.lib库,在Setting下设置它就ok了
working_boy 2002-01-23
  • 打赏
  • 举报
回复
Msdn 有实例自己找!!!!!
bluestar 2002-01-23
  • 打赏
  • 举报
回复
哪个事件用到IID_IDirectSoundNotify
为什么编译老是报unresolved external symbol _IID_IDirectSoundNotify
LOADS 2002-01-22
  • 打赏
  • 举报
回复
我也想知道,关注
Leo 2002-01-22
  • 打赏
  • 举报
回复
别忘了给点分 :)
加载更多回复(5)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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