èšäºã®çŽ æã¯ç§ã®ãã®ããåŒçšããŸãã
éå»ã«
ã¯ã©ãããã£ã«ã¿ãŒã®ãããã°
ååã®èšäºã§ã¡ãã£ã¢ ã¹ããªãŒããŒå ã§ããŒã¿ã移åããã¡ã«ããºã ã説æããåŸãããã«é ãããå±éºæ§ã«ã€ããŠè©±ãã®ã¯è«ççã§ãããã ãããŒã¿ ãããŒãåçã®ç¹åŸŽã® XNUMX ã€ã¯ãããŒã¿ ãããŒã®ãœãŒã¹ã«ãããã£ã«ã¿ãŒã®ããŒãããã¡ã¢ãªãå²ãåœãŠããããããŒã®æåŸã«ãããã£ã«ã¿ãŒã«ãã£ãŠã¡ã¢ãªã解æŸãããŠããŒãã«æ»ãããããšã§ãããã¹ã ããã«ãæ°ããããŒã¿ã®äœæãšãã®ç Žæ£ã¯ããã®äžéã®ã©ããã§çºçããå¯èœæ§ããããŸãã äžè¬ã«ãã¡ã¢ãªã®è§£æŸã¯ãããŒã¿ ãããã¯ãäœæãããã£ã«ã¿ãŒãšã¯ç°ãªããã£ã«ã¿ãŒã«ãã£ãŠå®è¡ãããŸãã
ééçãªã¡ã¢ãªç£èŠã®èŠ³ç¹ããã¯ããã£ã«ã¿ãå ¥åãããã¯ãåä¿¡ãããšãåŠçåŸã«çŽã¡ã«ãããã¯ãç Žæ£ããŠã¡ã¢ãªã解æŸããåºåããŒã¿ãå«ãæ°ããäœæããããããã¯ãåºåããã®ãåççã§ãã ãã®å Žåããã£ã«ã¿ãŒå ã®ã¡ã¢ãª ãªãŒã¯ã¯ç°¡åã«è¿œè·¡ã§ããŸããã¢ãã©ã€ã¶ãŒããã£ã«ã¿ãŒå ã®ãªãŒã¯ãæ€åºããå Žåã次ã®ãã£ã«ã¿ãŒã¯åä¿¡ãããã¯ãé©åã«ç Žæ£ããããšã©ãŒãçºçããŸãã ããããé«ãããã©ãŒãã³ã¹ãç¶æãããšãã芳ç¹ããèŠããšãããŒã¿ ãããã¯ãæäœãããã®ã¢ãããŒãã¯çç£çã§ã¯ãããŸãããæçšãªåºåãåŸãããã«ãããŒã¿ ãããã¯ã«ã¡ã¢ãªãå²ãåœãŠãã解æŸãããããããã®å€æ°ã®æäœãå¿ èŠã«ãªããŸãã
ãã®ãããã¡ãã£ã¢ ã¹ããªãŒã㌠ãã£ã«ã¿ãŒã§ã¯ãããŒã¿åŠçãé ããªããªãããã«ãã¡ãã»ãŒãžãã³ããŒãããšãã«ç°¡åã«ã³ããŒãäœæããæ©èœã䜿çšãããŸã (ååã®èšäºã§èª¬æããŸãã)ã ãããã®é¢æ°ã¯ãã³ããŒããããå€ããã¡ãã»ãŒãžã®ããŒã¿ ãããã¯ãã¡ãã»ãŒãž ããããŒã«ãæ·»ä»ãããããšã«ãã£ãŠãã¡ãã»ãŒãž ããããŒã®æ°ããã€ã³ã¹ã¿ã³ã¹ãäœæããã ãã§ãã ãã®çµæãXNUMX ã€ã®ããŒã¿ ãããã¯ã« XNUMX ã€ã®ããããä»å ãããããŒã¿ ãããã¯å ã®åç §ã«ãŠã³ã¿ãã€ã³ã¯ãªã¡ã³ããããŸãã ãã ããXNUMX ã€ã®ã¡ãã»ãŒãžã®ããã«èŠããŸãã ãã®ãããªããœãŒã·ã£ã«åããããããŒã¿ ãããã¯ã«ã¯ããã«å€ãã®ã¡ãã»ãŒãžãååšããå¯èœæ§ããããŸããããšãã°ãMS_TEE ãã£ã«ã¿ãŒã¯ãã®ãããªã©ã€ã ã³ããŒãäžåºŠã« XNUMX åçæããåºåéã§åæ£ããŸãã ãã§ãŒã³å ã®ãã¹ãŠã®ãã£ã«ã¿ãŒãæ£ããåäœããå Žåããã€ãã©ã€ã³ã®çµãããŸã§ã«ããã®åç §ã«ãŠã³ã¿ãŒã¯ãŒãã«éããã¡ã¢ãªãŒè§£æŸé¢æ°ãåŒã³åºãããŸãã ms_free()ã åŒã³åºããçºçããªãå Žåããã®ã¡ã¢ãªéšåã¯ããŒãã«æ»ãããªããªããŸãã ãæŒãããããšã«ãªããŸãã ã©ã€ã ã³ããŒã䜿çšãã代åãšããŠã(éåžžã®ã³ããŒã®å Žåãšåæ§ã«) ã©ã®ã°ã©ã ãã£ã«ã¿ãŒãã¡ã¢ãª ãªãŒã¯ãçºçãããŠããããç°¡åã«å€æããæ©èœã倱ãããŸãã
ã¡ãã£ã¢ ã¹ããªãŒããŒã®éçºè ã¯ãã€ãã£ã ãã£ã«ã¿ãŒã®ã¡ã¢ãª ãªãŒã¯ãèŠã€ãã責任ããããããã»ãšãã©ã®å Žåããããã°ããå¿ èŠã¯ãããŸããã ããããã¯ã©ãã ãã£ã«ã¿ãŒã䜿çšãããšãèªåèªèº«ã®å¹žçŠãããã¿ããã¿ã«ããããšã«ãªããã³ãŒãå ã®ãªãŒã¯ã®æ€çŽ¢ã«è²»ããæéã¯ç²ŸåºŠã«äŸåããŸãã ãããã°æéãççž®ããã«ã¯ããã£ã«ã¿ãŒãéçºãããšãã«ãªãŒã¯æ€åºæè¡ãæ€èšããå¿ èŠããããŸãã ããã«ããã£ã«ã¿ãå®éã®ã·ã¹ãã ã«é©çšãããå Žåã«ã®ã¿ãªãŒã¯ãçŸããå¯èœæ§ããããŸãããã®å Žåãã容çè ãã®æ°ã¯èšå€§ã§ããããããã°ã®æéã¯éãããŠããå¯èœæ§ããããŸãã
ã¡ã¢ãªãªãŒã¯ã¯ã©ã®ããã«ããŠçŸããã®ã§ãããã?
ããã°ã©ã åºåã§æ¬¡ã®ããã«ä»®å®ããã®ã¯è«ççã§ã top ã¢ããªã±ãŒã·ã§ã³ãå æããã¡ã¢ãªã®å²åã®å¢å ã衚瀺ãããŸãã
å€éšã®çç¶ãšããŠã¯ãããæç¹ããã·ã¹ãã ãããŠã¹ã®åãã«ãã£ãããšåå¿ãå§ãããã£ãããšç»é¢ãåæç»ãããããã«ãªããŸãã ã·ã¹ãã ãã°ãå¢å€§ããããŒã ãã©ã€ãã®ã¹ããŒã¹ãæ¶è²»ããå¯èœæ§ããããŸãã ãã®å Žåãã¢ããªã±ãŒã·ã§ã³ã¯ã³ãã³ãã«å¿çããªããªã£ããããã¡ã€ã«ãéããªããªã£ãããããªã©ãå¥åŠãªåäœããå§ããŸãã
ãªãŒã¯ã®çºçãæ€åºããã«ã¯ãã¡ã¢ãªã¢ãã©ã€ã¶ïŒä»¥äžãã¢ãã©ã€ã¶ïŒã䜿çšããŸãã ãããããªã ãŽã¡ã«ã°ãªã³ã ïŒè¯ã
ã¹ãªãŒãã€ã³ãºå·¥æ³
åè¿°ããããã«ãã¡ã¢ãª ãªãŒã¯ãçºçããå Žåãã¢ãã©ã€ã¶ãŒã¯ããŒãããã®ã¡ã¢ãªå²ãåœãŠãèŠæ±ãããã£ã«ã¿ãŒãæããŸãã ãããããã£ã«ã¿ãŒãè¿ãããšããå¿ããããã£ã«ã¿ãŒãå®éã«ã¯ãããåå ã§ããããšã¯ææãããŸããã ãããã£ãŠãåæè ã¯ç§ãã¡ã®ææã確èªããããšããã§ããŸãããããã®æ ¹æºã瀺ãããšã¯ã§ããŸããã
ã°ã©ãå ã®ãäžè¯ããã£ã«ã¿ãŒã®äœçœ®ãèŠã€ããã«ã¯ãã¢ãã©ã€ã¶ãŒãäŸç¶ãšããŠãªãŒã¯ãæ€åºããããŒãã®æå°æ°ãŸã§ã°ã©ããæžãããåé¡ã®ãããã£ã«ã¿ãŒãæ®ãã® XNUMX ã€ã®ãã³ã«ç¹å®ããŸãã
ãã ããã°ã©ãå ã®ãã£ã«ã¿ãŒã®æ°ãæžãããšããã£ã«ã¿ãŒãšã·ã¹ãã ã®ä»ã®èŠçŽ ã®éã®éåžžã®çžäºäœçšãäžæããããªãŒã¯ãçºçããªããªãå ŽåããããŸãã ãã®å Žåããã«ãµã€ãºã®ã°ã©ããæäœãã以äžã«æŠèª¬ããã¢ãããŒãã䜿çšããå¿ èŠããããŸãã
ã¹ã©ã€ãã€ã³ã·ã¥ã¬ãŒã¿ãŒæ¹åŒ
è¡šçŸãç°¡åã«ããããã«ãXNUMX ã€ã®ãã£ã«ã¿ãŒ ãã§ãŒã³ã§æ§æãããã°ã©ãã䜿çšããŸãã 圌女ãåçã«åã£ãŠããŸãã
æ¢è£œã®ã¡ãã£ã¢ ã¹ããªãŒã ãã£ã«ã¿ãŒã«å ããŠã1 ã€ã®ç°ãªãã¿ã€ãã® 4 ã€ã®ã¯ã©ãã ãã£ã«ã¿ãŒ FXNUMX...FXNUMX ã䜿çšãããŠããéåžžã®ã°ã©ããããã¯ããã£ãšåã«äœæãããã®ã§ããã®æ£ç¢ºãã«çãã®äœå°ã¯ãããŸããã ãã ãããã®ãã¡ã®ããã€ãã«ã¡ã¢ãª ãªãŒã¯ããããšä»®å®ããŸãã ããã°ã©ã ãå®è¡ããŠã¢ãã©ã€ã¶ãŒãç£èŠãããšããã®ã¬ããŒããããç¹å®ã®ãã£ã«ã¿ãŒãäžå®éã®ã¡ã¢ãªãèŠæ±ãããããããŒãã« N åè¿ããªãã£ãããšãããããŸãã MS_VOID_SOURCE ã¿ã€ãã®å éšãã£ã«ã¿ãŒé¢æ°ãžã®ãªã³ã¯ãããããšã¯å®¹æã«æšæž¬ã§ããŸãã 圌ã®ä»äºã¯ãããŒãããã¡ã¢ãªãååŸããããšã§ãã ä»ã®ãã£ã«ã¿ãŒã¯ãããããã«è¿ãå¿ èŠããããŸãã ãããã®ã æŒæŽ©ã®äºå®ãçºèŠããŸãã
ãã€ãã©ã€ã³ã®ã©ã®ã»ã¯ã·ã§ã³ã§ã¡ã¢ãª ãªãŒã¯ã«ã€ãªããéã¢ã¯ã·ã§ã³ããã£ãã®ããå€æããã«ã¯ãåã«ã¡ãã»ãŒãžãå ¥åããåºåã«ã·ããããã ãã§ãªããåæã«ã©ã€ãã§ã¯ãªãå ¥åã¡ãã»ãŒãžã®ã³ããŒãäœæããè¿œå ã®ãã£ã«ã¿ãŒãå°å ¥ããããšãææ¡ãããŠããŸãã ããããéåžžã®ãéããã¡ãã»ãŒãžã§ããããã®åŸãå ¥ãå£ã§åä¿¡ããã¡ãã»ãŒãžãå®å šã«åé€ããŸãã ãã®ãããªãã£ã«ã¿ãŒã絶çžäœãšåŒã³ãŸãã ç°¡æãã£ã«ã¿ãŒã§ãã®ã§æŒãã¯ãªããšæããŸãã ãããŠããã XNUMX ã€ã®è¯å®çãªç¹æ§ããããŸãããããã°ã©ãã®ã©ããã«è¿œå ããŠããåè·¯ã®åäœã«ã¯ãŸã£ãã圱é¿ããŸããã ãã£ã«ã¿ã¢ã€ãœã¬ãŒã¿ãäºéåè·¯ãæã€åã®åœ¢ã§æããŸãã
voidsource ãã£ã«ã¿ãŒã®çŽåŸã«ã¢ã€ãœã¬ãŒã¿ãŒããªã³ã«ããŸãã
ã¢ãã©ã€ã¶ãŒã䜿çšããŠããã°ã©ã ãå床å®è¡ãããšãä»åºŠã¯ã¢ãã©ã€ã¶ãŒã絶çžäœã®ããã§ããããšãããããŸãã çµå±ã®ãšãããããŒã¿ã®ãããã¯ãäœæããŠããã®ã¯åœŒã§ããããã®åŸãæªç¥ã®äžæ³šæãªãã£ã«ã¿ãŒã«ãã£ãŠå€±ãããŸãã 次ã®ã¹ãããã§ã¯ããã§ãŒã³ã«æ²¿ã£ãŠçµ¶çžäœããã£ã«ã¿ãŒ XNUMX ã€åå³ã«ç§»åãã解æãå床éå§ããŸãã ãããã£ãŠãã¢ã€ãœã¬ãŒã¿ã段éçã«å³ã«ç§»åãããšã次ã®ã¢ãã©ã€ã¶ ã¬ããŒãã§ããªãŒã¯ãã¡ã¢ãª ãããã¯ã®æ°ãæžå°ããç¶æ³ãåŸãããŸãã ããã¯ããã®ã¹ãããã§ã¯ãã€ã³ã·ã¥ã¬ãŒã¿ãŒãåé¡ã®ãããã£ã«ã¿ãŒã®çŽåŸã®ãã§ãŒã³ã«ãã£ãããšãæå³ããŸãã ãäžè¯ããã£ã«ã¿ãŒã XNUMX ã€ã ãã§ããã°ãæŒãã¯å®å šã«ãªããªããŸãã ãããã£ãŠãåé¡ã®ãããã£ã«ã¿ãŒ (ãŸãã¯è€æ°ã®ãã¡ã® XNUMX ã€) ãç¹å®ããŸããã ãã£ã«ã¿ããä¿®æ£ãããããã¡ã¢ãª ãªãŒã¯ãå®å šã«å æãããŸã§ããã§ãŒã³ã«æ²¿ã£ãŠã¢ã€ãœã¬ãŒã¿ãå³ã«ç§»åãç¶ããããšãã§ããŸãã
ã¢ã€ãœã¬ãŒã¿ãã£ã«ã¿ãŒã®å®è£
ã¢ã€ãœã¬ãŒã¿ã®å®è£ ã¯éåžžã®ãã£ã«ã¿ãšãŸã£ããåãããã«èŠããŸãã ããããŒãã¡ã€ã«:
/* Ѐайл 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)
ã¡ã¢ãªç®¡çæ©èœã®çœ®ãæãæ¹æ³
ãã埮åŠãªèª¿æ»ã®ããã«ãã¡ãã£ã¢ ã¹ããªãŒããŒã¯ã¡ã¢ãª ã¢ã¯ã»ã¹æ©èœãç¬èªã®ãã®ã«çœ®ãæããæ©èœãæäŸããäž»ãªäœæ¥ã«å ããŠãã誰ããã©ãã§ããªãããèšé²ããŸãã XNUMXã€ã®æ©èœã眮ãæããããŸãã ããã¯æ¬¡ã®ããã«è¡ãããŸãã
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);
ãã®æ©èœã¯ãã¢ãã©ã€ã¶ããã£ã«ã¿ã®åäœãé ãããããŠãåè·¯ãæ§ç¯ãããŠããã·ã¹ãã ã®åäœãäžæãããå Žåã«åœ¹ç«ã¡ãŸãã ãã®ãããªç¶æ³ã§ã¯ãã¢ãã©ã€ã¶ãŒãæŸæ£ããã¡ã¢ãªãæäœããé¢æ°ã®ä»£æ¿ã䜿çšããå¿ èŠããããŸãã
åå²ãå«ãŸãªãåçŽãªã°ã©ãã®ã¢ã¯ã·ã§ã³ã®ã¢ã«ãŽãªãºã ãæ€èšããŸããã ãã ãããã®ã¢ãããŒãã¯ããã¡ããããè€éã«ãªãä»ã®ã±ãŒã¹ã«ãé©çšã§ããŸãããèãæ¹ã¯åãã§ãã
次ã®èšäºã§ã¯ããã£ãã«ãŒã®è² è·ãèŠç©ããåé¡ãšãã¡ãã£ã¢ ã¹ããªãŒããŒã®é床ã®ã³ã³ãã¥ãŒãã£ã³ã°è² è·ã«å¯ŸåŠããæ¹æ³ã«ã€ããŠèª¬æããŸãã
åºæïŒ habr.com