Artikli materjal on saadud minu .

Parandame tonal generaatori näidet
Eelnevas 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 Koostame signaalitaseme mõõturi skeemi ja õpime mõõtmistulemust filtrist lugema. Hindame mõõtmise täpsust.
Allikas: habr.com
