Méthode CBaseAllocator.GetBuffer
[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 GetBuffer
méthode récupère un exemple de média qui contient une mémoire tampon. Cette méthode implémente la méthode IMemAllocator::GetBuffer .
Syntaxe
HRESULT GetBuffer(
IMediaSample **ppBuffer,
REFERENCE_TIME *pStartTime,
REFERENCE_TIME *pEndTime,
DWORD dwFlags
);
Paramètres
-
ppBuffer
-
Reçoit un pointeur vers l’interface IMediaSample de la mémoire tampon. L’appelant doit libérer l’interface.
-
pStartTime
-
Pointeur vers l’heure de début de l’exemple.
-
pEndTime
-
Pointeur vers l’heure de fin de l’exemple.
-
dwFlags
-
Combinaison au niveau du bit de zéro ou plusieurs indicateurs. La classe de base prend en charge l’indicateur suivant.
Valeur Signification - AM_GBF_NOWAIT
N’attendez pas qu’une mémoire tampon soit disponible.
Valeur renvoyée
Retourne l’une des valeurs HRESULT suivantes.
Code de retour | Description |
---|---|
|
Opération réussie. |
|
L’allocateur n’a pas été commité. |
|
A expiré. |
Notes
Sauf si l’appelant spécifie l’indicateur AM_GBF_NOWAIT dans dwFlags, cette méthode se bloque jusqu’à ce que l’exemple suivant soit disponible.
L’exemple de média récupéré a un pointeur valide vers la mémoire tampon allouée. 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.
Dans la classe de base, les paramètres pStartTime et pEndTime sont ignorés. Les classes dérivées peuvent utiliser ces valeurs. Par exemple, l’allocateur pour le filtre Video Renderer utilise ces valeurs pour synchroniser le basculement entre les surfaces DirectDraw.
Si la méthode doit attendre sur un exemple, elle incrémente le nombre d’objets en attente (CBaseAllocator::m_lCount) et appelle la fonction WaitForSingleObject sur le sémaphore (CBaseAllocator::m_hSem). Lorsqu’un exemple devient disponible, il appelle la méthode CBaseAllocator::ReleaseBuffer sur l’allocateur, ce qui augmente le nombre de sémaphores d’m_lCount (libérant ainsi les threads en attente) et rétablit m_lCount à zéro.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête |
|
Bibliothèque |
|