Kuwunika injini ya Mediastreamer2 VoIP. Gawo 12

Zomwe zili m'nkhaniyi zatengedwa kuchokera ku wanga zene channel.

Kuwunika injini ya Mediastreamer2 VoIP. Gawo 12

Pomaliza nkhani, Ndinalonjeza kuganizira nkhani ya kuwunika katundu pa ticker ndi njira zolimbana kwambiri computing katundu mu media streamer. Koma ndinaganiza kuti zikanakhala zomveka kuti ndifotokoze nkhani zosefera zaluso zokhudzana ndi kayendetsedwe ka deta ndikungoganizira za kukhathamiritsa kwa ntchito.

Kuchotsa zosefera zaluso

Titayang'ana njira yosunthira deta mu media streamer m'nkhani yapitayi, zingakhale zomveka kunena za zoopsa zobisika mmenemo. Chimodzi mwazinthu za mfundo ya "data flow" ndikuti kukumbukira kumaperekedwa kuchokera mulu muzosefera zomwe zili pagwero lakuyenda kwa data, ndipo kukumbukira kumamasulidwa ndikubwezeredwa mulu ndi zosefera zomwe zili kumapeto kwa kuyenda. njira. Kuonjezera apo, kulengedwa kwa deta yatsopano ndi chiwonongeko chake chikhoza kuchitika kwinakwake pakati. Kawirikawiri, kumasula kukumbukira kumachitidwa ndi fyuluta yosiyana ndi yomwe inapanga chipika cha deta.

Kuchokera pakuwona kuyang'anira kukumbukira kowonekera, kungakhale koyenera kuti fyulutayo ikalandira chipika cholowera, iwononge nthawi yomweyo itatha kukonza, kumasula kukumbukira, ndi kutulutsa chipika chopangidwa chatsopano chokhala ndi deta. Pamenepa, kukumbukira kutayikira mu fyulutayo kungatsatidwe mosavuta - ngati wosanthula awona kuti fyulutayo yatuluka, ndiye kuti fyuluta yotsatirayo siwononga midadada yomwe ikubwera bwino ndipo pali cholakwika mmenemo. Koma pakuwona kukhalabe ndi magwiridwe antchito apamwamba, njira iyi yogwirira ntchito ndi midadada ya data sizothandiza - imatsogolera ku ntchito zambiri kugawa / kukumbukira kwaulere kwa midadada ya data popanda kutulutsa kothandiza.

