Lawe ʻia ka mea o ka ʻatikala mai kaʻu
I ka hope loa
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
ʻ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.
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:
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