Partager via


Utilisation des mémoires tampons et des exemples de média MFT

Les MFT de codec transmettent des données multimédias d’un autre à l’aide de mémoires tampons multimédias et d’exemples.

Une mémoire tampon multimédia est un objet COM qui gère un bloc de mémoire, généralement pour contenir des données multimédias. Lorsque des données sont transmises à ou à partir d’un MFT, elles sont toujours transmises sous la forme d’une mémoire tampon multimédia.

Tous les tampons multimédias exposent l’interface IMFMediaBuffer . Cette interface est conçue pour tout type de données. Les mémoires tampons contenant des données vidéo exposent souvent ÉGALEMENT IMF2DBuffer.

Une mémoire tampon multimédia a une taille maximale, qui correspond à la quantité de mémoire allouée pour la mémoire tampon. Pour trouver la taille maximale, appelez IMFMediaBuffer::GetMaxLength. À tout moment, une mémoire tampon multimédia a également une longueur actuelle, c’est-à-dire la quantité de données valides dans la mémoire tampon, allant de zéro octets à la taille maximale. Pour obtenir la longueur actuelle, appelez IMFMediaBuffer::GetCurrentLength. Lorsque la mémoire tampon est créée, la longueur actuelle est égale à zéro. Si vous écrivez des données dans la mémoire tampon, appelez IMFMediaBuffer::SetCurrentLength pour mettre à jour la longueur actuelle.

Pour accéder à la mémoire dans la mémoire tampon, appelez IMFMediaBuffer::Lock. Cette méthode retourne un pointeur vers le début du bloc de mémoire. Lorsque vous avez terminé d’utiliser le pointeur, appelez IMFMediaBuffer::Unlock. La méthode Lock n’est pas un mécanisme de synchronisation de threads ; cela ne garantit pas que d’autres threads ne puissent pas accéder à la mémoire tampon. La méthode Lock est utilisée pour garantir que la mémoire accessible reste valide jusqu’à ce que vous appeliez la méthode Unlock .

Un exemple d’objet multimédia (dans le contexte du Kit de développement logiciel (SDK) Media Foundation) est un objet qui contient une liste ordonnée de zéro ou plusieurs mémoires tampons. Les exemples multimédias exposent l’interface IMFSample .

Pour créer un exemple, appelez la fonction MFCreateSample . Initialement, la liste de mémoires tampons de l’exemple est vide. Pour ajouter une mémoire tampon à la fin de la liste, appelez IMFSample::AddBuffer.

Utilisation des DMO codecs

Utilisation de codecs MFT