AM62A7: Edge AI TIOVX Apps run error :Graph verify failed

Part Number: AM62A7

SDK Ver: 10_00_00

I modify tests/app_tiovx_linux_decode_display_test.c and try to capture and display my sensor video. The block diagram is as follows.

The main function is as follows

vx_status sensor_capture_test()
{
    vx_status status = VX_FAILURE;
    GraphObj graph;
    NodeObj *viss_node = NULL, *ldc_node = NULL, *scaler_node = NULL, *mosaic_node = NULL;
    BufPool *in_buf_pool = NULL, *out_buf_pool = {NULL};
    Buf *inbuf = NULL, *outbuf = {NULL};
    kmsDisplayCfg kms_display_cfg;
    kmsDisplayHandle *kms_display_handle;
    v4l2CaptureHandle *v4l2_capture_handle;
    TIOVXMultiScalerNodeCfg msc_cfg;
    TIOVXLdcNodeCfg ldc_cfg;
    TIOVXMosaicNodeCfg mosaic_cfg;
    threadParams mosaic_param, ldc_param;
    pthread_t id;

    printf("link test start\n");
    status = tiovx_modules_initialize_graph(&graph);
    graph.schedule_mode = VX_GRAPH_SCHEDULE_MODE_QUEUE_AUTO;

    // v4l2 capture
    v4l2CaptureCfg v4l2_capture_cfg;
    v4l2_capture_init_cfg(&v4l2_capture_cfg);
    v4l2_capture_cfg.width = CAM_WIDTH;
    v4l2_capture_cfg.height = CAM_HEIGHT;
    v4l2_capture_cfg.pix_format = V4L2_PIX_FMT_SBGGR12;
    v4l2_capture_cfg.bufq_depth = APP_BUFQ_DEPTH;
    sprintf(v4l2_capture_cfg.device, "/dev/video3");
    v4l2_capture_handle = v4l2_capture_create_handle(&v4l2_capture_cfg);
    printf("v4l2 capture success!\n");

    // status = tiovx_modules_initialize_graph(&graph);
    // graph.schedule_mode = VX_GRAPH_SCHEDULE_MODE_QUEUE_AUTO;

    // cdns_csi2rx
    struct v4l2_subdev_format format;

    CLR(&format);
    format.which = V4L2_SUBDEV_FORMAT_ACTIVE;
    format.format.code = FMT;
    format.format.field = V4L2_FIELD_NONE;
    format.format.width = CAM_WIDTH;
    format.format.height = CAM_HEIGHT;
    format.pad = 0;
    set_subdev_fmt(SUBDEV_BRIDGE, &format);
    get_subdev_fmt(SUBDEV_BRIDGE, 0);
    printf("set cdns fmt end\n");

    // ticsi2rx
    CLR(&format);
    format.which = V4L2_SUBDEV_FORMAT_ACTIVE;
    format.format.code = FMT;
    format.format.field = V4L2_FIELD_NONE;
    format.format.width = CAM_WIDTH;
    format.format.height = CAM_HEIGHT;
    format.pad = 0;
    set_subdev_fmt(SUBDEV_J271, &format);
    get_subdev_fmt(SUBDEV_J271, 0);
    printf("set ticsi2rx pad 0 fmt end\n");

    // max96714
    CLR(&format);
    format.which = V4L2_SUBDEV_FORMAT_ACTIVE;
    format.format.code = FMT;
    format.format.field = V4L2_FIELD_NONE;
    format.format.width = CAM_WIDTH;
    format.format.height = CAM_HEIGHT;
    format.pad = 0;
    set_subdev_fmt(SUBDEV_MAX96714, &format);
    get_subdev_fmt(SUBDEV_MAX96714, 0);
    printf("set 96714 fmt end\n");

    // max96717
    CLR(&format);
    format.which = V4L2_SUBDEV_FORMAT_ACTIVE;
    format.format.code = FMT;
    format.format.field = V4L2_FIELD_NONE;
    format.format.width = CAM_WIDTH;
    format.format.height = CAM_HEIGHT;
    format.pad = 0;
    set_subdev_fmt(SUBDEV_MAX96717, &format);
    get_subdev_fmt(SUBDEV_MAX96717, 0);
    printf("set 96717 fmt end\n");

    // VISS
    TIOVXVissNodeCfg viss_cfg;
    tiovx_viss_init_cfg(&viss_cfg);
    sprintf(viss_cfg.sensor_name, SENSOR_NAME);
    snprintf(viss_cfg.dcc_config_file, TIVX_FILEIO_FILE_PATH_LENGTH, "%s", DCC_VISS);
    viss_cfg.width = VISS_INPUT_WIDTH;
    viss_cfg.height = VISS_INPUT_HEIGHT;
    sprintf(viss_cfg.target_string, TIVX_TARGET_VPAC_VISS1);
    viss_cfg.input_cfg.params.format[0].pixel_container = TIVX_RAW_IMAGE_16_BIT;
    viss_cfg.input_cfg.params.format[0].msb = 11;
    viss_node = tiovx_modules_add_node(&graph, TIOVX_VISS, (void *)&viss_cfg);
    viss_node->sinks[0].bufq_depth = APP_BUFQ_DEPTH;

    printf("viss capture success!\n");

    // LDC
    // TIOVXLdcNodeCfg ldc_cfg;
    tiovx_ldc_init_cfg(&ldc_cfg);
    sprintf(ldc_cfg.sensor_name, SENSOR_NAME);
    snprintf(ldc_cfg.dcc_config_file, TIVX_FILEIO_FILE_PATH_LENGTH, "%s", DCC_LDC);

    ldc_cfg.input_cfg.color_format = VX_DF_IMAGE_NV12;
    ldc_cfg.input_cfg.width = VISS_INPUT_WIDTH;
    ldc_cfg.input_cfg.height = VISS_INPUT_HEIGHT;

    ldc_cfg.output_cfgs[0].color_format = VX_DF_IMAGE_NV12;
    ldc_cfg.output_cfgs[0].width = VISS_INPUT_WIDTH;
    ldc_cfg.output_cfgs[0].height = VISS_INPUT_HEIGHT;

    sprintf(ldc_cfg.target_string, TIVX_TARGET_VPAC_LDC1);
    ldc_node = tiovx_modules_add_node(&graph, TIOVX_LDC, (void *)&ldc_cfg);
    ldc_node->sinks[0].bufq_depth = APP_BUFQ_DEPTH;
    status = tiovx_modules_link_pads(&viss_node->srcs[0], &ldc_node->sinks[0]);

    printf("ldc inti success!\n");

    // MSC
    tiovx_multi_scaler_init_cfg(&msc_cfg);
    msc_cfg.color_format = VX_DF_IMAGE_NV12;
    msc_cfg.num_outputs = 1;
    msc_cfg.input_cfg.width = VISS_INPUT_WIDTH;
    msc_cfg.input_cfg.height = VISS_INPUT_HEIGHT;
    msc_cfg.output_cfgs[0].width = 900;
    msc_cfg.output_cfgs[0].height = 720;
    sprintf(msc_cfg.target_string, TIVX_TARGET_VPAC_MSC1);
    tiovx_multi_scaler_module_crop_params_init(&msc_cfg);
    scaler_node = tiovx_modules_add_node(&graph, TIOVX_MULTI_SCALER, (void *)&msc_cfg);
    status = tiovx_modules_link_pads(&ldc_node->srcs[0], &scaler_node->sinks[0]);

    printf("msc init success!\n");

    // mosaic 
    tiovx_mosaic_init_cfg(&mosaic_cfg);
    mosaic_cfg.color_format = VX_DF_IMAGE_NV12;
    mosaic_cfg.num_inputs = 1;
    mosaic_cfg.output_cfg.width = DISPLAY_WIDTH;
    mosaic_cfg.output_cfg.height = DISPLAY_HEIGHT;

    mosaic_cfg.input_cfgs[0].width = 900;
    mosaic_cfg.input_cfgs[0].height = 720;

    mosaic_cfg.params.num_windows = 1;
    mosaic_cfg.params.clear_count = 5;

    mosaic_cfg.params.windows[0].startX = 0;
    mosaic_cfg.params.windows[0].startY = 0;
    mosaic_cfg.params.windows[0].width = 900;
    mosaic_cfg.params.windows[0].height = 720;
    mosaic_cfg.params.windows[0].input_select = 0;
    mosaic_cfg.params.windows[0].channel_select = 0;

    mosaic_node = tiovx_modules_add_node(&graph, TIOVX_MOSAIC, (void *)&mosaic_cfg);
    mosaic_node->srcs[0].bufq_depth = APP_BUFQ_DEPTH;
    status = tiovx_modules_link_pads(&scaler_node->srcs[0], &mosaic_node->sinks[0]);
    printf("mosaic init success!\n");

    kms_display_init_cfg(&kms_display_cfg);
    kms_display_cfg.width = DISPLAY_WIDTH;
    kms_display_cfg.height = DISPLAY_HEIGHT;
    kms_display_cfg.pix_format = DRM_FORMAT_NV12;
    kms_display_handle = kms_display_create_handle(&kms_display_cfg);

    printf("kms init success!\n");

    // verify
    status = tiovx_modules_verify_graph(&graph);
    in_buf_pool = viss_node->sinks[0].buf_pool;
    out_buf_pool = mosaic_node->srcs[0].buf_pool;

    printf("verify status[%d]\n", status);

    for (int i = 0; i < APP_BUFQ_DEPTH; i++)
    {
        outbuf = tiovx_modules_acquire_buf(out_buf_pool);
        status = kms_display_register_buf(kms_display_handle, outbuf);
        tiovx_modules_enqueue_buf(outbuf);
    }

    for (int i = 0; i < APP_BUFQ_DEPTH; i++)
    {
        inbuf = tiovx_modules_acquire_buf(in_buf_pool);
        v4l2_capture_enqueue_buf(v4l2_capture_handle, inbuf);
    }

    ldc_param.capture_handle = v4l2_capture_handle;
    ldc_param.pad = &viss_node->sinks[0];
    ldc_param.enable = true;
    pthread_create(&id, NULL, ldc_enqueue, (void *)&ldc_param);
    pthread_create(&id, NULL, ldc_dequeue, (void *)&ldc_param);

    mosaic_param.pad = &mosaic_node->srcs[0];
    mosaic_param.kms_handle = kms_display_handle;
    mosaic_param.enable = true;
    pthread_create(&id, NULL, mosaic_enqueue, (void *)&mosaic_param);
    pthread_create(&id, NULL, mosaic_dequeue, (void *)&mosaic_param);
    sleep(200);
#if 0
  sleep(300);
  mosaic_param.enable = false;
  ldc_param.enable = false;
  sleep(10);
  v4l2_capture_stop(v4l2_capture_handle);
  v4l2_capture_delete_handle(v4l2_capture_handle);
  tiovx_modules_clean_graph(&graph);
#endif
    return 0;
}

The program ran with an error

16552.514009 s: VX_ZONE_ERROR:[ownContextSendCmd:885] Command ack message returned failure cmd_status: -7
16552.514052 s: VX_ZONE_ERROR:[ownNodeKernelInit:592] Target kernel, TIVX_CMD_NODE_CREATE failed for node node_93
16552.514065 s: VX_ZONE_ERROR:[ownNodeKernelInit:593] Please be sure the target callbacks have been registered for this core
16552.514077 s: VX_ZONE_ERROR:[ownNodeKernelInit:594] If the target callbacks have been registered, please ensure no errors are occurring within the create callback of this kernel
16552.514092 s: VX_ZONE_ERROR:[ownGraphNodeKernelInit:620] kernel init for node 0, kernel com.ti.hwa.vpac_viss ... failed !!!
16552.514125 s: VX_ZONE_ERROR:[vxVerifyGraph:2254] Node kernel init failed
16552.514136 s: VX_ZONE_ERROR:[vxVerifyGraph:2311] Graph verify failed
[TIOVX_MODULES][ERROR] 791: tiovx_modules_verify_graph: Graph Verify failedverify status[-1]

There is no error when I delete the VISS node.I wonder how to solve this porblem.