Ho hlahloba enjene ea Mediastreamer2 VoIP. Karolo ea 12

Thepa ea sehlooho e nkiloe ho ea ka mocha oa zen.

Ho hlahloba enjene ea Mediastreamer2 VoIP. Karolo ea 12

Qetellong sehlooho, Ke tšepisitse ho nahana ka taba ea khakanyo ea mojaro oa li-ticker le litsela tsa ho sebetsana le mojaro o feteletseng oa komporo ho media streamer. Empa ke ile ka etsa qeto ea hore ho tla ba ho utloahalang haholoanyane ho akaretsa litaba tsa ho lokisa li-filters tsa mesebetsi ea matsoho tse amanang le ho tsamaisa data, ebe ka mor'a moo ke nahana ka litaba tsa ts'ebetso ea ts'ebetso.

Ho lokisa li-filters tsa mesebetsi ea matsoho

Ka mor'a hore re hlahlobisise mokhoa oa ho tsamaisa data ho mecha ea litaba sehloohong se fetileng, e ka ba ho utloahalang ho bua ka likotsi tse patiloeng ho eona. E 'ngoe ea likarolo tsa molao-motheo oa "phallo ea data" ke hore kabo ea memori ho tsoa qubung e hlaha ka har'a li-filters tse fumanehang mehloling ea phallo ea data, mme li-filters tse qetellong ea tsela ea phallo li se li ntse li arolelana mohopolo ka ho khutla. ho qubu. Ho phaella moo, ho bōptjoa ha data e ncha le timetso ea bona ho ka etsahala kae-kae lintlheng tse bohareng. Ka kakaretso, ho lokolloa ha memori ho etsoa ke sefahla se seng ntle le se entseng "data block".

Ho latela pono ea ho lekola mohopolo o hlakileng, e ka ba ntho e utloahalang bakeng sa sefahla, ha se amohela block ea ho kenya, ho se senya hang hang kamora ho sebetsa, ho lokolla mohopolo, le ho beha block e sa tsoa bōptjoa e nang le data e hlahisoang. Tabeng ena, ho lutla ha memori ho sefa ho ka ts'oaroa habonolo - haeba mohlahlobi a hlokometse ho lutla ka har'a filthara, sesefa se se latelang ha se senye li-block tse kenang hantle mme ho na le phoso ho sona. Empa ho ea ka pono ea ho boloka ts'ebetso e phahameng, mokhoa ona oa ho sebetsa le li-blocks tsa data ha o hlahise - o lebisa ho palo e kholo ea ts'ebetso ea ho abela / memori ea mahala bakeng sa li-blocks tsa data ntle le ho qeta letho le molemo.

Ka lebaka lena, li-filters tsa media streamer, e le hore li se ke tsa fokotsa ts'ebetso ea data, li sebelisa mesebetsi e etsang likopi tse bobebe ha u kopitsa melaetsa (re buile ka eona sehloohong se fetileng). Mesebetsi ena e etsa feela kopi e ncha ea sehlooho sa molaetsa ka ho "hokela" "data block" ho tsoa ho molaetsa oa "khale" o kopitsitsoeng ho eona. Ka lebaka leo, lihlooho tse peli li khomaretsoe ho thibela e le 'ngoe ea data' me k'hamera ea litšupiso sebakeng sa data block e ntse e eketseha. Empa e tla shebahala joalo ka melaetsa e 'meli. Ho ka ba le melaetsa e mengata e nang le "data block" e joalo ea "sechaba", mohlala, filthara ea MS_TEE e hlahisa likopi tse joalo tse leshome ka nako e le 'ngoe, e li aba har'a liphetho tsa eona. Haeba li-filters tsohle tse ka har'a ketane li sebetsa ka nepo, qetellong ea liphaephe, palo ena ea litšupiso e lokela ho fihla ho zero mme ts'ebetso ea ho tsamaisa memori e tla bitsoa: ms_mahala(). Haeba pitso e sa hlahe, joale karolo ena ea mohopolo e ke ke ea hlola e khutlisetsoa qubu, i.e. o "dutla". Litsenyehelo tsa ho sebelisa likopi tse bobebe ke tahlehelo ea bokhoni ba ho tseba habonolo (joalo ka ha ho ka ba joalo ha u sebelisa likopi tse tloaelehileng) moo graph filter e lutlang teng.

Kaha boikarabello ba ho fumana ho lutla ha memori ho li-filters tsa "letsoalloa" le ho baetsi ba media streamer, ho ka etsahala hore u se ke ua tlameha ho e lokisa. Empa ka filthara ea hau ea boqapi, uena ka bouena ke marutle a thabo ea hau, 'me nako eo u e qetang u batla ho lutla khoutu ea hau e tla ipapisa le ho nepahala ha hau. Ho fokotsa nako ea hau ea ho lokisa liphoso, re hloka ho sheba mekhoa e lutlang ea sebaka ha re rala lihloela. Ho phaella moo, ho ka 'na ha etsahala hore ho lutla ho tla iponahatsa feela ha u sebelisa sefahla ka mokhoa oa sebele, moo palo ea "babelaelloa" e ka bang khōlō,' me nako ea ho lokisa liphoso e lekanyelitsoe.

