Schémas d’allocation
Le diagramme suivant représente un seul allocateur affecté à une utilisation par trois filtres. Aucune allocation n’est requise dans les filtres de transformation ou de récepteur, car le système n’a pas affecté de handle d’allocateur à ces filtres.
Le filtre source alloue un frame, le remplit de données et l’envoie au filtre suivant. Le filtre de transformation effectue une transformation de données sur place et envoie la trame au filtre suivant. Lorsque le filtre récepteur termine l’opération d’E/S, le filtre source libère ou réutilise l’image. Le contrôle de flux est maintenu dans ce graphique de filtre par le nombre total d’images en attente qui peuvent être allouées à partir de l’allocateur récepteur et par le taux d’achèvement de l’opération d’E/S.
Le diagramme suivant représente une configuration d’allocateur dans laquelle un frame source est routé vers plusieurs récepteurs de destination.
Dans le diagramme, l’enregistreur de fichiers peut représenter un signal sortant vers un fichier, et l’appareil un son carte auquel l’audio est envoyé.
Ce graphique de filtre contient deux allocateurs : l’allocateur de la transformation et l’allocateur de l’appareil. Le filtre source alloue une trame à partir de l’allocateur de transformation, la remplit de données et l’envoie au filtre de transformation, puis au writer de fichiers. À la réception d’une trame, le filtre de transformation alloue une trame à partir de l’allocateur de l’appareil, effectue une transformation des données dans le nouveau frame et envoie ce frame à l’appareil.
Le contrôle de flux est maintenu dans ce graphique de filtre par le nombre total d’images en attente qui peuvent être allouées à partir des allocateurs et par le taux d’achèvement des opérations d’E/S. Notez qu’il doit y avoir un allocateur distinct pour chaque liste distincte de segments source/récepteur créés par le biais de broches de connexion. Si des allocateurs distincts ne sont pas présents, un segment donné peut consommer toutes les trames disponibles, sans en laisser pour le segment suivant, ce qui peut nécessiter une ou plusieurs trames pour traiter les données créées par le segment précédent.