Partager via


Méthode IBasicVideo ::GetCurrentImage (control.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 dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est 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 GetCurrentImage méthode récupère l’image actuelle en attente au niveau du convertisseur.

Syntaxe

HRESULT GetCurrentImage(
  [in, out] long *pBufferSize,
  [out]     long *pDIBImage
);

Paramètres

[in, out] pBufferSize

Pointeur vers une variable qui contient la taille de la mémoire tampon que l’appelant passe. Si pDIBImage a la valeur NULL, ce paramètre reçoit la taille de mémoire tampon requise.

[out] pDIBImage

Pointeur vers une mémoire tampon où l’image complète sera stockée au format bitmap indépendant de l’appareil (DIB). Castez le pointeur en un type de pointeur long.

Valeur retournée

Retourne une valeur HRESULT .

Remarques

Le filtre Video Renderer et le convertisseur de vidéo mixage (VMR) implémentent cette méthode différemment.

Video Renderer uniquement :

Cette méthode échoue si le convertisseur utilise l’accélération DirectDraw. Malheureusement, cela dépend de la configuration matérielle de l’utilisateur final. Dans la pratique, cette méthode n’est donc pas fiable.

Suspendez le convertisseur vidéo avant d’appeler cette méthode. Sinon, la méthode retourne VFW_E_NOT_PAUSED. Assurez-vous que l’opération de pause est terminée en appelant IMediaControl ::GetState ; si l’opération de pause n’est pas terminée, la méthode GetCurrentImage retourne E_UNEXPECTED. Selon les données disponibles du filtre source, le convertisseur vidéo n’est pas garanti pour traiter cette demande. Si aucune image n’est disponible, elle retourne E_FAIL.

Convertisseur de mixage vidéo uniquement :

Cette méthode est fiable, que le vmR utilise l’accélération DirectDraw et quel que soit l’état actuel du graphique (en cours d’exécution, arrêté ou suspendu).

Convertisseur vidéo et convertisseur de mixage vidéo :

Pour obtenir la taille de mémoire tampon requise pour contenir l’image, appelez cette méthode avec un pointeur NULL dans le paramètre pDIBImage . La méthode retourne la taille de mémoire tampon requise dans le paramètre pBufferSize . Allouez une mémoire tampon de cette taille et appelez à nouveau la méthode, avec pDIBImage pointant vers la mémoire tampon. Lors du deuxième appel, utilisez pBufferSize pour spécifier la taille de la mémoire tampon. Si la mémoire tampon est trop petite pour contenir l’image complète, la méthode retourne E_OUTOFMEMORY.

Si la méthode réussit, la mémoire tampon est remplie avec l’image DIB entière, y compris la structure BITMAPINFOHEADER , ainsi que les entrées de palette et les masques de bits définis dans la structure BITMAPINFO Win32. Le format de l’image dépend du type fourni par le filtre source et ne peut pas être spécifié à l’avance.

Configuration requise

Condition requise Valeur
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 control.h (include Dshow.h)
Bibliothèque Strmiids.lib

Voir aussi

Codes d’erreur et de réussite

IBasicVideo Interface