共用方式為


ACX_STREAM_BRIDGE_CONFIG結構 (acxstreams.h)

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值。
  • 如果完全未定義輸入訊號處理模式,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 作為上階的物件。

針腳可以與零、一或多個 ACXSTREAMBRIDGEs 相關聯。 ACX 會搜尋相關聯的 ACXPIN 訊號處理模式清單,以取得串流訊號處理模式相符專案。 搜尋會在第一個相符專案停止。

如果驅動程式未建立 ACXCIRCUIT,ACXSTREAMBRIDGE 會為 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

另請參閱