ACX_STREAM_BRIDGE_CONFIG 结构用于配置属性,例如AUDIO_SIGNALPROCESSINGMODEs,以及 AcxStreamBridge 的ACX_STREAM_BRIDGE_TYPE。 AcxStreamBridge 由线路用来传播流创建、流的状态转换和终结点线路流段之间的 DRM 设置。 有关 ACX 流式处理的信息,请参阅 ACX 流式处理。
语法
typedef struct _ACX_STREAM_BRIDGE_CONFIG {
ULONG Size;
ULONG Flags;
ACX_STREAM_BRIDGE_TYPE Type;
ULONG InModesCount;
PCGUID *InModes;
PCGUID OutMode;
ACXOBJECTBAG OutStreamVarArguments;
WDF_OBJECT_ATTRIBUTES TargetStreamAttributes;
} ACX_STREAM_BRIDGE_CONFIG, *PACX_STREAM_BRIDGE_CONFIG;
成员
Size
此结构的长度(以字节为单位)。
Flags
ACX_STREAM_BRIDGE_CONFIG_FLAGS 枚举的按位 OR。
Type
定义桥类型的 ACX_STREAM_BRIDGE_TYPE 枚举。
InModesCount
InModes 中列出的AUDIO_SIGNALPROCESSINGMODEs数。 这些是 ACXSTREAMBRIDGE 接受为输入的信号处理模式。 有关音频模式的详细信息,请参阅 音频信号处理模式。
仅当 InModes 字段设置为 NULL 时,此字段才能为零。
InModes
指向 ACXSTREAMBRIDGE 支持的AUDIO_SIGNALPROCESSINGMODE指针列表的指针。
- 此字段可以设置为特定模式,例如AUDIO_SIGNALPROCESSINGMODE_DEFAULT或AUDIO_SIGNALPROCESSINGMODE_RAW。
-
NULL_GUID是通配符值,它与任何AUDIO_SIGNALPROCESSINGMODE(s)匹配。 - 如果未定义输入信号处理模式,ACXSTREAMBRIDGE 不会自动匹配任何模式。 在这种情况下,由驱动程序在创建流桥后手动将输入流添加到流桥。
OutMode
指向定义输出流的音频信号处理模式的AUDIO_SIGNALPROCESSINGMODE的指针。
- 如果未指定此字段(设置为 NULL),则如果关联的 ACXPIN 支持,则使用AUDIO_SIGNALPROCESSINGMODE_DEFAULT,否则使用AUDIO_SIGNALPROCESSINGMODE_RAW。 如果也不支持AUDIO_SIGNALPROCESSINGMODE_RAW,则无需指定音频信号处理模式即可创建输出流。
- 如果此字段设置为
NULL_GUID,ACX 将使用与输入流关联的 MODE。 - 有关音频信号处理模式行为的其他信息,请参阅备注部分。
OutStreamVarArguments
用于为输出流提供变量参数的 ACXOBJECTBAG 对象。 这是一个可选设置,可以是 NULL。 有关 ACX 对象的详细信息,请参阅 ACX - ACX 对象的摘要。
TargetStreamAttributes
用于定义 ACXTARGETSTREAM 对象属性的 WDF_OBJECT_ATTRIBUTES 结构。
言论
AcxStreamBridge 由线路用来传播流创建、流的状态转换和终结点线路流段之间的 DRM 设置。 此对象仅在多线路(音频复合)方案中使用。
ACXSTREAMBRIDGE 必须父级为具有 ACXCIRCUIT 作为祖先的对象。
引脚可以与零、一个或多个 ACXSTREAMBRIDGE 相关联。 ACX 在关联的 ACXPIN 信号处理模式列表中搜索流信号处理模式匹配。 搜索在第一场比赛中停止。
如果驱动程序未创建 ACXCIRCUIT 桥,ACXCIRCUIT 会为 ACXCIRCUIT 桥创建默认 ACXSTREAMBRIDGE,并且驱动程序未使用 AcxCircuitInitDisableDefaultStreamBridgeHandling 函数禁用默认流桥处理。
如果关联的 ACXPIN 支持指定的音频信号处理模式,则创建输出流时将使用该音频信号处理模式的默认数据格式。
如果关联的 ACXPIN 不支持指定的音频信号处理模式,则创建输出流时将使用输入流的数据格式。
如果流桥未指定模式,ACX 将尝试使用AUDIO_SIGNALPROCESSINGMODE_DEFAULT模式(及其默认格式),或 RAW(及其默认格式)。 如果其中两个都不存在,则不会使用模式。
流网桥仅允许一个流出,并使用第一个流配置。 因此,添加 COMMUNICATION 和 RAW 后,你将有一个通信模式。如果添加 RAW 和 COMMUNICATION,则会显示 RAW。
InModes 和 OutModes 设置为 NULL
示例用法如下所示。 第一个示例显示要设置为 NULL 的 InModes 和 OutModes。 在这种情况下,ACX 将使用任何传入模式。
ACXSTREAMBRIDGE bridge = NULL;
ACX_STREAM_BRIDGE_CONFIG bridgeCfg;
ACX_STREAM_BRIDGE_CONFIG_INIT(&bridgeCfg);
bridgeCfg.InModesCount = 0; // no in-modes. this stream-bridge is manually managed.
bridgeCfg.InModes = NULL;
bridgeCfg.OutMode = NULL; // no mode, i.e., default (1st), raw (2nd) or no mode (3rd).
bridgeCfg.Flags |= AcxStreamBridgeInvertChangeStateSequence;
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = pin;
status = AcxStreamBridgeCreate(Circuit, &attributes, &bridgeCfg, &bridge);
在桥创建时未设置 InModes 和 OutModes
此示例未设置捕获线路的 InModes,因为稍后将手动添加它们。
// Do not specify InModes for capture - this will prevent the ACX framework from adding created streams to this stream
// bridge automatically. We want to add the stream bridges manually since we don't want KWS streams added.
StreamCfg.OutMode = &AUDIO_SIGNALPROCESSINGMODE_RAW;
StreamCfg.OutStreamVarArguments = objBag;
ACXSTREAMBRIDGE streamBridge = NULL;
RETURN_NTSTATUS_IF_FAILED(AcxStreamBridgeCreate(Circuit, &attributes, &StreamCfg, &streamBridge));
InModes 和 OutModes 设置为NULL_GUID
此示例显示设置为NULL_GUID的 InModes 和 OutModes。
#define NULL_GUID { 0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} }
PCGUID inModes[] =
{
&NULL_GUID, // Match every mode.
};
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = pin;
ACX_STREAM_BRIDGE_CONFIG bridgeCfg;
ACX_STREAM_BRIDGE_CONFIG_INIT(&bridgeCfg);
bridgeCfg.Flags |= AcxStreamBridgeForwardInStreamVarArguments;
bridgeCfg.InModesCount = ARRAYSIZE(inModes);
bridgeCfg.InModes = inModes;
bridgeCfg.OutMode = &NULL_GUID; // Use the MODE associated the in-stream.
正在为 AUDIO_SIGNALPROCESSINGMODE_DEFAULT 和 AUDIO_SIGNALPROCESSINGMODE_RAW 设置 InModes 和 OutModes
此示例演示如何为 DEFAULT 和 RAW 模式设置流 BRIDGE。
//
// Add a stream BRIDGE for RAW and DEFAULT modes.
//
PCGUID inModes[] =
{
&AUDIO_SIGNALPROCESSINGMODE_DEFAULT,
&AUDIO_SIGNALPROCESSINGMODE_RAW,
};
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = pin;
ACXSTREAMBRIDGE bridge = NULL;
ACX_STREAM_BRIDGE_CONFIG bridgeCfg;
ACX_STREAM_BRIDGE_CONFIG_INIT(&bridgeCfg);
streamCfg.InModesCount = 2;
streamCfg.InModes = inModes;
streamCfg.OutMode = &AUDIO_SIGNALPROCESSINGMODE_DEFAULT;
status = AcxStreamBridgeCreate(circuit, &attributes, &bridgeCfg, &bridge);
ACX 要求
最低 ACX 版本: 1.0
有关 ACX 版本的详细信息,请参阅 ACX 版本概述。
要求
| 要求 | 价值 |
|---|---|
| 标头 | acxstreams.h |