Pazifukwa izi, zosefera za media streamer, kuti musachepetse kukonzanso kwa data, gwiritsani ntchito ntchito zomwe zimapanga makope osavuta pokopera mauthenga (tinalankhula za iwo m'nkhani yapitayi). Ntchitozi zimangopanga chitsanzo chatsopano cha mutu wa uthengawo mwa "kulumikiza" nawo chipika cha data kuchokera ku uthenga "wakale" womwe ukukopedwa. Chotsatira chake, mitu iwiri imamangiriridwa ku chipika chimodzi cha deta ndipo cholembera cholembera mu data block chikuwonjezeka. Koma zidzawoneka ngati mauthenga awiri. Pakhoza kukhala mauthenga ochulukirapo okhala ndi "socialized" data block, mwachitsanzo, MS_TEE fyuluta imapanga makope khumi ndi awiri a kuwala kotere nthawi imodzi, ndikugawa pakati pa zotuluka zake. Ngati zosefera zonse mu unyolo zikugwira ntchito bwino, pofika kumapeto kwa chitoliro, kauntala iyi iyenera kufika ziro ndipo ntchito yotulutsa kukumbukira idzatchedwa: ms_free(). Ngati kuyitana sikuchitika, ndiye kuti chidutswa cha kukumbukira sichidzabwezeredwanso ku mulu, i.e. "idzawuka". Mtengo wogwiritsa ntchito makope opepuka ndikutha kutha kudziwa mosavuta (monga momwe zimakhalira ndi makope okhazikika) kuti ndi fyuluta iti yomwe ikutsitsa kukumbukira.

Popeza opanga ma media streamer ali ndi udindo wopeza kutayikira kwa kukumbukira muzosefera zakomweko, mwina simudzasowa kuzikonza. Koma ndi zosefera zanu zaluso, ndinu ziwala zachisangalalo chanu, ndipo nthawi yomwe mumawononga kufunafuna kutayikira mu code yanu imadalira kulondola kwanu. Kuti muchepetse nthawi yanu yochotsa zolakwika, tifunika kuyang'ana njira zodziwira zotayikira popanga zosefera. Kuonjezera apo, zikhoza kuchitika kuti kutayikirako kudzadziwonetsera kokha pamene fyulutayo ikugwiritsidwa ntchito mu dongosolo lenileni, kumene chiwerengero cha "okayikira" chingakhale chachikulu komanso nthawi yowonongeka ndi yochepa.

Kodi kukumbukira kumawonekera bwanji?

Ndizomveka kuganiza kuti muzotulutsa pulogalamu pamwamba iwonetsa kuchuluka kwa kukumbukira komwe kumakhala ndi pulogalamu yanu.

Mawonetseredwe akunja adzakhala kuti panthawi ina dongosolo lidzayamba kuyankha pang'onopang'ono kusuntha kwa mbewa ndikujambulanso pang'onopang'ono chinsalu. Ndizothekanso kuti chipika chadongosolo chidzakula, kudya malo pa hard drive yanu. Pankhaniyi, ntchito yanu iyamba kuchita modabwitsa, osayankha malamulo, osatsegula fayilo, ndi zina.

Kuti tiwone ngati kutayikira kumachitika, tigwiritsa ntchito chowunikira kukumbukira (chomwe chimatchedwa kuti analyzer). Izo zikhoza kukhala valavu (zabwino nkhani za izo) kapena kumangidwa mu compiler gcc MemorySanitizer kapena china chilichonse. Ngati analyzer akuwonetsa kuti kudontha kumachitika muzosefera za graph, ndiye kuti ndi nthawi yoti mugwiritse ntchito imodzi mwa njira zomwe zafotokozedwa pansipa.

Njira zitatu za Pines

Monga tafotokozera pamwambapa, ngati pali vuto la kukumbukira, wowunikirayo amaloza ku fyuluta yomwe idapempha kuti igawidwe pamtima pa mulu. Koma sichidzalozera fyuluta yomwe "inayiwala" kuibweza, yomwe, kwenikweni, ndiyo yachiwopsezo. Choncho, analyzer akhoza kutsimikizira mantha athu, koma osasonyeza mizu yawo.

Kuti mudziwe komwe kuli fyuluta "yoyipa" mu graph, mutha kupita ndikuchepetsa graph mpaka nambala yochepa ya node pomwe wosanthula amazindikirabe kutayikira ndikuyika sefa yomwe ili ndi vuto pamapine atatu otsalawo.

Koma zitha kuchitika kuti pochepetsa kuchuluka kwa zosefera mu graph, mutha kusokoneza njira yolumikizirana pakati pa zosefera ndi zinthu zina zamakina anu ndipo kutayikira sikudzawonekeranso. Pankhaniyi, muyenera kugwira ntchito ndi graph yodzaza ndikugwiritsa ntchito njira yomwe yafotokozedwa pansipa.

Njira yolowera insulator

Kuti muwonetse kuphweka, tidzagwiritsa ntchito graph yomwe ili ndi mndandanda umodzi wa zosefera. Akuwonetsedwa pachithunzichi.

Kuwunika injini ya Mediastreamer2 VoIP. Gawo 12

Ma graph okhazikika omwe, pamodzi ndi zosefera za media streamer okonzeka, zosefera zinayi za F1 ... F4 zimagwiritsidwa ntchito, zamitundu inayi, zomwe mudapanga kalekale ndipo mulibe kukayika za kulondola kwawo. Komabe, tiyeni tiyerekeze kuti angapo aiwo ali ndi vuto la kukumbukira. Kuyendetsa pulogalamu yathu kuti tiwunikire chosanthula, timaphunzira kuchokera ku lipoti lake kuti fyuluta ina idapempha kukumbukira pang'ono ndipo sikunabwezere mulu wa N nthawi. Mutha kuganiza kuti pakhala ulalo wa zosefera zamkati zamtundu wa MS_VOID_SOURCE. Ntchito yake ndikuchotsa kukumbukira mulu. Zosefera zina ziyenera kubweza pamenepo. Iwo. tiwona umboni wa kutayikira.

Kuti mudziwe kuti ndi gawo liti la pipeline lomwe silinachitepo kanthu zomwe zimapangitsa kuti kukumbukira kutayike, akulangizidwa kuti awonetsetse fyuluta yowonjezera yomwe imangosintha mauthenga kuchokera ku zolowetsa kupita ku zotulutsa, koma nthawi yomweyo imapanga kopi ya uthenga wolowetsa womwe suli wopepuka. , koma "yolemetsa" yamba, ndiye kuti imachotsa uthenga womwe walandira pakhomo. Ife tidzatcha fyuluta yotereyi insulator. Timakhulupirira kuti popeza fyulutayo ndi yosavuta, palibe kutayikira mmenemo. Ndipo katundu wina wabwino - ngati tiwonjezerapo paliponse pazithunzi zathu, izi sizidzakhudza ntchito ya dera mwanjira iliyonse. Tidzawonetsera zosefera-zopatula ngati mawonekedwe a bwalo lozungulira kawiri.

Timayatsa chopatula nthawi yomweyo fyuluta ya voidsource:
Kuwunika injini ya Mediastreamer2 VoIP. Gawo 12

Timayendetsa pulogalamuyo ndi analyzer kachiwiri, ndipo tikuwona kuti nthawi ino analyzer adzaimba mlandu insulator. Kupatula apo, ndiye amene tsopano akupanga midadada ya data, yomwe imatayika ndi fyuluta yosasamala yosadziwika (kapena zosefera). Chotsatira ndikusuntha insulator pamodzi ndi unyolo kumanja, ndi fyuluta imodzi, ndikuyambanso kusanthula. Chifukwa chake, pang'onopang'ono kusuntha chodzipatula kumanja, tikhala ndi nthawi yomwe mu analyzer wotsatira lipoti kuchuluka kwa "makumbukidwe" komwe kudatsitsidwa kudzachepa. Izi zikutanthauza kuti pa sitepe iyi insulator anali mu unyolo mwamsanga pambuyo vuto fyuluta. Ngati panali fyuluta imodzi yokha "yoipa", ndiye kuti kutayikirako kudzatha. Chifukwa chake, tidayika zosefera zovuta (kapena imodzi mwa zingapo). "Takonza" fyuluta, titha kupitiliza kusuntha chopatula kumanja pamodzi ndi unyolo mpaka titagonjetseratu kutayikira kwa kukumbukira.

Kugwiritsa ntchito fyuluta yodzipatula

Kukhazikitsa kwa isolator kumawoneka ngati fyuluta wamba. Fayilo yamutu:

/* Π€Π°ΠΉΠ» 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

Sefa yokha:

/* Π€Π°ΠΉΠ» 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)

Njira yosinthira ntchito zowongolera kukumbukira

Kuti mupeze kafukufuku wosadziwika bwino, wofalitsa ma TV amapereka mwayi wosintha ntchito zolowera kukumbukira ndi zanu, zomwe, kuwonjezera pa ntchito yaikulu, zidzalemba "Ndani, kuti ndi chifukwa chiyani". Ntchito zitatu zasinthidwa. Izi zimachitika motere:

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);

Mbali imeneyi imathandiza pamene analyzer amachepetsa ntchito ya zosefera kotero kuti ntchito ya dongosolo lomwe dera lathu limapangidwira kumasokonekera. Zikatero, muyenera kusiya analyzer ndikugwiritsa ntchito m'malo mwa ntchito kuti mugwiritse ntchito kukumbukira.

Talingalira za algorithm ya zochita za graph yosavuta yomwe ilibe nthambi. Koma njira iyi ingagwiritsidwe ntchito pazochitika zina, ndithudi ndi zovuta kwambiri, koma lingaliro limakhalabe lofanana.

M'nkhani yotsatira, tiwona nkhani ya kuyerekeza katundu pa ticker ndi njira zothana ndi kuchuluka kwa makompyuta mu media streamer.

Source: www.habr.com

Kuwonjezera ndemanga