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 |
---|---|
|
Gli esempi non vengono memorizzati nel buffer. Chiamare ISampleGrabber::SetBufferSamples. |
|
Il buffer specificato non è abbastanza grande. |
|
Argomento puntatore NULL. |
|
Operazione completata. |
|
Il filtro non è connesso. |
|
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 |
|
Libreria |
|
Vedi anche