波形捕捉:(7)“捕捉缓冲区”特效

在 Windows XP 中,有两种可以作为内核级的实现方式的“捕捉缓冲区 ”特效是可行的:

·回声消除(AEC)

·降噪

不支持其它DMOs中的特效(诸如那些被用于缓冲区渲染的效果)。

DirectSoundFullDuplexCreate8函数和 IDirectSoundCapture8::CreateCaptureBuffer 方法都以一个表明 DSCEFFECTDESC 结构体数组(该数组用于表示想要的特效)地址的 DSCBUFFERDESC结构体作为参数。但是,如果你想利用微软的实现方式你必须通 过 DirectSoundFullDuplexCreate8 创建一个捕捉缓冲区。你也必须使用该函数 创建辅助声音缓冲区。如果不这样做,那特效就无法实现。

在每个 DSCEFFECTDESC 结构体的 dwFlags 成员中,你必须指定 DSCFX_LOCHARDWARE 或 DSCFX_LOCSOFTWARE。在大多数情况下,指定 DSCFX_LOCSOFTWARE。如果特效在指定的位置不可行,那么缓冲区创建失败。

特效由 DSCEFFECTDESC 结构体中的 guidDSCFXClass 成员来标识。在 guidDSCFXInstance 成员中指定 DSCFX_MS_AEC或 DSCFX_MS_NS 就可以得到微软 的软件实现方式。要想在硬件或软件上使用其它可行的实现方式,就得从制造商 那里获取类和实例GUID。

当缓冲区被创建之后,你可以通过 IDirectSoundCaptureBuffer8::GetFXStatus 方法获取特效的信息。

AEC主要利于那些用于一端到另一端进行语音交流的应用程序。由A区域麦克 风发出的信号从B区域的喇叭中输出,同时被B区域的麦克风接收。不使用AEC的 话,这个信号就又会被发送回A区域。导致回声也可能是嚣叫。AEC通过在每个区 域监控输入信号(以整个房间的环境作为考虑因素对输入信号进行调整,将它从 当前正在输出的信号中排除)克服了这个问题。它同时也除去了任何由本地电脑 播放着的声音(比如音乐),从而通过网络传输的语音将不会受干扰。

AEC在操作系统内核级别上实现并且全局使用这种效果。它有如下限制:

·同一时刻只能有一个捕捉缓冲区使用AEC。

·如果其它应用程序正在捕捉或播放音频,那么AEC就不能被启动。如 果AEC已经启动了,其它任何应用程序要捕捉声音都会使用AEC。

·不管输入输出的格式如何,内核混音器都以16位 mono格式处理声音 。这样的结果是声音质量可能会下降。以16位 mono格式捕捉声音是为了减少对 处理器的使用。

·当AEC正在被使用时,所有DirectSound设备上的硬件回声都会失效 ,这将会影响到其它共享了该设备的用户的体验。

·AEC参数的变化将会影响所有正在运行的应用程序。

·AEC无法在有些组合声效卡和驱动程序的情况下使用。应用程序应该 始终提供用户关闭AEC的功能。

·在操作系统版本上主要是Windows XP SP1,AEC无法在使用USB喇叭的 情况下工作,也无法在那些提供不同时钟频率的捕捉和渲染的机器上工作。

·如果音效环境改变,适配过滤器将会花费2秒或以上的时间进行调节 。

·任何出现在原始声音信号后128毫秒以上的后期混响将不会从正在输 出的信号中除去。

在具有这个效果的捕捉缓冲区上,使用 IDirectSoundCaptureFXAec8接口来 设置和得到AEC参数。你也可以允许噪音来填充。(一种用于防止在输出信号中 没有新数据时而产生完全的寂静)

降噪特效只有在AEC被启用的情况下才能被使用。降噪捕捉效果除去频繁的背 景噪音,诸如风扇噪音。使用 IDirectSoundCaptureFXNoiseSuppress8接口来设 置和获取参数。

通过使用 IDirectSoundCaptureBuffer8::GetObjectInPath 方法从捕捉缓冲 区对象中得到特效接口。

时间: 2024-12-04 21:23:43

波形捕捉:(7)“捕捉缓冲区”特效的相关文章

波形捕捉:(3)"捕捉设备"性能

"捕捉设备"性能      调用 IDirectSoundCapture8::GetCaps 方法来获取捕捉设备的性 能.这个方法的参数是一个指向 DSCCAPS 结构体的指针.就如同其它结构体一样,你在传递这个参数之前必须初始化 dwSize 成员.返回后,这个结构体中包含设备支持的声道的数量,一组设备支持的格式数据集,相当于Win32 WAV音频函数中使用的WAVEINCAPS结构体中的值.      在没有 WDM 驱动的情况下,在同一时刻只能有一个应用程序使用捕捉设备.如果驱动

波形捕捉:(1)枚举"捕捉设备"

