Materiali i artikullit është marrë nga kanali im .

Përmirësojmë shembullin e gjeneratorit tonal
NĂ« tĂ« kaluarĂ«n Ne kemi shkruar njĂ« aplikacion gjenerator tonal dhe me ndihmĂ«n e tij nxora zĂ«rin nga altoparlanti i kompjuterit. Tani do tĂ« pĂ«rqendrohemi nĂ« faktin se programi ynĂ«, kur pĂ«rfundon punĂ«n, nuk e kthen memorien mbrapa nĂ« grumbull. ĂshtĂ« koha tĂ« sqarojmĂ« kĂ«tĂ« çështje.
Pasi që skema na nevojitet më, çlirimi i memorjes duhet të fillojë me ndalimin e konveyorëve të të dhënave. Për këtë, duhet të shkëputim burimin e taktimeve nga skema përmes funksionit ms_ticker_detach(). Në rastin tonë duhet të shkëputim taktimerin nga hyrja e filtrit voidsource:
ms_ticker_detach(ticker, voidsource)Në fakt, pas ndalimit të konveyorëve mund të ndryshojmë skemën e tij dhe ta rikthejmë në punë, duke e lidhur përsëri taktimerin.
Tani mund ta fshijmë atë duke përdorur funksionin ms_ticker_destroy():
ms_ticker_destroy(ticker)Konveyori është ndaluar dhe ne mund të fillojmë të shkëputim pjesët e tij, duke shkëputur filtrat. Për këtë, përdoret funksioni ms_filter_unlink():
ms_filter_unlink(voidsource, 0, dtmfgen, 0);
ms_filter_unlink(dtmfgen, 0, snd_card_write, 0);Qëllimi i argumenteve është i njëjtë si ai i funksionit ms_filter_link().
Fshijmë, tani të shkëputurit, filtrat përmes ms_filter_destroy():
ms_filter_destroy(voidsource);
ms_filter_destroy(dtmfgen);
ms_filter_destroy(snd_card_write);Duke shtuar këto rreshta në shembullin tonë, ne do të kemi një përfundim të saktë, nga pikëpamja e menaxhimit të memorjes, të programit.
Siç e shohim, përfundimi i saktë i programit kërkoi nga ne të shtonim përafërsisht sa të njëjtën sasi rreshtash kodi sa në fillim të tij, dhe mesatarisht për çdo filtrë duhej katër rreshta kodi. Pra, madhësia e kodit të programit tonë do të rritet në proporcion me numrin e filtrave të përdorur në projekt. Nëse flasim për një mijë filtra në skemë, atëherë kodi juaj do të shtojë katër mijë rreshta operacionesh rutinë për krijimin dhe shkatërrimin e tyre.
Tani e dini si të përfundoni në mënyrë të saktë një program që përdor mediastreamer. Në shembujt e ardhshëm, për shkak të kompaktësisë së shkrimit, unë do ta 'harroj' ta bëj këtë. Por ju nuk do ta harroni, apo?
Zhvilluesit e mediastreamer nuk parashikuan mjete programore për lehtësimin e manipulimeve me filtrat gjatë ndërtimit/riparimit të skemave. Megjithatë, ka një ndihmës që lejon të vendosim/shkëputim filtrat shpejt nga skema.
Do të kthehemi në zgjidhjen e kësaj çështjeje më vonë, kur numri i filtrave në shembujt tanë të kalojë disa dhjetëra.
Në të ardhmen Ne do të ndërtomë një skemë të matësit të nivelit të sinjalit dhe do të mësojmë të lexojmë rezultatin e matjes nga filtri. Do të vlerësojmë saktësinë e matjes.
Burimi: habr.com
