Sahaminta mashiinka Mediastreamer2 VoIP. Qaybta 12

Nuxurka maqaalku waxa aan ka soo qaatay kanaalka zen.

Sahaminta mashiinka Mediastreamer2 VoIP. Qaybta 12

Waagii hore maqaal, Waxaan ballan qaaday in aan tixgelin doono arrinta ku saabsan qiimeynta culeyska saaran calaamadda iyo siyaabaha loola dagaallamo culeyska xisaabinta ee xad-dhaafka ah ee warbaahinta. Laakiin waxaan go'aansaday in ay macquul tahay in la daboolo arrimaha ku saabsan shaandhaynta farsamada gacanta ee la xidhiidha dhaqdhaqaaqa xogta oo kaliya ka dibna tixgeli arrimaha hagaajinta waxqabadka.

Qalabaynta miirayaasha farsamada

Ka dib markii aan eegno habka loo wareejiyo xogta ee streamer media ee maqaalkii hore, waxay noqon doontaa mid macquul ah in laga hadlo khatarta ku qarsoon. Mid ka mid ah sifooyinka mabda'a "data socodka" ayaa ah in xusuusta laga soocay tuubada filtarrada kuwaas oo ku yaala isha qulqulka xogta, iyo xusuusta ayaa la sii daayaa oo lagu soo celiyaa tuubada iyadoo la isticmaalayo filtarrada ku yaal dhamaadka socodka. waddo. Intaa waxaa dheer, abuurista xog cusub iyo burburinteeda waxay ka dhici kartaa meel u dhaxaysa. Guud ahaan, siidaynta xusuusta waxaa sameeya shaandheyn ka duwan tii abuurtay xannibaadda xogta.

Marka loo eego aragtida la socodka xusuusta hufan, waxay noqon lahayd mid macquul ah shaandhada, marka la helo block-ga gelinta, in isla markiiba la baabi'iyo ka dib marka la sameeyo, oo la xoreeyo xusuusta, oo ay soo saarto block cusub oo la sameeyay oo leh xogta wax soo saarka. Xaaladdan oo kale, daadinta xusuusta ee shaandhada si fudud ayaa loo raadin lahaa - haddii falanqeeyuhu uu ogaado in shaandhada ku jirta ay daadsan tahay, shaandhada xigta si fiican uma baabi'inayso baloogyada soo socda oo khalad baa ku jira. Laakiin marka laga eego aragtida ilaalinta waxqabadka sare, habkan lagu shaqeynayo blocks xogta ma aha mid wax soo saar leh - waxay keenaysaa tiro badan oo hawlgallo ah si loogu qoondeeyo / xusuusta bilaashka ah ee blocks xogta iyada oo aan wax faa'iido leh lahayn.

Sababtan awgeed, filtarrada warbaahinta streamer, si aanay u hoos u dhigin habaynta xogta, waxay isticmaalaan hawlo abuura nuqullo fudud marka fariimaha la daabacayo (waxaan uga hadalnay maqaalkii hore). Hawlahani waxay abuuraan tusaale cusub oo madaxa fariinta ah iyaga oo "ku lifaaqaya" kaydka xogta fariintii "jir" ee la koobiyeeyay. Natiijo ahaan, laba madax ayaa ku xiran hal xogta xogta iyo miiska tixraaca ee block xogta waa la kordhiyaa. Laakiin waxay u ekaan doontaa laba farriimo. Waxaa jiri kara farriimo badan oo wata xogtan β€œbulsho ku dhisan”, tusaale ahaan, shaandhada MS_TEE waxay soo saartaa daraasiin nuqullo iftiin ah hal mar, iyada oo u qaybisa wax soo saarkeeda. Haddii dhammaan filtarrada ku jira silsiladdu ay si sax ah u shaqeeyaan, dhammaadka dhuumaha miiska tixraaca ahi waa inuu noqdaa eber, shaqada siideynta xusuusta waxaa loogu yeeri doonaa: ms_free(). Haddii wicitaanku uusan dhicin, markaa gabalkan xusuusta dib looguma soo celin doono tuullada, i.e. way "daadin doontaa". Qiimaha isticmaalka koobiyada iftiinka waa luminta awoodda si fudud loo go'aamin karo (sida ay noqon doonto kiiska nuqullada caadiga ah) shaandhada garaafka ayaa sii deynaysa xusuusta.

