Exemples vidéo
L’exemple d’objet vidéo est une implémentation spécialisée de l’interface IMFSample à utiliser 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ésentateurs EVR personnalisés. Un présentateur alloue des exemples vidéo et les envoie à la méthode IMFTransform::P rocessOutput du mélangeur. 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 vidéo implémente les interfaces suivantes :
Si le paramètre pUnkSurface de MFCreateVideoSampleFromSurface n’est pas NULL, l’exemple vidéo résultant contient une mémoire tampon multimédia unique 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 MR_BUFFER_SERVICE.
Si le paramètre pUnkSurface a la valeur NULL, l’exemple vidéo est créé avec aucune mémoire tampon multimédia. 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 Mémoire tampon surface DirectX.
Ajoutez la mémoire tampon à l’exemple en appelant IMFSample::AddBuffer.
Utilisez cette approche si vous avez besoin que la mémoire surface soit accessible via l’interface IMF2DBuffer .
Rubriques connexes