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.

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("MMMMMMMMMMMMMMMMMMMMMMMMMM\n");
                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.