OpenMAX IL component loading

Hi all,

I have following queries regarding OpenMAX IL

  1. Is there any way we can implement a core which can be independent of the component??
    I mean is there a way in which we can implement a core which works with any component.?? or is it always that a component is implemented specific to a particular core??

  2. If we are implementing a core how should the component loading occur, static / dynamic loading.?? Which method is better or will pass the conformance tests??

Thanks in advance

Mahesh

  1. Is there any way we can implement a core which can be independent of the component??
    I mean is there a way in which we can implement a core which works with any component.?? or is it always that a component is implemented specific to a particular core??

I proposed how components “shall” be statically linked (if not dynamically loaded) with an IL core, which is part of the IL specification. We do not specify how to dynamically link components with a core, as it was not considered feasible to specify this without a platform abstraction API. This may now be possible using OpenKODE.

If you design your core to be statically linked with components, then it should be possible to integrate any component. This may include dynamically loaded components via a statically linked stub that performs the actually loading. Depending on the core that the component was written for, there may be some work required to write the statically linked stub.

However, static linking is a much more involved process than dynamic discovery and loading of components. Many platforms may not therefore support static linking of components, so the platform documentation must be read for instructions on how to present additional components.

  1. If we are implementing a core how should the component loading occur, static / dynamic loading.?? Which method is better or will pass the conformance tests??

This is a platform design decision. The core is not formally tested (other than being used), so either method will pass conformance.

Thanks,

Roger

Thanks a lot for the quick reply roger.What you meant by statically stub was that the component entry point is made static( say a constructor ) and rest all as dynamic ?? It means that each time you create a new component you need to recompile your core.Can you elaborate on what exactly you meant by “statically linked stub” ??

Thanks in advance

Regards,
Mahesh

Yes.

Section “3.1.2.1 OMX_COMPONENTREGISTERTYPE” of the 1.1.1 specification defines the static component registration array. This tells the core which components are statically linked with it. The pInitialize member is the constructor for an instance of the component with the name in pName.

The core will allocate an instance of OMX_COMPONENTTYPE and then pass it to (*pInitialize)( OMX_HANDLETYPE ), with a cast.

This call is expected to fill-in the component call table in the OMX_COMPONENTTYPE structure. A small piece of statically-linked code could reference count the number of pInitialize / Component->ComponentDeInit calls to load / unload the body of component code at the relevant times.

Thanks,

Roger