http://blog.csdn.net/gzzaigcn/article/details/7420873
首先,按照DM6467用户手册在Linux下正确安装所需的各种软件,并正确配置各种环境变量及路径(见另文)。以下操作均在DVSDK目录下进行,本文主要介绍符合TI标准XDM算法架构的自编算法编译实现步骤及DSP端服务器的实现。
步骤一:
在codec_engine_2_10_02/examples/ti/sdo/ce/examples/codecs目录中复制其中的Imgenc1_copy文件夹,对新文件夹重新命名(如Imgenc1_abcde),此时Imgenc1_abcde中有文件:IMGENC1_COPY.xdc、IMGENC1_COPY.xs、makefile、package.bld、package.xdc、package.xs;其中,makefile不用作变动,将IMGENC1_COPY.xdc、IMGENC1_COPY.xs、package.bld、package.xdc、package.xs文件内容中所有的“copy”修改为“abcde”,注意修改后的大小写必须与修改前的保持一致,再将IMGENC1_COPY.xdc、IMGENC1_COPY.xs文件名改为IMGENC1_ABCDE.xdc、IMGENC1_ABCDE.xs,再次强调修改后的大小写必须与修改前的保持一致。
步骤二:
在codec_engine_2_10_02/examples/ti/xdais/dm/examples目录中复制其中的Imgenc1_copy文件夹,对新文件夹重新命名(如Imgenc1_abcde),此时Imgenc1_abcde中有文件:imgenc1_copy.c、imgenc1_copy.qti、imgenc1_copy_ti.h、imgenc1_copy_ti_priv.h、package.bld、package.xdc、package.xs;将这些文件内容中所有的“copy”修改为“abcde”,注意修改后的大小写必须与修改前的保持一致,再将imgenc1_copy.c、imgenc1_copy.qti、imgenc1_copy_ti.h、imgenc1_copy_ti_priv.h文件名中的“copy”改为“abcde”,再次强调修改后的大小写必须与修改前的保持一致;接着,对imgenc1_abcde.c进行修改,此文件就是实现自编算法的主文件,其中包含五个主要的函数接口,xxx_TI_free、xxx_TI_alloc、xxx_TI_control、xxx_TI_process、xxx_TI_initObj,其中xxx_TI_control实现命令控制,xxx_TI_process实现算法处理,imgenc1_abcde_ti_priv.h提供了imgenc1_abcde.c所需的结构定义及函数声明。
步骤三:
在codec_engine_2_10_02/examples/ti/sdo/ce/examples/codecs/Imgenc1_abcde目录中打开终端,运行gmake命令,如果编译成功,则将在codec_engine_2_10_02/examples/ti/xdais/dm/
examples/Imgenc1_abcde目录中生成包含Imgenc1_abcde.a64P和Imgenc1_abcde.a470MV文件的lib目录,运行gmake clean即可清除生成的所有的文件。
步骤四:
在dm6467_dvsdk_combos_1_17/packages/ti/sdo/codecs目录中复制其中的Imgenc1_copy文件夹,对新文件夹重新命名(如Imgenc1_abcde),对其中所有文件名及文件内容的修改如步骤一或者步骤二所述,并将步骤二中的自编算法实现文件imgenc1_abcde.c复制到此文件夹,再将步骤三中生成的在codec_engine_2_10_02/examples/ti/xdais/dm/Imgenc1_abcde/lib目录中文件Imgenc1_abcdeImgenc1_abcde.a470MV拷贝到此文件夹的lib目录中。
步骤五:
在dm6467_dvsdk_combos_1_17/packages/ti/sdo/servers/encode目录中,根据需要修改encode.cfg(服务器配置文件),再转到dm6467_dvsdk_combos_1_17/目录下,打开终端,运gmake命令,及可在dm6467_dvsdk_combos_1_17/packages/ti/sdo/servers/encode目录中生成相应的DSP服务器端文件encodeCombo.x64P,运行gmake clean即可清除生成的所有的文件。
encode.cfg(服务器配置文件)修改
在/* get various codec modules; i.e., implementation of codecs */下添加
var IMGENC1_ABCDE=xdc.useModule('ti.sdo.codecs.imgenc1_abcde.IMGENC1_ABCDE');
IMGENC1_ABCDE.alg.codeSection = "DDR2";
在/* Switching off Outs Bufs Cache */下添加
IMGENC1_ABCDE.manageOutBufsCache = [ false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false ];
紧接着在Server.algs = [
]中添加
{name: "abcde", mod: IMGENC1_ABCDE, groupId : n , threadAttrs: {
stackMemId: 0, priority: Server.MINPRI + 1}
},
注意:n为顺序排列的数字,(0~n)
找到DSKT2.DARAM_SCRATCH_SIZES = [ 32768, 32768, 32768,32768,32768,0,0, /* ... */ 0 ];其中的非零元素个数与Server.algs = [
]中的元素个数相对应,默认值为32678(最多支持20个数字)