Condividi tramite


KSPROPERTY_AEC_STATUS

La proprietà KSPROPERTY_AEC_STATUS viene usata per monitorare lo stato di un nodo AEC (KSNODETYPE_ACOUSTIC_ECHO_CANCEL). Si tratta di una proprietà facoltativa di un nodo AEC.

Tabella riepilogo utilizzo

Recupero Set Destinazione Tipo di descrittore di proprietà Tipo valore proprietà

No

Aggiungi (Blocca)

KSNODEPROPERTY

ULONG

Il valore della proprietà (dati dell'operazione) è di tipo ULONG. Si tratta di un valore di stato che può essere impostato sull'OR bit per bit di uno o più bit del flag nella colonna sinistra della tabella seguente, definiti nel file di intestazione Ksmedia.h. I flag DSCFX_AEC_STATUS corrispondenti del file di intestazione Dsound.h vengono visualizzati nella colonna destra della tabella. Per informazioni su questi flag, vedere la documentazione Microsoft Windows SDK.

Flag di stato AEC Valore flag DSCFX_AEC_STATUS

AEC_STATUS_FD_HISTORY_UNINITIALIZED

0x0

DSCFX_AEC_STATUS_HISTORY_UNINITIALIZED

AEC_STATUS_FD_HISTORY_CONTINUOUSLY_CONVERGED

0x1

DSCFX_AEC_STATUS_HISTORY_CONTINUOUSLY_CONVERGED

AEC_STATUS_FD_HISTORY_PREVIOUSLY_DIVERGED

0x2

DSCFX_AEC_STATUS_HISTORY_PREVIOUSLY_DIVERGED

AEC_STATUS_FD_CURRENTLY_CONVERGED

0x8

DSCFX_AEC_STATUS_CURRENTLY_CONVERGED

Valore restituito

Una richiesta di proprietà KSPROPERTY_AEC_STATUS restituisce STATUS_SUCCESS per indicare che è stata completata correttamente. In caso contrario, la richiesta restituisce un codice di stato di errore appropriato.

Commenti

I tre bit meno significativi nei flag di stato AEC (vedere la tabella precedente) rappresentano la cronologia di convergenza (CH) dell'algoritmo AEC. I bit di stato CH possono essere usati da un'applicazione Microsoft DirectSound per determinare se l'algoritmo è convergente e anche se è rimasto nello stato convergente dal momento in cui ha iniziato l'elaborazione dei dati. A seconda dell'hardware audio, l'algoritmo AEC potrebbe non riuscire a convergere, nel qual caso è probabile che il buffer di acquisizione risultante includa l'eco dagli altoparlanti.

Quando il filtro contenente il nodo AEC viene creato o il nodo viene reimpostato, l'algoritmo AEC imposta inizialmente i tre bit di stato CH su zero. Questa impostazione rappresenta lo stato non inizializzato, AEC_STATUS_FD_HISTORY_UNINITIALIZED.

Dopo la convergenza dell'algoritmo AEC, lo stato CH passa allo stato convergente AEC_STATUS_FD_HISTORY_CONTINUOUSLY_CONVERGED. Se l'algoritmo AEC perde mai la convergenza, lo stato CH passa allo stato divergente, AEC_STATUS_FD_HISTORY_PREVIOUSLY_DIVERGED. Anche se è molto probabile che lo stato passi allo stato divergente dallo stato convergente, potrebbe anche passare direttamente dallo stato non inizializzato allo stato divergente. Dopo che lo stato CH è passato allo stato divergente, rimarrà in tale stato fino a quando l'algoritmo non viene reimpostato o viene rilevata la fame.

Quando il filtro di sistema AEC rileva la fame in uno dei quattro pin, acquisisce, esegue il rendering, esegue il rendering o reimposta lo stato interno, inclusa la cronologia di convergenza.

Si noti che il bit 2 dei tre bit di stato CH non è attualmente usato.

In alternativa all'uso dei bit di stato CH, l'applicazione può monitorare lo stato di convergenza in tempo reale controllando il bit del flag AEC_STATUS_FD_CURRENTLY_CONVERGED. Se questo bit è impostato, l'algoritmo è attualmente convergente. L'algoritmo può perdere temporaneamente la convergenza quando si verificano modifiche nel percorso acustico. Il flag di convergenza in tempo reale viene filtrato per evitare che tali perdite momentanee cambino in modo inappropriato i bit di stato CH allo stato DSCFX_AEC_STATUS_FD_HISTORY_PREVIOUSLY_DIVERGED.

Requisiti

Intestazione

Ksmedia.h (include Ksmedia.h)

Vedere anche

KSNODEPROPERTY

KSNODETYPE_ACOUSTIC_ECHO_CANCEL