Mediastreamer2:n VoIP-moottorin tutkiminen. Osa 3

Artikkelin materiaali on otettu minun zen kanava.

Mediastreamer2:n VoIP-moottorin tutkiminen. Osa 3

Sävygeneraattorin parantaminen esimerkki

Edellisessä статье Kirjoitimme äänigeneraattorisovelluksen ja käytimme sitä poimimaan ääntä tietokoneen kaiuttimesta. Nyt huomaamme, että ohjelmamme ei palauta muistia takaisin kasaan, kun se on valmis. On aika selvittää tämä asia.

Kun emme enää tarvitse piiriä, muistin vapauttamisen pitäisi alkaa pysäyttämällä dataputki. Tätä varten sinun on irrotettava kellolähde ja ticker virtapiiristä toiminnon avulla ms_ticker_detach(). Meidän tapauksessamme meidän on irrotettava ticker suodattimen tulosta tyhjälähde:

ms_ticker_detach(ticker, voidsource)

Muuten, kuljettimen pysäyttämisen jälkeen voimme muuttaa sen piiriä ja ottaa sen takaisin käyttöön yhdistämällä jälleen tickerin.

Nyt voimme poistaa sen käyttämällä toimintoa ms_ticker_destroy():

ms_ticker_destroy(ticker)

Kuljetin on pysähtynyt ja voimme aloittaa sen osien purkamisen irrottamalla suodattimet. Voit tehdä tämän käyttämällä toimintoa ms_filter_unlink():

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

argumenttien tarkoitus on sama kuin funktiolla ms_filter_link().

Poistamme nyt erotetut suodattimet käyttämällä ms_filter_destroy():

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

Lisäämällä nämä rivit esimerkkiimme saamme muistinhallinnan kannalta oikean ohjelman päätteen.

Kuten näemme, ohjelman oikea loppuun saattaminen vaati meitä lisäämään suunnilleen saman määrän koodirivejä kuin alussa, keskimäärin neljä koodiriviä suodatinta kohden. Osoittautuu, että ohjelmakoodin koko kasvaa suhteessa projektissa käytettyjen suodattimien määrään. Jos puhumme tuhannesta suodattimesta piirissä, koodiisi lisätään neljä tuhatta rutiinioperaatiota niiden luomiseksi ja tuhoamiseksi.

Nyt tiedät kuinka lopettaa mediasuoratoistoa käyttävä ohjelma oikein. Seuraavissa esimerkeissä tiiviyden vuoksi "unohdan" tehdä tämän. Mutta et unohda?

Mediastreamerin kehittäjät eivät toimittaneet ohjelmistotyökaluja, jotka helpottaisivat suodattimien käsittelyä piirejä koottaessa/purkattaessa. Siitä huolimatta on olemassa apuohjelma, jonka avulla voit nopeasti asettaa/irrottaa suodattimen piiristä.

Palaamme tämän ongelman ratkaisemiseen myöhemmin, kun esimerkeissämme olevien suodattimien määrä ylittää pari tusinaa.

Seuraava статье Kokoamme signaalitasomittarin piirin ja opimme lukemaan mittaustuloksen suodattimesta. Arvioidaan mittaustarkkuus.

Lähde: will.com

Lisää kommentti