Condividi tramite


Metodo IAudioClient::GetMixFormat (audioclient.h)

Il metodo GetMixFormat recupera il formato di flusso usato dal motore audio per l'elaborazione interna dei flussi in modalità condivisa.

Sintassi

HRESULT GetMixFormat(
  [out] WAVEFORMATEX **ppDeviceFormat
);

Parametri

[out] ppDeviceFormat

Puntatore a una variabile puntatore in cui il metodo scrive l'indirizzo del formato mix. Questo parametro deve essere un puntatore non NULL valido a una variabile puntatore. Il metodo scrive l'indirizzo di una struttura WAVEFORMATEX (o WAVEFORMATEXTENSIBLE) in questa variabile. 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 GetMixFormat ha esito negativo, *ppDeviceFormat è NULL. Per informazioni su WAVEFORMATEX, WAVEFORMATEXTENSIBLE e CoTaskMemFree, vedere la documentazione di Windows SDK.

Valore restituito

Se il metodo ha esito positivo, viene restituito S_OK. Se ha esito negativo, i codici restituiti possibili includono, ma non sono limitati a, i valori visualizzati nella tabella seguente.

Codice restituito Descrizione
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.
E_POINTER
Il parametro ppDeviceFormat è NULL.
E_OUTOFMEMORY
Memoria insufficiente.

Commenti

Il client può chiamare questo metodo prima di chiamare il metodo IAudioClient::Initialize . Quando si crea un flusso in modalità condivisa per un dispositivo endpoint audio, il metodo Initialize accetta sempre il formato di flusso ottenuto da una chiamata GetMixFormat nello stesso dispositivo.

Il formato mix è il formato usato dal motore audio internamente per l'elaborazione digitale dei flussi in modalità condivisa. Questo formato non è necessariamente un formato supportato dal dispositivo endpoint audio. Pertanto, il chiamante potrebbe non riuscire a creare un flusso in modalità esclusiva con un formato ottenuto chiamando GetMixFormat.

Ad esempio, per facilitare l'elaborazione audio digitale, il motore audio potrebbe usare un formato di combinazione che rappresenta esempi come valori a virgola mobile. Se il dispositivo supporta solo esempi PCM interi, il motore converte gli esempi in o da valori PCM interi alla connessione tra il dispositivo e il motore. Tuttavia, per evitare il ricampionamento, il motore potrebbe usare un formato di combinazione con una frequenza di esempio supportata dal dispositivo.

Per determinare se il metodo Initialize può creare un flusso in modalità condivisa o in modalità esclusiva con un formato specifico, chiamare il metodo IAudioClient::IsFormatSupported .

Per sé, una struttura WAVEFORMATEX non può specificare il mapping dei canali alle posizioni dell'altoparlante. Inoltre, anche se WAVEFORMATEX specifica le dimensioni del contenitore per ogni esempio audio, non può specificare il numero di bit di precisione in un esempio (ad esempio, 20 bit di precisione in un contenitore a 24 bit). Tuttavia, la struttura WAVEFORMATEXTENSIBLE può specificare sia il mapping dei canali agli altoparlanti che il numero di bit di precisione in ogni esempio. Per questo motivo, il metodo GetMixFormat recupera un descrittore di formato che si trova sotto forma di una struttura WAVEFORMATEXTENSIBLE anziché una struttura WAVEFORMATEX autonoma. Tramite il parametro ppDeviceFormat , il metodo restituisce un puntatore alla struttura WAVEFORMATEX incorporata all'inizio di questa struttura WAVEFORMATEXTENSIBLE . Per altre informazioni su WAVEFORMATEX e WAVEFORMATEXTENSIBLE, vedere la documentazione di Windows DDK.

Per altre informazioni sul metodo GetMixFormat , vedere Formati di dispositivo. Per esempi di codice che chiamano GetMixFormat, vedere gli argomenti seguenti:

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::Initialize

IAudioClient::IsFormatSupported