Po studiojmë motorin VoIP Mediastreamer2. Pjesa 3

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

Po studiojmë motorin VoIP Mediastreamer2. Pjesa 3

Përmirësojmë shembullin e gjeneratorit tonal

NĂ« tĂ« kaluarĂ«n artikullin 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 artikullin 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

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster