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: The 4-way camera is encoded separately

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.