XDM封装小结

某个算法终于做出来了!然后就是XDM封装,app应用程序调用。虽然以前做过XDM封装,但是这次和以前的有些不同,小结一下吧。

    首先是编译成库文件。以前是在CCS下编译成.l64p的。这样还是比较麻烦的。现在的方法是在linux下编译成.a64p文件。编译的方法是找到TI提供的videnc_copy例程,videnc_copy_ti.h和videnc_copy_ti_priv.h都不用改(如果懒到不想改调用接口函数名称的话)。只把算法套在videnc_copy.c文件中即可。这个文件,也基本只改VIDENCCOPY_TI_initObj和VIDENCCOPY_TI_process函数。算法加进来很简单,注意不需要以前在CCS下编译.l64p时繁琐的TI头文件,算法只要在VC下可以运行即可。

    第二个修改的是内存分配。以前的内存分配方法是通过#gragma DATA_SECTION指定段,然后在codec engine server中指定段的地址,麻烦。其实还可以不指定段,直接定义全局变量,这样只要堆足够就可以啦。现在的方法是通过函数MEM_alloc(1,EXT_HEAP_SIZE,1)或者MEM_alloc(1,INT_HEAP_SIZE,1)来分配内存,类似于malloc函数。MEM_alloc是DSP/BIOS函数。——竟然还有DSP/BIOS?!

    三是注意刷CACHE。不刷不一定不对,刷了肯定对。函数是BCACHE_wbAll()和BCACHE_wbInvAll(),它们也是DSP/BIOS的API函数。

    四是小心VC和CCS下常用的标准C函数,如math.h里面的。不知道为啥它们跑到linux或者codec engine server里就不听话了。有个bug找了几天,才发现时cos()和sin()函数在linux的结果错了。不知道为啥。所以就不调用了,自己定义。比如sin()定义成:#define _sin(x) ((((((a6*(x) + a5)*(x) + a4)*(x) + a3)*(x) + a2)*(x) + a1)*(x) + a0)

    好。这个算法目前告一段落,机器视觉and分类器,我来了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值