ACX_STREAM_BRIDGE_CONFIG 结构 (acxstreams.h)

AcxStreamBridge 结构由线路用于传播流创建、流的状态转换和终结点的线路流段之间的 DRM 设置。

语法

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指针列表的指针。 此字段可以为 NULL。 NULL GUID 是一个野生卡值,它与任何AUDIO_SIGNALPROCESSINGMODEs匹配。

如果未定义输入信号处理模式,ACXSTREAMBRIDGE 不会自动匹配任何模式。 在这种情况下,由驱动程序手动将输入流添加到流桥。

OutMode

指向定义输出流的音频信号处理模式的AUDIO_SIGNALPROCESSINGMODE的指针。 如果此字段为 NULL,则使用AUDIO_SIGNALPROCESSINGMODE_DEFAULT(如果受关联的 ACXPIN 支持),否则使用AUDIO_SIGNALPROCESSINGMODE_RAW。 如果还不支持后者,则会在不指定音频信号处理模式的情况下创建输出流。

OutStreamVarArguments

ACXOBJECTBAG 对象,用于为输出流提供变量参数。 这是一个可选设置,可以为 NULL。 有关 ACX 对象的详细信息,请参阅 ACX - ACX 对象的摘要

TargetStreamAttributes

用于定义 ACXTARGETSTREAM 对象属性的 WDF_OBJECT_ATTRIBUTES 结构。

注解

AcxStreamBridge 由线路用于传播流创建、流的状态转换和终结点的线路流段之间的 DRM 设置。 此对象仅在多线路 (音频复合) 方案中使用。

一个引脚可以与零个、一个或多个 ACXSTREAMBRIDGE 相关联。 ACX 在关联的 ACXPIN 信号处理模式列表中搜索流信号处理模式匹配项。 搜索在第一次匹配时停止。

如果驱动程序未创建 ACXCIRCUIT 桥,ACX 会为 ACXCIRCUIT 桥创建默认 ACXSTREAMBRIDGE,并且驱动程序未使用 AcxCircuitInitDisableDefaultStreamBridgeHandling 函数禁用默认流桥处理。

如果关联的 ACXPIN 支持指定的音频信号处理模式,则创建输出流时将使用该音频信号处理模式的默认数据格式。

如果关联的 ACXPIN 不支持指定的音频信号处理模式,则创建输出流时将使用输入流的数据格式。

ACXSTREAMBRIDGE 必须父级为具有 ACXCIRCUIT 作为上级的对象。

示例用法如下所示。

        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);

此示例演示如何为 RAW 和 DEFAULT 模式设置流 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 版本概述

要求

要求
Header acxstreams.h

另请参阅