OpenMAX IL clarification of OMX state in the case of timeout


When the IL Client requests a transition from OMX_StateIdle to OMX_StateLoaded state, it is possible for the component to send the OMX_ErrorPortUnresponsiveDuringDeallocation event to the IL Client if the supplier port has not requested deallocation of a buffer header for the non-supplier port within a certain time period. In this case what state should the component be in if some buffer headers have been deallocated but not all?

My understanding of the component states are as follows:

OMX_StateIdle: All enabled ports must be populated.
OMX_StateLoaded: There must be no buffers allocated.

Neither of which is valid in the case where some buffer headers have been deallocated but not all. OMX_StateInvalid would be a possibility though.


Whilst there are requirements for the component states, there are transitions that must occur. You can’t atomically populate, or depopulate, a port (with more than one buffer), so the practical definition of the states is more flexible.

To answer the question, I would stay in the idle state until all buffers have been deallocated. The port will show as depopulated.

My personal view is that the invalid state should not ever be used.