Ke ʻimi nei i ka ʻenekini Mediastreamer2 VoIP. Mahele 12

Lawe ʻia ka mea o ka ʻatikala mai kaʻu zen channel.

Ke ʻimi nei i ka ʻenekini Mediastreamer2 VoIP. Mahele 12

I ka hope loa 'ōlelo, Ua hoʻohiki wau e noʻonoʻo i ka pilikia o ka loiloi ʻana i ka ukana ma ka ticker a me nā ala e hakakā ai i ka hoʻouka helu helu nui ma ka streamer media. Akā ua hoʻoholo wau e ʻoi aku ka maikaʻi o ka uhi ʻana i nā pilikia o ka debugging craft filters e pili ana i ka neʻe ʻana o ka ʻikepili a laila noʻonoʻo wale i nā pilikia o ka hoʻokō ʻana.

Hoʻopau i nā kānana hana

Ma hope o ko mākou nānā ʻana i ke ʻano o ka hoʻoneʻe ʻana i ka ʻikepili i kahi streamer media ma ka ʻatikala mua, pono ke kamaʻilio e pili ana i nā pōʻino huna i loko. ʻO kekahi o nā hiʻohiʻona o ke kumu "data flow" ʻo ia ka hoʻokaʻawale ʻana o ka hoʻomanaʻo mai ka puʻu i nā kānana i loaʻa ma ke kumu o ka kahe ʻikepili, a hoʻokuʻu ʻia ka hoʻomanaʻo a hoʻihoʻi ʻia i ka puʻu e nā kānana i loaʻa ma ka hope o ke kahe. alahele. Eia kekahi, hiki ke hana i ka ʻikepili hou a me kona luku ʻana i kahi ma waena. Ma keʻano laulā, hana ʻia ka hoʻokuʻu hoʻomanaʻo e kahi kānana ʻokoʻa ma mua o ka mea i hana i ka poloka ʻikepili.

Mai ka manaʻo o ka nānā ʻana i ka hoʻomanaʻo hoʻomanaʻo, he mea kūpono i ka kānana, i ka loaʻa ʻana o kahi poloka hoʻokomo, e luku koke iā ia ma hope o ka hana ʻana, hoʻokuʻu i ka hoʻomanaʻo, a hoʻopuka i kahi poloka i hana hou ʻia me ka ʻikepili puka. I kēia hihia, e ʻike maʻalahi ka leak hoʻomanaʻo i loko o ka kānana - inā ʻike ka mea hoʻoponopono i kahi leak i loko o ka kānana, a laila ʻaʻole e luku pono ka kānana aʻe i nā poloka e hiki mai ana a aia kekahi hewa i loko. Akā, mai ka manaʻo o ka mālama ʻana i ka hana kiʻekiʻe, ʻaʻole huahana kēia ala i ka hana ʻana me nā poloka data - alakaʻi ia i kahi helu nui o nā hana e hoʻokaʻawale / manuahi ka hoʻomanaʻo no nā poloka ʻikepili me ka ʻole o kahi huahana pono.

No kēia kumu, nā kānana streamer media, i ʻole e hoʻolōʻihi i ka hana ʻikepili, hoʻohana i nā hana e hana i nā kope maʻalahi ke kope ʻana i nā leka (ua kamaʻilio mākou e pili ana iā lākou ma ka ʻatikala mua). Hoʻokumu wale kēia mau hana i kahi manawa hou o ke poʻo memo ma ka "hoʻopili" iā ia i kahi poloka o ka ʻikepili mai ka memo "kahiko" i kope ʻia. ʻO ka hopena, ua hoʻopili ʻia nā poʻomanaʻo ʻelua i hoʻokahi poloka ʻikepili a hoʻonui ʻia ka helu kuhikuhi ma ka poloka ʻikepili. Akā e like ia me nā memo ʻelua. Hiki ke hoʻonui i nā memo me kahi poloka ʻikepili "socialized", no ka laʻana, hoʻopuka ka kānana MS_TEE i hoʻokahi kakini o ia mau kope māmā i ka manawa hoʻokahi, e hāʻawi ana iā lākou i waena o kāna mau huahana. Inā holo pololei nā kānana a pau i ke kaulahao, ma ka hopena o ka pipeline pono e hiki i kēia helu kuhikuhi i ka zero a e kapa ʻia ka hana hoʻokuʻu hoʻomanaʻo: ms_free(). Inā ʻaʻole hiki ke kāhea ʻia, a laila ʻaʻole e hoʻihoʻi hou ʻia kēia ʻāpana hoʻomanaʻo i ka puʻu, ʻo ia hoʻi. e "leak". ʻO ke kumukūʻai no ka hoʻohana ʻana i nā kope māmā ʻo ia ka nalowale o ka hiki ke hoʻoholo maʻalahi (e like me ke ʻano me nā kope maʻamau) ʻo ka kānana kiʻi e kahe ana ka hoʻomanaʻo.

No ka mea, na nā mea hoʻomohala media streamer ke kuleana no ka ʻimi ʻana i nā leaks hoʻomanaʻo i nā kānana maoli, ʻaʻole paha ʻoe e hoʻopau iā lākou. Akā me kāu kānana hana, ʻo ʻoe ka ʻūhini o kou hauʻoli ponoʻī, a ʻo ka manawa āu e hoʻolilo ai i ka ʻimi ʻana i nā leaks i kāu code e hilinaʻi ʻia i kāu pololei. No ka hōʻemi ʻana i kou manawa hoʻopau, pono mākou e nānā i nā ʻenehana ʻike leak i ka wā e hoʻomohala ai i nā kānana. Eia kekahi, hiki i ka leak ke hōʻike iā ia iho i ka wā e hoʻohana ʻia ai ka kānana i kahi ʻōnaehana maoli, kahi i nui ai ka nui o nā "hoʻopiʻi" a ua kaupalena ʻia ka manawa no ka debugging.

Pehea e hōʻike ʻia ai kahi leak hoʻomanaʻo?

He mea kūpono ke manaʻo i loko o ka hoʻopuka papahana luna e hōʻike i ka piʻi ʻana o ka pākēneka o ka hoʻomanaʻo i noho ʻia e kāu noi.

ʻO ka hōʻike o waho e hoʻomaka ana ka ʻōnaehana e pane mālie i ka neʻe ʻana o ka ʻiole a huki lohi i ka pale. Hiki nō hoʻi ke ulu ka log system, e ʻai ana i ka lewa ma kāu paʻa paʻa. I kēia hihia, e hoʻomaka ana kāu noi e hana ʻē, ʻaʻole pane i nā kauoha, ʻaʻole hiki ke wehe i kahi faila, etc.

No ka ʻike ʻana i ka hiki ʻana mai o kahi leak, e hoʻohana mākou i kahi mea hoʻomanaʻo hoʻomanaʻo (ma hope aʻe i kapa ʻia ʻo ka analyzer). Hiki paha Pākaʻi (maikaʻi loa 'atikala e pili ana iā ia) a i ʻole i kūkulu ʻia i loko o ka compiler gc MemorySanitizer a i ʻole kekahi mea ʻē aʻe. Inā hōʻike ka mea hōʻike i kahi leak i kekahi o nā kānana kiʻi, a laila ʻo ia ka manawa e hoʻohana ai i kekahi o nā ʻano i wehewehe ʻia ma lalo nei.

ʻEkolu Pines Method

E like me ka mea i ʻōlelo ʻia ma luna, inā he leak hoʻomanaʻo, e kuhikuhi ka mea loiloi i ka kānana i noi i ka hoʻokaʻawale hoʻomanaʻo mai ka puʻu. Akā,ʻaʻole ia e kuhikuhi i ka kānana i "poina" i ka hoʻihoʻiʻana,ʻo ia hoʻi,ʻo ia ka mea hewa. No laila, hiki i ka mea hoʻoponopono ke hōʻoia i kā mākou hopohopo, akā ʻaʻole hōʻike i ko lākou aʻa.

No ka ʻike ʻana i kahi o ka kānana "ʻino" i ka pakuhi, hiki iā ʻoe ke hele ma ka hoʻohaʻahaʻa ʻana i ka pakuhi i ka helu liʻiliʻi o nā nodes kahi e ʻike mau ai ka mea anana i kahi leak a hoʻokaʻawale i ka kānana pilikia i nā koena ʻekolu pine.

Akā, ma ka hoʻemi ʻana i ka helu o nā kānana ma ka pakuhi, e hoʻopau ʻoe i ka hana maʻamau o ka pilina ma waena o nā kānana a me nā mea ʻē aʻe o kāu ʻōnaehana a ʻaʻole e ʻike hou ʻia ka leak. I kēia hihia, pono ʻoe e hana me kahi pakuhi piha piha a hoʻohana i ke ala i hōʻike ʻia ma lalo nei.

ʻO ke ʻano insulator sliding

No ka maʻalahi o ka hōʻike ʻana, e hoʻohana mākou i ka pakuhi i hoʻokahi kaulahao o nā kānana. Hōʻike ʻia ʻo ia ma ke kiʻi.

Ke ʻimi nei i ka ʻenekini Mediastreamer2 VoIP. Mahele 12

He kiʻi maʻamau i hoʻohana ʻia me nā kānana streamer media i mākaukau ʻia, ʻehā mau kānana hana F1...F4 i hoʻohana ʻia, ʻehā mau ʻano like ʻole, āu i hana ai i ka manawa lōʻihi a ʻaʻohe kānalua no ka pololei. Eia naʻe, e noʻonoʻo kākou he mau leaks hoʻomanaʻo kekahi o lākou. Ke holo mākou i kā mākou papahana no ka nānā ʻana i ka mea loiloi, ʻike mākou mai kāna hōʻike ʻana ua noi kekahi kānana i ka nui o ka hoʻomanaʻo a ʻaʻole i hoʻihoʻi i ka puʻu N i nā manawa. Hiki iā ʻoe ke koho maʻalahi e loaʻa kahi loulou i nā hana kānana kūloko o ke ʻano MS_VOID_SOURCE. ʻO kāna hana ka lawe ʻana i ka hoʻomanaʻo mai ka puʻu. Pono nā kānana ʻē aʻe e hoʻihoʻi i laila. ʻO kēlā mau mea. e ʻike mākou i ka ʻoiaʻiʻo o ka leak.

No ka hoʻoholo ʻana i kahi ʻāpana o ka pipeline i hana ʻole ʻia e alakaʻi i kahi leaka hoʻomanaʻo, ua manaʻo ʻia e hoʻolauna i kahi kānana hou e hoʻololi wale i nā memo mai ka hoʻokomo i ka hoʻopuka, akā i ka manawa like e hana i kahi kope o ka memo hoʻokomo ʻaʻole māmā. , akā he "kaumaha" maʻamau, a laila holoi loa i ka memo i loaʻa ma ka puka. E kapa mākou i kēlā kānana he insulator. Manaʻo mākou no ka mea maʻalahi ka kānana, ʻaʻohe leakage i loko. A hoʻokahi waiwai maikaʻi - inā mākou e hoʻohui iā ia ma nā wahi āpau o kā mākou pakuhi, ʻaʻole e pili kēia i ka hana o ke kaapuni ma kekahi ʻano. E hōʻike mākou i ka kānana-isolator ma ke ʻano o kahi pōʻai me kahi kaapuni pālua.

Hoʻomaka mākou i ka mea hoʻokaʻawale ma hope koke o ka kānana voidsource:
Ke ʻimi nei i ka ʻenekini Mediastreamer2 VoIP. Mahele 12

Holo hou mākou i ka papahana me ka mea anaana, a ʻike mākou i kēia manawa e hoʻopiʻi ka mea ananela i ka insulator. Ma hope o nā mea a pau, ʻo ia ka mea nāna i hana i nā poloka o ka ʻikepili, a laila nalowale ʻia e kahi kānana mālama ʻole ʻole (a i ʻole kānana). ʻO ka hana aʻe e hoʻoneʻe i ka insulator ma ke kaulahao ma ka ʻākau, ma kahi kānana, a hoʻomaka hou i ka nānā ʻana. No laila, ʻo ka neʻe ʻana i ka mea hoʻokaʻawale i ka ʻākau, e loaʻa iā mākou kahi kūlana i ka hōʻike ʻana aʻe e hōʻike ana ka helu o nā poloka hoʻomanaʻo "leaked". ʻO ia hoʻi, ma kēia ʻanuʻu, aia ka insulator i ke kaulahao ma hope koke o ka kānana pilikia. Inā hoʻokahi wale nō kānana "ʻino", a laila e nalowale loa ka leak. No laila, ua hoʻokaʻawale mākou i ka kānana pilikia (a i ʻole kekahi o nā mea he nui). Ke "hoʻopaʻa" i ka kānana, hiki iā mākou ke hoʻomau i ka neʻe ʻana i ka mea hoʻokaʻawale i ka ʻākau ma ke kaulahao a hiki i ka lanakila ʻana i nā leaks hoʻomanaʻo.

Ka hoʻokō ʻana i kahi kānana kaʻawale

ʻO ka hoʻokō isolator e like me ke kānana maʻamau. waihona poʻomanaʻo:

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

ʻO ka kānana ponoʻī:

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

Ke ala no ka pani ʻana i nā hana hoʻokele hoʻomanaʻo

No ka noiʻi maʻalahi, hāʻawi ka media streamer i ka hiki ke hoʻololi i nā hana hoʻomanaʻo me kāu ponoʻī, ka mea, ma kahi o ka hana nui, e hoʻopaʻa ʻia "ʻO wai, ma hea a me ke kumu". Ua pani ʻia ʻekolu hana. Hana ʻia kēia penei:

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

Ke kōkua nei kēia hiʻohiʻona i nā hihia kahi e hoʻolōʻihi ai ka mea loiloi i ka hana o nā kānana a hiki ke hoʻopau ʻia ka hana o ka ʻōnaehana i kūkulu ʻia ai kā mākou kaapuni. I kēlā ʻano kūlana, pono ʻoe e haʻalele i ka analyzer a hoʻohana i ke pani o nā hana no ka hana ʻana me ka hoʻomanaʻo.

Ua noʻonoʻo mākou i kahi algorithm o nā hana no kahi pakuhi maʻalahi ʻaʻole i loaʻa nā lālā. Akā hiki ke hoʻohana ʻia kēia ala i nā hihia ʻē aʻe, ʻoiaʻiʻo me ka paʻakikī, akā mau ka manaʻo.

Ma ka ʻatikala aʻe, e nānā mākou i ka pilikia o ka hoʻohālikelike ʻana i ka ukana ma kahi ticker a me nā ala e hakakā ai i ka hoʻouka ʻana i ka nui o ka hoʻopili ʻana ma kahi streamer media.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka