Wir untersuchen die VoIP-Engine Mediastreamer2. Teil 3

Der Artikelinhalt stammt von meinem Zen-Kanal.

Wir untersuchen die VoIP-Engine Mediastreamer2. Teil 3

Wir verbessern das Beispiel des Tondetektors

Im vorherigen Artikel Wir haben eine Anwendung fĂŒr den Tondetektor geschrieben und damit den Ton vom Computerlautsprecher extrahiert. Jetzt wollen wir darauf achten, dass unser Programm, wenn es seine Arbeit beendet, den Speicher nicht zurĂŒck in den Heap gibt. Es ist Zeit, Klarheit in dieser Angelegenheit zu schaffen.

Nachdem das Schema fĂŒr uns nicht mehr benötigt wird, muss die Speicherfreigabe mit dem Stoppen der Datenpipeline beginnen. DafĂŒr muss die Taktquelle vom Schema ĂŒber die Funktion ms_ticker_detach()getrennt werden. In unserem Fall mĂŒssen wir den Ticker vom Eingang des Filters voidsource:

ms_ticker_detach(ticker, voidsource)

Übrigens können wir nach dem Stoppen der Pipeline ihr Schema Ă€ndern und sie erneut aktivieren, indem wir den Ticker wieder anschließen.

Jetzt können wir ihn entfernen, indem wir die Funktion ms_ticker_destroy():

ms_ticker_destroy(ticker)

Die Pipeline ist gestoppt und wir können mit dem Zerlegen ihrer Teile beginnen, indem wir die Filter voneinander trennen. DafĂŒr verwenden wir die Funktion ms_filter_unlink():

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

Die Argumente haben die gleiche Aufgabe wie die Funktion ms_filter_link().

Wir entfernen nun die bereits entkoppelten Filter mithilfe von ms_filter_destroy():

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

Wenn wir diese Zeilen zu unserem Beispiel hinzufĂŒgen, erhalten wir einen korrekten Programmabschluss in Bezug auf die Speicherverwaltung.

Wie wir sehen, hat der korrekte Abschluss des Programms von uns verlangt, etwa ebenso viele Zeilen Code hinzuzufĂŒgen, wie wir zu Beginn hatten, wobei im Durchschnitt fĂŒr jeden Filter vier Zeilen Code erforderlich waren. Das bedeutet, dass die GrĂ¶ĂŸe des Programmcodes proportional zur Anzahl der im Projekt verwendeten Filter zunehmen wird. Wenn man von tausend Filtern im Schema spricht, kommen viertausend Zeilen routinemĂ€ĂŸiger Operationen zur Erstellung und Zerstörung zu Ihrem Code hinzu.

Jetzt wissen Sie, wie man ein Programm, das Mediastreamer verwendet, korrekt abschließt. In den nĂ€chsten Beispielen werde ich, um die Darstellung zu komprimieren, "vergessen", dies zu tun. Aber Sie werden es nicht vergessen, oder?

Die Entwickler des Mediastreamers haben keine Softwaremittel zur Erleichterung der Manipulationen mit Filtern beim Zusammenbauen/Zerlegen von Schemas vorgesehen. Dennoch gibt es einen Helfer, der es ermöglicht, Filter schnell in das Schema einzufĂŒgen oder herauszunehmen.

Wir werden spĂ€ter zu dieser Frage zurĂŒckkehren, wenn die Anzahl der Filter in unseren Beispielen mehrere Dutzend ĂŒberschreitet.

Im nÀchsten Artikel Wir werden das Schema des Signalpegeltesters erstellen und lernen, das Messergebnis aus dem Filter abzulesen. Wir werden die Messgenauigkeit bewerten.

Quelle: habr.com

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster