器件型号: J784S4XEVM
您好团队:
我们的工程有一个用例、其中有 2 个输出。 其中一个以 30fps 的速率发送、另一个以 10fps 的速率发送
因此、我们每 3 帧禁用一次 10fps 输出的 FCP
现在这在多组情景下工作正常(2 个摄像头、3 个摄像头等)
但在单摄像头用例中、我们会遇到以下问题
帧 1 -->为 10fps 输出启用 FCP -->处理请求
帧 2 -->对于 10fps 输出禁用 FCP --> VISS 驱动程序进程停止
我正在分析驱动程序代码、我注意到这可能是因为处理程序对象
if (FVID2_SOK == status)
{
/* HW is free, submit request to the hardware */
/* If previous handle and current handles are same, */
if (instObj->lastHndlObj == hObj)
{
if (true == instObj->initPrms.configThroughUdmaFlag)
{
/* Update only dirty buffer object */
hObj->sameAsPrevHandle = true;
}
/** Set the addresses, Submit the TR
* Start the pipeline */
status = vhwaM2mVissSubmitRequest(instObj, qObj);
}
else
{
/** Last handle was not same as new handle,
* so require to recofigure all HW IPs */
status = vhwaM2mVissSetConfigInHW(instObj, qObj);
if (FVID2_SOK == status)
{
if (true == instObj->initPrms.configThroughUdmaFlag)
{
/* Update only dirty buffer object */
hObj->sameAsPrevHandle = false;
}
/** Last handle was not same as new handle,
* so require to recofigure all HW IPs */
status = vhwaM2mVissSubmitRequest(instObj, qObj);
}
}
}
在这里、只有当最后一个处理程序对象不同时、我们才重新配置驱动程序、否则将使用与上一个循环相同的配置
如果是多模、处理程序会不断变化。 因此、驱动程序有恒定的重新配置(CAM1 -->CAM2 -->CAM3 -->CAM1 -->CAM2 等)。
但在单凸轮中、处理程序对象保持不变
因此、即使对于帧 2、如果我们为 10fps 输出禁用了 FCP、驱动程序仍在使用启用了 FCP 的处理程序对象。 从而导致失速
您能否确认我的分析是否有效?

