转自:http://www.rtrash.net/win7-under-ds-ks-asio-wasapi-output-compare.html以下先利用图表做个最简单的比较 

win7下DS、KS、ASIO、WASAPI输出比较

接下来主要介绍WASAPI的来历已经微软对声音处理的发展历程:

winxp 以前的windows 一直都是使用一般DMA 来处理声音, DMA = direct memory access, 即是一般harddisk, lan card, drives 等一切取存设备的IO 机制, i386 年代的电脑大多数都是使用PIO 来处理hdd data 出入, 即是hdd 所读所写入的任何data 都要直接经由cpu 所控制, 才能让ram 和hdd 互传data, 但这样做便会占用大量CPU 的loading, hdd volume 越大越快, 情况便越糟.
所以到了大概intel pentium mmx 的年代, drive controllers 便开始转用DMA, 让晶片能简单的控制或导向hdd/drives 直接能和ram 连接, 而不需要把传送内容资料全都要经过cpu 处理, 这样cpu 便可以完全免除对hdd 资料的负担, 即使由以前IDE/SCSI 到今天SATA 都是使用高效能的DMA, 但是DMA 的作法是要互动等待, 所有资料不只是以ram 作为buffer 中转站, 而且是base on ram clock timer 控制传送时机, 虽然节省电脑效能, 但相对于audio IO 来说, 这是既不稳定, 又慢又大latency, 很难还原原音的做法, 因为声音是一种需求时间性的一种能量, 有时间构成才有声音, 而且PCM 讯号是一种要求每一个sample 都要实时平均的到达, 才能保持原音
而DMA audio 所使用的就是一般人所说的kmixer

但是微软宣称, vista/7 已经开始弃用了kmixer 和依赖dma 的audio IO, 而开发了他们所说的WaveRT (Wave RealTime), 他们的WASAPI, MMCSS 等就是使用WaveRT 做核心, 而WaveRT 都有一个属于自己的mixer, 但只要开动独占摸式就可以bypass 这个mixer, mute 掉所有其他程序的声音, MMCSS 是让你提高audio 出入IO 到最高时脉优先权, 微软想做的其实就是使用实时clock timer控制audio 流, 而不经dma, 直接和UAA audio devices hareware 沟通, 甚至让sound card or audio interface 的hareware clock 直接来控制audio data, 这样的作用就是想做到和ASIO 很相近
就算是WASAPI 共享模式, 都已经没有SRC 了, 而是在控制台中可以自由让你设定共享混音后的共同目的sampling rate, bit size 及channels, 所以的可以保留原来的44100Hz 讯号, 不会再被SRC
而且现在所有intel motherboard 或intel chips 都已经有了HPET (High Precision Event Timer), 可以令video 和audio 的处理更实时精确处理高sampling rates, 低bus latency, 让每秒钟内可以回应资料流事件的次数大幅增加, 但不知AMD 的有没有
http://www1.uwants.com/viewthread.php?tid=8157140&page=1#pid116989187

about Wasapi by microsoft
http://msdn.microsoft.com/en-us/library/dd371455(VS.85).aspx

接下来介绍如何WIN7+FOOBAR获得完美音效,没有爆音,以原音源来输出:

注:来自dearhoney音效工作室

看了一些国内外的讨论文章,然后自己实做,确认了以下 的方式是可以保证输出16bit 44.1kHz 的数位讯号,完全原汁原味。

1. 播放软体请使用foobar2000,下载:http://www.foobar2000.org/?page=Download,然后安装起来。
2. 除此之外,请在上述同一页下载WASAPI output,解开来的foo_out_wasapi.dll 这个档案请放到foobar2000 安装目录的components 资料夹下。例如在本例中因为是安装在x64 环境,且一切按照系统预设,所以是放在C:\Program Files (x86)\foobar2000\components 这个路径下。
3. 启动foobar2000,然后到Files → Preferences 下调整Playback 下的Output 这个页面,顺利的话应该会看到有两个WASAPI 开头的音效装置。您如果使用数位输出/HDMI 输出,就选数位输出;如果你没有外接的解码设备,想要用HDAV 1.3 的类比输出,就选喇叭那一项:(下图中有三个WASAPI 装置,其中一个不是HDAV 1.3,那是主机板M3A78-EM 的HDMI 输出)

win7_foobar_wasapi

你会发现这样已经可以播放音乐,且有几个特性:

1. 不能从系统的音量控制台去调整声音大小了。
2. 其他所有系统音效都听不到了。
3. 如果您的设备够好,或您有金耳朵,将发现这样子经由您环绕扩大机解码出来的声音品质有更好了一点。

但这样如何确保是原汁原味的16bit 44.1kHz 数位讯号?我是这么验证的:我手边有一些wave 档,其本质是DTS 编码过的讯号,经由此法从foobar2000 播放出去,环绕扩大机立即亮起DTS 灯号,就是最好的证明。为什么?因为如果是一般的音乐档,亦即最终将是立体声 16bit 44.1kHz 的数位讯号,如果有经过SRC 势必会被改变内容,但人耳并不一定听得出来;然而我现在播放的是DTS 编码后的wave 档,如果被SRC 当成两声道的音乐来处理过,将会完全变成杂音后丢出去,但经过这样的设定后并没有听到杂音,而是正确的内容并且让环绕扩大机亮起DTS灯号,足见这样的设定已经完全摆脱SRC 及Windows 混音器的控制,顺利输出原汁原味的数位讯号了。

