Condividi tramite


Metodo IAudioCaptureClient::ReleaseBuffer (audioclient.h)

Il metodo ReleaseBuffer rilascia il buffer.

Sintassi

HRESULT ReleaseBuffer(
  [in] UINT32 NumFramesRead
);

Parametri

[in] NumFramesRead

Numero di frame audio letti dal buffer di acquisizione dal client. Questo parametro deve essere uguale al numero di frame nel pacchetto di dati acquisito in precedenza o 0.

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_INVALID_SIZE
Il parametro NumFramesRead è impostato su un valore diverso dalle dimensioni del pacchetto di dati o da 0.
AUDCLNT_E_OUT_OF_ORDER
Questa chiamata non è stata preceduta da una chiamata IAudioCaptureClient::GetBuffer corrispondente.
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

Il client deve chiamare questo metodo al termine della lettura di un pacchetto di dati ottenuto in precedenza chiamando il metodo IAudioCaptureClient::GetBuffer .

I dati nel pacchetto ottenuto dal client da una chiamata GetBuffer rimangono validi fino a quando il client chiama ReleaseBuffer per rilasciare il pacchetto.

Tra ogni chiamata GetBuffer e la chiamata ReleaseBuffer corrispondente, il client deve leggere l'intero pacchetto di dati o nessuno di esso. Se il client legge l'intero pacchetto seguendo la chiamata GetBuffer , deve chiamare ReleaseBuffer con NumFramesRead impostato sul numero totale di fotogrammi nel pacchetto di dati. In questo caso, la chiamata successiva a GetBuffer produrrà un nuovo pacchetto di dati. Se il client legge nessuno dei dati dal pacchetto che segue la chiamata a GetBuffer, deve chiamare ReleaseBuffer con NumFramesRead impostato su 0. In questo caso, la chiamata GetBuffer successiva produrrà lo stesso pacchetto di dati della chiamata GetBuffer precedente.

Se il client chiama ReleaseBuffer con NumFramesRead impostato su qualsiasi valore diverso dalle dimensioni del pacchetto o 0, la chiamata ha esito negativo e restituisce il codice di errore AUDCLNT_E_INVALID_SIZE.

I client devono evitare ritardi eccessivi tra la chiamata GetBuffer che acquisisce un buffer e la chiamata ReleaseBuffer che rilascia il buffer. L'implementazione del motore audio presuppone che la chiamata GetBuffer e la chiamata ReleaseBuffer corrispondente si verifichino entro lo stesso periodo di elaborazione del buffer. Client che ritarda il rilascio di un buffer per più di un periodo di rischio di perdita dei dati di esempio.

Per un esempio di codice che chiama il metodo ReleaseBuffer, vedere Acquisizione di un Stream.

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 IAudioCaptureClient

IAudioCaptureClient::GetBuffer