Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Структура 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 |