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.

OMX InsufficientResources in OMX.TI.DUCATI1.VIDEO.DECODER

Hello!

I am trying to build an application using the OpenMAX IL API. It should decode H.264 video streams using the OMX.TI.DUCATI1.VIDEO.DECODER running on the OMAP4430 processor.

I can get the component to the OMX_Loaded state with zero problems but can not get it into the OMX_Idle state or into the transient state. A call to OMX_SendCommand(omx_decoder, OMX_CommandStateSet, OMX_StateIdle, NULL); fires an OMX_ErrorInsufficientResources error.

I configure the component as follows:

char * _role = "video_decoder.avc"; OMX_PARAM_COMPONENTROLETYPE role_param; role_param.nSize = sizeof (OMX_PARAM_COMPONENTROLETYPE); role_param.nVersion.s.nVersionMajor = 1; role_param.nVersion.s.nVersionMinor = 1; strcpy((char*)role_param.cRole, _role);

omx_err = OMX_SetParameter(omx_decoder, OMX_IndexParamStandardComponentRole, &role_param);

OMX_PARAM_PORTDEFINITIONTYPE port_def, port_def2;

OMX_INIT_STRUCTURE(port_def);

OMX_INIT_STRUCTURE(port_def2);

port_def.nPortIndex = port_param.nStartPortNumber;

port_def2.nPortIndex = port_param.nStartPortNumber + 1;

omx_err = OMX_GetParameter(omx_decoder, OMX_IndexParamPortDefinition, &port_def);

omx_err = OMX_GetParameter(omx_decoder, OMX_IndexParamPortDefinition, &port_def2);

port_def.format.video.nFrameHeight = 720;

port_def.format.video.nFrameWidth = 1280;

port_def2.format.video.nFrameHeight = 720;

port_def2.format.video.nFrameWidth = 1280;

port_def.format.video.eCompressionFormat = OMX_VIDEO_CodingAVC;

port_def.format.video.eColorFormat = OMX_COLOR_FormatUnused;

port_def.nBufferCountActual = 2;

port_def2.format.video.eCompressionFormat = OMX_VIDEO_CodingUnused;

port_def2.format.video.eColorFormat = OMX_COLOR_FormatYUV420SemiPlanar;

port_def2.nBufferCountActual = 2;

omx_err = OMX_SetParameter(omx_decoder, OMX_IndexParamPortDefinition, &port_def);

omx_err = OMX_SetParameter(omx_decoder, OMX_IndexParamPortDefinition, &port_def2);


  • Eugene:

    Could you provide information about used release? and if you are allocating buffer when moving to OMX_StateIdle?

  • Manuel, thank you for your reply!

    I wish I could provide you with the release information but I can't. The libraries and the component I am using are prebuilt and preloaded on the device (a BlackBerry PlayBook tablet) by the vendor. So I have a libOMX_Core.so and libOMX.TI.DUCATI1.VIDEO.DECODER.so I load by dlsym(). The only version information I have suggest that this is a rev2 of OMX:

    OMX_Core.c:114  OMX_Init()      INFO: Winchester platform detected - using OMX rev2
    OMX_Core_rev2.c:212     OMX2_GetHandle()        INFO: loading component: libOMX.TI.DUCATI1.VIDEO.DECODER.so

    I am moving to StateIdle by sending a OMX_SendCommand(omx_decoder, OMX_CommandStateSet, OMX_StateIdle, NULL); command. Then I invoke OMX_AllocateBuffer which fails with an IncorrectState error.

  • Try next post? code is not complete it requires buffer processing but state changes are there. Reading full post could help.

    http://e2e.ti.com/support/omap/f/849/p/178679/677373.aspx#677373

    and I need to say next:

    Support on this forum is limited to the TI reference platforms, such as Blaze and Blaze tablet. The device you refer to would be supported by manufacturer, directly. TI does not have access to, so it cannot support customer specific applications and code.