Méthode IMemAllocator::GetBuffer (strmif.h)

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

La méthode GetBuffer récupère un exemple de média qui contient une mémoire tampon vide.

Syntaxe

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

Paramètres

[out] ppBuffer

Reçoit un pointeur vers l’interface IMediaSample de la mémoire tampon. L’appelant doit libérer l’interface.

[in] pStartTime

Pointeur vers l’heure de début de l’exemple, ou NULL.

[in] pEndTime

Pointeur vers l’heure de fin de l’exemple, ou NULL.

[in] dwFlags

Combinaison au niveau du bit de zéro ou plus des indicateurs suivants :

Indicateur Description
AM_GBF_NOTASYNCPOINT Cet exemple n’est pas un point de synchronisation. Les modifications de format dynamique ne sont pas autorisées sur cet exemple. Lorsqu’il est appelé sur overlay Mixer ou VMR, cet indicateur implique que la mémoire tampon retournée contiendra une image identique à la dernière image remise.
AM_GBF_PREVFRAMESKIPPED Cet exemple est le premier après une discontinuité. (Seul le convertisseur vidéo utilise cet indicateur.)
AM_GBF_NOWAIT N’attendez pas qu’une mémoire tampon soit disponible.
AM_GBF_NODDSURFACELOCK Utilisé avec le filtre 7 du renderer de mixage vidéo pour demander une surface DirectDraw déverrouillée. Pour plus d’informations, consultez Utilisation des cibles de rendu Direct3D.

Valeur renvoyée

Retourne une valeur HRESULT . Les valeurs possibles incluent celles indiquées dans le tableau suivant.

Code de retour Description
S_OK
Opération réussie.
VFW_E_NOT_COMMITTED
L’allocateur est décompressé.
VFW_E_TIMEOUT
A expiré.

Notes

Par défaut, cette méthode se bloque jusqu’à ce qu’un exemple gratuit soit disponible ou que l’allocateur soit décompressé. Si l’appelant spécifie l’indicateur AM_GBF_NOWAIT et qu’aucun échantillon n’est disponible, l’allocateur peut retourner immédiatement avec une valeur de retour de VFW_E_TIMEOUT. Toutefois, les allocateurs ne sont pas nécessaires pour prendre en charge cet indicateur.

L’exemple retourné dans ppBuffer a un pointeur de mémoire tampon valide. L’appelant est chargé de définir toutes les autres propriétés de l’exemple, telles que les horodatages, les heures de média ou la propriété de point de synchronisation. (Pour plus d’informations, consultez IMediaSample.)

Les paramètres pStartTime et pEndTime ne sont pas appliqués à l’exemple. L’allocateur peut utiliser ces valeurs pour déterminer la mémoire tampon qu’il récupère. Par exemple, le filtre Video Renderer utilise ces valeurs pour synchroniser le basculement entre les surfaces DirectDraw. Pour définir l’horodatage sur l’exemple, appelez la méthode IMediaSample::SetTime .

Vous devez appeler la méthode IMemAllocator::Commit avant d’appeler cette méthode. Cette méthode échoue après l’appel de la méthode IMemAllocator::D ecommit .

Configuration requise

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête strmif.h (include Dshow.h)
Bibliothèque Strmiids.lib

Voir aussi

Codes d’erreur et de réussite

IMemAllocator, interface