Partager via


Classe CMediaSample

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est 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.]

hiérarchie de classes cmediasample

La CMediaSample classe définit un exemple multimédia qui prend en charge l’interface IMediaSample2 . L’exemple multimédia contient un pointeur vers une mémoire tampon et diverses propriétés stockées en tant que variables membres protégées.

Les exemples multimédias sont créés par des allocateurs, qui sont dérivés de la classe CBaseAllocator . Le CMediaSample constructeur reçoit un pointeur vers une mémoire tampon allouée, ainsi que la taille de la mémoire tampon. Les autres propriétés sont généralement définies et récupérées via les méthodes d’interface IMediaSample .

Le cycle de vie d’un exemple multimédia diffère de celui de la plupart des objets COM :

  • L’allocateur contient une liste d’exemples gratuits. Lorsqu’un filtre a besoin d’un nouvel exemple, il appelle la méthode IMemAllocator::GetBuffer de l’allocator. L’allocateur récupère un exemple à partir de sa liste libre, incrémente le nombre de références de l’exemple et retourne un pointeur vers l’exemple.
  • Une fois le filtre terminé avec l’exemple, il appelle la méthode IUnknown::Release sur l’exemple. Contrairement à la plupart des objets, l’exemple ne se supprime pas lui-même lorsque son nombre de références atteint zéro. Au lieu de cela, il appelle la méthode IMemAllocator::ReleaseBuffer sur l’allocator, et l’allocateur retourne l’exemple dans sa liste libre.
  • L’allocateur ne détruit pas les échantillons tant que la méthode IMemAllocator::D ecommit n’est pas appelée.
Variables membres protégées Description
m_dwFlags Exemples d’indicateurs de propriété.
m_dwTypeSpecificFlags Indicateurs spécifiques au type.
m_pBuffer Pointeur vers la mémoire tampon qui contient les données multimédias.
m_lActual Longueur des données valides dans la mémoire tampon, en octets.
m_cbBuffer Taille de la mémoire tampon, en octets.
m_pAllocator Pointeur vers l’outil d’allocation qui a créé cet exemple.
m_pNext Pointeur vers l’exemple suivant dans la liste des exemples de l’allocator.
m_Start Exemple d’heure de début.
m_End Exemple d’heure de fin.
m_MediaStart Heure de début du média.
m_MediaEnd Heure d’arrêt du média.
m_pMediaType Pointeur vers le type de média, si le type a changé par rapport à l’exemple précédent dans le flux de données.
m_dwStreamId Identificateur de flux.
Variables membres publiques Description
m_cRef Nombre de références.
Méthodes publiques Description
CMediaSample Méthode du constructeur.
~ CMediaSample Méthode de destructeur. Virtuel.
SetPointer Définit le pointeur vers la mémoire tampon.
Méthodes IMediaSample Description
GetPointer Récupère un pointeur de lecture/écriture vers la mémoire tampon.
GetSize Récupère la taille de la mémoire tampon.
GetTime Récupère les heures de flux auxquelles cet exemple doit commencer et se terminer.
SetTime Définit les heures de flux auxquelles cet exemple doit démarrer et se terminer.
IsSyncPoint Détermine si le début de l’exemple est un point de synchronisation.
SetSyncPoint Spécifie si le début de cet exemple est un point de synchronisation.
IsPreroll Détermine si cet exemple est un exemple de pré-inscription.
SetPreroll Spécifie si cet exemple est un exemple de préroll.
GetActualDataLength Récupère la longueur des données valides dans la mémoire tampon.
SetActualDataLength Définit la longueur des données valides dans la mémoire tampon.
GetMediaType Récupère le type de média, si le type de média diffère de l’exemple précédent.
SetMediaType Définit le type de média pour l’exemple.
IsDiscontinuity Détermine si cet exemple représente une interruption dans le flux de données.
SetDiscontinuity Spécifie si cet exemple représente une interruption dans le flux de données.
GetMediaTime Récupère les heures de média pour cet exemple.
SetMediaTime Définit les heures de média pour cet exemple.
Méthodes IMediaSample2 Description
GetProperties Récupère les propriétés de l’exemple.
SetProperties Définit les propriétés de l’exemple.

Configuration requise

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