小结一下:

在我的本子上,只测试过DS和WASAPI,DS配合Y460的杜比音效效果不错;但是音高的时候会有破音,MS低音在太大,不好控制;加入wasapi后,输出的声音变的很细腻,高音通亮,但是低音没有DS那么低沉浑厚,但毕竟高音听不清楚不亮低音再好也不行。毕竟在本子上不是外接音响,JBJ的音响够用了;

相反外接入耳麦的时候,自动启用DS(启用的Y460的杜比音效),玩游戏的时候效果很好;但是DS在foobar听音乐效果不行,在WMP上听就更加一般了。比起foobar的WASAPI输出效果差远了。

转载于:https://www.cnblogs.com/tkppain/archive/2013/06/07/3123400.html

win7下DS、KS、ASIO、WASAPI输出比较相关推荐

  1. 关于Win10和win7下输出txt文件的换行问题

    关于Win10和win7下输出txt文件的换行问题 解决办法 事情经过 解决办法 如果原先用的是\n,那就换成\r\n就可以了 事情经过 用Qt做了一个数据处理工具,在win10下开发的当然也就只解决 ...

  2. cocos2d-x在win7下的android交叉编译环境

    cocos2d-x在win7下的android交叉编译环境 前面把Visual Studio+Python开发环境配好了,但还没有讲如何在Android中使用创建好的项目,本篇博客介绍如何在win7下 ...

  3. Win7下安装ubuntu (双硬盘用户加强版)

    起源还是学习上要用到linux操作系统,所以才在自己电脑上安装linux操作系统.先开始是在虚拟机上用的,但用过一两星期就感觉还是不适合,用虚拟机感觉只要ctrl+Alt就能退出来,给自己留了太多的退 ...

  4. Win7下使用DbgPrint

    在Win7下默认DbgPrint输出信息后,使用DbgView看不到内容. 新建一个reg文件,双击导出就行了. Windows Registry Editor Version 5.00 [HKEY_ ...

  5. Win7下安装配置gVim

    本文根据vim官网的<Simple Steps to Help You Install gVim on Windows 7>[1]一文整理而成. 1. 下载gVim 在http://www ...

  6. Win7下eclipse提交Job到hadoop集群

    Win7下eclipse提交Job到hadoop集群 参考:http://zy19982004.iteye.com/blog/2031172 之前跑通eclipse连接hadoop2.2.0原来是lo ...

  7. C++程序避免触发 Win7下的程序兼容助手

    在win7或vista下安装编写的程序,经常会出现程序兼容助手,如下(图片来自于下面的参考文章): 出现该提示,是windows认为程序在安装过程中可能存在问题,并在该提示中列出了建议的解决方案. 而 ...

  8. WIN7下弹出应用程序兼容性助手解决

     WIN7下经常弹出提示这个程序可能安装不正确解决 http://msdn.microsoft.com/zh-cn/library/ee461161.aspx http://msdn.micros ...

  9. win7下批处理bat文件:切换网络设置

    自己用 @echo off title –网络自动设置 – @MODE con: COLS=80 lines=30 color 0A :main cls echo 按提示操作 echo: echo 1 ...

最新文章

  1. python就业前景和工资待遇-看完Python这五大就业方向的薪资待遇,你选择哪个?...
  2. MongoDB安装和启动
  3. 宏BOOST_TEST_REF的用法程序
  4. Qt MQTT安装步骤记录
  5. Ubuntu18.04应用程序安装集锦
  6. 【2】puppet笔记 - package、service、user资源
  7. torch-1.6.0+cu92-cp38-cp38-linux_x86_64.whl is not a supported wheel on this platform.
  8. 商业计划书范文3000_凤城编写商业计划书范文模板格式
  9. 阿里巴巴国际站关键字抓取工具
  10. [6.837]A3:OpenG应用和Phong着色模型
  11. [歌词]《一花依世界》《君がいる世界へ》歌词假名罗马音
  12. 51Nod-1183-编辑距离
  13. 【代码大全2】第33章 个人性格
  14. 使用TeamViewer远程时浏览器白屏
  15. Revit翻模教程:怎么在体量内绘制圆锥?
  16. linux 实时监控系统IO状态和IO性能
  17. svg --- 可缩放矢量图形
  18. 【MySQL】MySQL用 limit 为什么会影响性能?
  19. canvas绘图工具
  20. 想不明白这三点,就不要跳槽!

热门文章

  1. ubuntu 打不开商店怎么办
  2. 什么时候用removeUnusedSpriteFrames和removeUnusedTextures
  3. 大数据之-Hadoop之HDFS的API操作_文件IO流_下载_案例---大数据之hadoop工作笔记0064
  4. 大数据之-Hadoop之HDFS_HDFS组成架构---大数据之hadoop工作笔记0050
  5. 大数据_MapperReduce_从CSV文件中读取数据到Hbase_自己动手实现Mapper和Reducer---Hbase工作笔记0021
  6. IntelliJ Idea学习笔记002---IDEA 全局搜索快捷键CTRL+SHIFT+F,不起作用
  7. PAT 1003 Emergency
  8. java开发的windows程序工作机制_Windows程序运行原理及程序编写流程
  9. 随想录(从技术到业务的转变)
  10. 用汇编的眼光看C++(之类静态变量、静态函数)