Condividi tramite


Formattazione negoziazione

Dopo che un'applicazione avvia l'elaborazione audio, il generatore di grafo configura gli sAPO in un grafico audio e inizializza anche gli sAPO. Il servizio audio negozia quindi con l'SAPO LFX per stabilire il formato per i dati audio in corrispondenza dell'input e dell'output di sAPO. Questo processo di negoziazione è noto come negoziazione del formato.

Tutti gli sAPO che forniscono effetti di sistemi audio per Windows Vista devono avere determinate interfacce e metodi. I metodi usati da sAPO e dal motore audio per negoziare il formato dei dati sono: il metodo IsInputFormatSupported dell'interfaccia IAudioProcessingObject e i metodi LockForProcess e UnlockForProcess dell'interfaccia IAudioProcessingObjectConfiguration .

Per avviare la negoziazione del formato, il servizio audio imposta innanzitutto l'output dell'oggetto SAPO LFX sul formato predefinito basato su float32. Il servizio audio chiama quindi il metodo IAudioProcessingObject::IsInputFormatSupported di LFX sAPO, suggerisce il formato predefinito e monitora la risposta HRESULT di questo metodo. Se LFX sAPO può supportare il formato suggerito, restituisce S_OK, insieme a un riferimento al formato supportato. Se LFX sAPO non può supportare il formato suggerito, restituisce S_FALSE insieme a un riferimento a un formato che corrisponde alla corrispondenza più vicina a quella suggerita. Se LFX sAPO non può supportare il formato suggerito e non ha una corrispondenza di chiusura, restituisce APOERR_FORMAT_NOT_SUPPORTED. GFX sAPO funziona con il formato di output di LFX sAPO. Pertanto, l'SAPO GFX non è coinvolto nel processo di negoziazione del formato.

Dopo aver selezionato un formato dati per elaborare i dati audio, il generatore di grafici di elaborazione audio chiama il metodo IAudioProcessingObjectConfiguration::LockForProcess degli sAPOs, causando la finalizzazione della selezione del formato.

Se l'oggetto sAPO di Windows Vista restituisce un errore per il wrapping di sAPO personalizzato in risposta a una chiamata al metodo LockForProcess , lo sAPO personalizzato deve gestire l'errore nello stesso modo in cui gestisce un errore da CoCreateInstance quando un tentativo di creazione di un'istanza di un sAPO ha esito negativo. Per informazioni dettagliate su come sovrascrivere il metodo LockForProcess fornito dal sistema, vedere il file Spkrfill.cpp.

A causa del funzionamento del servizio audio, gli sAPO LFX e GFX devono essere in grado di rispondere indipendentemente l'uno dall'altro alle query del servizio audio relative ai formati di dati.

Importante Quando si implementa un sAPO personalizzato che esegue il wrapping di un SAPO di Windows Vista LFX, non specificare il flag APO_FLAG_FRAMESPERSECOND_MUST_MATCH nelle proprietà di registrazione dell'oggetto sAPO personalizzato. Se si specifica questo flag, windows Vista LFX sAPO non sarà in grado di eseguire riempimento altoparlante, virtualizzazione delle cuffie o surround virtuale. Inoltre, l'oggetto sAPO personalizzato non sarà in grado di combinare tutti i flussi audio. Ad esempio, lo sAPO personalizzato non sarà in grado di combinare un flusso audio 5.1 fino a un flusso audio stereo a due canali.