Condividi tramite


Metodo IAudioClient::IsFormatSupported (audioclient.h)

Il metodo IsFormatSupported indica se il dispositivo endpoint audio supporta un formato di flusso specifico.

Sintassi

HRESULT IsFormatSupported(
  [in]  AUDCLNT_SHAREMODE  ShareMode,
  [in]  const WAVEFORMATEX *pFormat,
  [out] WAVEFORMATEX       **ppClosestMatch
);

Parametri

[in] ShareMode

Modalità di condivisione per il formato del flusso. Tramite questo parametro, il client indica se vuole usare il formato specificato in modalità esclusiva o in modalità condivisa. Il client deve impostare questo parametro su uno dei valori di enumerazione AUDCLNT_SHAREMODE seguenti:

AUDCLNT_SHAREMODE_EXCLUSIVE

AUDCLNT_SHAREMODE_SHARED

[in] pFormat

Puntatore al formato di flusso specificato. Questo parametro punta a un descrittore di formato allocato dal 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 in modo che punti a una variabile puntatore non NULL valida. Per la modalità esclusiva, impostare ppClosestMatch su NULL. Il metodo alloca lo spazio di archiviazione per la struttura. Il chiamante è responsabile della liberazione dello spazio di archiviazione, quando non è più necessario, chiamando la funzione CoTaskMemFree . Se la chiamata IsFormatSupported ha esito negativo e ppClosestMatch è diverso da NULL, il metodo imposta *ppClosestMatch su NULL. Per informazioni su CoTaskMemFree, vedere la documentazione di Windows SDK.

Valore restituito

Codice restituito Description
S_OK
Succeeded e il dispositivo endpoint audio supporta il formato di flusso specificato.
S_FALSE
Operazione riuscita con una corrispondenza più vicina al formato specificato.
AUDCLNT_E_UNSUPPORTED_FORMAT
Operazione riuscita, ma il formato specificato non è supportato in modalità esclusiva.
 

Se l'operazione ha esito negativo, i possibili codici restituiti includono, ma non sono limitati, i valori illustrati nella tabella seguente.

Codice restituito Description
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 oppure l'hardware audio o le risorse hardware associate sono state riconfigurate, disabilitate, rimosse o altrimenti rese non disponibili per l'uso.
AUDCLNT_E_RESOURCES_INVALIDATED
Le risorse del flusso sono state invalidate. Questo errore può essere generato per i motivi seguenti:
- Il flusso è sospeso.
- Un flusso esclusivo o offload viene disconnesso.
- Un'applicazione in pacchetto che ha una modalità esclusiva o un flusso di offload è inattiva.
- Un flusso di "output protetto" viene chiuso.
AUDCLNT_E_SERVICE_NOT_RUNNING
Il servizio audio windows non è in esecuzione.

Osservazioni:

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 un formato simile, il metodo imposta *ppClosestMatch su NULL e restituisce AUDCLNT_E_UNSUPPORTED_FORMAT.

In modalità condivisa, il motore audio supporta sempre il formato di combinazione, che il client può ottenere chiamando il metodo IAudioClient::GetMixFormat . Inoltre, il motore audio potrebbe supportare formati simili con la stessa frequenza di campionamento 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 i valori di esempio come numeri 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 (Local Effects) 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 installato 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 LFX APO 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 apo LFX supporta solo i formati client con frequenze di campionamento che corrispondono alla frequenza di campionamento 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 Value
Client minimo supportato Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Header audioclient.h

Vedere anche

Interfaccia IAudioClient

IAudioClient::GetMixFormat

IAudioClient::Initialize