CBaseAllocator, classe

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 :
- 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.
- Appelez la méthode CBaseAllocator :: Commit pour allouer les mémoires tampons.
- 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.
- 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.
- 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 |
|
| Bibliothèque |
|