• Martin Storsjö's avatar
    omxil: Split omx core management to a separate file · 369a7322
    Martin Storsjö authored
    The point of the omx core management is to try to load and init the
    OMX core once, even if there's multiple e.g. decoder instances. The
    reason for this is that there are OMX cores where the deinit function
    will deinitialize the whole core on the first deinit call, even if
    init has been called twice.
    
    If this file is to be built as part of multiple separate shared
    plugins, each of the plugins will initialize the OMX core separately,
    which could cause issues with such OMX cores.
    
    Since the second plugin that uses the OMX core, an OMX vout plugin,
    isn't used automatically, and the only OMX implementation it currently
    is tested to actually work with (the Broadcom OMX core on Raspberry
    Pi) doesn't have issues with being uninitialized multiple times,
    there's no need to jump through hoops to fix this theoretical issue
    right now though.
    
    For reference, if we really want to make sure the omx core is loaded
    and initialized only once, the plugins need to be loaded with
    RTLD_GLOBAL and all the variables in omxil_core.c need to be marked
    with __attribute__ ((visibility ("default"))). But that's generally
    not an option, and shouldn't be necessary right now at least.
    Signed-off-by: default avatarMartin Storsjö <martin@martin.st>
    369a7322
omxil.c 62.5 KB