工具与软件:
您好、TI 专家
我正在将应用程序建立在 vision_apps 中的"app_single_cam"基础上。
我想将其分为两个过程:"捕获"过程和"显示"过程
我认为"捕获"过程有 CSI2-RX - VISS - LDC - (MSC)节点、可以将 VX 流水线调度设计设计为与"app_single_cam"相同
捕获过程发送 通过流水线更新的 vx_image 来显示节点过程、
但是、显示过程仅具有 DSS (tivxDisplayNode) 节点。
我是 tiovx 框架的初学者、 我不确定如何运行仅使用 TI5xDisplayNode 的 vxgraph。
总之、我尝试了 如下单元测试的显示过程演示(从我的来源中简化了)
// make vx_image
obj->source_img = tivx_utils_create_vximage_from_bmpfile(obj->context, filename, vx_false_e);
// connect display to source
obj->display_image = obj->source_img
// make display node
memset(&obj->display_params, 0, sizeof(tivx_display_params_t));
obj->display_params.opMode = TIVX_KERNEL_DISPLAY_ZERO_BUFFER_COPY_MODE;
obj->display_params.pipeId = 0;
obj->display_params.outHeight = 1080;
obj->display_params.outWidth = 1920;
obj->display_params.posX = 0;
obj->display_params.posY = 0;
obj->display_param_obj = vxCreateUserDataObject(obj->context, "tivx_display_params_t", sizeof(tivx_display_params_t), &obj->display_params);
obj->displayNode = tivxDisplayNode(obj->graph, obj->display_param_obj, obj->display_image);
// make gragh queue param
graph_parameters_queue_params_list[graph_parameter_num].graph_parameter_index = graph_parameter_num;
graph_parameters_queue_params_list[graph_parameter_num].refs_list_size = obj->num_buf;
graph_parameters_queue_params_list[graph_parameter_num].refs_list = (vx_reference*)&(obj->display_image);
tivxSetGraphPipelineDepth(obj->graph, 1);
vxSetGraphScheduleConfig(obj->graph,
VX_GRAPH_SCHEDULE_MODE_QUEUE_AUTO,
1,
graph_parameters_queue_params_list
);
// run gragh
// start enque
vxGraphParameterEnqueueReadyRef(obj->graph, 0, (vx_reference*)&(obj->display_image), 1);
// deque
vxGraphParameterDequeueDoneRef(obj->graph, 0, (vx_reference*)&test_image, 1, &num_refs_capture);
// re enque
vxGraphParameterEnqueueReadyRef(obj->graph, 0, (vx_reference*)&test_image, 1);
当该应用程序运行时、
图像在监视器中显示正确、但应用程序过程像这样挂起。
vxSetGraphScheduleConfig done
79.032796 s: VX_ZONE_INFO:[ownNodeKernelValidate:256] Validating kernel com.ti.display
79.033254 s: VX_ZONE_INFO:[ownNodeKernelInit:563] Calling create callback for node node_89
79.034193 s: VX_ZONE_INFO:[ownNodeKernelInit:583] Create callback for node node_89 completed
79.034302 s: VX_ZONE_INFO:[ownGraphNodeKernelInit:615] kernel init for node 0, kernel com.ti.display ...
79.034316 s: VX_ZONE_INFO:[ownGraphNodeKernelInit:626] kernel init for node 0, kernel com.ti.display ... done !!!
79.042260 s: VX_ZONE_INFO:[ownDataRefQueueEnqueueReadyRef:90] Q (queue=15, ref=4)
79.042332 s: VX_ZONE_INFO:[ownGraphScheduleGraph:843] Scheduling Graph (graph=18, pipe=0)
79.042349 s: VX_ZONE_INFO:[ownNodeKernelSchedule:800] Scheduling Node (node=7, pipe=0)
enque start ... done
79.042431 s: VX_ZONE_INFO:[ownDataRefQueueDequeueDoneRef:166] DQ (queue=16) .. NO BUFFER
79.042630 s: VX_ZONE_INFO:[ownCheckGraphCompleted:751] Graph Completed (graph=18, pipe=0)
79.042645 s: VX_ZONE_INFO:[ownCheckGraphCompleted:779] All Graphs Completed
我的问题:
像这样、即使我仅使用图形中的显示节点、我是否也必须进行流水线调度?
或者是否有其他方法可以运行显示节点?
如果需要流水线调度来运行图形
我可以获得此设计的指南吗?