DSP

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的一些说明,传一些图片和大家分享一下,这个图片的内容不是我写的,是一篇论文中的。