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.
HI TI:
now i try to create csitx node with input data from captureObj output in side A. but side B can't get the data.
first question: how to config csitx node in side A? when i save csitx node image, it's mussy data.
second quesion:is there any config needed in side B?
so can you help me to find the problem.thanks very much?
HI TI:
from Process 1
side A use static RAW12 picture,side B can receive this picture
from Process 2
press S save csirx buffer to csirx image,then copy this image buffer to csitx buffer,side B can receive this image buffer.
but it efficiency very low and speed slow.
from Process 3
we want to use zero buffer copy. set csirx node output as csitx node input and create csitx node
side A can run pipeline,side B can run pipeline.but side B can receive any csirx node picture.
so we have two quesiton above.please help to check.
Hi Wu dunpeng,
press S save csirx buffer to csirx image,then copy this image buffer to csitx buffer,side B can receive this image buffer.
but it efficiency very low and speed slow.
This is expected because of the memory copy, it would run slower.
we want to use zero buffer copy. set csirx node output as csitx node input and create csitx node
side A can run pipeline,side B can run pipeline.but side B can receive any csirx node picture.
Do you mean CSIRX on the receiving in TDA4VM-B cannot receive frames? How do you connect CSIRX of TDAVM-A to CSITX? Can you please share this code? Also do you see any frames captured from CSIRX of TDA4VM -A ?
Regards,
Brijesh
HI TI:
no, i mean TDA4VM-B can receive frames from TDA4VM-A csitx, but it's wrong it cann't see any image it's mussy. we use zero copy buffer from CSIRX to CSITX on TDA4VM-A. code like this:
vx_object_array csitx_in_arr;
csitx_in_arr = obj->captureObj.raw_image_arr[0];
/* CSITX Config initialization */
tivx_csitx_params_init(&csitxObj->csitx_params);
csitxObj->csitx_params.numInst = 1U;
csitxObj->csitx_params.numCh = NUM_CHANNELS;
csitxObj->csitx_params.instId[0U] = CSITX_INST_ID;
csitxObj->csitx_params.instCfg[0U].rxCompEnable = (uint32_t)vx_true_e;
csitxObj->csitx_params.instCfg[0U].rxv1p3MapEnable = (uint32_t)vx_true_e;
csitxObj->csitx_params.instCfg[0U].laneBandSpeed = CSITX_LANE_BAND_SPEED;
//csitxObj->csitx_config.instCfg[0U].laneSpeedMbps = CSITX_LANE_SPEED_MBPS;
csitxObj->csitx_params.instCfg[0U].numDataLanes = 4U;
for (loopCnt = 0U;
loopCnt < csitxObj->csitx_params.instCfg[0U].numDataLanes;
loopCnt++)
{
csitxObj->csitx_params.instCfg[0U].lanePolarityCtrl[loopCnt] = 0u;
}
for (loopCnt = 0U; loopCnt < NUM_CHANNELS; loopCnt++)
{
csitxObj->csitx_params.chVcNum[loopCnt] = loopCnt;
csitxObj->csitx_params.chInstMap[loopCnt] = CSITX_INST_ID;
}
csitxObj->csitx_params_obj = vxCreateUserDataObject(context, "tivx_csitx_params_t", sizeof(tivx_csitx_params_t), &csitxObj->csitx_params);
status = vxGetStatus((vx_reference)csitxObj->csitx_params_obj);
csitxObj->csitx_node = tivxCsitxNode(graph, csitxObj->csitx_params_obj, csitx_in_arr);
status = vxGetStatus((vx_reference)csitxObj->csitx_node);
the whole patch will attach.
i captured TDA4VM-A csirx_raw_oupt it's normal
Hi,
Instead of using csitx_in_arr, can you directly use obj->captureObj.raw_image_arr[0], while creating csitx node, like csitxObj->csitx_node = tivxCsitxNode(graph, csitxObj->csitx_params_obj, obj->captureObj.raw_image_arr[0]);?
Also is the capture output declared as a graph parameter?
Regards,
Brijesh
HI TI:
thanks for support. the problem solved. i still have some questions
1.can it use pipeline means?what's pipeline use for
2.why can't use vxCreateObjectArray to create x_frame and then set obj->tx_frame = obj->captureObj.raw_image_arr[0]
thanks very much again
Hi Wu Dunpeng,
1.can it use pipeline means?what's pipeline use for
Pipelining allows to run multiple runs in parallel. You could refer to below documentation for more information.
2.why can't use vxCreateObjectArray to create x_frame and then set obj->tx_frame = obj->captureObj.raw_image_arr[0]
In the CSITX node, we need to use same instance of the object array, which is used as output of CSIRX. That's how the nodes are connected. If you create new instance of the object array, even from an image of CSIRX, it is a separate instance, so nodes will not be connected, and CSITX will not get the input from CSIRX..
Regards,
Brijesh