APO音频处理象开发概述及对接口关系
2022-09-15
536
1
自定义音频处理对象APO的步骤:
- 创建自定义 APO com 对象以提供所需的音频处理对象。
- 创建用户界面以使用配置自定义 APO(可选)。
- 创建 INF 文件以安装和注册 APO 和自定义用户界面。
APO 必须有一个输入和一个输出连接。这些连接是音频缓冲区,可以有多个通道。
APO 只能修改通过其IAudioProcessingObjectRT::APOProcess例程传递给它的音频数据。APO 无法更改基础逻辑设备的设置,包括其 KS 拓扑。
其APO COM对象结构如下:
- IAudioProcessingObject。处理初始化和格式协商等设置任务的接口。
- IAudioProcessingObjectConfiguration。配置界面。
- IAudioProcessingObjectRT。处理音频处理的实时接口。它可以从实时处理线程中调用。
- IAudioSystemEffects。使音频引擎将 DLL 识别为系统效果 APO 的接口。
IAudioProcessingObject
IAudioProcessingObjectRT
IAudioProcessingObjectConfiguration
自定义APO
文件定义:
E:\Windows-driver-samples-master\Windows-driver-samples-master\audio\sysvad\APO\SwapAPO\SwapAPO.h
标例类定义如下:
class CSwapAPOMFX :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CSwapAPOMFX, &CLSID_SwapAPOMFX>,
public CBaseAudioProcessingObject,
public IMMNotificationClient,
public IAudioSystemEffects2,
// IAudioSystemEffectsCustomFormats may be optionally supported
// by APOs that attach directly to the connector in the DEFAULT mode streaming graph
public IAudioSystemEffectsCustomFormats,
public ISwapAPOMFX
而CBaseAudioProcessingObject的这义如下:
文件路径为:
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\baseaudioprocessingobject.h
类定义如下:
class __declspec(novtable) CBaseAudioProcessingObject : public IAudioProcessingObject, public IAudioProcessingObjectRT, public IAudioProcessingObjectConfiguration
{