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.

TDA4VM: after add vxHarrisCornersNode, the program is block in 13 frame

Part Number: TDA4VM

program data flow design is above, without the optical flow node, program is work normaly.

But when i add the opticalflow node, the program will block in the 3rd frame. my program is modify from the app_dof example.

opticalflow node cpp file is blow.

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
vx_status app_init_opticalflow(vx_context context, OpticalFlowObj *opticalflowObj, char *objName)
{
vx_status status = VX_SUCCESS;
// tivx_dmpac_dof_params_init(&opticalflowObj->dof_params);
vx_float32 optical_eps_val = 0.001;
vx_float32 optical_num_iter_val = 100;
vx_float32 optical_use_estimations_val = 1;
opticalflowObj->eps = vxCreateScalar(context, VX_TYPE_FLOAT32, &optical_eps_val);
opticalflowObj->num_iter = vxCreateScalar(context, VX_TYPE_UINT32, &optical_num_iter_val);
opticalflowObj->use_estimations = vxCreateScalar(context, VX_TYPE_BOOL, &optical_use_estimations_val);
if(opticalflowObj->enable_temporal_predicton_flow_vector)
{
vx_array corners_exemplar;
corners_exemplar = vxCreateArray(context, VX_TYPE_KEYPOINT, opticalflowObj->num_corners);
opticalflowObj->out_corners = vxCreateArray(context, VX_TYPE_KEYPOINT, opticalflowObj->num_corners);
// APP_ASSERT_VALID_REF(corners_exemplar);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

create node in main file

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if (status == VX_SUCCESS)
{
status = app_create_graph_opticalflow(obj->graph, &obj->opticalflowObj,
obj->pyramidObj.pyr_ref, obj->pyramidObj.pyr_cur,
obj->harrisObj.har_ref,
obj->harrisObj.har_cur,
obj->opticalflowObj.eps,
obj->opticalflowObj.num_iter,
obj->opticalflowObj.use_estimations);
}
if (obj->opticalflowObj.enable_temporal_predicton_flow_vector && (status == VX_SUCCESS))
{
status = vxRegisterAutoAging(obj->graph, obj->opticalflowObj.corners_delay);
}
if (status == VX_SUCCESS)
{
status = tivxSetNodeParameterNumBufByIndex(obj->opticalflowObj.node, 4, num_buf);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

the program will block in the 3rd frame when the pipeline > 0

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
static vx_status app_run_graph(AppObj *obj)
{
char input_file_name[APP_MAX_FILE_PATH];
char output_file_name_flow_img[APP_MAX_FILE_PATH];
char output_file_name_conf_img[APP_MAX_FILE_PATH];
uint32_t curFileNum;
int32_t outputFileNum;
uint32_t iterations = 1;
vx_status status = VX_SUCCESS;
uint32_t num_buf;
num_buf = MAX_NUM_BUF;
int32_t pipeline = -num_buf;
int32_t enqueueCnt = 0;
vx_int32 img_array_idx = -1, img_harray_idx = -1;
/* create output directory is not already existing */
mkdir(obj->output_file_path, S_IRWXU | S_IRWXG | S_IRWXO);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

tda4 run result above, the pipeline depth is set to 10, and the program is block in 13 frame.

  • 建议您到英文论坛咨询,有相关工程师给您提供支持,谢谢!

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum