Gradivo članka je vzeto iz mojega
Primer izboljšave generatorja tonov
V prejšnjem
Ko vezja ne potrebujemo več, se mora sproščanje pomnilnika začeti z zaustavitvijo podatkovnega cevovoda. Če želite to narediti, morate s funkcijo odklopiti vir ure in ticker iz vezja ms_ticker_detach(). V našem primeru moramo odklopiti ticker z vhoda filtra voidsource:
ms_ticker_detach(ticker, voidsource)
Mimogrede, po zaustavitvi tekočega traku lahko spremenimo njegovo vezje in ga ponovno vključimo v delovanje, pri čemer ponovno povežemo ticker.
Zdaj ga lahko odstranimo s funkcijo ms_ticker_destroy():
ms_ticker_destroy(ticker)
Tekoči trak se je ustavil in lahko začnemo razstavljati njegove dele, odklopiti filtre. Če želite to narediti, uporabite funkcijo ms_filter_unlink():
ms_filter_unlink(voidsource, 0, dtmfgen, 0);
ms_filter_unlink(dtmfgen, 0, snd_card_write, 0);
namen argumentov je enak kot pri funkciji ms_filter_link().
Zdaj ločene filtre odstranimo z uporabo ms_filter_destroy():
ms_filter_destroy(voidsource);
ms_filter_destroy(dtmfgen);
ms_filter_destroy(snd_card_write);
Z dodajanjem teh vrstic v naš primer, bomo dobili pravilen zaključek programa z vidika upravljanja pomnilnika.
Kot lahko vidimo, smo za pravilen zaključek programa morali dodati približno enako število vrstic kode kot na začetku, s povprečno štirimi vrsticami kode na filter. Izkazalo se je, da se bo velikost programske kode povečevala sorazmerno s številom uporabljenih filtrov v projektu. Če govorimo o tisoč filtrih v vezju, bo vaši kodi dodanih štiri tisoč vrstic rutinskih operacij za njihovo ustvarjanje in uničenje.
Zdaj veste, kako pravilno prekiniti program, ki uporablja medijski pretočni program. V naslednjih primerih bom zaradi kompaktnosti to »pozabil«. Ampak ne boš pozabil?
Razvijalci medijskega streamerja niso zagotovili programskih orodij za lažjo manipulacijo filtrov pri sestavljanju/razstavljanju vezij. Kljub temu obstaja pomočnik, ki vam omogoča hitro vstavljanje/odstranjevanje filtra iz vezja.
K reševanju te težave se bomo vrnili kasneje, ko bo število filtrov v naših primerih preseglo nekaj ducatov.
Naslednji
Vir: www.habr.com