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, restituisce S_OK. Se ha esito negativo, i possibili codici restituiti includono, ma non sono limitati, i valori illustrati nella tabella seguente.

Codice restituito Description
AUDCLNT_E_NOT_INITIALIZED
Il flusso audio non è stato inizializzato correttamente.
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.
E_POINTER
Il parametro pNumBufferFrames è NULL.

Osservazioni:

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 non 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 per le dimensioni del campione per canale. Ad esempio, le dimensioni del frame sono quattro byte per un flusso stereo (a 2 canali) con campioni a 16 bit.

Il metodo IAudioClient::Initialize alloca il buffer. Il client specifica la lunghezza del buffer nel valore del parametro hnsBufferDuration passato 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 massime del buffer di rendering 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 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::Initialize

IAudioRenderClient::GetBuffer