DM6446学习的方法,刚学习第二天

来源:互联网 发布:淘宝联盟做推广多少钱 编辑:程序博客网 时间:2024/05/01 16:08

学习笔记:

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















0 0