尊敬的
static vx_status app_run_graph(AppObj *obj)
{
vx_status status = VX_SUCCESS;
uint32_t num_refs, buf_id;
int graph_parameter_num = 0;
uint32_t iteration = 0;
if(NULL == obj->sensor_name)
{
printf("sensor name is NULL \n");
status = VX_FAILURE;
}
if(status == VX_SUCCESS)
{
status = appStartImageSensor(obj->sensor_name, 0xF);
APP_PRINTF("Sensor start status = %d\n", status);
}
/* Enqueue buf for pipe up but don't trigger graph execution */
for(buf_id=0; buf_id<NUM_BUFS; buf_id++)
{
graph_parameter_num = 0;
if(status == VX_SUCCESS)
{
status = vxGraphParameterEnqueueReadyRef(obj->graph, graph_parameter_num,
(vx_reference*)&obj->capt_frames[buf_id], 1);
}
graph_parameter_num++;
}
if(obj->test_mode == 1)
{
for(buf_id=0; buf_id<NUM_BUFS; buf_id++)
{
if(status == VX_SUCCESS)
{
status = vxGraphParameterEnqueueReadyRef(obj->graph, obj->displayNodeGraphParamNum,
(vx_reference*)&obj->output_image[buf_id], 1);
}
}
}
/* wait for graph instances to complete, compare output and
* recycle data buffers, schedule again */
vx_uint32 actual_checksum = 0;
while(status == VX_SUCCESS)
{
vx_object_array out_capture_frames;
vx_image test_image;
graph_parameter_num = 0;
appPerfPointBegin(&obj->total_perf);
/* Get output reference, waits until a frame is available */
if(status == VX_SUCCESS)
{
status = vxGraphParameterDequeueDoneRef(obj->graph, graph_parameter_num,
(vx_reference*)&out_capture_frames, 1, &num_refs);
}
graph_parameter_num++;
if(obj->test_mode == 1)
{
/* Get output reference, waits until a frame is available */
if(status == VX_SUCCESS)
{
status = vxGraphParameterDequeueDoneRef(obj->graph, obj->displayNodeGraphParamNum,
(vx_reference*)&test_image, 1, &num_refs);
}
printf("test iteration: %d of %d\n", iteration, TEST_BUFFER+1);
if( (status == VX_SUCCESS) && (iteration > TEST_BUFFER) )
{
if(app_test_check_image(test_image, checksums_expected[0][0], &actual_checksum) == vx_false_e)
{
test_result = vx_false_e;
}
populate_gatherer(0, 0, actual_checksum);
obj->stop_task = 1;
}
/* Get output reference, waits until a frame is available */
if(status == VX_SUCCESS)
{
status = vxGraphParameterEnqueueReadyRef(obj->graph, obj->displayNodeGraphParamNum,
(vx_reference*)&test_image, 1);
}
}
graph_parameter_num = 0;
if(status == VX_SUCCESS)
{
status = vxGraphParameterEnqueueReadyRef(obj->graph, graph_parameter_num, (vx_reference*)&out_capture_frames, 1);
}
graph_parameter_num++;
appPerfPointEnd(&obj->total_perf);
if(iteration==100)
{
/* after first 'n' iteration reset performance stats */
appPerfStatsResetAll();
}
iteration++;
if((obj->stop_task) || (status != VX_SUCCESS))
{
break;
}
}
/* ensure all graph processing is complete */
vxWaitGraph(obj->graph);
/* Dequeue buf for pipe down */
num_refs = 0xFF;
graph_parameter_num = 0;
while((num_refs > 0) && (status == VX_SUCCESS))
{
vx_object_array out_capture_frames;
if(status == VX_SUCCESS)
{
status = vxGraphParameterCheckDoneRef(obj->graph, graph_parameter_num, &num_refs);
}
if(num_refs > 0)
{
APP_PRINTF("Dequeue capture\n");
if(status == VX_SUCCESS)
{
status = vxGraphParameterDequeueDoneRef(
obj->graph,
graph_parameter_num,
(vx_reference*)&out_capture_frames,
1,
&num_refs);
}
}
}
num_refs = 0xFF;
while((num_refs > 0) && (obj->test_mode == 1) && (status == VX_SUCCESS))
{
vx_image out_image;
if(status == VX_SUCCESS)
{
status = vxGraphParameterCheckDoneRef(obj->graph, obj->displayNodeGraphParamNum, &num_refs);
}
if(num_refs > 0)
{
APP_PRINTF("Dequeue display \n");
if(status == VX_SUCCESS)
{
status = vxGraphParameterDequeueDoneRef(
obj->graph,
obj->displayNodeGraphParamNum,
(vx_reference*)&out_image,
1,
&num_refs);
}
}
}
return status;
},
如何在此代码中找到"app_srv_camera"中的输出流并将其转换为 H264输出?