Méthode ISampleGrabber::GetCurrentBuffer
[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.]
Notes
[Déconseillé. Cette API peut être supprimée des versions ultérieures de Windows.]
La méthode GetCurrentBuffer récupère une copie de la mémoire tampon associée à l’exemple le plus récent.
Syntaxe
HRESULT GetCurrentBuffer(
[in, out] long *pBufferSize,
[out] long *pBuffer
);
Paramètres
-
pBufferSize [in, out]
-
Pointeur vers la taille de la mémoire tampon. Si pBuffer a la valeur NULL, ce paramètre reçoit la taille de mémoire tampon requise, en octets. Si pBuffer n’a pas la valeur NULL, définissez ce paramètre sur la taille de la mémoire tampon, en octets. Lors de la sortie, le paramètre reçoit le nombre d’octets qui ont été copiés dans la mémoire tampon. Cette valeur peut être inférieure à la taille de la mémoire tampon.
-
pBuffer [out]
-
Pointeur vers un tableau d’octets de taille pBufferSize ou NULL. Si ce paramètre n’est pas NULL, la mémoire tampon actuelle est copiée dans le tableau. Si ce paramètre a la valeur NULL, le paramètre pBufferSize reçoit la taille de mémoire tampon requise.
Valeur renvoyée
Retourne l’une des valeurs suivantes.
Code de retour | Description |
---|---|
|
Les exemples ne sont pas mis en mémoire tampon. Appelez ISampleGrabber::SetBufferSamples. |
|
La mémoire tampon spécifiée n’est pas assez grande. |
|
Argument pointeur NULL . |
|
Opération réussie. |
|
Le filtre n’est pas connecté. |
|
Le filtre n’a pas encore reçu d’échantillons. Pour fournir un exemple, exécutez ou suspendez le graphique. |
Notes
Pour activer la mise en mémoire tampon, appelez ISampleGrabber::SetBufferSamples avec la valeur TRUE.
Appelez cette méthode deux fois. Lors du premier appel, définissez pBuffer sur NULL. La taille de la mémoire tampon est retournée dans pBufferSize. Ensuite, allouez un tableau et appelez à nouveau la méthode. Lors du deuxième appel, passez la taille du tableau dans pBufferSize et transmettez l’adresse du tableau dans pBuffer. Si le tableau n’est pas assez grand, la méthode retourne E_OUTOFMEMORY.
Le paramètre pBuffer est typé en tant que pointeur long , mais le contenu de la mémoire tampon dépend du format des données. Appelez ISampleGrabber::GetConnectedMediaType pour obtenir le type de média du format.
N’appelez pas cette méthode pendant l’exécution du graphique de filtre. Pendant l’exécution du graphe de filtres, le filtre Sample Grabber remplace le contenu de la mémoire tampon chaque fois qu’il reçoit un nouvel exemple. La meilleure façon d’utiliser cette méthode consiste à utiliser le « mode one shot », qui arrête le graphique après avoir reçu le premier échantillon. Pour définir le mode one shot, appelez ISampleGrabber::SetOneShot.
Le filtre ne met pas en mémoire tampon les exemples de pré-inscription, ni les exemples dans lesquels le membre dwStreamId de la structure AM_SAMPLE2_PROPERTIES est autre chose que AM_STREAM_MEDIA.
Notes
Le fichier d’en-tête Qedit.h n’est pas compatible avec les en-têtes Direct3D ultérieurs à la version 7.
Notes
Pour obtenir Qedit.h, téléchargez Microsoft Windows SDK Update pour Windows Vista et .NET Framework 3.0. Qedit.h n’est pas disponible dans le Microsoft Windows SDK pour Windows 7 et .NET Framework 3.5 Service Pack 1.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête |
|
Bibliothèque |
|
Voir aussi