Uurime VoIP-mootorit Mediastreamer2. Osa 3

Artikli materjal on saadud minu Dzen-kanalist.

Uurime VoIP-mootorit Mediastreamer2. Osa 3

Parandame tonal generaatori näidet

Eelnevas artiklis Me kirjutasime tonal generaatori rakenduse ja selle abil saime heli arvuti kõlarist. Nüüd pöörame tähelepanu sellele, et meie programm lõpetades ei tagasta mälu tagasi kuhja. On aeg selgust tuua.

Kui skeem enam ei ole vajalik, peab mälu vabastamine algama andmevoo peatamisest. Selleks tuleb skeemist lahti ühendada kellageneraator, kas läbi funktsiooni ms_ticker_detach(). Meie puhul peame kellageneraatori filtreerimise sisendist lahti ühendama voidsource:

ms_ticker_detach(ticker, voidsource)

Muide, pärast andmevoo peatamist saame muuta skeemi ja uuesti tööle panna, ühendades kellageneraatori tagasi.

Nüüd saame selle eemaldada funktsiooni ms_ticker_destroy():

ms_ticker_destroy(ticker)

Andmevoog on peatatud ja saame alustada selle osade lahtivõtmist, filtreid lahti ühendades. Selleks kasutatakse funktsiooni ms_filter_unlink():

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

argumentide määramine on sama, mis funktsioonil ms_filter_link().

Eemaldame nüüd juba lahti ühendatud filtrid kasutades ms_filter_destroy():

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

Need read lisades meie näitele saame korraliku mälu juhtimise järgi programmi lõpetamise.

Nagu näeme, nõudis programmi õige lõpetamine, et lisada umbes sama palju koodiridasid kui alguses, ja keskmiselt pidi igale filtrile olema neli koodirida. Tundub, et programmi kood suurendab öö jooksul proportsionaalselt projekti kasutatud filtrite arvuga. Kui rääkida tuhandest filtrist skeemis, siis lisandub teie koodile neli tuhat rida rutiinselt opereerimist nende loomise ja hävitamise kohta.

Nüüd teate, kuidas õigesti lõpetada programmi, mis kasutab meediastrimmerit. Järgmistes näidetes, kokkuvõtte huvides, "unustan" seda teha. Aga teie ei unusta, eks?

Meediastrimmeri arendajad ei ole ette näinud programme, mis lihtsustaksid filtrite käsitlemist skeemide kokkupanemisel / lahtivõtmisel. Sellegipoolest on seal abivahend, mis võimaldab kiirelt filtreid skeemist sisse ja välja panna.

Tagastame sellele küsimusele hiljem, kui meie näidetes on filtreid üle paari kümne.

Järgmises artiklis Koostame signaalitaseme mõõturi skeemi ja õpime mõõtmistulemust filtrist lugema. Hindame mõõtmise täpsust.

Allikas: habr.com

Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster