Ịchọgharị igwe Mediastreamer2 VoIP. Nkeji 12

A na-ewepụta ihe nke isiokwu ahụ site na nke m zen ọwa.

Ịchọgharị igwe Mediastreamer2 VoIP. Nkeji 12

Na nke ikpeazu ederede, M kwere nkwa na m ga-atụle okwu nke nyochaa ibu dị na ticker na ụzọ iji luso ibu ịgbakọ ọnụ na mgbasa ozi mgbasa ozi ọgụ. Ma ekpebiri m na ọ ga-abụ ihe ezi uche dị na ya ikpuchi okwu nke nzacha ihe nzacha nka nke metụtara mmegharị data na naanị mgbe ahụ tụlee okwu gbasara njikarịcha arụmọrụ.

Ihe nzacha nka nbibi

Mgbe anyị lechara usoro maka ịkwaga data na mgbasa ozi mgbasa ozi na isiokwu gara aga, ọ ga-abụ ihe ezi uche dị na ya ikwu banyere ihe ize ndụ ndị zoro ezo na ya. Otu n'ime njirimara nke ụkpụrụ "data data" bụ na a na-ekenye ebe nchekwa site na ikpo ọkụ na nzacha nke dị na isi iyi nke data, na ebe nchekwa na-atọhapụ ma laghachi na nzacha site na nzacha dị na njedebe nke mmiri ahụ. uzo. Tụkwasị na nke ahụ, ịmepụta data ọhụrụ na mbibi ya nwere ike ime ebe dị n'etiti. N'ozuzu, a na-eme ntọhapụ ebe nchekwa site na nzacha dị iche karịa nke mepụtara ngọngọ data.

Site n'echiche nke nlekota ebe nchekwa transperent, ọ ga-abụ ihe ezi uche dị na nzacha, mgbe ọ natara ngọngọ ntinye, ibibi ya ozugbo mgbe nhazi ya, na-ahapụ ebe nchekwa ahụ, na ịmepụta ngọngọ ọhụrụ mepụtara na data mmepụta. N'okwu a, ọ ga-adị mfe ịchọta ebe nchekwa nchekwa na nzacha - ọ bụrụ na onye nyocha ahụ achọpụta na ọ bụ nzacha na nzacha, mgbe ahụ, nzacha na-esote adịghị ebibi ihe mgbochi na-abata nke ọma na enwere njehie na ya. Ma site n'echiche nke ịnọgide na-arụ ọrụ dị elu, ụzọ a na-arụ ọrụ na ngọngọ data adịghị arụpụta ihe - ọ na-eduga n'ọtụtụ ọrụ iji nyefee / ebe nchekwa n'efu maka ngọngọ data na-enweghị ihe ọ bụla bara uru.

N'ihi nke a, mgbasa ozi streamer nzacha, ka ọ ghara ibelata nhazi data, na-eji ọrụ na-emepụta mbipụta dị mfe mgbe ị na-edegharị ozi (anyị kwuru banyere ha n'isiokwu gara aga). Ọrụ ndị a na-emepụta naanị ihe atụ ọhụrụ nke nkụnye eji isi mee ozi site na "itinye" ya na ngọngọ data sitere na ozi "ochie" nke a na-eṅomi. N'ihi ya, a na-ejikọta isi abụọ na otu ngọngọ data ma na-abawanye ọnụ ọgụgụ ntụaka na ngọngọ data. Mana ọ ga-adị ka ozi abụọ. Enwere ike inwekwu ozi nwere ngọngọ data "socialized", dịka ọmụmaatụ, nzacha MS_TEE na-ewepụta iri na abuo nke ụdị ọkụ dị otú ahụ otu oge, na-ekesa n'etiti nsonaazụ ya. Ọ bụrụ na ihe nzacha niile dị na yinye na-arụ ọrụ nke ọma, na njedebe nke pipeline counter a ga-eru efu ma a ga-akpọ ọrụ ntọhapụ ebe nchekwa: ms_free(). Ọ bụrụ na oku a emeghị, mgbe ahụ, mpempe ebe nchekwa a agaghịzi alaghachi n'obo ahụ, ya bụ. ọ "ga-agbapụta". Ọnụ ego maka iji mbipụta ọkụ bụ mfu nke ikike ikpebi ngwa ngwa (dị ka ọ ga-adị na mbipụta oge niile) nke nzacha eserese na-agbapụta ebe nchekwa.

Ebe ọ bụ na ndị mmepe mgbasa ozi na-ahụ maka ịchọta ihie ebe nchekwa na nzacha ala, ọ ga-abụ na ị gaghị ewepụ ha. Mana site na nzacha nka gị, ị bụ ụkpara nke obi ụtọ nke gị, oge ị na-etinye na-achọ ntanye na koodu gị ga-adabere na izi ezi gị. Iji belata oge nbipu gị, anyị kwesịrị ileba anya na usoro nchọpụta nkwụsị mgbe ị na-emepụta ihe nzacha. Tụkwasị na nke ahụ, ọ nwere ike ime na nkwụsị ahụ ga-egosipụta onwe ya nanị mgbe a na-etinye ihe nzacha na usoro n'ezie, ebe ọnụ ọgụgụ nke "ndị a na-enyo enyo" nwere ike ịdị ukwuu na oge nkwụsịtụ dị oke.

Kedu ka mgbapu ebe nchekwa si egosipụta onwe ya?

Ọ bụ ihe ezi uche dị na ya iche na na mmepụta mmemme n'elu ga-egosi mmụba pasent nke ebe nchekwa nke ngwa gị ji.

Ngosipụta nke mpụga ga-abụ na n'oge ụfọdụ usoro ahụ ga-amalite ịzaghachi nwayọọ nwayọọ na mmegharị òké ma jiri nwayọọ nwayọọ na-emegharị ihuenyo ahụ. Ọ ga-ekwe omume na ndekọ usoro ga-eto eto, na-eri ohere na draịvụ ike gị. N'okwu a, ngwa gị ga-amalite ịkpa àgwà dị iche iche, ọ bụghị ịza iwu, enweghị ike imepe faịlụ, wdg.

Iji chọpụta ihe na-adapụta, anyị ga-eji ihe nyocha ebe nchekwa (nke a na-akpọ ya onye nyocha). O nwere ike ịbụ Odumegwu Ojukwu (mma otu isiokwu banyere ya) ma ọ bụ wuru n'ime nchịkọta gcc Ihe nchekwa ebe nchekwa ma ọ bụ ihe ọ bụla ọzọ. Ọ bụrụ na onye nyocha na-egosi na ntanye na-apụta n'otu n'ime ihe nzacha eserese, nke a pụtara na oge eruola itinye otu n'ime usoro akọwara n'okpuru.

Ụzọ pine atọ

Dịka ekwuru n'elu, ọ bụrụ na enwere ebe nchekwa, onye nyocha ga-atụ aka na nzacha nke rịọrọ ka e kenye ebe nchekwa site na ikpo. Ma ọ gaghị akọwapụta nzacha ahụ nke "chefuru" iji weghachi ya, nke, n'ezie, bụ onye mere mpụ. Ya mere, onye nyocha nwere ike kwado naanị egwu anyị, ma ọ bụghị egosi mgbọrọgwụ ha.

Iji chọpụta ebe nzacha "ọjọọ" dị na eserese ahụ, ị ​​nwere ike ịga site n'ibelata eserese ahụ na ọnụ ọgụgụ kacha nta nke ọnụ ebe onye nyocha ka na-achọpụta nkwụsị ma mee ka nzacha nsogbu dị na pine atọ fọdụrụnụ.

Mana ọ nwere ike ime na site n'ibelata ọnụ ọgụgụ nzacha dị na eserese ahụ, ị ​​ga-akpaghasị usoro mmekọrịta dị n'etiti nzacha na ihe ndị ọzọ nke sistemu gị na ntapu agaghịzi apụta. N'okwu a, ị ga-arụ ọrụ na eserese zuru oke ma jiri usoro akọwapụtara n'okpuru.

Usoro insulator na-amị amị

Maka mfe ngosi, anyị ga-eji eserese nke nwere otu nzacha nzacha. E gosiri ya na foto a.

Ịchọgharị igwe Mediastreamer2 VoIP. Nkeji 12

Eserese mgbe niile nke, yana ihe nzacha mgbasa ozi dị njikere emebere, a na-eji ihe nzacha nka anọ F1 ... F4, nke ụdị anọ dị iche iche, nke ị mere ogologo oge gara aga ma nwee obi abụọ banyere izi ezi ha. Agbanyeghị, ka anyị were ya na ọtụtụ n'ime ha nwere oghere ebe nchekwa. Mgbe anyị na-eme ihe omume anyị iji nyochaa onye nyocha, anyị na-amụta site na akụkọ ya na ụfọdụ nzacha rịọrọ maka ebe nchekwa ụfọdụ ma ọ dịghị eweghachi ya na n'ikuku N ugboro ole na ole. Ị nwere ike iche n'ụzọ dị mfe na a ga-enwe njikọ na ọrụ nzacha ime nke ụdị MS_VOID_SOURCE. Ọrụ ya bụ ịnara ebe nchekwa n'obo ahụ. Ihe nzacha ndị ọzọ ga-eweghachi ya ebe ahụ. Ndị ahụ. anyị ga-achọpụta eziokwu nke ntapu ahụ.

