Condividi tramite


Metodo ISampleGrabber::GetCurrentBuffer

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Nota

[Deprecata. Questa API può essere rimossa dalle versioni future di Windows.]

 

Il metodo GetCurrentBuffer recupera una copia del buffer associato all'esempio più recente.

Sintassi

HRESULT GetCurrentBuffer(
  [in, out] long *pBufferSize,
  [out]     long *pBuffer
);

Parametri

pBufferSize [in, out]

Puntatore alle dimensioni del buffer. Se pBuffer è NULL, questo parametro riceve le dimensioni del buffer necessarie, in byte. Se pBuffer non è NULL, impostare questo parametro uguale alle dimensioni del buffer, in byte. Nell'output il parametro riceve il numero di byte copiati nel buffer. Questo valore potrebbe essere minore delle dimensioni del buffer.

pBuffer [out]

Puntatore a una matrice di byte di dimensioni pBufferSize o NULL. Se questo parametro non è NULL, il buffer corrente viene copiato nella matrice. Se questo parametro è NULL, il parametro pBufferSize riceve le dimensioni del buffer necessarie.

Valore restituito

Restituisce uno dei valori seguenti.

Codice restituito Descrizione
E_INVALIDARG
Gli esempi non vengono memorizzati nel buffer. Chiamare ISampleGrabber::SetBufferSamples.
E_OUTOFMEMORY
Il buffer specificato non è abbastanza grande.
E_POINTER
Argomento puntatore NULL.
S_OK
Operazione completata.
VFW_E_NOT_CONNECTED
Il filtro non è connesso.
VFW_E_WRONG_STATE
Il filtro non ha ancora ricevuto esempi. Per recapitare un esempio, eseguire o sospendere il grafico.

 

Commenti

Per attivare il buffering, chiamare ISampleGrabber::SetBufferSamples con un valore TRUE.

Chiamare questo metodo due volte. Nella prima chiamata impostare pBuffer su NULL. Le dimensioni del buffer vengono restituite in pBufferSize. Allocare quindi una matrice e chiamare di nuovo il metodo. Nella seconda chiamata passare le dimensioni della matrice in pBufferSize e passare l'indirizzo della matrice in pBuffer. Se la matrice non è abbastanza grande, il metodo restituisce E_OUTOFMEMORY.

Il parametro pBuffer viene digitato come puntatore lungo , ma il contenuto del buffer dipende dal formato dei dati. Chiamare ISampleGrabber::GetConnectedMediaType per ottenere il tipo di supporto del formato.

Non chiamare questo metodo mentre il grafico del filtro è in esecuzione. Mentre il grafico del filtro è in esecuzione, il filtro Sample Grabber sovrascrive il contenuto del buffer ogni volta che riceve un nuovo esempio. Il modo migliore per usare questo metodo consiste nell'usare la modalità "one-shot", che arresta il grafico dopo aver ricevuto il primo esempio. Per impostare la modalità one-shot, chiamare ISampleGrabber::SetOneShot.

Il filtro non esegue il buffer di esempi di preroll o esempi in cui il membro dwStreamId della struttura AM_SAMPLE2_PROPERTIES è diverso da AM_STREAM_MEDIA.

Nota

Il file di intestazione Qedit.h non è compatibile con intestazioni Direct3D successive alla versione 7.

 

Nota

Per ottenere Qedit.h, scaricare l'aggiornamento Microsoft Windows SDK per Windows Vista e .NET Framework 3.0. Qedit.h non è disponibile nella Microsoft Windows SDK per Windows 7 e .NET Framework 3.5 Service Pack 1.

 

Requisiti

Requisito Valore
Intestazione
Qedit.h
Libreria
Strmiids.lib

Vedi anche

Uso di Sample Grabber

Interfaccia ISampleGrabber