在开发TI提供的video_copy例程的时候,对于例程当中有一些代码的作用或原理不太理解,有以下三个问题。
var VIDDEC_COPY =
xdc.useModule('ti.sdo.ce.examples.codecs.viddec_copy.VIDDEC_COPY');
var VIDENC_COPY =
xdc.useModule('ti.sdo.ce.examples.codecs.videnc_copy.VIDENC_COPY');
看起来和后面具体调用的算法有密切的关系,所以想请教一下useModule本身这个函数大概起到一个什么作用?以及产生的VIDDEC_COPY这个变量内容大概是什么样的,或者说在后面调用算法当中起到什么作用。
Void main(Int argc, Char *argv[])
{
/* init Codec Engine */
CERuntime_init();
/* init trace */
GT_init();
/* create a mask to allow a trace-print welcome message below */
GT_create(>Mask, "servers.video_copy.evmDM6446");
/* ...and initialize all masks in this module to "on" */
GT_set("servers.video_copy.evmDM6446=01234567");
GT_0trace(gtMask, GT_4CLASS, "main> Welcome to DSP server's main().\n");
}
看起来是一些和跟踪打印信息相关的函数,所以我不太明白main函数起到一个什么样的作用?Server本身是在什么地方启动的。
应该就是对应ARM端的process函数。请问在这个调用过程当中DSP端的process是怎么样对应到ARM端的函数的?我看到可能相关的代码如下,但不知道具体的原理所以想请教一下。
metaonly module VIDDEC_COPY inherits ti.sdo.ce.video.IVIDDEC
{
/*!
* ======== ialgFxns ========
* name of this algorithm's xDAIS alg fxn table
*/
override readonly config String ialgFxns = "VIDDECCOPY_TI_VIDDECCOPY";
}
IVIDDEC_Fxns VIDDECCOPY_TI_VIDDECCOPY = { /* module_vendor_interface */
{IALGFXNS},
VIDDECCOPY_TI_process,
VIDDECCOPY_TI_control,
};
虽然但是,自己说一下我现在的理解,对不对就不知道了...
第三段其实是VIDDEC_COPY这一module的定义,由TI提供的标准module ti.sdo.ce.video.IVIDDEC定义而来。第三段括号里的内容则规定了VIDDEC_COPY在代码里对应函数集变量名称,该函数集变量对应的process函数即为VIDDECCOPY_TI_process
然后第一段useModule则是对codecs生成的VIDDEC_COPY这一module的使用,相当于声明了server和app都要用到codecs当中的这个VIDDEC_COPY。从而使得server/app与codecs联系起来。
第二段servers的main函数暂时不懂,,,查到的资料里面也没有main函数的具体说明。虽然看起来main函数只是初始化函数加一些跟踪用的函数。。。但是难道说在代码运行过程中dsp端只做初始化和跟踪就可以了吗,那main函数退出了之后程序不就停止了吗..所以这里还是不太懂,,