Artikli sisu on pÀrit minu .

Parandame heligeneraatori nÀidet
Eelmises osas 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 koondame signaali taseme mÔÔturi skeemi ja Ôpime lugema mÔÔtmistulemust filtrist. Hindame mÔÔtmise tÀpsust.
Allikas: habr.com
