Uurime VoIP-mootorit Mediastreamer2. Osa 3

Artikli sisu on pärit minu zen-kanalist.

Uurime VoIP-mootorit Mediastreamer2. Osa 3

Parandame heligeneraatori näidet

Eelmises osas artiklis Me kirjutasime heligeneraatori rakenduse ja selle abil saime heli arvuti kõlarist. Nüüd keskendume sellele, et meie programm, lõpetades töö, ei tagasta mälu kuhja. Aeg on selgusele jõuda.

Pärast seda, kui skeem ei ole enam vajalik, peab mälu vabastamine algama andmevoo peatamisest. Selleks tuleb skeemilt eemaldada kellaallikas, ticker, kasutades funktsiooni ms_ticker_detach(). Me peame eemaldama tickeri filtri sisendist voidsource:

ms_ticker_detach(ticker, voidsource)

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

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

ms_ticker_destroy(ticker)

Andmevoog on peatatud ja saame alustada selle osade lammutamist, lahutades filtrid. Selleks kasutatakse funktsiooni ms_filter_unlink():

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

argumentide tähendus on sama, mis funktsioonil ms_filter_link().

Eemaldame nüüd juba lahutatud filtrid funktsiooni abil ms_filter_destroy():

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

Nende ridade lisamine meie näitle seni, programmis mälu haldamise seisukohast korrektse lõpetamise.

Nagu näeme, nõudis programmist korrapärane lõpetamine meilt ligikaudu sama palju koodiridu, kui selle alguses, kusjuures iga filtri keskmine oli neli koodirida. See tähendab, et programmi koodimaht suureneb proportsionaalselt kasutatud filtrite arvuga projektis. Kui rääkida tuhandest filtrist skeemis, lisandub teie koodile neli tuhat rida rutiinseid operatsioone nende loomise ja hävitamise protsessiks.

Nüüd teate, kuidas korralikult lõpetada programmi, mis kasutab meedianäitlejat. Järgmistes näidetes, tiheduse huvides, ma "unustan" seda teha. Aga kas teie unustate!

Meedianäitlejate arendajad ei ole ette näinud programmmilisi vahendeid filtrite manipuleerimise hõlbustamiseks skeemide kokkupanekul ja lahtivõtmisel. Siiski on seal abiprogramm, mis võimaldab filtreid kiiresti skeemist lisada/eemaldada.

Tagasi pöördume selle probleemi lahendamise juurde hiljem, kui filtrite arv meie näidetes ületab paari tosina.

Järgmisel artiklis koondame signaali taseme mõõturi skeemi ja õpime lugema mõõtmistulemust filtrist. Hindame mõõtmise täpsust.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster