This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

XDAIS IALG_Fxns接口理解



算法使用XDAIS接口中IALG_Fxns结构体,结构体内容如下:

typedef struct IALG_Fxns {

    Void    *implementationId;

    Void    (*algActivate)(IALG_Handle);

    Int       (*algAlloc)(const IALG_Params *, struct IALG_Fxns **, IALG_MemRec *);

    Int       (*algControl)(IALG_Handle, IALG_Cmd, IALG_Status *);

    Void    (*algDeactivate)(IALG_Handle);

    Int       (*algFree)(IALG_Handle, IALG_MemRec *);

    Int       (*algInit)(IALG_Handle, const IALG_MemRec *, IALG_Handle, const IALG_Params *);

    Void    (*algMoved)(IALG_Handle, const IALG_MemRec *, IALG_Handle, const IALG_Params *);

    Int       (*algNumAlloc)(Void);

} IALG_Fxns;

问题:

1、algActivate函数指针,如果我是单个算法的时候,我是没有实现该接口的(赋值为NULL),如果需要使用多个算法(x64P链接多个a64P,每个a64P对应独立的一个算法),这时候,我是否需要实现algActivate?

2、algActivate的作用是激活算法实例,是不是意味着,我在算法初始化的时候,可以一口气进行多个算法的内存分配(使用algAlloc)和内存初始化(使用algInit),然后在调用具体算法实例进行process或者control前进行algActivate即可,调用完process或control后,进行algDeactivate,以此类推调用其余算法的process或者control?如果我理解有误,麻烦明确指出。

3、algMoved函数接口的作用我了解到是移除算法,具体作用是什么?算法被移除后,意味如果需要调用该算法,就需要重新进行algAlloc和algInit才能进行process和control吗?