枚举"捕捉设备"后在网上找到类似翻译:DirectSound学习笔记(1):枚举声音设备  作者:pyundeng 而且作者是在06年发表的,哎~~~ 犹豫了半天是否有必要继续翻译下去,最后打算还是继续写吧.就当做练英文好了.刚刚又搜了下博客圆,没有发现类似文章,所以更坚定要继续写下去. 大家可别怀疑我只是复制粘贴哦,我可是一字一句翻译出来的,当然也会参考一些已有的资料.       如果你的应用程序只是单纯得通过用户首选设备用来捕捉声音,那就没有必要来枚举可用的设备.当你通过调用 D

AutoCAD对象的捕捉与选择

2.7.1 使用对象捕捉 对象捕捉是AutoCAD中最为重要的工具之一,使用对象捕捉可以精确定位,使用户在绘图过程中可直接利用光标来准确地确定目标点,如圆心.端点.垂足等等. 在AutoCAD中,用户可随时通过如下方式进行对象捕捉模式: (1) 使用"Object Snap(对象捕捉)"工具条. (2) 按Shift键的同时单击右键,弹出快捷菜单. (3) 在命令中输入相应的缩写. 下面我们分别来介绍各种捕捉类型,参见图2-27. (1) "Endpoint(端点)"

全面了解Java中对于异常的捕捉方法_java

1. try-catch语句 在Java中,异常通过try-catch语句捕获.其一般语法形式为: try { // 可能会发生异常的程序代码 } catch (Type1 id1){ // 捕获并处置try抛出的异常类型Type1 } catch (Type2 id2){ //捕获并处置try抛出的异常类型Type2 } 关键词try后的一对大括号将一块可能发生异常的代码包起来,称为监控区域.Java方法在运行过程中出现异常,则创建异常对象.将异常抛出监控区域之 外,由Java运行时系统试图寻

Python中捕捉详细异常信息的代码示例_python

大家在开发的过程中可能时常碰到一个需求,需要把Python的异常信息输出到日志文件中. 网上的办法都不太实用,下面介绍一种实用的,从Python 2.7源码中扣出来的. 废话不说 直接上代码,代码不多,注释比较多而已. import sys, traceback traceback_template = '''Traceback (most recent call last): File "%(filename)s", line %(lineno)s, in %(name)s %(ty

Capturing Waveforms【译】

今天打算开始翻译<The DirectX Software Development Kit>June 2008版的其中一个部分也就是如标题所示的"Capturing Waveforms". 翻译本部分的目的: 1.为自己接下来的"directx编程:录音"这块打好基础: 2.网上搜了很久,没有找到比较好用的用来讲解Directx声音采集录制方面的资料,当然如果你找到,希望能拿出来分享哦,嘿嘿: 3.锻练下自已的英语: 声明:该系列文章由stg609翻译,

推动科技和技术进步的推动力大概有这么三类

摘要: 戴若犁 诺亦腾联合创始人 CTO 推动我们的科技和技术进步的推动力大概有这么三类,一类叫做人类征服自然:一类叫做人类征服人类:一类叫做饱暖思淫欲. 我们始终认为在做产品规划 戴若犁 诺亦腾联合创始人 CTO 推动我们的科技和技术进步的推动力大概有这么三类,一类叫做人类征服自然:一类叫做人类征服人类:一类叫做饱暖思淫欲. 我们始终认为在做产品规划.产品设计.产品营销.产品分发.服务推广的时候,都要考虑到专业.门坎.细分和闭环这四点,才能够把一个产品做好. 视频文字实录: 我们公司是做传感器

短视频领域的鼻祖Vine在周五推出了儿童版

摘要: Vine很酷,任何人都能在6秒内分享一个短片,动画或者爆炸新闻.不过上面的内容千奇百怪,对孩子们的心智要求还是挺高的. 据Re/code消息,短视频领域的鼻祖Vine在周五推出了儿童版 Vine很酷,任何人都能在6秒内分享一个短片,动画或者爆炸新闻.不过上面的内容千奇百怪,对孩子们的"心智要求"还是挺高的. 据Re/code消息,短视频领域的鼻祖Vine在周五推出了儿童版的Vine Kids.Vine Kids更像是一个孩子们手机端的小玩具,省去了注册和关注环节,只需左右滑动,

Vine很酷,任何人都能在6秒内分享一个短片

摘要: Vine很酷,任何人都能在6秒内分享一个短片,动画或者爆炸新闻.不过上面的内容千奇百怪,对孩子们的心智要求还是挺高的. 据Re/code消息,短视频领域的鼻祖Vine在周五推出了儿童版 Vine很酷,任何人都能在6秒内分享一个短片,动画或者爆炸新闻.不过上面的内容千奇百怪,对孩子们的"心智要求"还是挺高的. 据Re/code消息,短视频领域的鼻祖Vine在周五推出了儿童版的Vine Kids.Vine Kids更像是一个孩子们手机端的小玩具,省去了注册和关注环节,只需左右滑动,