Mar haddii soosaarayaasha streamer-ka ay mas'uul ka yihiin helida qulqulka xusuusta ee filtarrada asalka ah, waxay u badan tahay inaadan ka saari doonin iyaga. Laakin shaandhaynta farsamada gacanta, waxaad tahay ayaxa farxaddaada, iyo wakhtiga aad ku bixinayso raadinta qulqulka koodkaaga waxay ku xidhnaan doontaa saxnaantaada. Si loo dhimo wakhtiga qaladka, waxaan u baahanahay inaan eegno farsamooyinka ogaanshaha daadinta marka la samaynayo filtarrada. Intaa waxaa dheer, waxaa laga yaabaa inay dhacdo in qulqulka laftiisa uu muujin doono oo kaliya marka shaandhada lagu dabaqo nidaam dhab ah, halkaas oo tirada "tuhmanayaasha" ay noqon karaan kuwo aad u weyn iyo wakhtiga cilladaha xaddidan.

Sidee bay u daadinta xusuusta isu muujisaa?

Waa macquul in la qiyaaso in wax soo saarka barnaamijka top waxay tusi doontaa boqolleyda sii kordheysa ee xusuusta uu ku jiro codsigaaga.

Muujinta dibadda waxay noqon doontaa in mar ka mid ah nidaamku uu bilaabi doono inuu si tartiib ah uga jawaabo dhaqdhaqaaqa jiirka oo si tartiib ah u sawiro shaashadda. Waxa kale oo suurtogal ah in log-ka nidaamka uu kori doono, oo cunaya meel bannaan oo ku taal dariiqaaga adag. Xaaladdan oo kale, codsigaagu wuxuu bilaabi doonaa inuu u dhaqmo si la yaab leh, kama jawaabi doono amarrada, ma furi karo fayl, iwm.

Si aan u ogaano in ay dhacdo dheecaan, waxaan isticmaali doonaa falanqeeye xusuusta (markaan ka dib loo tixraaco falanqeeye). Waxay noqon kartaa valgrind (wanaagsan maqaal ku saabsan) ama lagu dhisay iskudubaridiyaha gcc Xasuusta nadiifiyaha ama wax kale. Haddii falanqeeyuhu muujiyo in dheecaanku uu ku dhaco mid ka mid ah filtarrada garaafyada, markaa tani waxay ka dhigan tahay in la joogo waqtigii la adeegsan lahaa mid ka mid ah hababka hoos ku xusan.

Habka Saddexda geed

Sida kor ku xusan, haddii uu jiro daadinta xusuusta, falanqeeyuhu wuxuu tilmaamayaa shaandhada codsatay qoondaynta xusuusta ee tuulan. Laakiin ma tilmaami doonto shaandhada " illowday" inay soo celiso, taas oo, dhab ahaantii, waa dembiilaha. Sidaa darteed, falanqeeyuhu wuxuu xaqiijin karaa oo kaliya cabsidayada, laakiin ma tilmaamayo xididkooda.

Si aad u ogaatid meesha shaandhada "xun" ee garaafka, waxaad aadi kartaa adigoo dhimaya garaafka ilaa tirada ugu yar ee noodhka kaas oo falanqeeyuhu uu wali ku ogaanayo daadinta oo uu meeleeyo shaandhada dhibaatada leh ee saddexda geed ee soo hadhay.

Laakin waxa dhici karta in marka la dhimo tirada filtarrada garaafka, aad khalkhal galiso habka caadiga ah ee is dhexgalka ka dhexeeya filtarrada iyo walxaha kale ee nidaamkaaga oo daadaduna mar dambe ma muuqan doonto. Xaaladdan oo kale, waa inaad ku shaqeysaa garaaf cabbir buuxa oo aad isticmaashaa habka hoos lagu tilmaamay.

Habka dahaarka sibidhka

Si loo fududeeyo soo jeedinta, waxaan isticmaali doonaa garaaf ka kooban hal silsilad oo filtarrada ah. Waxaa ka muuqda sawirka.

Sahaminta mashiinka Mediastreamer2 VoIP. Qaybta 12

Garaafka caadiga ah kaas oo, oo ay weheliyaan miirayaasha warbaahinta diyaarsan, afar filtarrada farsamada F1 ... F4 ayaa loo isticmaalaa, afar nooc oo kala duwan, kuwaas oo aad samaysay wakhti dheer ka hor oo aan shaki ku jirin saxnimadooda. Si kastaba ha ahaatee, aan ka soo qaadno in dhowr ka mid ah ay leeyihiin ilbaxnimo xusuusta. Annaga oo ku hawlan barnaamijkayaga si aan ula soconno falanqeeyayaasha, waxa aan ka barannay warbixintiisa in shaandhada qaarkood ay codsatay qaddar cayiman oo xusuusta ah oo aan dib ugu soo celin tirada jeer ee N. Waxaad si fudud u qiyaasi kartaa inuu jiri doono isku xidhka hawlaha shaandhada gudaha ee nooca MS_VOID_SOURCE. Shaqadiisu waa inuu xusuusta ka soo qaado tuubada. filtarrada kale waa in ay halkaas ku celiyaan. Kuwaas. waxaan ogaan doonaa xaqiiqda daadashada.

