Condividi tramite


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
S_OK
Riuscito e il dispositivo dell'endpoint audio supporta il formato di flusso specificato.
S_FALSE
Esito positivo con una corrispondenza più vicina al formato specificato.
AUDCLNT_E_UNSUPPORTED_FORMAT
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
E_POINTER
Il parametro pFormat è NULL o ppClosestMatch è NULL e ShareMode è AUDCLNT_SHAREMODE_SHARED.
E_INVALIDARG
Il parametro ShareMode è un valore diverso da AUDCLNT_SHAREMODE_SHARED o AUDCLNT_SHAREMODE_EXCLUSIVE.
AUDCLNT_E_DEVICE_INVALIDATED
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.
AUDCLNT_E_SERVICE_NOT_RUNNING
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

Vedi anche

Interfaccia IAudioClient

IAudioClient::GetMixFormat

IAudioClient::Initialize