【问题标题】:Is DirectSound and WinMM based on WASAPI?DirectSound 和 WinMM 是基于 WASAPI 的吗?
【发布时间】:2012-07-30 02:43:59
【问题描述】:

我在slides 中看到 vista 中的 winmm 和 directsound 是基于 wasapi。

这是否意味着winmm和directsound实际上是通过调用WASAPI中的函数来完成它们的工作的?

我在谷歌搜索后找不到此信息,希望这里有人知道。

【问题讨论】:

  • 不,它们的输出只是被截获以实现每个应用程序的音量控制,这是一个 wasapi 功能。
  • 嗨,汉斯,谢谢你的回答,这对我很有帮助。

标签: windows directsound winmm wasapi


【解决方案1】:

除了几个高度专业化的例外(directks、ASIO、openal),Windows 中的所有音频渲染都通过 WASAPI。

这包括通过 winmm 和 directsound 进行音频渲染。

【讨论】:

  • 您好,感谢您的回复,但是我用depends检查了dsound.dll和winmm.dll,没有看到对audioses.dll的任何依赖。如果我是对的,我认为 WASAPI 代表 Windows Audio Session API,如果 dsound 和 winmm 依赖于 wasapi 它应该依赖于 audioses.dll。
  • 你说得对,dsound 和 winmmd 不直接链接到 audioses.dll。请阅读 Windows Vista 及更高版本的 Windows 音频体系结构,以帮助了解正在发生的事情。提示:Windows 中的音频 API 是 COM API - 它们不是平面 API,因此您不会在依赖项视图中找到它们。
  • 顺便说一句,你可能想看看:channel9.msdn.com/Blogs/pdc2008/PC13 - 在演讲的开头,我谈了一点架构。
  • 感谢您的精彩解释!我喜欢你演讲中的建筑形象。这很有趣,所以这意味着在 Windows Vista 和 7 中,dsound 和 winmm 已被重新实现为依赖于 WASAPI?但是添加一个新层意味着更多的延迟,对吧?
  • 添加层会增加调用堆栈的深度,但不一定会增加延迟。如果每一层都添加缓冲而它们不添加缓冲,它只会增加延迟 - Wave API 引入缓冲,但 Win7 Wave 驱动程序中的缓冲低于 XP Wave 驱动程序中的缓冲。 Win7 音频堆栈的延迟比 XP 音频堆栈少约 40 毫秒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
  • 2015-01-15
  • 2018-10-31
  • 2018-07-24
相关资源
最近更新 更多