DM6446学习的方法,刚学习第二天
2019-07-13 12:38发布
生成海报
学习笔记:
IVIDENC1_Fxns VIDENC1COPY_TI_IVIDENC1COPY = { /*module_vendor_interface */
{IALGFXNS},
VIDENC1COPY_TI_process,
VIDENC1COPY_TI_control,
};
//这个数据结构为算法DSP和ARM交互的一个关键性数据结构,本人现在是这么理解的,其中 VIDENC1COPY_TI_process为我们算法处理的主函数, VIDENC1COPY_TI_control为ARM对DSP的控制程序,DM6446不用自己去写ARM和DSP通信,而是他们自己通过一些列的软件连接在一起,就是所谓的隔离层一样,一个跳梁。
typedef struct IVIDENC1_Fxns {
IALG_Fxns ialg; /**< XDAIS algorithm interface.
XDAS_Int32 (*process)(IVIDENC1_Handlehandle, IVIDEO1_BufDescIn *inBufs, XDM_BufDesc *outBufs, IVIDENC1_InArgs *inArgs, IVIDENC1_OutArgs
*outArgs);
XDAS_Int32(*control)(IVIDENC1_Handle handle, IVIDENC1_Cmd id, IVIDENC1_DynamicParams *params, IVIDENC1_Status *status);
} IVIDENC1_Fxns;
//上面的参数就是在要和上面的函数结构一致,要靠自己去写,ARM那边的话要一一对应上,应该协议就是这个样子的。
IALG_Fxns的数据结构:
Struct IALG_Fxns
{
Void *implementationId; //这个应该就是这个IALG_Fxns地址,还是指向它本身的数据
Int (*algAlloc)(const IALG_Params *params, structIALG_Fxns **parentFxns, IALG_MemRec *memTab);//内存的一个分配
Void (*algActivate)(IALG_Handle handle);
Int (*algControl)(IALG_Handle handle, IALG_Cmd cmd, IALG_Status *status);
Void (*algDeactivate)(IALG_Handle handle);
Int (*algFree)(IALG_Handle handle, IALG_MemRec *memTab);
Int (*algInit)(IALG_Handle handle, const IALG_MemRec *memTab,
IALG_Handle parent, const IALG_Params *params);
Void (*algMoved)(IALG_Handle handle, const IALG_MemRec *memTab,
IALG_Handle parent, const IALG_Params *params);
Int (*algNumAlloc)(Void);
};
关于上面的一些说明,今天我在看了一些关于DSP的一些说明,传一些图片和大家分享一下,这个图片的内容不是我写的,是一篇论文中的。




























打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