Po studiojmë motorin VoIP Mediastreamer2. Pjesa 3

Materiali i artikujt është marrë nga kanali im Dzen.

Po studiojmë motorin VoIP Mediastreamer2. Pjesa 3

Përmirësimi i shembujve të gjeneratorëve tonale

Në artikulli ynë Ne kemi shkruar një aplikacion për gjeneratorin tonal dhe me të kemi nxjerrë tingullin nga altoparlanti i kompjuterit. Tani do të përqendrohemi në faktin se programa jonë, duke përfunduar punën, nuk e rikthen memorien përsëri në grumbull. Ka ardhur koha për të sqaruar këtë çështje.

Pasi që skema nuk 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 taktokut nga skema përmes funksionit ms_ticker_detach(). Në rastin tonë, ne duhet të shkëputim taktokun 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 vendosim përsëri në punë, duke e lidhur përsëri taktokun.

Tani mund ta fshijmë atë duke përdorur funksionin ms_ticker_destroy():

ms_ticker_destroy(ticker)

Konveyori është ndalur dhe ne mund të fillojmë ta shkëpusim pjesët, duke ndarë 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ë me atë të funksionit ms_filter_link().

Fshijmë tashmë filtrat e shkëputur me anë të 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 korrekt, sa i përket menaxhimit të memorjes, të programit.

Siç e shohim, përfundimi i saktë i programit kërkoi nga ne të shtojmë afërsisht po aq rreshta kodi sa në fillim, duke pasur parasysh që mesatarisht për çdo filtr do të duhen katër rreshta kodi. Duke folur për mijëra filtrat në skemë, kodi juaj do të shtohet me katër mijë rreshta operacione rutine për krijimin dhe shkatërrimin e tyre.

Tani e dini se si të përfundoni korrekt programin që përdor mediastreamer. Në shembujt e ardhshëm, për shkak të shkurtësisë së përshkrimit, do të 'harroj' ta bëj këtë. Por ju nuk do të harroni, apo jo?

Zhvilluesit e mediastreamerit nuk parashikuan mjete programore për lehtësimin e manipulimeve me filtrat gjatë ndërtimit/çmontimit të skemave. Megjithatë, aty ka një ndihmës që lejon futjen/hiqjen e shpejtë të filtrave nga skemat.

Ne do të kthehemi te zgjidhja e këtij problemi më vonë, kur numri i filtrave në shembujt tanë të kalojë disa dhjetëra.

Në artikullin e ardhshëm artikulli ynë Do të mbledhim 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

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