TIwilliam hill官网
直播中

张萍

7年用户 176经验值
私信 关注
[问答]

DM8148 DSP算法处理里取得的YUV送给A8后写文件异常

各位大神,我在dsp里做人脸识别算法时遇到一点问题,可能比较简单,不过还望各位大神指导下,如下:

func(...)
[
       FVID2_Frame            *pFrame;
      这里是获取YUV数据,填充pFrame
      Utils_queGet(&pObj->processQ, (Ptr *)&pFrame, 1, BIOS_WAIT_FOREVER);
     ....
     static unsigned int a=0;
     static unsigned char *pYUV = NULL;
    
      if(a==0)
      [
          //这里图像是cif的,所以宽高我暂时写死了
           pYUV = (unsigned char *)malloc(sizeof(char)*352*288*1.5);
           if( pYUV == NULL )
           [
                Vps_printf("MMMMMMMMMMMMMMMMMMMMMMMMMMn");
                return FVID2_EFAIL;
           ]           
           a=1;
      ]
      AlgLink_FaceChStatus pChStatus;///算法结果结构体
      memcpy(pYUV, pFrame->addr[0][0], 352*288);///这里我只拷贝了Y分量的数据--------------------------------------(1)式
      pChStatus.pYUV = pYUV;//将Y数据的地址赋值给算法结果结构里的pChStatus.pYUV指针  ----------------------------(2)式
   
   ///发送处理后的结果给A8端,然后触发A8里之前注册的回调函数,这里我只是测试,所以实际没有做算法处理
    System_linkControl(SYSTEM_LINK_ID_HOST,
         VSYS_EVENT_FACE_RESULT,
             &pChStatus,
         sizeof(AlgLink_FaceChStatus),
         FALSE);
]

在A8的回调函数里面,首先对 pChStatus.pYUV做了内存映射,然后写文件
FILE *fYUV;
int ret = VE_mapMem((unsigned int)pFaceResult->pYUV, 352*288, (void **)&pVirYUV);
fwrite(pVirYUV, 1, 352*288, fYUV);///写Y分量到文件中
用7YUV软件打开写好的Y分量文件,结果显示异常,图像中有一条一条的黑条,如果是写YUV数据就是图像夹杂着绿色的横条,
,然后我又做了另外一个测试,注释掉(1)式,(2)式改成 pChStatus.pYUV=pFrame->addr[0][0];
这里再次写Y分量的文件显示就是正常的了,
为什么会出现这2种情况?2种情况之间就多了一个memcpy.

回帖(3)

乔婧

2018-6-21 11:17:07
Zhou Zhinan,
pYUV = (unsigned char *)malloc(sizeof(char)*352*288*1.5);
这是在DSP申请了一块区域,请问这块区域是cacheable的么?请问你在DSP侧使用的memcpy是使用cpu来copy还是EDMA? 如果是前者,就有可能是cache的问题。因为没有看到你的cache操作。
举报

张萍

2018-6-21 11:26:39
引用: 物是人非aaa 发表于 2018-6-21 11:17
Zhou Zhinan,
pYUV = (unsigned char *)malloc(sizeof(char)*352*288*1.5);
这是在DSP申请了一块区域,请问这块区域是cacheable的么?请问你在DSP侧使用的memcpy是使用cpu来copy还是EDMA? 如果是前者,就有可能是cache的问题。因为没有看到你的cache操作。

你好,ChrisMeng
我现在把相关的代码都贴出来,如下附件:
还请您帮忙分析下,谢谢!
举报

张萍

2018-6-21 11:45:00
引用: Ryita 发表于 2018-6-21 11:26
你好,ChrisMeng
我现在把相关的代码都贴出来,如下附件:
还请您帮忙分析下,谢谢!

已经找到原因,刚上电的一段时间,YUV图像不稳定,会有横条.,稳定一段时间后,图像就正常了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分