Condividi tramite


Metodo IMemAllocator::GetBuffer (strmif.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 metodo GetBuffer recupera un esempio di supporto che contiene un buffer vuoto.

Sintassi

HRESULT GetBuffer(
  [out] IMediaSample   **ppBuffer,
  [in]  REFERENCE_TIME *pStartTime,
  [in]  REFERENCE_TIME *pEndTime,
  [in]  DWORD          dwFlags
);

Parametri

[out] ppBuffer

Riceve un puntatore all'interfaccia IMediaSample del buffer. Il chiamante deve rilasciare l'interfaccia.

[in] pStartTime

Puntatore all'ora di inizio dell'esempio o NULL.

[in] pEndTime

Puntatore all'ora di fine dell'esempio o NULL.

[in] dwFlags

Combinazione bit per bit di zero o più dei flag seguenti:

Flag Descrizione
AM_GBF_NOTASYNCPOINT Questo esempio non è un punto di sincronizzazione. Le modifiche al formato dinamico non sono consentite in questo esempio. Quando viene chiamato in Overlay Mixer o VMR, questo flag implica che il buffer restituito conterrà un'immagine identica all'ultima immagine recapitata.
AM_GBF_PREVFRAMESKIPPED Questo esempio è il primo dopo una discontinuità. Solo il renderer video usa questo flag.
AM_GBF_NOWAIT Non attendere che un buffer diventi disponibile.
AM_GBF_NODDSURFACELOCK Usato con il filtro del renderer di combinazione video 7 per richiedere una superficie DirectDraw sbloccata. Per altre informazioni, vedere Uso delle destinazioni di rendering Direct3D.

Valore restituito

Restituisce un valore HRESULT . I valori possibili includono quelli illustrati nella tabella seguente.

Codice restituito Descrizione
S_OK
Operazione completata.
VFW_E_NOT_COMMITTED
Allocatore viene decommesso.
VFW_E_TIMEOUT
Timeout.

Commenti

Per impostazione predefinita, questo metodo si blocca finché non è disponibile un campione gratuito o l'allocatore non viene decommesso. Se il chiamante specifica il flag AM_GBF_NOWAIT e non è disponibile alcun esempio, l'allocatore può restituire immediatamente con un valore restituito di VFW_E_TIMEOUT. Tuttavia, gli allocatori non sono necessari per supportare questo flag.

L'esempio restituito in ppBuffer ha un puntatore del buffer valido. Il chiamante è responsabile dell'impostazione di qualsiasi altra proprietà nell'esempio, ad esempio timestamp, tempi multimediali o proprietà del punto di sincronizzazione. Per altre informazioni, vedere IMediaSample.

I parametri pStartTime e pEndTime non vengono applicati all'esempio. L'allocatore può usare questi valori per determinare quale buffer recupera. Ad esempio, il filtro Rendering video usa questi valori per sincronizzare il passaggio tra le superfici DirectDraw. Per impostare il timestamp nell'esempio, chiamare il metodo IMediaSample::SetTime .

È necessario chiamare il metodo IMemAllocator::Commit prima di chiamare questo metodo. Questo metodo ha esito negativo dopo la chiamata al metodo IMemAllocator::D ecommit .

Requisiti

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

Vedi anche

Codici di errore e di esito positivo

Interfaccia IMemAllocator