Méthode CBaseControlVideo.GetStaticImage

[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.]

Méthode virtuelle pure que les classes dérivées remplacent.

Syntaxe

virtual HRESULT GetStaticImage(
   long *pBufferSize,
   long *pDIBImage
) = 0;

Paramètres

pBufferSize

Pointeur vers la taille de la mémoire tampon de sortie.

pDIBImage

Pointeur vers la mémoire tampon de sortie.

Valeur renvoyée

Retourne une valeur HRESULT .

Notes

Par le biais de l’interface IBasicVideo , une application peut demander qu’une copie de l’image actuelle soit remise dans une mémoire tampon (certains convertisseurs peuvent retourner E_NOTIMPL à cela s’ils ne la prennent pas en charge). La classe dérivée détermine comment récupérer l’image. Lorsque l’application appelle CBaseControlVideo::GetStaticImage, elle appelle cette méthode virtuelle pure que la classe dérivée doit remplacer pour l’implémenter. Cela est également appelé par la fonction membre CBaseControlVideo::GetCurrentImage .

La classe fournit une fonction membre d’assistance, CBaseControlVideo::CopyImage, qui peut recevoir un exemple contenant une image, et la fonction membre copie la section appropriée de celle-ci (en fonction du rectangle source actuel) dans la mémoire tampon de sortie fournie par l’application.

L’exemple suivant illustre une implémentation de cette fonction membre dans une classe dérivée. Dans cet exemple, m_pRenderer contient un objet d’une classe dérivée de CBaseVideoRenderer.

// Return a copy of the current image in the video renderer
HRESULT CVideoText::GetStaticImage(long *pBufferSize,long *pDIBImage)
{
    // Get any sample the renderer may be holding.

    IMediaSample *pMediaSample = m_pRenderer->GetCurrentSample();
    if (pMediaSample == NULL) {
        return E_UNEXPECTED;
    }

    // Call the base class helper method to do the work.

    HRESULT hr = CopyImage(pMediaSample,       // Buffer containing image
                      &m_pRenderer->m_mtIn,    // Type representing bitmap
                      pBufferSize,             // Size of buffer for DIB
                     (BYTE*) pDIBImage);       // Data buffer for output

    pMediaSample->Release();
    return hr;
}

Configuration requise

Condition requise Valeur
En-tête
Ctlutil.h (include Streams.h)
Bibliothèque
Strmbase.lib (builds de vente au détail) ;
Strmbasd.lib (builds de débogage)

Voir aussi

CBaseControlVideo, classe