Metodo IAudioClient::IsFormatSupported (audioclient.h)
Il metodo IsFormatSupported indica se il dispositivo endpoint audio supporta un determinato formato di flusso.
Sintassi
HRESULT IsFormatSupported(
[in] AUDCLNT_SHAREMODE ShareMode,
[in] const WAVEFORMATEX *pFormat,
[out] WAVEFORMATEX **ppClosestMatch
);
Parametri
[in] ShareMode
Modalità di condivisione per il formato di flusso. Tramite questo parametro, il client indica se vuole usare il formato specificato in modalità esclusiva o condivisa. Il client deve impostare questo parametro su uno dei valori di enumerazione seguenti AUDCLNT_SHAREMODE :
AUDCLNT_SHAREMODE_EXCLUSIVE
AUDCLNT_SHAREMODE_SHARED
[in] pFormat
Puntatore al formato di flusso specificato. Questo parametro punta a un descrittore di formato allocato del chiamante di tipo WAVEFORMATEX o WAVEFORMATEXTENSIBLE. Il client scrive una descrizione del formato in questa struttura prima di chiamare questo metodo. Per informazioni su WAVEFORMATEX e WAVEFORMATEXTENSIBLE, vedere la documentazione di Windows DDK.
[out] ppClosestMatch
Puntatore a una variabile puntatore in cui il metodo scrive l'indirizzo di una struttura WAVEFORMATEX o WAVEFORMATEXTENSIBLE. Questa struttura specifica il formato supportato più vicino al formato specificato dal client tramite il parametro pFormat . Per la modalità condivisa, ovvero se il parametro ShareMode è AUDCLNT_SHAREMODE_SHARED, impostare ppClosestMatch per puntare a una variabile di puntatore non NULL valida. Per la modalità esclusiva, impostare ppClosestMatch su NULL. Il metodo alloca l'archiviazione per la struttura. Il chiamante è responsabile della liberazione dell'archiviazione, quando non è più necessario, chiamando la funzione CoTaskMemFree . Se la chiamata IsFormatSupported ha esito negativo e ppClosestMatch non è NULL, il metodo imposta *ppClosestMatch su NULL. Per informazioni su CoTaskMemFree, vedere la documentazione di Windows SDK.
Valore restituito
Codice restituito | Descrizione |
---|---|
|
Riuscito e il dispositivo dell'endpoint audio supporta il formato di flusso specificato. |
|
Esito positivo con una corrispondenza più vicina al formato specificato. |
|
Riuscito, ma il formato specificato non è supportato in modalità esclusiva. |
Se l'operazione ha esito negativo, i possibili codici restituiti includono, ma non sono limitati a, i valori illustrati nella tabella seguente.
Codice restituito | Descrizione |
---|---|
|
Il parametro pFormat è NULL o ppClosestMatch è NULL e ShareMode è AUDCLNT_SHAREMODE_SHARED. |
|
Il parametro ShareMode è un valore diverso da AUDCLNT_SHAREMODE_SHARED o AUDCLNT_SHAREMODE_EXCLUSIVE. |
|
Il dispositivo endpoint audio è stato scollegato o l'hardware audio o le risorse hardware associate sono state riconfigurate, disabilitate, rimosse o altrimenti non disponibili per l'uso. |
|
Il servizio audio Di Windows non è in esecuzione. |
Commenti
Questo metodo consente a un client di determinare, prima di chiamare IAudioClient::Initialize, se il motore audio supporta un formato di flusso specifico.
Per la modalità esclusiva, IsFormatSupported restituisce S_OK se il dispositivo endpoint audio supporta il formato specificato dal chiamante oppure restituisce AUDCLNT_E_UNSUPPORTED_FORMAT se il dispositivo non supporta il formato. Il parametro ppClosestMatch può essere NULL. Se non è NULL, il metodo scrive NULL in *ppClosestMatch.
Per la modalità condivisa, se il motore audio supporta il formato specificato dal chiamante, IsFormatSupported imposta *ppClosestMatch su NULL e restituisce S_OK. Se il motore audio non supporta il formato specificato dal chiamante ma supporta un formato simile, il metodo recupera il formato simile tramite il parametro ppClosestMatch e restituisce S_FALSE. Se il motore audio non supporta il formato specificato dal chiamante o qualsiasi formato simile, il metodo imposta *ppClosestMatch su NULL e restituisce AUDCLNT_E_UNSUPPORTED_FORMAT.
In modalità condivisa, il motore audio supporta sempre il formato mix, che il client può ottenere chiamando il metodo IAudioClient::GetMixFormat . Inoltre, il motore audio può supportare formati simili con la stessa frequenza di esempio e il numero di canali del formato mix, ma differiscono nella rappresentazione dei valori di esempio audio. Il motore audio rappresenta i valori di esempio internamente come numeri a virgola mobile, ma se il formato specificato dal chiamante rappresenta valori di esempio come interi, il motore audio in genere può convertire tra i valori di esempio integer e la relativa rappresentazione a virgola mobile interna.
Il motore audio potrebbe essere in grado di supportare una gamma ancora più ampia di formati in modalità condivisa se il pacchetto di installazione per il dispositivo audio include un oggetto di elaborazione audio (LFX) locale (APO) che può gestire le conversioni di formato. Un LFX APO è un modulo software che esegue l'elaborazione specifica del dispositivo di un flusso audio. Il generatore di grafici audio nel servizio audio Di Windows inserisce l'APO LFX nel flusso tra ogni client e il motore audio. Quando un client chiama il metodo IsFormatSupported e il metodo determina che un'APO LFX viene installata per l'uso con il dispositivo, il metodo indirizza la query all'APO LFX, che indica se supporta il formato specificato dal chiamante.
Ad esempio, un particolare APO LFX potrebbe accettare un flusso audio surround a 6 canali da un client e convertire il flusso in un formato stereo che può essere riprodotto tramite cuffie. In genere, un LFX APO supporta solo i formati client con tariffe di esempio che corrispondono alla frequenza di esempio del formato di combinazione.
Per altre informazioni sulle API, vedere Oggetti di elaborazione audio di Windows. Per altre informazioni sul metodo IsFormatSupported , vedere Formati di dispositivo.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista [app desktop | App UWP] |
Server minimo supportato | Windows Server 2008 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | audioclient.h |