CBaseAllocator, classe

hiérarchie de la classe cbaseallocator

La classe CBaseAllocator est une classe de base abstraite qui implémente un allocateur. Les allocateurs exposent l’interface IMemAllocator .

Un allocateur est un objet qui alloue des mémoires tampons de mémoire. L’Allocator gère une liste de mémoires tampons disponibles. Lorsqu’un client (généralement un filtre) demande une mémoire tampon, l’allocateur en extrait un de la liste. Le client remplit la mémoire tampon avec des données et peut passer la mémoire tampon à un autre objet. Finalement, la mémoire tampon est libérée et l’allocateur la renvoie à la liste des mémoires tampons disponibles.

Chaque mémoire tampon est encapsulée par un objet appelé exemple de support. Les exemples de média sont un moyen de empaqueter des pointeurs vers des blocs de mémoire au sein de l’infrastructure COM (Component Object Model). Les exemples de média exposent l’interface IMediaSample et sont implémentés à l’aide de la classe CMediaSample . Un exemple de support contient un pointeur vers la mémoire tampon associée, accessible en appelant la méthode IMediaSample :: GetPointer . Pour plus d’informations, consultez Samples and allocators.

Pour utiliser cette classe, procédez comme suit :

  1. Appelez la méthode CBaseAllocator :: SetProperties pour spécifier les exigences de mémoire tampon, y compris le nombre de mémoires tampons et la taille de chaque mémoire tampon.
  2. Appelez la méthode CBaseAllocator :: Commit pour allouer les mémoires tampons.
  3. Appelez la méthode CBaseAllocator :: GetBuffer pour récupérer des exemples de supports. Cette méthode se bloque jusqu’à ce que l’exemple suivant devienne disponible.
  4. Lorsque vous avez terminé avec chaque exemple, appelez la méthode IUnknown :: Release sur l’exemple. L’exemple n’est pas supprimé lorsque son décompte de références atteint zéro. Au lieu de cela, l’exemple retourne à la liste libre de l’allocateur.
  5. Quand vous avez fini d’utiliser l’allocateur, appelez la méthode CBaseAllocator ::D ecommit pour libérer de la mémoire pour les mémoires tampons.

La méthode Commit appelle la méthode virtuelle CBaseAllocator :: Alloc, qui alloue la mémoire pour les mémoires tampons. La méthode de dévalidation appelle la méthode virtuelle pure CBaseAllocator :: Free, qui libère la mémoire. Les classes dérivées doivent remplacer ces deux méthodes.

La classe de base CMemAllocator dérive de CBaseAllocator. Les classes de base de filtre utilisent la classe CMemAllocator .

Variables membres protégées Description
m _ lFree Pointeur vers une liste d’exemples de médias disponibles (gratuits).
m _ hSem Sémaphore signalé lorsqu’un exemple devient disponible.
m _ lWaiting Nombre de threads en attente d’exemples.
m _ lCount Nombre de mémoires tampons à fournir.
m _ lAllocated Nombre de mémoires tampons actuellement allouées.
m _ lSize Taille de chaque mémoire tampon.
m _ lAlignment Alignement de chaque mémoire tampon.
m _ lPrefix Préfixe de chaque mémoire tampon.
m _ bChanged Indicateur qui spécifie si les exigences de la mémoire tampon ont été modifiées.
m _ bCommitted Indicateur qui spécifie si l’allocateur a été validé.
m _ bDecommitInProgress Indicateur spécifiant si une opération de dévalidation est en cours.
m _ pNotify Pointeur vers une interface de rappel, qui est appelée lorsque des exemples sont libérés.
m _ fEnableReleaseCallback Indicateur qui spécifie si le rappel de mise en version est activé.
Méthodes protégées Description
Utilis Alloue de la mémoire pour les mémoires tampons. Virtuels.
Méthodes publiques Description
CBaseAllocator Méthode de constructeur.
~ CBaseAllocator Méthode de destructeur.
SetNotify Obsolète.
GetFreeCount Récupère le nombre d’exemples de supports qui ne sont pas utilisés.
NotifySample Libère tous les threads qui attendent des exemples.
SetWaiting Incrémente le nombre de threads en attente.
Méthodes virtuelles pures Description
Gratuit Libère toute la mémoire tampon.
Méthodes IMemAllocator Description
SetProperties Spécifie le nombre de mémoires tampons à allouer et la taille de chaque mémoire tampon.
GetProperties Récupère le nombre de mémoires tampons créées par l’allocateur, ainsi que les propriétés de la mémoire tampon.
Commit Alloue la mémoire pour les mémoires tampons.
Annulation Annule la validation des tampons.
GetBuffer Récupère un exemple de média qui contient une mémoire tampon.
ReleaseBuffer Retourne un échantillon de média à la liste des exemples de médias libres.

Spécifications

Condition requise Valeur
En-tête
Amfilter. h (inclure Flux. h)
Bibliothèque
Strmbase. lib (versions commerciales);
Strmbasd. lib (versions Debug)

Voir aussi

Fourniture d’un allocateur personnalisé