117e995d39771569792c528f3dea559c83f0fc238Andreas Huber/*
217e995d39771569792c528f3dea559c83f0fc238Andreas Huber * Copyright (C) 2009 The Android Open Source Project
317e995d39771569792c528f3dea559c83f0fc238Andreas Huber *
417e995d39771569792c528f3dea559c83f0fc238Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
517e995d39771569792c528f3dea559c83f0fc238Andreas Huber * you may not use this file except in compliance with the License.
617e995d39771569792c528f3dea559c83f0fc238Andreas Huber * You may obtain a copy of the License at
717e995d39771569792c528f3dea559c83f0fc238Andreas Huber *
817e995d39771569792c528f3dea559c83f0fc238Andreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
917e995d39771569792c528f3dea559c83f0fc238Andreas Huber *
1017e995d39771569792c528f3dea559c83f0fc238Andreas Huber * Unless required by applicable law or agreed to in writing, software
1117e995d39771569792c528f3dea559c83f0fc238Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
1217e995d39771569792c528f3dea559c83f0fc238Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1317e995d39771569792c528f3dea559c83f0fc238Andreas Huber * See the License for the specific language governing permissions and
1417e995d39771569792c528f3dea559c83f0fc238Andreas Huber * limitations under the License.
1517e995d39771569792c528f3dea559c83f0fc238Andreas Huber */
1617e995d39771569792c528f3dea559c83f0fc238Andreas Huber
1717e995d39771569792c528f3dea559c83f0fc238Andreas Huber#ifndef TI_OMX_PLUGIN_H_
1817e995d39771569792c528f3dea559c83f0fc238Andreas Huber
1917e995d39771569792c528f3dea559c83f0fc238Andreas Huber#define TI_OMX_PLUGIN_H_
2017e995d39771569792c528f3dea559c83f0fc238Andreas Huber
2117e995d39771569792c528f3dea559c83f0fc238Andreas Huber#include <media/stagefright/OMXPluginBase.h>
2217e995d39771569792c528f3dea559c83f0fc238Andreas Huber
2317e995d39771569792c528f3dea559c83f0fc238Andreas Hubernamespace android {
2417e995d39771569792c528f3dea559c83f0fc238Andreas Huber
2517e995d39771569792c528f3dea559c83f0fc238Andreas Huberstruct TIOMXPlugin : public OMXPluginBase {
2617e995d39771569792c528f3dea559c83f0fc238Andreas Huber    TIOMXPlugin();
2717e995d39771569792c528f3dea559c83f0fc238Andreas Huber    virtual ~TIOMXPlugin();
2817e995d39771569792c528f3dea559c83f0fc238Andreas Huber
2917e995d39771569792c528f3dea559c83f0fc238Andreas Huber    virtual OMX_ERRORTYPE makeComponentInstance(
3017e995d39771569792c528f3dea559c83f0fc238Andreas Huber            const char *name,
3117e995d39771569792c528f3dea559c83f0fc238Andreas Huber            const OMX_CALLBACKTYPE *callbacks,
3217e995d39771569792c528f3dea559c83f0fc238Andreas Huber            OMX_PTR appData,
3317e995d39771569792c528f3dea559c83f0fc238Andreas Huber            OMX_COMPONENTTYPE **component);
3417e995d39771569792c528f3dea559c83f0fc238Andreas Huber
35f40810585b61295f84d7d6b4e63ef935222bf18eAndreas Huber    virtual OMX_ERRORTYPE destroyComponentInstance(
36f40810585b61295f84d7d6b4e63ef935222bf18eAndreas Huber            OMX_COMPONENTTYPE *component);
37f40810585b61295f84d7d6b4e63ef935222bf18eAndreas Huber
3817e995d39771569792c528f3dea559c83f0fc238Andreas Huber    virtual OMX_ERRORTYPE enumerateComponents(
3917e995d39771569792c528f3dea559c83f0fc238Andreas Huber            OMX_STRING name,
4017e995d39771569792c528f3dea559c83f0fc238Andreas Huber            size_t size,
4117e995d39771569792c528f3dea559c83f0fc238Andreas Huber            OMX_U32 index);
4217e995d39771569792c528f3dea559c83f0fc238Andreas Huber
436239f8a9287b511c2a7e417979ca5299a15436bcAndreas Huber    virtual OMX_ERRORTYPE getRolesOfComponent(
446239f8a9287b511c2a7e417979ca5299a15436bcAndreas Huber            const char *name,
456239f8a9287b511c2a7e417979ca5299a15436bcAndreas Huber            Vector<String8> *roles);
466239f8a9287b511c2a7e417979ca5299a15436bcAndreas Huber
4717e995d39771569792c528f3dea559c83f0fc238Andreas Huberprivate:
4817e995d39771569792c528f3dea559c83f0fc238Andreas Huber    void *mLibHandle;
4917e995d39771569792c528f3dea559c83f0fc238Andreas Huber
5017e995d39771569792c528f3dea559c83f0fc238Andreas Huber    typedef OMX_ERRORTYPE (*InitFunc)();
5117e995d39771569792c528f3dea559c83f0fc238Andreas Huber    typedef OMX_ERRORTYPE (*DeinitFunc)();
5217e995d39771569792c528f3dea559c83f0fc238Andreas Huber    typedef OMX_ERRORTYPE (*ComponentNameEnumFunc)(
5317e995d39771569792c528f3dea559c83f0fc238Andreas Huber            OMX_STRING, OMX_U32, OMX_U32);
5417e995d39771569792c528f3dea559c83f0fc238Andreas Huber
5517e995d39771569792c528f3dea559c83f0fc238Andreas Huber    typedef OMX_ERRORTYPE (*GetHandleFunc)(
5617e995d39771569792c528f3dea559c83f0fc238Andreas Huber            OMX_HANDLETYPE *, OMX_STRING, OMX_PTR, OMX_CALLBACKTYPE *);
5717e995d39771569792c528f3dea559c83f0fc238Andreas Huber
58f40810585b61295f84d7d6b4e63ef935222bf18eAndreas Huber    typedef OMX_ERRORTYPE (*FreeHandleFunc)(OMX_HANDLETYPE *);
59f40810585b61295f84d7d6b4e63ef935222bf18eAndreas Huber
606239f8a9287b511c2a7e417979ca5299a15436bcAndreas Huber    typedef OMX_ERRORTYPE (*GetRolesOfComponentFunc)(
616239f8a9287b511c2a7e417979ca5299a15436bcAndreas Huber            OMX_STRING, OMX_U32 *, OMX_U8 **);
626239f8a9287b511c2a7e417979ca5299a15436bcAndreas Huber
6317e995d39771569792c528f3dea559c83f0fc238Andreas Huber    InitFunc mInit;
6417e995d39771569792c528f3dea559c83f0fc238Andreas Huber    DeinitFunc mDeinit;
6517e995d39771569792c528f3dea559c83f0fc238Andreas Huber    ComponentNameEnumFunc mComponentNameEnum;
6617e995d39771569792c528f3dea559c83f0fc238Andreas Huber    GetHandleFunc mGetHandle;
67f40810585b61295f84d7d6b4e63ef935222bf18eAndreas Huber    FreeHandleFunc mFreeHandle;
686239f8a9287b511c2a7e417979ca5299a15436bcAndreas Huber    GetRolesOfComponentFunc mGetRolesOfComponentHandle;
6917e995d39771569792c528f3dea559c83f0fc238Andreas Huber
7017e995d39771569792c528f3dea559c83f0fc238Andreas Huber    TIOMXPlugin(const TIOMXPlugin &);
7117e995d39771569792c528f3dea559c83f0fc238Andreas Huber    TIOMXPlugin &operator=(const TIOMXPlugin &);
7217e995d39771569792c528f3dea559c83f0fc238Andreas Huber};
7317e995d39771569792c528f3dea559c83f0fc238Andreas Huber
7417e995d39771569792c528f3dea559c83f0fc238Andreas Huber}  // namespace android
7517e995d39771569792c528f3dea559c83f0fc238Andreas Huber
7617e995d39771569792c528f3dea559c83f0fc238Andreas Huber#endif  // TI_OMX_PLUGIN_H_
77