Part Number: PROCESSOR-SDK-DRA8X-TDA4X
Hi,
i have added a encoder node after the scaler node into the existing usecase app_single_cam.
But when i am trying to call tivxVideoEncoderNode() function it's giving me the below error at run time.
[MCU2_1] 62.718570 s: TIMEOUT: topazdd_wait_on_sync timed out waiting for writeback 0x05a80000.
[MCU2_1] 82.984741 s: appHwaVideoCodecMemAlloc: ERROR: alloc failed!!!
Here is the code snippet:-
---------------------------------------------------------
if((image_width != obj->display_params.outWidth) || (image_height != obj->display_params.outHeight))
{
vx_uint16 scaler_out_w, scaler_out_h;
obj->scaler_enable = vx_true_e;
appIssGetResizeParams(image_width, image_height, obj->display_params.outWidth, obj->display_params.outHeight, &scaler_out_w, &scaler_out_h);
obj->scaler_out_img = vxCreateImage(obj->context, scaler_out_w, scaler_out_h, VX_DF_IMAGE_NV12);
obj->scalerNode = tivxVpacMscScaleNode(obj->graph, obj->y8_r8_c2, obj->scaler_out_img, NULL, NULL, NULL, NULL);
tivxSetNodeParameterNumBufByIndex(obj->scalerNode, 1u, obj->num_cap_buf);
vxSetNodeTarget(obj->scalerNode, VX_TARGET_STRING, TIVX_TARGET_VPAC_MSC1);
obj->display_params.outHeight = scaler_out_h;
obj->display_params.outWidth = scaler_out_w;
display_image = obj->scaler_out_img;
ASSERT_VX_OBJECT(obj->configuration_obj = vxCreateUserDataObject(obj->context, "tivx_video_encoder_params_t", sizeof(tivx_video_encoder_params_t), NULL),
(enum vx_type_e)VX_TYPE_USER_DATA_OBJECT);
VX_CALL(vxCopyUserDataObject(obj->configuration_obj, 0, sizeof(tivx_video_encoder_params_t), &obj->params, VX_WRITE_ONLY, VX_MEMORY_TYPE_HOST));
printf("\tCopy User created initilaised....! \n");
obj->max_bitstream_size = ((uint32_t)(scaler_out_w / 16)
* (uint32_t)(scaler_out_w / 16) * WORST_QP_SIZE)
+ ((scaler_out_h >> 4) * CODED_BUFFER_INFO_SECTION_SIZE);
ASSERT_VX_OBJECT(obj->bitstream_obj = vxCreateUserDataObject(obj->context, "tivx_video_bitstream_t", sizeof(uint8_t) * obj->max_bitstream_size, NULL),
(enum vx_type_e)VX_TYPE_USER_DATA_OBJECT);
ASSERT_VX_OBJECT(obj->node_encode = tivxVideoEncoderNode(obj->graph, obj->configuration_obj, display_image, obj->bitstream_obj), VX_TYPE_NODE);
vx_status status = vxGetStatus((vx_reference)obj->node_encode);
if (VX_SUCCESS == status)
{
printf("success d\n",status);
}
//tivxSetNodeParameterNumBufByIndex(obj->node_encode, 3u, obj->num_cap_buf
VX_CALL(vxSetNodeTarget(obj->node_encode, VX_TARGET_STRING, TIVX_TARGET_VENC1));
Kindly assist me if i am missing something here.
Thanks and Regards
Mausam Sinha