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 |
---|---|
|
Operazione completata. |
|
Allocatore viene decommesso. |
|
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 |