Nuxurka maqaalku waxa aan ka soo qaatay
Waagii hore
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
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.
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:
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