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 |
---|---|
|
Opération réussie. |
|
L’allocateur est décompressé. |
|
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 |