To transition a component to idle (from loaded) the client commands the transition, then sends the necessary buffers (OMX_UseBuffer/OMX_AllocateBuffer). However, as the spec seems to be quite strict in terms of being in a given state and being in transition to another I have the following question(s):
Assuming the calls (SendCommand/UseBuffer) are next to each other, I can imagine that command processing may not have started yet (e.g. delegated to a helper thread) which means that the component is still in the loaded state. Which would make the UseBuffer call fail unless of course the mere fact that the client sent the command transition qualifies. If the latter doesn’t apply and there is indeed a gap before the component is in transition how is the client to handle the (unlikely but possible) error case?
I considered that a component may have to guarantee that the next client call finds it in the transition state but that wouldn’t work so well when the command queue is not empty and the transition command hasn’t been seen yet. The client could of course wait for the completion/error callback of the previous command but that would still leave a gap between completing command N-1(, fetching command N) and processing command N.
What am I misunderstanding here?