Condividi tramite


Metodo IBasicVideo::GetCurrentImage (control.h)

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine 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, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Il GetCurrentImage metodo recupera l'immagine corrente in attesa del renderer.

Sintassi

HRESULT GetCurrentImage(
  [in, out] long *pBufferSize,
  [out]     long *pDIBImage
);

Parametri

[in, out] pBufferSize

Puntatore a una variabile che contiene le dimensioni del buffer passato dal chiamante. Se pDIBImage è NULL, questo parametro riceve le dimensioni del buffer necessarie.

[out] pDIBImage

Puntatore a un buffer in cui l'immagine completa verrà archiviata in formato BITMAP (DIB) indipendente dal dispositivo. Eseguire il cast del puntatore a un tipo puntatore lungo.

Valore restituito

Restituisce un valore HRESULT .

Commenti

Il filtro Del renderer video e il renderer di missaggio video (VMR) implementano questo metodo in modo diverso.

Solo renderer video:

Questo metodo ha esito negativo se il renderer usa l'accelerazione DirectDraw. Sfortunatamente, ciò dipende dalla configurazione hardware dell'utente finale, quindi in pratica questo metodo non è affidabile.

Sospendere il renderer video prima di chiamare questo metodo. In caso contrario, il metodo restituisce VFW_E_NOT_PAUSED. Assicurarsi che l'operazione di sospensione sia stata completata chiamando IMediaControl::GetState; se l'operazione di sospensione non è stata completata, il metodo GetCurrentImage restituisce E_UNEXPECTED. A seconda dei dati disponibili per il filtro di origine, il renderer video non è garantito per il servizio di questa richiesta. Se non è disponibile alcuna immagine, restituisce E_FAIL.

Solo renderer di missaggio video:

Questo metodo è affidabile indipendentemente dal fatto che vmR usi l'accelerazione DirectDraw e indipendentemente dallo stato corrente del grafico (in esecuzione, arrestato o sospeso).

Renderer video e renderer di missaggio video:

Per ottenere le dimensioni del buffer necessarie per contenere l'immagine, chiamare questo metodo con un puntatore NULL nel parametro pDIBImage . Il metodo restituisce le dimensioni del buffer necessarie nel parametro pBufferSize . Allocare un buffer di tale dimensione e chiamare di nuovo il metodo, con pDIBImage che punta al buffer. Nella seconda chiamata usare pBufferSize per specificare le dimensioni del buffer. Se il buffer è troppo piccolo per contenere l'immagine completa, il metodo restituisce E_OUTOFMEMORY.

Se il metodo ha esito positivo, il buffer viene riempito con l'intera immagine DIB, inclusa la struttura BITMAPINFOHEADER , oltre a eventuali voci di tavolozza e maschere di bit definite nella struttura BITMAPINFO Win32. Il formato dell'immagine dipende dal tipo fornito dal filtro di origine e non può essere specificato in anticipo.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione control.h (include Dshow.h)
Libreria Strmiids.lib

Vedi anche

Codici di errore e di esito positivo

Interfaccia IBasicVideo