Exemples vidéo
L’exemple d’objet vidéo est une implémentation spécialisée de l’interface IMFSample pour une utilisation avec le convertisseur vidéo amélioré (EVR). Pour créer une instance de cet objet, appelez la fonction MFCreateVideoSampleFromSurface . La fonction prend un pointeur vers une surface Direct3D et retourne un pointeur vers l’interface IMFSample . Les types d’objets suivants doivent allouer des exemples à l’aide de cette fonction :
Présentateur EVR personnalisé. Un présentateur alloue des échantillons vidéo et les envoie à la méthode IMFTransform ::P rocessoutput de mixer. Pour plus d’informations, consultez Comment écrire un présentateur EVR.
Décodeurs vidéo qui prennent en charge l’accélération vidéo. Pour plus d’informations, consultez prise en charge de DXVA 2,0 dans Media Foundation.
L’exemple d’objet Video implémente les interfaces suivantes :
Si le paramètre pUnkSurface de MFCreateVideoSampleFromSurface est non null, l’exemple de vidéo qui en résulte contient une seule mémoire tampon de média qui encapsule la surface Direct3D. Cet objet de mémoire tampon a des fonctionnalités limitées :
La méthode IMFMediaBuffer :: Lock de la mémoire tampon retourne E _ NOTIMPL.
La mémoire tampon n’implémente pas l’interface IMF2DBuffer .
La seule façon d’accéder à la surface à partir de la mémoire tampon consiste à appeler IMFGetService :: GetServiceà l’aide de l’identificateur de service _ service de mémoire tampon Mr _ .
Si le paramètre pUnkSurface est null, l’exemple de vidéo est créé avec des tampons de média nuls. Pour ajouter un tampon à l’exemple, procédez comme suit :
Créez une surface Direct3D.
Créez une mémoire tampon de surface en appelant MFCreateDXSurfaceBuffer. Pour plus d’informations, consultez DirectX surface buffer.
Ajoutez la mémoire tampon à l’exemple en appelant IMFSample :: AddBuffer.
Utilisez cette approche si vous avez besoin que la mémoire de surface soit accessible par le biais de l’interface IMF2DBuffer .