Home | History | Annotate | Download | only in libstagefrighthw
      1 /*
      2 * Copyright (c) 2009-2011 Intel Corporation.  All rights reserved.
      3 *
      4 * Licensed under the Apache License, Version 2.0 (the "License");
      5 * you may not use this file except in compliance with the License.
      6 * You may obtain a copy of the License at
      7 *
      8 * http://www.apache.org/licenses/LICENSE-2.0
      9 *
     10 * Unless required by applicable law or agreed to in writing, software
     11 * distributed under the License is distributed on an "AS IS" BASIS,
     12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 * See the License for the specific language governing permissions and
     14 * limitations under the License.
     15 */
     16 /*
     17  * Copyright (C) 2009 The Android Open Source Project
     18  *
     19  * Licensed under the Apache License, Version 2.0 (the "License");
     20  * you may not use this file except in compliance with the License.
     21  * You may obtain a copy of the License at
     22  *
     23  *      http://www.apache.org/licenses/LICENSE-2.0
     24  *
     25  * Unless required by applicable law or agreed to in writing, software
     26  * distributed under the License is distributed on an "AS IS" BASIS,
     27  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     28  * See the License for the specific language governing permissions and
     29  * limitations under the License.
     30  */
     31 
     32 #ifndef WRS_OMX_PLUGIN_H_
     33 
     34 #define WRS_OMX_PLUGIN_H_
     35 
     36 #include <OMXPluginBase.h>
     37 #include <utils/Mutex.h>
     38 #include <utils/Vector.h>
     39 
     40 namespace android {
     41 
     42 struct WrsOMXCore {
     43     typedef OMX_ERRORTYPE (*InitFunc)();
     44     typedef OMX_ERRORTYPE (*DeinitFunc)();
     45     typedef OMX_ERRORTYPE (*ComponentNameEnumFunc)(
     46             OMX_STRING, OMX_U32, OMX_U32);
     47 
     48     typedef OMX_ERRORTYPE (*GetHandleFunc)(
     49             OMX_HANDLETYPE *, OMX_STRING, OMX_PTR, OMX_CALLBACKTYPE *);
     50 
     51     typedef OMX_ERRORTYPE (*FreeHandleFunc)(OMX_HANDLETYPE *);
     52 
     53     typedef OMX_ERRORTYPE (*GetRolesOfComponentFunc)(
     54             OMX_STRING, OMX_U32 *, OMX_U8 **);
     55 
     56     void *mLibHandle;
     57 
     58     InitFunc mInit;
     59     DeinitFunc mDeinit;
     60     ComponentNameEnumFunc mComponentNameEnum;
     61     GetHandleFunc mGetHandle;
     62     FreeHandleFunc mFreeHandle;
     63     GetRolesOfComponentFunc mGetRolesOfComponentHandle;
     64 
     65     OMX_U32 mNumComponents;
     66 };
     67 
     68 struct WrsOMXComponent {
     69     OMX_COMPONENTTYPE *mComponent;
     70     WrsOMXCore *mCore;
     71 };
     72 
     73 struct WrsOMXPlugin : public OMXPluginBase {
     74     WrsOMXPlugin();
     75     virtual ~WrsOMXPlugin();
     76 
     77     virtual OMX_ERRORTYPE makeComponentInstance(
     78             const char *name,
     79             const OMX_CALLBACKTYPE *callbacks,
     80             OMX_PTR appData,
     81             OMX_COMPONENTTYPE **component);
     82 
     83     virtual OMX_ERRORTYPE destroyComponentInstance(
     84             OMX_COMPONENTTYPE *component);
     85 
     86     virtual OMX_ERRORTYPE enumerateComponents(
     87             OMX_STRING name,
     88             size_t size,
     89             OMX_U32 index);
     90 
     91     virtual OMX_ERRORTYPE getRolesOfComponent(
     92             const char *name,
     93             Vector<String8> *roles);
     94 
     95 private:
     96 
     97     Mutex mMutex; // to protect access to mComponents
     98 
     99     Vector<WrsOMXCore*> mCores;
    100     Vector<WrsOMXComponent> mComponents;
    101 
    102     OMX_ERRORTYPE AddCore(const char* coreName);
    103 
    104     WrsOMXPlugin(const WrsOMXPlugin &);
    105     WrsOMXPlugin &operator=(const WrsOMXPlugin &);
    106 };
    107 
    108 }  // namespace android
    109 
    110 #endif  // WRS_OMX_PLUGIN_H_
    111