Hi Team,
The customer has below question need your help.
My pipeline is capture(raw_data)->viss->csitx,Resolution:3840*2166,viss out uyvy422,csitx node,avg time over 33.3ms.if my pipeline add ldc node,Common viss data with csitx。The average time of csitx node will reach 36ms.
/* CSITX Start */
#define NUM_CHANNELS (1U)
#define CSITX_INST_ID (0U)
#define CSITX_LANE_BAND_SPEED (TIVX_CSITX_LANE_BAND_SPEED_950_TO_1000_MBPS)
#define CSITX_LANE_SPEED_MBPS (1000)
// uint32_t loopCnt;
vx_user_data_object csitx_config;
tivx_csitx_params_t local_csitx_config;
/* CSITX Config initialization */
tivx_csitx_params_init(&local_csitx_config);
local_csitx_config.numInst = 1U;
local_csitx_config.numCh = NUM_CHANNELS;
local_csitx_config.instId[0U] = CSITX_INST_ID;
local_csitx_config.instCfg[0U].rxCompEnable = (uint32_t)vx_true_e;
local_csitx_config.instCfg[0U].rxv1p3MapEnable = (uint32_t)vx_true_e;
local_csitx_config.instCfg[0U].laneBandSpeed = CSITX_LANE_BAND_SPEED;
local_csitx_config.instCfg[0U].laneSpeedMbps = CSITX_LANE_SPEED_MBPS;
local_csitx_config.instCfg[0U].numDataLanes = 4U;
for (loopCnt = 0U;
loopCnt < local_csitx_config.instCfg[0U].numDataLanes;
loopCnt++)
{
local_csitx_config.instCfg[0U].lanePolarityCtrl[loopCnt] = 0u;
}
for (loopCnt = 0U; loopCnt < NUM_CHANNELS; loopCnt++)
{
local_csitx_config.chVcNum[loopCnt] = loopCnt;
local_csitx_config.chInstMap[loopCnt] = CSITX_INST_ID;
}
csitx_config = vxCreateUserDataObject(obj->context, "tivx_csitx_params_t", sizeof(tivx_csitx_params_t), &local_csitx_config);
if (vx_false_e == yuv_cam_input)
{
vx_image tx_frame = vxCreateImage(
obj->context,
sensorParams.sensorInfo.raw_params.width,
sensorParams.sensorInfo.raw_params.height,
//VX_DF_IMAGE_YUYV
VX_DF_IMAGE_UYVY
);
obj->csitx_frames = vxCreateObjectArray(obj->context, (vx_reference)tx_frame, num_capture_frames);
status = vxReleaseImage(&tx_frame);
status = vxGetStatus((vx_reference)obj->csitx_frames);
if (status != VX_SUCCESS)
{
APP_PRINTF("csitx vxCreateObjectArray error\n");
}
else
{
APP_PRINTF("csitx vxCreateObjectArray success\n");
}
obj->csitx_node = tivxCsitxNode(obj->graph, csitx_config, obj->csitx_frames);
}
else
{
obj->csitx_node = tivxCsitxNode(obj->graph, csitx_config, obj->cap_frames[0]);
}
if(status == VX_SUCCESS)
{
status = vxReleaseUserDataObject(&csitx_config);
}
if (status == VX_SUCCESS)
{
status = vxSetNodeTarget(obj->csitx_node, VX_TARGET_STRING, TIVX_TARGET_CSITX);
}
else
{
APP_PRINTF("capture node set error\n");
}
if (status == VX_SUCCESS)
{
APP_PRINTF("csitx node set success\n");
}
else
{
APP_PRINTF("csitx node set error\n");
}
app_single_came_capture_csitx.html
Thanks,
Annie