struttura ACX_STREAM_BRIDGE_CONFIG (acxstreams.h)
La struttura ACX_STREAM_BRIDGE_CONFIG viene usata per configurare gli attributi, ad esempio il AUDIO_SIGNALPROCESSINGMODEs e il ACX_STREAM_BRIDGE_TYPE per AcxStreamBridge. AcxStreamBridge viene usato da un circuito per propagare la creazione del flusso, gli stati del flusso e le impostazioni DRM tra i segmenti del flusso di circuito dell'endpoint. Per informazioni sullo streaming ACX, vedere flusso ACX.
Sintassi
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;
Membri
Size
Lunghezza, in byte, di questa struttura.
Flags
OR bit per bit di ACX_STREAM_BRIDGE_CONFIG_FLAGS enumerazione.
Type
Enumerazione ACX_STREAM_BRIDGE_TYPE che definisce il tipo di bridge.
InModesCount
Numero di AUDIO_SIGNALPROCESSINGMODEs elencato in InModes. Si tratta delle modalità di elaborazione dei segnali accettate come input da ACXSTREAMBRIDGE. Per altre informazioni sulle modalità audio, vedere modalità di elaborazione del segnale audio.
Questo campo può essere zero solo se il campo InModes è impostato su NULL.
InModes
Puntatore a un elenco di puntatori AUDIO_SIGNALPROCESSINGMODE supportati da ACXSTREAMBRIDGE.
- Questo campo può essere impostato su una modalità specifica, ad esempio AUDIO_SIGNALPROCESSINGMODE_DEFAULT o AUDIO_SIGNALPROCESSINGMODE_RAW.
- Un
NULL_GUID
è un valore jolly e corrisponde a qualsiasi AUDIO_SIGNALPROCESSINGMODE. - Se le modalità di elaborazione del segnale di input non sono definite affatto, ACXSTREAMBRIDGE non corrisponde automaticamente ad alcuna modalità. In questo caso, spetta al driver aggiungere manualmente il flusso di input al bridge di flusso, dopo la creazione del bridge di flusso.
OutMode
Puntatore a un AUDIO_SIGNALPROCESSINGMODE che definisce la modalità di elaborazione del segnale audio del flusso di output.
- Se questo campo non viene specificato (impostato su NULL), il AUDIO_SIGNALPROCESSINGMODE_DEFAULT viene utilizzato se supportato dall'ACXPIN associato, altrimenti viene usato il AUDIO_SIGNALPROCESSINGMODE_RAW. Se AUDIO_SIGNALPROCESSINGMODE_RAW non è supportato, il flusso di output viene creato senza specificare una modalità di elaborazione del segnale audio.
- Se questo campo è impostato su
NULL_GUID
, ACX usa la modalità associata al flusso di input. - Per altre informazioni sul comportamento delle modalità di elaborazione dei segnali audio, vedere la sezione osservazioni.
OutStreamVarArguments
Oggetto ACXOBJECTBAG utilizzato per fornire argomenti variabili per il flusso di output. Si tratta di un'impostazione facoltativa e può essere NULL. Per altre informazioni sugli oggetti ACX, vedere ACX - Summary of ACX Objects.
TargetStreamAttributes
Struttura WDF_OBJECT_ATTRIBUTES utilizzata per definire gli attributi dell'oggetto ACXTARGETSTREAM.
Osservazioni
AcxStreamBridge viene usato da un circuito per propagare la creazione del flusso, gli stati del flusso e le impostazioni DRM tra i segmenti del flusso di circuito dell'endpoint. Questo oggetto viene usato solo in uno scenario multi circuito (composito audio).
AcXSTREAMBRIDGE deve essere padre di un oggetto con ACXCIRCUIT come predecessore.
Un pin può essere associato a zero, uno o più ACXSTREAMBRIDGEs. ACX esegue una ricerca nell'elenco della modalità di elaborazione dei segnali associato nell'elenco della modalità di elaborazione dei segnali di flusso. La ricerca si interrompe alla prima corrispondenza.
ACX crea un'istanza predefinita di ACXSTREAMBRIDGE per un bridge ACXCIRCUIT a ACXCIRCUIT se il driver non ne crea uno e il driver non ha disabilitato la gestione predefinita del bridge di flusso con il funzione AcxCircuitInitDisableDefaultStreamBridgeHandling.
Se ACXPIN associato supporta la modalità di elaborazione del segnale audio specificata, viene usato il formato dati predefinito per la modalità di elaborazione del segnale audio durante la creazione del flusso di output.
Se ACXPIN associato non supporta la modalità di elaborazione del segnale audio specificata, il formato di dati del flusso di input viene usato durante la creazione del flusso di output.
Se il bridge di flusso non specifica una modalità, ACX tenterà di usare AUDIO_SIGNALPROCESSINGMODE_DEFAULT modalità (e il formato predefinito) o RAW (e il relativo formato predefinito). Se nessuno di questi elementi è presente, non userà una modalità .
Il bridge di flusso consente un solo flusso di uscita e viene usata la prima configurazione del flusso. Di conseguenza, aggiungendo una COMUNICAZIONE e RAW, si avrà una modalità COMMUNICATION out. Se si aggiunge RAW e COMMUNICATION, si avrà RAW out.
InModes e OutModes impostato su NULL
Di seguito è riportato un esempio di utilizzo. Questo primo esempio mostra l'impostazione di InModes e OutModes su NULL. In questo caso, ACX userà qualsiasi modalità in ingresso.
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 e OutModes non sono impostati durante la creazione del bridge
In questo esempio non viene impostata l'impostazione di InModes per un circuito di acquisizione, perché verranno aggiunti manualmente in un secondo momento.
// 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 e OutModes impostata su NULL_GUID
Questo esempio mostra l'impostazione di InModes e OutModes sul 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.
Impostazione di InModes e OutModes per AUDIO_SIGNALPROCESSINGMODE_DEFAULT e AUDIO_SIGNALPROCESSINGMODE_RAW
Questo esempio illustra come impostare un flusso BRIDGE per le modalità DEFAULT e 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);
Requisiti ACX
versione minima di ACX: 1.0
Per altre informazioni sulle versioni di ACX, vedere panoramica della versione ACX.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | acxstreams.h |