Eksplorimi i motorit VoIP Mediastreamer2. Pjesa 3

Materiali i artikullit është marrë nga ime kanal zen.

Eksplorimi i motorit VoIP Mediastreamer2. Pjesa 3

Përmirësimi i shembullit të gjeneratorit të tonit

Në të mëparshmen artikull Ne shkruam një aplikacion për gjeneruesin e tonit dhe e përdorëm për të nxjerrë zërin nga një altoparlant kompjuteri. Tani do të vërejmë se programi ynë nuk e kthen kujtesën në grumbull kur të përfundojë. Është koha për të sqaruar këtë çështje.

Pasi të mos kemi më nevojë për qarkun, lirimi i kujtesës duhet të fillojë duke ndaluar tubacionin e të dhënave. Për ta bërë këtë, duhet të shkëputni burimin e orës dhe treguesin nga qarku duke përdorur funksionin ms_ticker_detach(). Në rastin tonë, duhet të shkëputim treguesin nga hyrja e filtrit burim i zbrazët:

ms_ticker_detach(ticker, voidsource)

Meqë ra fjala, pasi të ndalojmë transportuesin, mund ta ndryshojmë qarkun e tij dhe ta vendosim sërish në funksion, duke e lidhur sërish tik-takuesin.

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

ms_ticker_destroy(ticker)

Transportuesi është ndalur dhe ne mund të fillojmë të çmontojmë pjesë të tij, duke shkëputur filtrat. Për ta bërë këtë, përdorni funksionin 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 funksionin ms_filter_link().

Ne heqim filtrat tani të ndarë duke përdorur 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ë marrim një përfundim të saktë të programit nga pikëpamja e menaxhimit të kujtesës.

Siç mund ta shohim, plotësimi i saktë i programit na kërkonte të shtonim afërsisht të njëjtin numër rreshtash kodi si në fillim, me një mesatare prej katër rreshtash kodi për filtër. Rezulton se madhësia e kodit të programit do të rritet në përpjesëtim me numrin e filtrave të përdorur në projekt. Nëse flasim për një mijë filtra në qark, atëherë katër mijë rreshta operacionesh rutinë për krijimin dhe shkatërrimin e tyre do të shtohen në kodin tuaj.

Tani ju e dini se si të përfundoni saktë një program që përdor një transmetues media. Në shembujt e mëposhtëm, për hir të kompaktësisë, do të "harroj" ta bëj këtë. Por ju nuk do të harroni?

Zhvilluesit e transmetuesit të medias nuk ofruan mjete softuerike për të lehtësuar manipulimin e filtrave gjatë montimit/çmontimit të qarqeve. Sidoqoftë, ekziston një ndihmës që ju lejon të futni / hiqni shpejt një filtër nga qarku.

Ne do t'i kthehemi zgjidhjes së kësaj çështjeje më vonë, kur numri i filtrave në shembujt tanë të kalojë disa duzina.

Tjetra artikull Ne do të mbledhim një qark matës të nivelit të sinjalit dhe do të mësojmë se si të lexojmë rezultatin e matjes nga filtri. Le të vlerësojmë saktësinë e matjes.

Burimi: www.habr.com

Shto një koment