音频处理对象APO
+ -

SwapAPO工程概述

2022-09-16 190 0

SwapAPO是微软自带的一个APO工程,其功能实现的是左右声道的数据交换。具有很强的参考意义。
工程源代码地址位于:https://github.com/Microsoft/Windows-driver-samples/tree/main/audio/sysvad

SwapAPO工程配置

工程目录如下:
SwapAPO工程目录

  • 工程配置类型为动态库DLL
  • 平台工具集:WindowsApplicationForDrivers10.0

SwapAPO工程配置

SwapAPO工程说明

SwapAPO从源代码来看,包括两种类型的APO,分别为流式音频Stream effects (SFX)和模式音频Mode effects (MFX).
共实在之前有关于这两种APO类型的介绍,不过我们应该能通过代码更加详细的学习和了解这两种APO的工作机理。

  • Resource.h:资源宏定义
  • SwapAPO.h :分别为SwapAPO中SFX和MFX类的声明。当然,也包括一些这两个类成员函数使用一些通用函数声明。
  • Swap.cpp:SwapAPO中通用函数的实现。
  • SwapAPOMFX.cpp: SwapAPO MFX类的实现
  • SwapAPOSFX.cpp: SwapAPO SFX类的实现
  • SwapAPODll.def: 由于该工程为DLL,故定义DLL导出的函数。这里为COM的通用导出函数DllCanUnloadNow和DllGetClassObject。
  • SwapAPODll.cpp: 以ATL实现的DllCanUnloadNow和DllGetClassObject函数,有兴趣的可以看一下CAtlDllModuleT活动模板类的原理。不过对于学习APO,这里就忽略掉。除非你的C++功底够深。
  • SwapAPODll.idl:SwapAPODll的UUID说明
  • SwapAPOInterface.idl:SwapAPO接口UUID说明

SwapAPO编译结果

SwapAPO编译出来的主要为SwapAPO.dll。不过也有几个值得关注的文件:

其实以上编译出来的文件主要说明了COM中包含的SFX和MFX的IID和其接口UUID:

  • COM接口UUID
MIDL_DEFINE_GUID(IID, LIBID_SwapAPODlllib,0x7092F0B2,0xD28D,0x4095,0x95,0xA7,0x6C,0x37,0xA9,0x74,0x32,0xA2);


MIDL_DEFINE_GUID(CLSID, CLSID_SwapAPOMFX,0x06687E71,0xF043,0x403A,0xBF,0x49,0xCB,0x59,0x1B,0xA6,0xE1,0x03);

MIDL_DEFINE_GUID(CLSID, CLSID_SwapAPOSFX,0xB48DEA3F,0xD962,0x425a,0x8D,0x9A,0x9A,0x5B,0xB3,0x7A,0x99,0x04);

对应于SwapAPODll.idl

  • SFX和MFX接口UUID:
MIDL_DEFINE_GUID(IID, IID_ISwapAPOMFX,0x3865B91A,0x096E,0x4ACA,0xBF,0x56,0xB1,0x7D,0x49,0xC7,0x74,0x06);

MIDL_DEFINE_GUID(IID, IID_ISwapAPOSFX,0x658A4077,0xB277,0x4d14,0x97,0xE1,0x03,0x56,0x04,0x4D,0x81,0x10);

对应于:SwapAPOInterface.idl

0 篇笔记 写笔记

Window音频处理对象APO(SFX,GFX,EFX,MFX,SFX)
APO代表“音频处理对象”。它是一个API和框架,由Microsoft设计,用于构建可插拔的音频过滤器(DSP)。原则上它与VST非常相似。Window音频处理对象APO用于实现对系统的声卡的数据处理,通过处理,可以实现用户自定义的均衡器、混响、颤音、回声消除 (AEC) 和自动增益控制 (AGC......
APO音频处理象开发概述及对接口关系
自定义音频处理对象APO的步骤:创建自定义 APO com 对象以提供所需的音频处理对象。创建用户界面以使用配置自定义 APO(可选)。创建 INF 文件以安装和注册 APO 和自定义用户界面。APO 必须有一个输入和一个输出连接。这些连接是音频缓冲区,可以有多个通道。APO 只能修改通过其I......
SwapAPO工程概述
SwapAPO是微软自带的一个APO工程,其功能实现的是左右声道的数据交换。具有很强的参考意义。工程源代码地址位于:https://github.com/Microsoft/Windows-driver-samples/tree/main/audio/sysvadSwapAPO工程配置工程目录如下......
SwapAPO COM接口关系图
总目录为SwapAPODlllib,其UUIP定义为:// SwapAPODlllib//[ uuid(7092F0B2-D28D-4095-95A7-6C37A97432A2), version(1.0)]其包含2个COM类,分别为SFX和MFXlibrary Swap......
SWAP APO inf文件信息
SWAP APO编译后的主体为swapapo.dll这里参考ComponentizedApoSample.inf文件的部分节选说明。inf文件的方体结构和普通的驱动INF文件一致,其结构如下:这里关于APO的注册关键是注册表Apo_AddReg相关的。这里先将各个UUID之间的关系说明一下:[A......
清除音频设备的音效处理模块APO(FxProperties注册表项)
Windows 音效处理大致分为SFX,MFX,EFX, 按照顺序,依次处理。下面是如何移除这些模块的方法:打开设备管理器-音频输入输出设备,找到要修改的设备,右键属性-详情,在属性列表框里选择 设备实例路径,有如下值,记录红色部分SWDMMDEVAPI{0.0.0.00000000}.{0......
让系统加载未签名的APO
打开注册表:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionAudio创建注册表项:DisableProtectedAudioDG = 1 (DWORD)......
Equalizer APO简介
Equalizer APO是一款图形参数化的Windows音频均衡器,它的实现技术实现是基于Vista系统的 Audio Processing Object(APO)。Equalizer APO特征过滤器的数量实际上是无限的适用于任何数量的频道非常低的延迟,这使得它适合于交互式应用程序CPU使用......
Windows音频音擎audiodg与APO关系
APO与其他音频过滤框架(如VST)的区别在于,APO是Windows音频引擎使用的过滤框架。VST:Virtual Studio TechnologyWindows音频引擎是Windows音频堆栈的核心组件。它的作用是在单个应用程序音频流和硬件音频设备之间架起桥梁。因此,它可以处理各种任务......
APO动态库DLL文件的路径问题
APO DLL注册路径APO的DLL文件是通过regsvr32注册表的。比如:regsvr32.exe xxAPO.dll这样在注册表HKEY_LOCAL_MACHINESOFTWAREClassesCLSID就会记录该文件的GUID的路径。该GUIDPKEY_FX_*EffectCls......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

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