Si loo go'aamiyo qaybta dhuumaha ee ay ka jirtay waxqabad la'aanta u horseedaysa xusuusta, waxaa la soo jeediyay in la soo bandhigo shaandheyn dheeraad ah oo si fudud u beddeleysa farriimaha gelinta ilaa wax soo saarka, laakiin isla markaa waxay abuurtaa nuqul ka mid ah fariinta gelinta ee aan iftiin lahayn. , laakiin waa mid caadi ah oo "culus" ah, ka dibna gebi ahaanba tirtiraya fariinta lagu helay albaabka. shaandhada noocan oo kale ah waxaan ugu yeeri doonaa insulator. Waxaan aaminsanahay in maadaama filtarku fudud yahay, aysan jirin wax daadasho ah oo ku jira. Iyo hal hanti oo kale oo wanaagsan - haddii aan ku darno meel kasta oo garaafkayaga ah, tani ma saameyn doonto hawlgalka wareegga sinaba. Waxaan u sawiri doonaa filter-go'doominta qaab goobaabin leh laba wareeg.

Waxaan daarnaa go'doominta isla markiiba ka dib shaandhaynta ilaha voidsource:
Sahaminta mashiinka Mediastreamer2 VoIP. Qaybta 12

Waxaan mar labaad la socodsiineynaa barnaamijka falanqeeyayaasha, waxaanan aragnaa in markan falanqeeyuhu uu eedayn doono insulator-ka. Ka dib oo dhan, waa kan hadda abuuraya blocks of data, kuwaas oo ay luminayaan shaandhada taxadar la'aanta aan la garanayn (ama filtarrada). Talaabada xigta waa in la dhaqaajiyo dahaarka silsiladda dhinaca midig, hal shaandheyn, oo mar labaad dib u bilow falanqaynta. Marka, talaabo talaabo u dhaqaaqida go'doominta dhanka midig, waxaan heli doonaa xaalad halka falanqeeye soo socda uu ku soo warramo tirada xusuusta "daatay" ay hoos u dhacayso. Tani waxay ka dhigan tahay in tallaabadan insulator-ku uu ku jiray silsiladda isla markiiba ka dib shaandhada dhibaatada. Haddii uu jiray hal shaandheyn "xun", markaa daadadku gabi ahaanba waa baabi'i doonaa. Markaa, waxaanu dejinay shaandhada dhibaatada leh (ama mid ka mid ah dhowr). Markaan "hagaajineyno" shaandhada, waxaan sii wadi karnaa inaan u dhaqaaqno go'doominta dhanka midig ee silsiladda ilaa aan si buuxda uga adkaanno daadinta xusuusta.

Hirgelinta shaandhada go'doominta

Hirgelinta go'doominta waxay u egtahay shaandhada caadiga ah. Faylka madaxa:

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

Shaandheeyaha laftiisa:

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

Habka lagu beddelayo hawlaha maaraynta xusuusta

Cilmi-baaris dheeraad ah oo qarsoodi ah, warbaahintu waxay bixisaa karti aad ku beddesho hawlaha helitaanka xusuusta adiga oo leh, taas oo, marka lagu daro shaqada ugu muhiimsan, waxay qori doontaa "Yaa, meesha iyo sababta". Saddex hawlood ayaa la beddelaa. Tan waxaa loo sameeyaa sida soo socota:

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

Habkani wuxuu ka caawiyaa kiisaska marka falanqeeyuhu uu hoos u dhigo hawlgalka filtarrada si aad u badan oo shaqada nidaamka uu ku dhisan yahay wareeggayagu uu carqaladeeyo. Xaaladdan oo kale, waa inaad ka tagtaa falanqeeyayaasha oo aad isticmaasho beddelka hawlaha si aad ula shaqeyso xusuusta.

Waxaan u tixgelinnay algorithm ee ficillada garaaf fudud oo aan ku jirin laamo. Laakiin habkan waxaa lagu dabaqi karaa kiisas kale, dabcan oo leh kakan, laakiin fikradda ayaa weli ah sidii hore.

Maqaalka soo socda, waxaan ku eegi doonaa arrinta ku saabsan qiyaasta culeyska saaran calaamadda iyo siyaabaha loola dagaallamo culeyska xisaabinta ee xad-dhaafka ah ee qulqulka warbaahinta.

Source: www.habr.com

Add a comment