TI中文支持网
TI专业的中文技术问题搜集分享网站

关于在8127 ipnc中使用nsf的问题

群内的朋友, TI技术同仁:

    你们好!

 我在8127 ipnc rdk v3.8中使用vpss的nsf时遇到了一个这样的问题,请知晓的高手点拨一下,不甚感激!!

我建立了一个很简单的链路(1920×1080),来测试nsf link,数据链路如下:

  cameralink –> nsf link –> ipcFramesOut(vpss) –> ipcFramesIn(A8)

我的cameralink的参数设置如下:

    CameraLink_CreateParams camPrm;
    CameraLink_VipInstParams * pCamInstPrm;
    CameraLink_OutParams * pCamOutPrm;
    CameraLink_CreateParams_Init(&camPrm);
    camPrm.outQueParams[0].nextLink = nsf_link_id;
    camPrm.ispLinkId = SYSTEM_LINK_ID_INVALID;
    camPrm.glbceLinkId = SYSTEM_LINK_ID_INVALID;
    camPrm.captureMode = CAMERA_LINK_CAPMODE_DDR;
    //camPrm.captureMode = CAMERA_LINK_CAPMODE_ISIF;
    camPrm.numAudioChannels = 0;
    camPrm.vsEnable = FALSE;
    camPrm.useMaxFrameSize = 0;
    camPrm.numVipInst = 1;
    camPrm.tilerEnable = FALSE;
    // CameraLink_VipInstParams
    pCamInstPrm = &camPrm.vipInst[0];
    pCamInstPrm->vipInstId = SYSTEM_CAMERA_INST_VP_CSI2;
    pCamInstPrm->videoDecoderId = SYSTEM_DEVICE_VID_CAM_IMX290_DRV;    // IMX290
    pCamInstPrm->inDataFormat = SYSTEM_DF_BAYER_RAW;
    pCamInstPrm->numOutput = 1;    
    pCamInstPrm->standard = SYSTEM_STD_1080P_60;
    pCamInstPrm->sensorOutWidth = 1920;
    pCamInstPrm->sensorOutHeight = 1080;
    // CameraLink_OutParams
    pCamOutPrm = &pCamInstPrm->outParams[0];
    pCamOutPrm->scEnable = FALSE;
    pCamOutPrm->dataFormat = SYSTEM_DF_YUV422I_YUYV;
    pCamOutPrm->outQueId = 0;
而nsflink的代码如下:

    NsfLink_CreateParams nsfPrm;
    NsfLink_CreateParams_Init(&nsfPrm);
    nsfPrm.enable[0] = TRUE;
    nsfPrm.numOutQue = 1;
    nsfPrm.bypassNsf = NSF_LINK_BYPASS_MODE_MAX;//NSF_LINK_BYPASS_SNF_TNF;// NSF_LINK_BYPASS_NONE;
    nsfPrm.inputFrameRate = 60;
    nsfPrm.inQueParams.prevLinkId = camera_link_id;
    nsfPrm.inQueParams.prevLinkQueId = 0;
    nsfPrm.nsfStrength = NSF_LINK_NF_STRENGTH_AUTO;
    nsfPrm.numBufsPerCh = 6;
    nsfPrm.outputFrameRate = 60;
    nsfPrm.outQueParams[0].nextLink = nextLinkId;
    nsfPrm.tilerEnable = FALSE;
———————————————————————————————

我发现如果在cameralink中设置成continue模式,即

camPrm.captureMode = CAMERA_LINK_CAPMODE_ISIF

数据流运行正常.而如果设置成one-shot模式,即

camPrm.captureMode = CAMERA_LINK_CAPMODE_DDR;

则在nsflink中处理完几帧就卡住了,无数据流了.

群内的高手们,能指点一二吗? 关于nsflink这个link使用要注意什么呢?

Ternence_Hsu:

这个问题应当是在cameralink 上,而不是 nsflink 的问题;

jensen zhang:

回复 Ternence_Hsu:

谢谢楼上的回答.
如果我去掉中间的nsflink, cameralink的模式不管设置成one-shot或continue都是可以的.
不知道两者有什么冲突的? 如果设置成CAMERA_LINK_CAPMODE_DDR的话,好像nsf和camera都是M2M方式

jensen zhang:

回复 jensen zhang:

期待群内朋友们的指教,卡在这个地方好几天了,非常感谢!!!

jensen zhang:

回复 jensen zhang:

今天在one-shot模式下, 在nsflink加日志测试,发现卡死在pObj->complete,即将图片送进去处理,一直得不到完成的回应.哪位高手点拨下?            status = FVID2_processFrames(pObj->fvidHandleNsf, &processList);Vps_printf("%s–FVID2_processFrames() return %d\n", __func__, status);            UTILS_assert(status == FVID2_SOK);            Semaphore_pend(pObj->complete, BIOS_WAIT_FOREVER);            status = FVID2_getProcessedFrames(pObj->fvidHandleNsf, &processList, BIOS_NO_WAIT);Vps_printf("%s–FVID2_getProcessedFrames() return %d[outFrames.numFrames:%d]\n",             __func__, status, outFrameList.numFrames);

jensen zhang:

回复 jensen zhang:

群内的朋友你们好!

     前面我提到的问题解决了,是因为传递进去的帧宽,高等附属信息不正确导致.

现在nsflink和isplink一起使用时还是遇到了问题,执行了6帧后数据流断了.

我目前建立的链路如下:

cameraLink –> ispLink –> nsfLink –> ipcFramesOut

对应的link的配置(关于cameralink及nsflink类似前面列出的代码)如下:

    IspLink_CreateParams ispPrm;    memset(&ispPrm, 0, sizeof(ispPrm));    ispPrm.inQueParams.prevLinkId = camera_link_id;    ispPrm.inQueParams.prevLinkQueId = 0;    ispPrm.numOutQueue = 1;    ispPrm.outQueInfo[0].nextLink = nsf_link_id;    ispPrm.clkDivM =  10;    ispPrm.clkDivN =  20;    ispPrm.vsEnable = FALSE;    ispPrm.outQueuePrm[0].dataFormat = SYSTEM_DF_YUV422I_UYVY;    ispPrm.outQueuePrm[0].width = 1920;    ispPrm.outQueuePrm[0].height = 1080;

#define ISP_LINK_MAX_OUT_FRAMES   6

  加日志调试,我发现程序执行在

Int32 IspLink_drvProcessFrames(IspLink_Obj * pObj)

{

   …

      status = Utils_bufPutEmptyFrame(&pObj->outFrameQue[outQueId], pDrvObj->outFrameList.frames[cnt]);

  …

}

数据链路建立后,连续运行了6帧正常,当第7帧时,在如上这一句代码时,程序挂了.

感觉像内存的问题,就是不知道是哪个地方内存的问题? 群内朋友能指点一二吗? 先谢谢啦!

jensen zhang:

回复 jensen zhang:

发现使用ispLink将帧格式转换成FVID2_DF_YUV422I_UYVY, 然后接nsfLink进行处理,就出现这样的情况,不知道这样使用要注意什么呢?

jensen zhang:

回复 jensen zhang:

发现使用ispLink将帧格式转换成FVID2_DF_YUV422I_UYVY,然后接nsfLink就出现如上的问题,不知道这样使用要注意什么呢?

Ternence_Hsu:

回复 jensen zhang:

422P YUV422I_YUYV Single Buffer: Y U Y V Y U Y V

赞(0)
未经允许不得转载:TI中文支持网 » 关于在8127 ipnc中使用nsf的问题
分享到: 更多 (0)