Condividi tramite


Metodo IAudioClient::GetBufferSize (audioclient.h)

Il metodo GetBufferSize recupera le dimensioni (capacità massima) del buffer dell'endpoint.

Sintassi

HRESULT GetBufferSize(
  [out] UINT32 *pNumBufferFrames
);

Parametri

[out] pNumBufferFrames

Puntatore a una variabile UINT32 in cui il metodo scrive il numero di fotogrammi audio che il buffer può contenere.

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_NOT_INITIALIZED
Il flusso audio non è stato inizializzato correttamente.
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 pNumBufferFrames è NULL.

Commenti

Questo metodo richiede l'inizializzazione precedente dell'interfaccia IAudioClient . Tutte le chiamate a questo metodo avranno esito negativo con l'errore AUDCLNT_E_NOT_INITIALIZED finché il client inizializza il flusso audio chiamando correttamente il metodo IAudioClient::Initialize .

Questo metodo recupera la lunghezza del buffer dell'endpoint condiviso tra l'applicazione client e il motore audio. La lunghezza viene espressa come numero di fotogrammi audio che il buffer può contenere. Le dimensioni in byte di un frame audio vengono calcolate come numero di canali nel flusso moltiplicato in base alle dimensioni del campione per canale. Ad esempio, le dimensioni del frame sono quattro byte per un flusso stereo (2 canale) con esempi a 16 bit.

Il metodo IAudioClient::Initialize alloca il buffer. Il client specifica la lunghezza del buffer nel valore del parametro hnsBufferDuration che passa al metodo Initialize . Per i client di rendering, la lunghezza del buffer determina la quantità massima di dati di rendering che l'applicazione può scrivere nel buffer dell'endpoint durante un singolo passaggio di elaborazione. Per i client di acquisizione, la lunghezza del buffer determina la quantità massima di dati di acquisizione che il motore audio può leggere dal buffer dell'endpoint durante un singolo passaggio di elaborazione. Il client deve sempre chiamare GetBufferSize dopo aver chiamato Initialize per determinare le dimensioni effettive del buffer allocato, che potrebbero differire dalle dimensioni richieste.

I client di rendering possono usare questo valore per calcolare le dimensioni del buffer di rendering più grandi che possono essere richieste da IAudioRenderClient::GetBuffer durante ogni passaggio di elaborazione.

Per esempi di codice che chiamano il metodo GetBufferSize , 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

IAudioRenderClient::GetBuffer