Wir untersuchen die Mediastreamer2 VoIP-Engine. Teil 3

Artikelmaterial aus meinem Zen-Kanal .



Beispiel für den Tongenerator verbessern


In einem früheren Artikel haben wir eine Tongeneratoranwendung geschrieben und damit Ton aus einem Computerlautsprecher extrahiert. Jetzt werden wir darauf achten, dass unser Programm nach Abschluss der Arbeit keinen Speicher mehr auf den Heap zurückgibt. Es ist an der Zeit, dieses Problem zu klären.


Nachdem wir die Schaltung nicht mehr benötigen, sollte die Freigabe des Speichers mit dem Stoppen der Datenpipeline beginnen. Dazu müssen Sie die Taktquelle und den Ticker mit der Funktion ms_ticker_detach () vom Stromkreis trennen . In unserem Fall müssen wir den Ticker vom Eingang des Voidsource- Filters trennen :


ms_ticker_detach(ticker, voidsource)

Übrigens, nachdem der Förderer angehalten hat, können wir sein Schema ändern und ihn wieder in Betrieb nehmen, indem wir den Ticker wieder verbinden.


Jetzt können wir es mit der Funktion ms_ticker_destroy () entfernen :


ms_ticker_destroy(ticker)

Der Förderer wird angehalten und wir können ihn durch Trennen der Filter zerlegen. Hierfür wird die Funktion ms_filter_unlink () verwendet :


ms_filter_unlink(voidsource, 0, dtmfgen, 0);
ms_filter_unlink(dtmfgen, 0, snd_card_write, 0);

Der Zweck der Argumente ist der gleiche wie der der Funktion ms_filter_link () .


, , c ms_filter_destroy():


ms_filter_destroy(voidsource);
ms_filter_destroy(dtmfgen);
ms_filter_destroy(snd_card_write);

, , .


, , . , . , .


. , , "" . - ?


Die Entwickler des Medienstreamers stellten keine Softwaretools zur Verfügung, um die Manipulation von Filtern während der Montage / Demontage von Schaltkreisen zu erleichtern. Trotzdem gibt es einen Helfer, mit dem Sie schnell einen Filter in den Stromkreis einsetzen / daraus entfernen können.


Wir werden später zur Lösung dieses Problems zurückkehren, wenn die Anzahl der Filter in unseren Beispielen ein paar Dutzend überschreitet.


Im nächsten Artikel werden wir die Schaltung des Signalpegelmessers zusammenbauen und lernen, wie das Messergebnis vom Filter abgelesen wird. Schätzen Sie die Genauigkeit der Messung.


All Articles