ASIO
+ -

ASIO 简介

2022-01-21 251 0

ASIO是Audio Stream I/O的简称。

ASIO主要用于对希望在个人电脑音频设备相对于系统的音频设备实现高效音频处理、高数据吞吐量,音频硬件端的同步、低延迟和可扩展性等方面的性能改善。

ASIO比较灵活,音频接口不需要绑定到任何固定数量的输入和输出通道(当然,此数量受计算机系统本身的处理能力和数据吞吐量),同时它没有限制采样率(32 kHz至96 kHz或更高),采样格式(16、24、32位或32/64位浮点格式)。

ASIO利用当今的计算机体系结构实现高数据吞吐量(PCI,FireWire)。它支持用于附加音频处理的复杂硬件解决方案,但与其他方法相比仍然简单。

ASIO工作原理

运行在操作系统中的音频设备需要一个驱动程序,一般由操作系统或硬件厂商提供标准的音频设备驱动程序。

工作ASIO模式下的ASIO硬件厂商用为了实现ASIO提供一个ASIO驱动程序,这样可以使设备以ASIO处理的方式抽象音频硬件。
为了实现数据处理的高效处理和灵活性,ASIO采用了双缓冲区的机制,这样可以适应不同的缓冲区需求。一个缓冲区包含仅一个通道的数据,这样可以在主机应用程序实现额外的算法处理。

ASIO音频驱动为数据分配内存,这使得硬件制造商为其音频I/O解决方案选择最佳内存访问方法。DMA或可以以同样的效率支持内存映射I/O。这是实现音频处理低延迟的关键之一。由于当前的操作系统为多任务操作系统,因此ASIO具有所有优势和权衡,支持异步操作所需的所有功能(时间戳事件通知和自适应数据预取/处理)。

0 篇笔记 写笔记

Windows的音频体系
Windows10的音频架构图KSEndpoint组件是系统提供的文件,随Windows Vista和更高版本的Windows一起提供。此组件以DLL的形式提供(Audiokse.dll). KSEndpoint抽象内核模式设备端点,并为音频引擎提供对抽象端点的访问。PortClass: ht......
PortClass流式音频架构
在Windows操作系统中,PortClass仅用于纯音频设备驱动的开发,其配合内核流式驱动模块ks.sys实现音频设备驱动的开发。内核流式驱动模块ks.sys包含两部分内容,一部分是提供内核通用的流式驱动模块,另一部分是avstream模块。avstream模块即可用于开发音频设备驱动,也可用......
PortClass音频驱动程序架构
音频适配器驱动程序是最低层的音频驱动,对下实现对硬件的操作,以上提供端口驱动的函数回调。所以音频适配器驱动的代码来自两部分,一部分是厂商提供的硬件驱动代码,一般是由portclass提供的通用音频驱动模块。入口函数因为适配器驱动程序是作为内核模式驱动程序服务安装的,所以和其它驱动一样,由操作系统加......
PortClass提供的音频MINI端口驱动
PortClass提供了以下几种MiniPort驱动类型。Cyclic DMA wave input and output:此类Mini端口驱动程序支持访问ISA和其他声卡的基于DMA的wave I/O功能。接口专门处理循环(autoinit)DMA缓冲区,流问题由端口驱动程序解决。Scatt......
ASIO 简介
ASIO是Audio Stream I/O的简称。ASIO主要用于对希望在个人电脑音频设备相对于系统的音频设备实现高效音频处理、高数据吞吐量,音频硬件端的同步、低延迟和可扩展性等方面的性能改善。ASIO比较灵活,音频接口不需要绑定到任何固定数量的输入和输出通道(当然,此数量受计算机系统本身的处理......
ASIO 状态机
主机应用程序加载设备的ASIO驱动程序,其时序状态机如下图:LOADED(加载驱动程序):应用程序加载ASIO驱动程序。Initialized(初始化):驱动程序接收应用程序控制查询,不过设备不必要在此时创建。Prepared(准备好):收发音频数据的缓冲区已经被分配,并且设备准备工作。Runn......
ASIO 函数功能介绍
主机应用查询设备驱动ASIO API为主机应用程序和驱动程序提供多个查询功能。驱动程序初始化后,应用程序将查询以下全部或部分功能:ASIOGetChannels()查询可用音频通道的数量ASIOGetBufferSize()获取支持的音频缓冲区大小ASIOCanSampleRate()询问驱动程......
ASIO 应用层函数分类大全
初始化/终止ASIOError ASIOInit(ASIODriverInfo *info);ASIOError ASIOExit(void);开始、停止ASIOError ASIOStart(void);ASIOError ASIOStop(void);查询方法和抽样率ASIOError ......
ASIO 应用层C++类声明
class AsioDriver {public:AsioDriver(); ~AsioDriver();ASIOBool init(void *);void getDriverName(char *name);long getDriverVersion();void getErrorM......
Windows下注册ASIO
在带有WOW6432 ASIO的Windows 64位系统上,32位和64位主机应用程序都可以使用ASIO。要求ASIO驱动程序的COM部分以32位和64位二进制形式提供32位主机应用程序将查询32位Windows注册表部分(Wow6432)。64位主机应用程序将查询普通Windows注册表。A......
ASIO 应用层工程组成
ASIO工程目录如下:asio:工程文件目录。asio.slncommon: asiosample.dll和hostsample.exe工程使用的公共文件 driver: asiosample文件目录host: hostsample文件目录ASIO应用层由asiosample工程和hostsa......
ASIO asiosample.dll注册及注册表信息变化
在Windows下注册ASIO一节中,是需要对COM进入注册的。故我们使用Regsvr32命令注册。如:K:usbzhasioasiosdk_2.3.3_2019-06-14driverasiosampleasiosampleDebug>REGSVR32 asiosample.......
ASIO 示例代码调试准备
ASIO提供的示例代码在进行调试前,需要做以下几个步骤:第一,就是按上节的要求将编译好的asiosample.dll通过命令行进行注册,这里使用的命令是REGSVR32 asiosample.dll当然,这个注册分为32位和DLL和64位的DLL,所以会有差别。本人在现有的机器使用的是32位编程......
ASIO hostsample工程分析
hostsample总共分为4个文件,分别为:asiolist.h/asiolist.cpp : 基类,主要功能是枚举系统中已经安装的ASIO的COMM类asiodriver.h/asiodriver.cpp 继承于asiolist,实现对指定ASIO驱动类的安装,卸载和当前信息获取asio.......
ASIO 驱动加载loadAsioDriver
loadAsioDriver用于加载指定的ASIO驱动程序,由main函数调用。int main(int argc, char* argv[]){ // load the driver, this will setup all the necessary internal data st......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!