#include <xdc/std.h>
#include <ti/sdo/ce/visa.h>
#include <ti/sdo/ce/examples/codecs/scale/iscale.h>
#include <ti/sdo/ce/osal/Memory.h>
#include "aec.h"
#include "_aec.h"
static XDAS_Int32 process(IAEC_Handle h,
XDM1_BufDesc *inBufDesc,
XDM1_BufDesc *outBufDesc,
IAec_InArgs *inArgs,
IAec_OutArgs *outArgs);
static XDAS_Int32 control(IAEC_Handle h,
IAEC_Cmd id,
IAec_DynamicParams *params);
/*
* Stubs must implement the interface they "stub" for. This scale stub
* proxy's for ISCALE_Fxns, which is IALG + process() and control().
*
* Note that the IALG fxns for the stub currently aren't called, so
* they're all set to NULL.
*/
IAEC_Fxns IAEC_STUBS = {
{&IAEC_STUBS, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
process, control,
};
/*
* ======== process ========
* This is the stub-implementation for the process method
*/
static XDAS_Int32 process(IAEC_Handle h,
XDM1_BufDesc *inBufDesc,
XDM1_BufDesc *outBufDesc,
IAec_InArgs *inArgs,
IAec_OutArgs *outArgs)
{
XDAS_Int32 i = 0;
XDAS_Int32 retVal;
VISA_Handle visa = (VISA_Handle)h;
_IAEC_Msg *msg;
/* get a message appropriate for this algorithm */
if ((msg = (_IAEC_Msg *)VISA_allocMsg(visa)) == NULL) {
return (IAEC_ERUNTIME);
}
/* Specify the processing command that the skeleton should do */
msg->visa.cmd = _AEC_CPROCESS;
/* inBuf is a pointer, so we have to convert it */
msg->cmd.process.inBufDesc.numBufs = inBufDesc->numBufs;
for (i = 0; i < inBufDesc->numBufs; i++)
{
msg->cmd.process.inBufDesc.descs[i].buf = (XDAS_Int8 *)
Memory_getBufferPhysicalAddress(inBufDesc->descs[i].buf, inBufDesc->descs[i].bufSize, NULL);
if (msg->cmd.process.inBufDesc.descs[i].buf == NULL) {
retVal = IAEC_ERUNTIME;
goto exit;
}
msg->cmd.process.inBufDesc.descs[i].bufSize = inBufDesc->descs[i].bufSize;
}
/* Similarly with outBuf. Note that inArgs and outArgs contain no
* pointers, so we can simply copy the entire original structure.
*/
msg->cmd.process.outBufDesc.descs[0].buf = (XDAS_Int8 *)
Memory_getBufferPhysicalAddress(outBufDesc->descs[0].buf,
outBufDesc->descs[0].bufSize, NULL);
if (msg->cmd.process.outBufDesc.descs[0].buf == NULL) {
retVal = IAEC_ERUNTIME;
goto exit;
}
msg->cmd.process.outBufDesc.descs[0].bufSize = outBufDesc->descs[0].bufSize;
/* inArgs has no pointers, so simply copy the struct fields into the msg */
msg->cmd.process.inArgs = *inArgs;
msg->cmd.process.outArgs = *outArgs;
/* Note that outArgs is *output* and need not be provided to the skel */
/* send the message to the skeleton and wait for completion */
retVal = VISA_call(visa, (VISA_Msg *)&msg);
/* copy out the outArgs */
*outArgs = msg->cmd.process.outArgs;
/* Note that we need not copy inArgs out of the msg. */
/*
* Note that we don't have to do any reverse address translation, as the
* originally provided buffers haven't changed.
*/
exit:
VISA_freeMsg(visa, (VISA_Msg)msg);
return (retVal);
}
/*
* ======== control ========
* This is the stub-implementation for the control method
*/
static XDAS_Int32 control(IAEC_Handle h,
IAEC_Cmd id,
IAec_DynamicParams *params)
{
XDAS_Int32 retVal;
VISA_Handle visa = (VISA_Handle)h;
_IAEC_Msg *msg;
/* get a message appropriate for this algorithm */
if ((msg = (_IAEC_Msg *)VISA_allocMsg(visa)) == NULL) {
return (IAEC_ERUNTIME);
}
/* marshall the command */
msg->visa.cmd = _AEC_CCONTROL;
msg->cmd.control.id = id;
/* no pointers, just copy the dynamic params struct into the msg */
msg->cmd.control.params = *params;
/* send the message to the skeleton and wait for completion */
retVal = VISA_call(visa, (VISA_Msg *)&msg);
/* nothing to unmarshall, just free the msg. */
VISA_freeMsg(visa, (VISA_Msg)msg);
return (retVal);
}
/*
* @(#) ti.sdo.ce.examples.extensions.scale; 1, 0, 0,155; 11-11-2008 00:30:13; /db/atree/library/trees/ce-j10x/src/
*/
没有合适的资源?快使用搜索试试~ 我知道了~
aec.rar_TI的aec算法_dm6467_dm6467 ccs_比较好Aec算法_消回声
共70个文件
dep:17个
ov5t:8个
o64p:8个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 12 浏览量
2022-09-23
10:43:07
上传
评论
收藏 117KB RAR 举报
温馨提示
回声低消算法,DM6467平台,codeengine
资源推荐
资源详情
资源评论
收起资源包目录
aec.rar (70个子文件)
aec
package.mak 20KB
IAEC.xdc 2KB
.libraries 0B
aec.h 2KB
aec_skel.c 2KB
iaec.h 4KB
.interfaces 0B
.xdcenv.mak 2KB
package.bld 2KB
.dlls 0B
.executables 0B
lib
aec.av5T 8KB
aec_debug.av5T.mak 6KB
aec.a64P.mak 10KB
aec_debug.a64P.mak 11KB
aec.av5T.mak 6KB
aec_debug.av5T 37KB
aec.a64P 36KB
aec_debug.a64P 43KB
aec.c 4KB
package.xs 2KB
aec_stubs.c 4KB
package
package.xdc.dep 4KB
.vers_g104 0B
package_ti.sdo.ce.examples.extensions.aec.c 401B
internal
cfg
ti.sdo.ce.examples.extensions.aec.sch 5KB
rel
ti_sdo_ce_examples_extensions_aec.xdc.inc 307B
ti.sdo.ce.examples.extensions.aec.ccs 5KB
build.cfg 951B
package.doc.xml 23KB
package.defs.h 139B
ti.sdo.ce.examples.extensions.aec.pjt 370B
package.bld.xml 5KB
.vers_b102 0B
lib
lib
aec
aec.ov5T 4KB
aec.o64P 15KB
aec_stubs.o64P.dep 3KB
aec_skel.o64P 8KB
aec_skel.ov5T 1KB
aec_stubs.o64P 10KB
aec_stubs.ov5T 2KB
aec.ov5T.dep 6KB
aec_skel.ov5T.dep 6KB
aec_skel.o64P.dep 3KB
aec.o64P.dep 3KB
aec_stubs.ov5T.dep 6KB
package
package_ti.sdo.ce.examples.extensions.aec.ov5T.dep 1KB
package_ti.sdo.ce.examples.extensions.aec.o64P.dep 819B
package_ti.sdo.ce.examples.extensions.aec.o64P 2KB
package_ti.sdo.ce.examples.extensions.aec.ov5T 872B
aec_debug
aec.ov5T 10KB
aec.o64P 18KB
aec_stubs.o64P.dep 3KB
aec_skel.o64P 9KB
aec_skel.ov5T 6KB
aec_stubs.o64P 12KB
aec_stubs.ov5T 8KB
aec.ov5T.dep 6KB
aec_skel.ov5T.dep 6KB
aec_skel.o64P.dep 3KB
aec.o64P.dep 3KB
aec_stubs.ov5T.dep 6KB
package
package_ti.sdo.ce.examples.extensions.aec.ov5T.dep 1KB
package_ti.sdo.ce.examples.extensions.aec.o64P.dep 825B
package_ti.sdo.ce.examples.extensions.aec.o64P 2KB
package_ti.sdo.ce.examples.extensions.aec.ov5T 2KB
.vers_r108 0B
package.xdc.inc 280B
external
package.xdc 2KB
_aec.h 828B
共 70 条
- 1
资源评论
局外狗
- 粉丝: 64
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功