Le matériel de l'article est tiré de mon
Amélioration de l'exemple du générateur de sons
Dans le précédent
Une fois que nous n’avons plus besoin du circuit, la libération de mémoire doit commencer par arrêter le pipeline de données. Pour ce faire, vous devez déconnecter la source d'horloge et le ticker du circuit à l'aide de la fonction ms_ticker_detach(). Dans notre cas, il faut déconnecter le ticker de l'entrée du filtre source vide:
ms_ticker_detach(ticker, voidsource)
D'ailleurs, après avoir arrêté le convoyeur, nous pouvons changer son circuit et le remettre en service, en connectant à nouveau le téléscripteur.
Maintenant nous pouvons le supprimer en utilisant la fonction ms_ticker_destroy():
ms_ticker_destroy(ticker)
Le convoyeur s'est arrêté et nous pouvons commencer à en démonter des parties, en débranchant les filtres. Pour ce faire, utilisez la fonction ms_filter_unlink():
ms_filter_unlink(voidsource, 0, dtmfgen, 0);
ms_filter_unlink(dtmfgen, 0, snd_card_write, 0);
le but des arguments est le même que pour la fonction ms_filter_link().
Nous supprimons les filtres désormais séparés en utilisant ms_filter_destroy():
ms_filter_destroy(voidsource);
ms_filter_destroy(dtmfgen);
ms_filter_destroy(snd_card_write);
En ajoutant ces lignes à notre exemple, nous obtiendrons une fin de programme correcte du point de vue de la gestion mémoire.
Comme nous pouvons le constater, la bonne réalisation du programme nous a demandé d'ajouter à peu près le même nombre de lignes de code qu'au début, avec une moyenne de quatre lignes de code par filtre. Il s'avère que la taille du code du programme augmentera proportionnellement au nombre de filtres utilisés dans le projet. Si nous parlons d'un millier de filtres dans le circuit, alors quatre mille lignes d'opérations de routine pour les créer et les détruire seront ajoutées à votre code.
Vous savez maintenant comment terminer correctement un programme à l'aide d'un streamer multimédia. Dans les exemples suivants, par souci de compacité, j'oublierai de le faire. Mais tu n'oublieras pas ?
Les développeurs du Media Streamer n'ont pas fourni d'outils logiciels pour faciliter la manipulation des filtres lors du montage/démontage des circuits. Néanmoins, il existe une aide qui permet d'insérer/retirer rapidement un filtre du circuit.
Nous reviendrons sur la résolution de ce problème plus tard, lorsque le nombre de filtres dans nos exemples dépassera quelques dizaines.
Suivant
Source: habr.com