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