Part Number: TDA4VM
Hi,
At present, there are four cameras, I want to encode each camera separately, so I use vxGetObjectArrayItem to get each channel, but graph cannot run in this way, how can I solve this problem?
code is as below:
vx_object_array convert_frames;
for (vx_uint32 i = 0; i <4; i++)
{
convertObj->convert_img[i] = (vx_image)vxGetObjectArrayItem(convertObj->convert_frames, i);
status = vxGetStatus((vx_reference)convertObj->convert_img[i]);
}
for (vx_uint32 i = 0; i <4; i++)
{
status = app_create_graph_encode(obj->graph, &obj->encodeObj[i], obj->convertObj.convert_img[i]);
APP_PRINTF("Encode%d graph done!\n", i);
}
while (1)
{
appPerfPointBegin(&obj->total_perf);
if (pipeline < 0)
{
/* Enqueue outputs */
for (i = 0; i < ENCODE_COUNT; i++)
{
vxGraphParameterEnqueueReadyRef(obj->graph, obj->encodeObj[i].graph_parameter_index, (vx_reference*)&obj->encodeObj[i].bitstream_obj, 1);
}
vxGraphParameterEnqueueReadyRef(obj->graph, obj->captureObj.graph_parameter_index, (vx_reference*)&obj->captureObj.capt_frames[enqueueCnt], 1);
enqueueCnt++;
enqueueCnt = (enqueueCnt >= MAX_NUM_BUF) ? 0 : enqueueCnt;
pipeline++;
}
else if (pipeline >= 0)
{
vx_object_array out_capture_frames;
vx_user_data_object bitstream[ENCODE_COUNT];
uint32_t num_refs;
/* Dequeue input */
vxGraphParameterDequeueDoneRef(obj->graph, obj->captureObj.graph_parameter_index, (vx_reference*)&out_capture_frames, 1, &num_refs);
for (i = 0; i < ENCODE_COUNT; i++)
{
vxGraphParameterDequeueDoneRef(obj->graph, obj->encodeObj[i].graph_parameter_index, (vx_reference*)&bitstream[i], 1, &num_refs);
}
/* Write encoded data to file */
if (status == VX_SUCCESS)
{
for (i = 0; i < ENCODE_COUNT; i++)
{
status = writeEncodeOutput(&obj->encodeObj[i], bitstream[i]);
}
}
appLogWaitMsecs(30);
/* Encode the buffer again */
for (i = 0; i < ENCODE_COUNT; i++)
{
vxGraphParameterEnqueueReadyRef(obj->graph, obj->encodeObj[i].graph_parameter_index, (vx_reference*)&obj->encodeObj[i].bitstream_obj, 1);
}
/* Enqueue input - start execution */
vxGraphParameterEnqueueReadyRef(obj->graph, obj->captureObj.graph_parameter_index, (vx_reference*)&out_capture_frames, 1);
}
This matter is a little urgent, looking forward to your reply. Thank you very much.