ืืืืืจ ืฉื ืืืืืจ ืืงืื ืืื ื
ืืขืืจ
ืืืชืืจ ืืืืื ืืกื ื ื ืืืืื
ืืืจื ืฉืืืงื ื ืืช ืืื ืื ืื ืืืขืืจืช ื ืชืื ืื ืืกืืจืืืจ ืืืื ืืืืืจ ืืงืืื, ืืืื ืืืืื ื ืืืืจ ืขื ืืกืื ืืช ืืืืืืืช ืื. ืืืช ืืชืืื ืืช ืฉื ืขืงืจืื "ืืจืืืช ืื ืชืื ืื" ืืื ืฉืืืืจืื ืืืงืฆื ืืืขืจืืื ืืืกื ื ืื ืืืืืงืืื ืืืงืืจ ืืจืืืช ืื ืชืื ืื, ืืืืืืจืื ืืฉืชืืจืจ ืืืืืืจ ืืขืจืืื ืขื ืืื ืืกื ื ืื ืืืืืงืืื ืืกืืฃ ืืืจืืื. ื ึธืชึดืื. ืื ืืกืฃ, ืืฆืืจืช ื ืชืื ืื ืืืฉืื ืืืฉืืืชื ืืืืืื ืืืชืจืืฉ ืืืคืฉืื ืืืืฆืข. ืืืืคื ืืืื, ืฉืืจืืจ ืืืืืจืื ืืชืืฆืข ืขื ืืื ืืกื ื ืฉืื ื ืืื ืฉืืฆืจ ืืช ืืืืง ืื ืชืื ืื.
ืื ืงืืืช ืืื ืฉื ื ืืืืจ ืืืืจืื ืฉืงืืฃ, ืืืื ืกืืืจ ืฉืืืกื ื, ืขื ืงืืืช ืืืืง ืงืื, ืืฉืืื ืืืชื ืืื ืืืืจ ืขืืืื, ืฉืืจืืจ ืืืืืจืื ืืืืฆืื ืืืืง ืืืฉ ืฉื ืืฆืจ ืขื ื ืชืื ื ืคืื. ืืืงืจื ืื, ืืืืคืช ืืืืจืื ืืืกื ื ืชืชืืื ืืงืืืช - ืื ืืื ืชื ืืืื ืืืืคื ืืืกื ื, ืื ืืืกื ื ืืื ืื ืืืจืก ืืืืงืื ื ืื ืกืื ืืื ืฉืฆืจืื ืืืฉ ืื ืฉืืืื. ืืื ืื ืงืืืช ืืืื ืฉื ืฉืืืจื ืขื ืืืฆืืขืื ืืืืืื, ืืืฉื ืื ืืขืืืื ืขื ืืืืงื ื ืชืื ืื ืืื ื ืคืจืืืืงืืืืืช - ืืื ืืืืืื ืืืกืคืจ ืจื ืฉื ืคืขืืืืช ืืืงืฆืืช/ืคืื ืื ืืืืจืื ืืืืืงื ื ืชืื ืื ืืื ืื ืคืื ืฉืืืืฉื.
ืืกืืื ืื, ืืกื ื ื ืืืื ืกืืจืืืจ, ืขื ืื ืช ืื ืืืื ืืช ืขืืืื ืื ืชืื ืื, ืืฉืชืืฉืื ืืคืื ืงืฆืืืช ืืืืฆืจืืช ืืขืชืงืืช ืงืืืช ืืขืช ืืขืชืงืช ืืืืขืืช (ืืืืจื ื ืขืืืื ืืืืืจ ืืงืืื). ืคืื ืงืฆืืืช ืืื ืืืฆืจืืช ืืืคืข ืืืฉ ืฉื ืืืชืจืช ืืืืืขื ืจืง ืขื ืืื "ืฆืืจืืฃ" ืืืื ืืืืง ื ืชืื ืื ืืืืืืขื "ืืืฉื ื" ืืืืขืชืงืช. ืืชืืฆืื ืืื, ืฉืชื ืืืชืจืืช ืืืืืจืืช ืืืืืง ื ืชืื ืื ืืื ืืืื ื ืืืชืืืืกืืช ืืืืืง ืื ืชืื ืื ืืืืื. ืืื ืื ืืืจืื ืืื ืฉืชื ืืืืขืืช. ืืืืืืช ืืืืืช ืืืชืจ ืืืืขืืช ืขื ืืืืง ื ืชืื ืื "ืืืจืชื" ืืื, ืืืฉื, ืืกื ื MS_TEE ืืืฆืจ ืชืจืืกืจ ืขืืชืงืื ืงืืื ืืืื ืืืช ืืืช, ืืืคืืฅ ืืืชื ืืื ืืคืืืื ืฉืื. ืื ืื ืืืกื ื ืื ืืฉืจืฉืจืช ืคืืขืืื ืืืืื, ืขื ืกืืฃ ืืฆืื ืืจ ืืืืจ ืืื ื ืืืชืืืืกืืช ืืื ืืืืืข ืืืคืก ืืคืื ืงืฆืืืช ืฉืืจืืจ ืืืืืจืื ืชืืงืจื: ms_free(). ืื ืืฉืืื ืื ืชืชืจืืฉ, ืื ืคืืกืช ืืืืืจืื ืืื ืื ืชืืืืจ ืืืชืจ ืืขืจืืื, ืืืืืจ. ืื "ืืืืืฃ". ืืืืืจ ืืฉืืืืฉ ืืขืืชืงืื ืงืืื ืืื ืืืืื ืืืืืืช ืืงืืืข ืืงืืืช (ืืคื ืฉืืืื ืืืงืจื ืฉื ืขืืชืงืื ืจืืืืื) ืืืื ืืกื ื ืืจืฃ ืืืืฃ ืืืืจืื.
ืืืืืื ืฉืืคืชืื ืกืืจืืืจ ืืืืื ืืืจืืื ืืืืชืืจ ืืืืคืืช ืืืืจืื ืืืกื ื ืื ืืงืืจืืื, ืกืืืจ ืืื ืื ืฉืื ืชืฆืืจื ืื ืคืืช ืืืชื. ืืื ืขื ืืกื ื ืืืฆืืจื ืฉืื, ืืชื ืืืื ืฉื ืืืืฉืจ ืฉืื, ืืืืื ืฉืืชื ืืืื ืืืืคืืฉ ืืืจ ืืืืคืืช ืืงืื ืฉืื ืืืื ืชืืื ืืืืืง ืฉืื. ืืื ืืืคืืืช ืืช ืืื ืืืชืืจ ืืืืืื ืฉืื, ืขืืื ื ืืืืื ืืื ืืงืืช ืืืืื ืืืืคืืช ืืขืช ืคืืชืื ืืกื ื ืื. ืื ืืกืฃ, ืืืื ืืงืจืืช ืฉืืืืืคื ืชืชืืื ืจืง ืืืฉืจ ืืคืืืืจ ืืืืฉื ืืืขืจืืช ืืืืชืืช, ืฉืื ืืกืคืจ ื"ืืฉืืืื" ืขืฉืื ืืืืืช ืขืฆืื ืืืืื ืื ืืคืื ืืืืื ืืืืื.
ืืืฆื ืืชืืืืช ืืืืคืช ืืืืจืื?
ืื ืืืืื ื ืืื ืื ืื ืืคืื ืืชืืื ืืช ืืืง ืขืืืื ืืฆืื ืืช ืืืื ืืืืืจืื ืืืืื ืืืืืจ ืฉื ืืืฉ ืขื ืืื ืืืืฉืื ืฉืื.
ืืืืืื ืืืืฆืื ื ืืืื ืฉืืฉืื ืืกืืื ืืืขืจืืช ืชืชืืื ืืืืื ืืื ืืชื ืืขืช ืืขืืืจ ืืืื ืืื ืชืฆืืืจ ืืืืฉ ืืช ืืืกื. ืืืชืื ืื ืฉืืืื ืืืขืจืืช ืืืื ืืืืื ืืงืื ืืืื ื ืืงืฉืื ืฉืื. ืืืงืจื ืื, ืืืคืืืงืฆืื ืฉืื ืชืชืืื ืืืชื ืื ืืฆืืจื ืืืืจื, ืื ืชืืื ืืคืงืืืืช, ืื ืชืืื ืืคืชืื ืงืืืฅ ืืื'.
ืืื ืืืืืช ืืชืจืืฉืืช ืืืืคื, ื ืฉืชืืฉ ืื ืชื ืืืืจืื (ืืืื ืื ืชื). ืื ืืืื ืืืืืช ืืืืืจืื ื (ืืึนื
ืฉืืืช ืฉืืืฉืช ืืืืจื ืื
ืืคื ืฉืืืืืจ ืืขืื, ืื ืืฉ ืืืืคืช ืืืืจืื, ืืื ืชื ืืฆืืืข ืขื ืืืกื ื ืฉืืืงืฉ ืืงืฆืืช ืืืืจืื ืืืขืจืืื. ืืื ืื ืื ืืฆืืืข ืขื ืืืกื ื ืฉ"ืฉืื" ืืืืืืจ ืืืชื, ืฉืืืขืฉื ืืื ืืืฉื. ืืคืืื, ืืื ืชื ืืืื ืจืง ืืืฉืจ ืืช ืืคืืืื ืฉืื ื, ืื ืื ืืืฆืืืข ืขื ืืฉืืจืฉ ืฉืืื.
ืืื ืืืจืจ ืืช ืืืงืืื ืฉื ืืืกื ื ื"ืจืข" ืืืจืฃ, ื ืืชื ืืืฆืข ืฆืืฆืื ืืืจืฃ ืืืกืคืจ ืืืื ืืืื ืฉื ืฆืืชืื ืฉืืื ืืื ืชื ืขืืืื ืืืื ืืืืคื ืืืืงื ืืช ืืืกื ื ืืืขืืืชื ืืฉืืืฉืช ืืืืจื ืื ืื ืืชืจืื.
ืืื ืืืื ืืงืจืืช ืฉืขื ืืื ืืคืืชืช ืืกืคืจ ืืืกื ื ืื ืืืจืฃ, ืชืฉืืฉ ืืช ืืืื ืืืื ืืจืืงืฆืื ืืจืืื ืืื ืืกื ื ืื ืืืืื ืืื ืืืจืื ืฉื ืืืขืจืืช ืฉืื ืืืืืืคื ืื ืชืืคืืข ืืืชืจ. ืืืงืจื ืื, ืชืฆืืจื ืืขืืื ืขื ืืจืฃ ืืืืื ืืื ืืืืฉืชืืฉ ืืืืฉื ืืืชืืืจืช ืืืื.
ืฉืืืช ืืืืื ืืืื
ืืคืฉืืืช ืืืฆืืช, ื ืฉืชืืฉ ืืืจืฃ ืืืืจืื ืืฉืจืฉืจืช ืืืช ืฉื ืืกื ื ืื. ืืื ืืืฆืืช ืืชืืื ื.
ืืจืฃ ืจืืื ืื, ืืฆื ืืกื ื ื ืกืืจืืืจ ืืืื ืืืื ืื, ื ืขืฉื ืฉืืืืฉ ืืืจืืขื ืืกื ื ื craft F1...F4, ืืืจืืขื ืกืืืื ืฉืื ืื, ืืืชื ืืื ืชื ืืืื ืืืื ืืื ืกืคืง ืื ืืื ืืชื. ืขื ืืืช, ืืื ื ื ืื ืฉืืืื ืืื ืืฉ ืืืืคืืช ืืืืจืื. ืืคืขืืช ืืชืืื ืืช ืฉืื ื ืื ืืืืจ ืืื ืชื, ืื ื ืืืืื ืืืืื ืฉืื ืฉืืกื ื ืืกืืื ืืืงืฉ ืืืืช ืืกืืืืช ืฉื ืืืืจืื ืืื ืืืืืจ ืืืชื ื-Hap N ืืกืคืจ ืคืขืืื. ืืชื ืืืื ืืงืืืช ืื ืืฉ ืฉืืืื ืงืืฉืืจ ืืคืื ืงืฆืืืช ืืกืื ืื ืืคื ืืืืืช ืืกืื MS_VOID_SOURCE. ืืืฉืืื ืฉืื ืืื ืืงืืช ืืืืจืื ืืืขืจืืื. ืืกื ื ืื ืืืจืื ืืืืืื ืืืืืืจ ืืืชื ืืฉื. ืึธืึตื. ืื ื ื ืืื ืืช ืขืืืืช ืืืืืคื.
ืืื ืืงืืืข ืืืืื ืงืืข ืฉื ืืฆืื ืืจ ืืื ืืืกืจ ืคืขืืื ืฉืืืืื ืืืืืคืช ืืืืจืื, ืืืฆืข ืืืื ืืก ืืกื ื ื ืืกืฃ ืฉืคืฉืื ืืขืืืจ ืืืืขืืช ืืงืื ืืคืื, ืื ืืืงืืื ืืืฆืจ ืขืืชืง ืฉื ืืืืขืช ืืงืื ืฉืืื ื ืงืื. , ืืื "ืืื" ืจืืื, ืืื ืืืืง ืืืืืืื ืืช ืืืืืขื ืฉืืชืงืืื ืืื ืืกื. ืืืกื ื ืืื ื ืงืจื ืืืืื. ืื ื ืืืืื ืื ืฉืืืืืื ืฉืืคืืืืจ ืคืฉืื, ืืื ืื ื ืืืื. ืืขืื ืชืืื ื ืืืืืืช ืืืช - ืื ื ืืกืืฃ ืืืชื ืืื ืืงืื ืืืจืฃ ืฉืื ื, ืื ืื ืืฉืคืืข ืขื ืคืขืืืช ืืืขืื ืืฉืื ืฆืืจื. ื ืฆืื ืืช ืืืืื ืืืกื ื ืืฆืืจื ืฉื ืืขืื ืขื ืืขืื ืืคืื.
ืื ื ืืคืขืืืื ืืช ืืืืืื ืืื ืืืืจ ืืกื ื ืืงืืจ ืืจืืง:
ืื ืื ื ืืจืืฆืื ืืช ืืชืืื ืืช ืขื ืืื ืชื ืฉืื, ืืจืืืื ืฉืืคืขื ืืื ืชื ืืืฉืื ืืช ืืืืืื. ืืืจื ืืื, ืื ืืื ืฉืืืฆืจ ืืขืช ืืืืงืื ืฉื ื ืชืื ืื, ืืฉืจ ืื ืืืืืื ืืืืืื ืขื ืืื ืืกื ื ืจืฉืื ื (ืื ืืกื ื ืื) ืื ืืืืขืื. ืืฉืื ืืื ืืื ืืืขืืืจ ืืช ืืืืืื ืืืืจื ืืฉืจืฉืจืช ืืืื ื, ืขื ืืื ืืกื ื ืืื, ืืืืชืืื ืืช ืื ืืชืื ืืืืฉ. ืื, ืฉืื ืืืจ ืฉืื ืืืืช ืืืืืื ืืืื ื, ื ืงืื ืืฆื ืฉืื ืืืื ืื ืืชืื ืืื ืืกืคืจ ืืืืงื ืืืืืจืื "ืืืืคื" ืืงืื. ืืืฉืืขืืช ืืื ืฉืืฉืื ืื ืืืืืื ืืื ืืฉืจืฉืจืช ืืื ืืืืจ ืืกื ื ืืืขืื. ืื ืืื ืจืง โโืืกื ื "ืจืข" ืืื, ืืืืืคื ืชืืขืื ืืืื. ืืคืืื, ืืืงืื ื ืืช ืืืกื ื ืืืขืืืชื (ืื ืืื ืืืื). ืืืืจ ืฉ"ืชืืงื ื" ืืช ืืืกื ื, ื ืืื ืืืืฉืื ืืืืื ืืช ืืืืืื ืืืื ื ืืืืจื ืืฉืจืฉืจืช ืขื ืฉื ืืืก ืืืืืืื ืืืืคืืช ืืืืจืื.
ืืืฉืื ืืกื ื ืืืืื
ืืืฉืื ืืืืืื ื ืจืื ืืืืืง ืืื ืืกื ื ืจืืื. ืงืืืฅ ืืืืชืจืช:
/* ะคะฐะนะป 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
ืืืกื ื ืขืฆืื:
/* ะคะฐะนะป 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)
ืฉืืื ืืืืืคืช ืคืื ืงืฆืืืช ื ืืืื ืืืืจืื
ืืืืงืจ ืขืืื ืืืชืจ, ืกืืจืืืจ ืืืืื ืืกืคืง ืืช ืืืืืืช ืืืืืืฃ ืคืื ืงืฆืืืช ืืืฉื ืืืืืจืื ืืคืื ืงืฆืืืช ืืฉืื, ืืฉืจ ืื ืืกืฃ ืืขืืืื ืืขืืงืจืืช, ืืชืขืื "ืื, ืืืคื ืืืื". ืฉืืืฉ ืคืื ืงืฆืืืช ืืืืืคืืช. ืื ื ืขืฉื ืืืืคื ืืื:
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);
ืชืืื ื ืื ืืกืืืขืช ืืืงืจืื ืืื ืืื ืชื ืืื ืืช ืคืขืืืช ืืืกื ื ืื ืขื ืืื ืื ืฉืคืขืืืืช ืืืขืจืืช ืื ืื ืื ืืืขืื ืฉืื ื ืืฉืชืืฉืช. ืืืฆื ืืื, ืขืืื ืื ืืืฉ ืืช ืืื ืชื ืืืืฉืชืืฉ ืืืืืคืช ืคืื ืงืฆืืืช ืืขืืืื ืขื ืืืืจืื.
ืฉืงืื ื ืืืืืจืืชื ืฉื ืคืขืืืืช ืขืืืจ ืืจืฃ ืคืฉืื ืฉืืื ื ืืืื ืขื ืคืื. ืืื ืืืฉื ืื ืืืืื ืืืืืช ืืืืฉืืช ืขื ืืงืจืื ืืืจืื, ืืืืื ืขื ืืืชืจ ืืืจืืืืช, ืืื ืืจืขืืื ื ืฉืืจ ืืื.
ืืืืืจ ืืื, ื ืืื ืืช ื ืืฉื ืืขืจืืช ืืขืืืก ืขื ืืืงืจ ืืืจืืื ืืืืืื ืืขืืืก ืืืฉืื ืืืคืจื ืืกืืจืืืจ ืืืื.
ืืงืืจ: www.habr.com