Ho lutla ha mohopolo ho iponahatsa joang?

Hoa utloahala ho nahana hore ka tlhahiso ea lenaneo tlhōrōng e tla bonts'a liperesente tse ntseng li eketseha tsa memori e sebelisoang ke sesebelisoa sa hau.

Ponahatso ea ka ntle e tla kenyelletsa taba ea hore ka nako e itseng tsamaiso e tla itšoara butle-butle ho sisinyeha ha mouse, butle-butle e khutlisetsa skrine. Hape hoa khoneha hore log log ea tsamaiso e tla hōla, e je sebaka ho hard drive. Tabeng ena, kopo ea hau e tla qala ho itšoara ka mokhoa o makatsang, e sa arabe litaelo, e ke ke ea bula faele, joalo-joalo.

Ho tseba 'nete ea ho lutla, re tla sebelisa mohlahlobi oa memori (eo ka mor'a moo e bitsoang mohlahlobi). Ho ka ba joalo Tlanya (e ntle sehlooho mabapi le eona) kapa e hahelletsoeng ka har'a mokopanyi gcc MemorySanitizer kapa ntho enngwe. Haeba mohlahlobi a bontša hore ho lutla ho hlaha ho e 'ngoe ea li-filters tsa graph, ho bolela hore ke nako ea ho sebelisa e' ngoe ea mekhoa e hlalositsoeng ka tlase.

Mekhoa e meraro ea Pines

Joalokaha ho boletsoe ka holimo, haeba ho na le ho lutla ha memori, mohlahlobi o tla supa filthara e kopileng kabo ea memori ho tsoa qubung. Empa e ke ke ea supa filthara e "lebetseng" ho e khutlisa, eo, ha e le hantle, e leng molato. Kahoo, mohlahlobi a ka tiisa feela tšabo ea rona, empa a sa supe motso oa bona.

Ho fumana sebaka sa filtara e "mpe" graph, u ka ea ka ho fokotsa kerafo ho palo e fokolang ea li-node tseo mohlahlobi a ntseng a bona ho lutla 'me a fumane sefe se nang le bothata ho liphaene tse tharo tse setseng.

Empa ho ka etsahala hore ka ho fokotsa palo ea li-filters ka har'a kholomo u tla senya tsela e tloaelehileng ea ho sebelisana pakeng tsa li-filters le likarolo tse ling tsa tsamaiso ea hau 'me ho lutla ha ho sa tla hlola ho hlaha. Tabeng ena, o tla tlameha ho sebetsa ka graph ea boholo bo felletseng mme o sebelise mokhoa o hlalositsoeng ka tlase.

Mokhoa oa ho thella oa insulator

Ho nolofatsa tlhahiso, re tla sebelisa kerafo e nang le ketane e le 'ngoe ea lihloela. O bontšoa setšoantšong.

Ho hlahloba enjene ea Mediastreamer2 VoIP. Karolo ea 12

Kerafo e tloaelehileng, eo ho eona, hammoho le li-filters tsa media tse lokiselitsoeng, ho sebelisoa li-filters tse 'ne tsa F1…F4, mefuta e mene e fapaneng eo u e entseng khale,' me ha u na pelaelo ka ho nepahala ha tsona. Leha ho le joalo, ha re re ba ’maloa ba bona ba na le ho lutla mohopolong. Ha re tsamaisa lenaneo la rona la tlhokomelo ea li-analyser, re ithuta ho tsoa tlalehong ea eona hore sefe se itseng se kopile memori e itseng 'me ha ea ka ea e khutlisetsa ho qubu makhetlo a N. Ho bonolo ho hakanya hore ho tla ba le moo ho buuwang ka tšebetso ea filthara ea kahare ea mofuta oa MS_VOID_SOURCE. Mosebetsi oa hae ke ho tlosa mohopolo qubung. Lisefe tse ling li lokela ho e khutlisetsa moo. Tseo. re tla fumana ho dutla.

E le ho fumana hore na ke karolo efe ea ho se sebetse ha lipeipi e entseng hore mohopolo o lutle, ho etsoa tlhahiso ea hore ho hlahisoe filthara e 'ngoe e fetisang melaetsa ho tloha ho kenyelletso ho ea ho tlhahiso, empa ka nako e ts'oanang e etsa hore ho be le leseli le tloaelehileng. "boima" khopi ea molaetsa o kentsoeng, ebe o hlakola ka botlalo molaetsa o fihlileng tlhahisong. Sefahla se joalo re tla se bitsa insulator. Re lumela hore kaha filthara e bonolo, ho lutla ho eona ha ho akaretsoe. Le thepa e 'ngoe e ntle - haeba re e eketsa sebakeng leha e le sefe sa graph ea rona, joale sena se ke ke sa ama ts'ebetso ea potoloho ka tsela leha e le efe. Re tla tšoantša filthara ea insulator e le selikalikoe se nang le li-contour tse peli.

Lumella sekhetho hang ka mor'a sefe ea voidsourse:
Ho hlahloba enjene ea Mediastreamer2 VoIP. Karolo ea 12

Re tsamaisa lenaneo le analyzer hape, 'me rea bona hore lekhetlong lena, mohlahlobi o tla beha molato ho motho ea ikhethileng. Ha e le hantle, ke eena eo hona joale a bōpang li-block tsa data, tseo ka nako eo li lahleheloang ke sefahla se sa tsejoeng (kapa li-filters). Mohato o latelang ke ho suthisa insulator haufi le ketane ho ea ka ho le letona, ka sefe e le 'ngoe, ebe u qala tlhahlobo hape. Kahoo, mohato ka mohato, ho tsamaisa motho ea itšehla thajana ka ho le letona, re fumana boemo ha palo ea "leak" e thibelang memori tlalehong e latelang ea analyzer e fokotseha. Sena se bolela hore mohatong ona insulator e ile ea qetella e le ka ketane hang ka mor'a hore sefa se nang le bothata. Haeba ho ne ho e-na le sefe se le seng feela se "mpe", joale ho lutla ho tla nyamela ka ho feletseng. Kahoo, re ile ra beha filthara e nang le bothata sebakeng sa heno (kapa e 'ngoe ea tse' maloa). Ha re se re "lokile" filthara, re ka tsoela pele ho tsamaisa sekhetho ka ho le letona ho latela ketane ho fihlela ho lutla ha memori ho felile ka botlalo.

Ho kenya tshebetsong sefe e ikhethang

Ts'ebetsong ea isolator e shebahala joalo ka sesefa se tloaelehileng. Sehlooho sa faele:

/* Файл iso_filter.h  Описание изолирующего фильтра. */

#ifndef iso_filter_h
#define iso_filter_h

/* Задаем идентификатор фильтра. */
#include <mediastreamer2/msfilter.h>

#define MY_ISO_FILTER_ID 1024

extern MSFilterDesc iso_filter_desc;

#endif

Sefe ka bosona:

/* Файл iso_filter.c  Описание изолирующего фильтра. */

#include "iso_filter.h"

    static void
iso_init (MSFilter * f)
{
}
    static void
iso_uninit (MSFilter * f)
{
}

    static void
iso_process (MSFilter * f)
{
    mblk_t *im;

    while ((im = ms_queue_get (f->inputs[0])) != NULL)
    {
        ms_queue_put (f->outputs[0], copymsg (im));
        freemsg (im);
    }
}

static MSFilterMethod iso_methods[] = {
    {0, NULL}
};

MSFilterDesc iso_filter_desc = {
    MY_ISO_FILTER_ID,
    "iso_filter",
    "A filter that reads from input and copy to its output.",
    MS_FILTER_OTHER,
    NULL,
    1,
    1,
    iso_init,
    NULL,
    iso_process,
    NULL,
    iso_uninit,
    iso_methods
};

MS_FILTER_DESC_EXPORT (iso_desc)

Mokhoa oa ho khutlisa lits'ebetso tsa taolo ea memori

Bakeng sa lipatlisiso tse ngata tse poteletseng, mecha ea litaba e fana ka bokhoni ba ho fetola mesebetsi ea ho fihlella mohopolo le ea hau, eo, ho phaella mosebetsing o ka sehloohong, o tla rekota "Mang, hokae le hobane'ng." Mesebetsi e meraro e ntse e nkeloa sebaka. Sena se etsoa ka tsela e latelang:

OrtpMemoryFunctions reserv;
OrtpMemoryFunctions my;

reserv.malloc_fun = ortp_malloc;
reserv.realloc_fun = ortp_realloc;
reserv.free_fun = ortp_free;

my.malloc_fun = &my_malloc;
my.realloc_fun = &my_realloc;
my.free_fun = &my_free;

ortp_set_memory_functions(&my);

Tšobotsi ena e thusa maemong a ha mohlahlobi a liehisa li-filters hoo ts'ebetso ea tsamaiso eo potoloho ea rona e hahiloeng ho eona e senyeha. Boemong bo joalo, o tlameha ho lahla analyzer mme o sebelise sebaka sa mesebetsi ea memori.

Re hlahlobile algorithm ea liketso bakeng sa graph e bonolo e se nang makala. Empa mokhoa ona o ka sebelisoa maemong a mang, ha e le hantle ka mathata, empa mohopolo o ntse o tšoana.

Sehloohong se latelang, re tla sheba taba ea khakanyo ea mojaro oa li-ticker le mokhoa oa ho sebetsana le mojaro o feteletseng oa komporo ho media streamer.

Source: www.habr.com

Eketsa ka tlhaloso