Iji chọpụta akụkụ nke pipeline enwere arụ ọrụ nke na-eduga na nkwụsị ebe nchekwa, a na-atụ aro ịmebata nzacha ọzọ nke na-atụgharị ozi site na ntinye gaa na mmepụta, mana n'otu oge ahụ na-emepụta nnomi nke ozi ntinye na-abụghị ìhè. , kama ọ bụ “dị arọ” nkịtị, wee kpochapụ ozi enwetara n'ọnụ ụzọ kpamkpam. Anyị ga-akpọ nzacha dị otú ahụ ihe mkpuchi. Anyị kwenyere na ebe ọ bụ na nzacha dị mfe, ọ dịghị nkwụsị na ya. Na otu ihe ọzọ dị mma - ọ bụrụ na anyị gbakwunye ya n'ebe ọ bụla na eserese anyị, nke a agaghị emetụta ọrụ nke sekit n'ụzọ ọ bụla. Anyị ga-egosipụta nzacha-isolator n'ụdị okirikiri nwere sekit abụọ.

Anyị na-agbanye onye na-akpachapụ anya ozugbo emechara nzacha voidsource:
Ịchọgharị igwe Mediastreamer2 VoIP. Nkeji 12

Anyị na-eme ihe omume ahụ na onye nyocha ọzọ, anyị na-ahụkwa na oge a onye nyocha ga-ata onye na-ahụ maka mkpuchi ahụ ụta. A sị ka e kwuwe, ọ bụ ya na-emepụta ihe mgbochi data, nke na-efunahụ ya site na nzacha na-amaghị ama (ma ọ bụ nzacha). Nzọụkwụ ọzọ bụ ịkwaga insulator n'akụkụ agbụ ahụ gaa n'aka nri, site na otu nzacha, wee malite nyocha ọzọ. Yabụ, site na nzọụkwụ na-ebugharị onye na-ekewapụta n'aka nri, anyị ga-enweta ọnọdụ ebe na nyocha nyocha ọzọ na-akọ ọnụ ọgụgụ nke ihe nchekwa nchekwa “leaked” ga-ebelata. Nke a pụtara na na nzọụkwụ a, insulator nọ na agbụ ahụ ozugbo nzacha nsogbu gasịrị. Ọ bụrụ na enwere naanị otu nzacha "ọjọọ", mgbe ahụ ntapu ahụ ga-apụ n'anya kpamkpam. Ya mere, anyị weputara nzacha nsogbu (ma ọ bụ otu n'ime ọtụtụ). N'ịbụ onye edozichara ihe nzacha ahụ, anyị nwere ike ịga n'ihu na-ebugharị onye na-ekewapụta ya n'aka nri n'akụkụ agbụ ahụ ruo mgbe anyị meriri nkwụsị ebe nchekwa kpamkpam.

Mmejuputa ihe nzacha ihe nzacha

Mmejuputa nke isolator dị ka nzacha mgbe niile. faịlụ nkụnye eji isi mee:

/* Файл 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

Nzacha n'onwe ya:

/* Файл 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)

Usoro iji dochie ọrụ njikwa ebe nchekwa

Maka nyocha ọzọ dị nro, mgbasa ozi mgbasa ozi na-enye ikike iji dochie ọrụ ịnweta ebe nchekwa na nke gị, nke, na mgbakwunye na ọrụ bụ isi, ga-edekọ "Ònye, ebe na ihe kpatara ya". A na-edochi anya ọrụ atọ. A na-eme nke a dị ka ndị a:

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

Njirimara a na-enyere aka n'ọnọdụ ebe onye nyocha na-ebelata ọrụ nke nzacha nke na-eme ka arụ ọrụ nke usoro nke e wuru sekit anyị kwụsị. N'ọnọdụ dị otú ahụ, ị ​​ga-ahapụ onye nyocha ma jiri dochie anya ọrụ maka ịrụ ọrụ na ebe nchekwa.

Anyị atụlewo algọridim nke omume maka eserese dị mfe nke na-enweghị alaka. Mana usoro a nwere ike itinye n'ọrụ na ikpe ndị ọzọ, n'ezie nwere mgbagwoju anya karị, mana echiche ahụ ka dị otu.

N'isiokwu na-esonụ, anyị ga-eleba anya n'okwu gbasara ịkọ ibu dị na akara akara yana ụzọ a ga-esi lụso ibu ịgbakọ oke na mgbasa ozi mgbasa ozi.

isi: www.habr.com

Tinye a comment