Поделиться через


структура ACX_STREAM_BRIDGE_CONFIG (acxstreams.h)

Структура ACX_STREAM_BRIDGE_CONFIG используется для настройки атрибутов, таких как AUDIO_SIGNALPROCESSINGMODEs, и ACX_STREAM_BRIDGE_TYPE для AcxStreamBridge. 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.

Type

Перечисление ACX_STREAM_BRIDGE_TYPE, определяющее тип моста.

InModesCount

Количество AUDIO_SIGNALPROCESSINGMODEs, перечисленных в InModes. Это режимы обработки сигналов, принятые в качестве входных данных ACXSTREAMBRIDGE. Дополнительные сведения о звуковых режимах см. в режимах обработки звуковых сигналов.

Это поле может быть равно нулю, только если для поля InModes задано значение NULL.

InModes

Указатель на список указателей AUDIO_SIGNALPROCESSINGMODE, поддерживаемых ACXSTREAMBRIDGE.

  • Это поле можно задать в определенном режиме, например AUDIO_SIGNALPROCESSINGMODE_DEFAULT или AUDIO_SIGNALPROCESSINGMODE_RAW.
  • NULL_GUID — это значение подстановочной карточки, и оно соответствует любым AUDIO_SIGNALPROCESSINGMODE.
  • Если режимы обработки входных сигналов не определены вообще, ACXSTREAMBRIDGE не соответствует ни одному режиму. В этом случае драйвер может вручную добавить входной поток в мост потоковой передачи после создания моста потока.

OutMode

Указатель на AUDIO_SIGNALPROCESSINGMODE, определяющий режим обработки звукового сигнала выходного потока.

  • Если это поле не указано (задано значение NULL), AUDIO_SIGNALPROCESSINGMODE_DEFAULT используется при поддержке связанного ACXPIN, в противном случае используется AUDIO_SIGNALPROCESSINGMODE_RAW. Если AUDIO_SIGNALPROCESSINGMODE_RAW также не поддерживается, выходной поток создается без указания режима обработки звукового сигнала.
  • Если для этого поля задано значение NULL_GUID, ACX использует режим, связанный с входным потоком.
  • Дополнительные сведения о поведении режимов обработки звуковых сигналов см. в разделе "Замечания".

OutStreamVarArguments

Объект ACXOBJECTBAG, используемый для предоставления аргументов переменных для выходного потока. Это необязательный параметр и может иметь значение NULL. Дополнительные сведения о объектах ACX см. в ACX — сводка по объектам ACX.

TargetStreamAttributes

Структура WDF_OBJECT_ATTRIBUTES, используемая для определения атрибутов объекта ACXTARGETSTREAM.

Замечания

AcxStreamBridge используется каналом для распространения потока, перехода состояний потока и параметров DRM между сегментами потока конечной точки. Этот объект используется только в сценарии с несколькими каналами (составной звук).

ACXSTREAMBRIDGE должен быть родительским объектом, который имеет ACXCIRCUIT в качестве предка.

Закрепление может быть связано с нулевым, одним или несколькими ACXSTREAMBRIDGEs. ACX выполняет поиск связанного списка режима обработки сигналов ACXPIN для соответствия режима обработки потокового сигнала. Поиск останавливается в первом матче.

ACX создает мост ACXSTREAMBRIDGE по умолчанию для ACXCIRCUIT для моста ACXCIRCUIT, если драйвер не создает его, и драйвер не отключает обработку моста потока по умолчанию с помощью функции acxCircuitInitDisableDefaultStreamBridgeHandling.

Если связанный ACXPIN поддерживает указанный режим обработки звуковых сигналов, то при создании выходного потока используется формат данных по умолчанию для этого режима обработки звуковых сигналов.

Если связанный ACXPIN не поддерживает указанный режим обработки звуковых сигналов, при создании выходного потока используется формат данных входного потока.

Если мост потоков не задает режим, ACX попытается использовать режим AUDIO_SIGNALPROCESSINGMODE_DEFAULT (и его формат по умолчанию), или RAW (и его формат по умолчанию). Если ни из них нет, он не будет использовать режим.

Мост потоков разрешает только один поток и используется первая конфигурация потока. Таким образом, при добавлении коммуникации и RAW вы будете иметь режим КОММУНИКАЦИи. При добавлении RAW и коммуникации вы получите RAW.

InModes и OutModes, для которых задано значение NULL

Ниже показан пример использования. В первом примере показан параметр InModes и OutModes, для которых задано значение NULL. В этом случае 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

В этом примере показаны параметры InModes и OutModes, заданные в NULL_GUID.

        #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.

Параметры InModes и OutModes для AUDIO_SIGNALPROCESSINGMODE_DEFAULT и AUDIO_SIGNALPROCESSINGMODE_RAW

В этом примере показано, как задать stream BRIDGE для режимов DEFAULT и RAW.

    //
    // 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

См. также

  • заголовка acxstreams.h