Exploration du moteur VoIP Mediastreamer2. Partie 3

Le matériel de l'article est tiré de mon canal zen.

Exploration du moteur VoIP Mediastreamer2. Partie 3

Amélioration de l'exemple du générateur de sons

Dans le précédent article Nous avons écrit une application de génération de sons et l'avons utilisée pour extraire le son d'un haut-parleur d'ordinateur. Nous remarquerons maintenant que notre programme ne renvoie pas la mémoire au tas une fois terminé. Il est temps de clarifier cette question.

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 article Nous assemblerons un circuit de mesure du niveau de signal et apprendrons à lire le résultat de la mesure à partir du filtre. Évaluons la précision de la mesure.

Source: habr.com

Ajouter un commentaire