[转贴]Directsound 与 Waveout 比较

来源:http://www.we-are-in-uk.com/bbs/showthread.php?t=696

Directsound 与 Waveout

Q: Directsound 与 Waveout 有何不同?


A: Waveout 是在32位的Windows上的一种老旧且过时,用来播放数字音讯的应用程序接口(Application Programming Interface,简称API)。旧的Windows操作系统(如Win9x WinNT4)在 Waveout 的完成度很高(因为 waveout 是针对这些操作系统设计的),如果你想获得最好的效能,你应该在这些操作系统上使用 Waveout输出。然而 Waveout 的功能有所局限,它无法支持「混和多重音讯流」的功能。这显示在Win2k/XP下的Waveout,只是为了旧的软件的兼容性所提供的,也因此 Win2k/XP下 Waveout 的完成度很糟,它没有使用任何的硬件加速功能,所有的混音动作都是用软件来执行(因此当CPU的使用率很高时,常常会发生类似CD跳针的断音现象)。

Directsound 是种较新、较现代化的声音播放 API,都已经内建在最近的32位Windows操作系统中。 Directsound 支持混和多重音讯流、独立的音量控制、硬件加速层及硬件仿真层(如果某些功能硬件无法支持 ,可以用软件来仿真,因此程序设计师无须担心他们的新 l33t 码无法在旧的声霸卡16上运作)。一般来说,只要你的操作系统安装了适当的声卡驱动程序及最新的 DirectX,Direstsound 都应该可以运作的很好(除了WinNT4以外)。在Win2k/XP下,Directsound 比 waveout 更好,因为在这些操作系统里,Directsound 的完成度相对的比 waveout 来的更高(比 waveout 占用较少的CPU资源,自由度较高,且不会有 Waveout 常见的小毛病)。Directsound 原本是被设计来让游戏利用系统的硬件加速功能,而无须直接接触低阶的硬件函数(就如同 DirectX 其它的组件)。

Q: 为何 Directsound 总是比 waveout 来的小声?

A: 在Win2k/XP中,改变 waveout 的音量似乎会改变整体音量的设定,然而 Directsound 的音量是独立控制的。换句话说,你用 waveout 来播放音乐,你将音量设为50%,你就会得到50%的音量,然后你用 Directsound来播放,你将音量设为50%,你只会得到最大音量的25%。解决之道:别使用 waveout,并在Windows的音量控制中将音量设为最大。

Q: Directsound 及 waveout 之间的声音输出品质有所不同吗?

A1: 在Win2k/XP下(或者使用WDM驱动程序),waveout 及 Directsound 只有在传输 PCM 资料给 Windows kernel mixer 上有两点不同。waveout 只使用软件混音,因此较少造成系统中的特殊问题,而 Dircetsound可以使用硬件混音,因此会造成某些已知的,声音品质的问题。
A2: 在Win9x下,Directsound 驱动系统完全的与 waveout 分离,并使用低阶的方式来控制硬件,因此这就像拿两种不同的驱动程序来配合 waveout 及 Directsound。在使用某些老旧的ISA接口的声卡时,Directsound为了节省 ISA 总线的频宽,有着会将音讯资料降低取样率至 22khz 8bit (或者其它相近的取样率)的问题。

Q: 对于 Directsound 而言,软件混音及硬件混音有何不同?

A: 在 WinXP sp1、DirectX 8.1 中,无论是使用微软的 Directsound 核心或者是驱动程序来进行硬件混音,都很容易碰到问题。目前已经证实,在 Winxp 下使用硬件混音来传输音讯资料时,即使是使用不同的声卡,皆会碰上「取样频率」的问题。特别是某些驱动程序存在已久的问题(著名的创新未来 Audigy 声卡 Skipping问题,在某些设定中会出现不间断、静态的杂音,甚至在某些例子中,会发生声音品质骤降的情形,天晓得为何会如此!)。如果你想稳定的运作计算机,那建议你最好把硬件加速给关掉。硬件混音可以foobar2000 的偏好设定中的 Driectsound 这个字段里找到 "allow hardware acceleration"。开启它不代表你就真的激活了这个功能(Directsound 会在没有可用资源时自动使用软件混音)。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值