||OmxDataDecoder is the major class which performs followings:
1. Translate PDM function into OMX commands.
2. Keeping the buffers between client and component.
3. Manage the OMX state.
From the definition in OpenMax spec. "2.2.1", there are 3 major roles in
"The IL client may be a layer below the GUI application, such as GStreamer,
or may be several layers below the GUI layer."
OmxDataDecoder acts as the IL client.
OpenMAX IL component:
"A component that is intended to wrap functionality that is required in the
OmxPromiseLayer acts as the OpenMAX IL component.
OpenMAX IL core:
"Platform-specific code that has the functionality necessary to locate and
then load an OpenMAX IL component into main memory."
OmxPlatformLayer acts as the OpenMAX IL core.
||This class the the abstract layer of the platform OpenMax IL implementation.
For some platform like andoird, it exposures its OpenMax IL via IOMX which
is definitions are different comparing to standard.
For other platforms like Raspberry Pi, it will be easy to implement this
layer with the standard OpenMax IL api.
||This class acts as a middle layer between OmxDataDecoder and the underlying
This class has two purposes:
1. Using promise instead of OpenMax async callback function.
For example, OmxCommandPromise is used for OpenMax IL SendCommand.
2. Manage the buffer exchanged between client and component.
Because omx buffer works crossing threads, so each omx buffer has its own
promise, it is defined in BufferData.
All of functions and members in this class should be run in the same