1e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber/* 2e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber * Copyright (C) 2009 The Android Open Source Project 3e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber * 4e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 5e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber * you may not use this file except in compliance with the License. 6e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber * You may obtain a copy of the License at 7e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber * 8e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 9e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber * 10e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber * Unless required by applicable law or agreed to in writing, software 11e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 12e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber * See the License for the specific language governing permissions and 14e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber * limitations under the License. 15e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber */ 16e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber 17e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber#ifndef OMX_MASTER_H_ 18e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber 19e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber#define OMX_MASTER_H_ 20e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber 216c6b4d0d2b98a7ceee8b697daaf611f8df3254fbJames Dong#include <OMXPluginBase.h> 22e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber 23e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber#include <utils/threads.h> 24e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber#include <utils/KeyedVector.h> 25e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber#include <utils/List.h> 26e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber#include <utils/String8.h> 27e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber 28e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Hubernamespace android { 29e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber 30e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huberstruct OMXMaster : public OMXPluginBase { 31e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber OMXMaster(); 32e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber virtual ~OMXMaster(); 33e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber 34e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber virtual OMX_ERRORTYPE makeComponentInstance( 35e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber const char *name, 36e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber const OMX_CALLBACKTYPE *callbacks, 37e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber OMX_PTR appData, 38e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber OMX_COMPONENTTYPE **component); 39e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber 40f0fb96c352f30b812a4903a1d783a715e1e817bdAndreas Huber virtual OMX_ERRORTYPE destroyComponentInstance( 41f0fb96c352f30b812a4903a1d783a715e1e817bdAndreas Huber OMX_COMPONENTTYPE *component); 42f0fb96c352f30b812a4903a1d783a715e1e817bdAndreas Huber 43e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber virtual OMX_ERRORTYPE enumerateComponents( 44e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber OMX_STRING name, 45e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber size_t size, 46e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber OMX_U32 index); 47e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber 488ae1d0bdcef22f2bdd8d283e0e615f3ba6c3f4cdAndreas Huber virtual OMX_ERRORTYPE getRolesOfComponent( 498ae1d0bdcef22f2bdd8d283e0e615f3ba6c3f4cdAndreas Huber const char *name, 508ae1d0bdcef22f2bdd8d283e0e615f3ba6c3f4cdAndreas Huber Vector<String8> *roles); 518ae1d0bdcef22f2bdd8d283e0e615f3ba6c3f4cdAndreas Huber 52e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huberprivate: 53e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber Mutex mLock; 54e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber List<OMXPluginBase *> mPlugins; 55e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber KeyedVector<String8, OMXPluginBase *> mPluginByComponentName; 56f0fb96c352f30b812a4903a1d783a715e1e817bdAndreas Huber KeyedVector<OMX_COMPONENTTYPE *, OMXPluginBase *> mPluginByInstance; 57f0fb96c352f30b812a4903a1d783a715e1e817bdAndreas Huber 58e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber void *mVendorLibHandle; 59e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber 60e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber void addVendorPlugin(); 61bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber void addPlugin(const char *libname); 62e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber void addPlugin(OMXPluginBase *plugin); 63e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber void clearPlugins(); 64e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber 65e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber OMXMaster(const OMXMaster &); 66e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber OMXMaster &operator=(const OMXMaster &); 67e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber}; 68e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber 69e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber} // namespace android 70e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber 71e3ec3cec3a2e27033249ff82964d2cbd441d9873Andreas Huber#endif // OMX_MASTER_H_ 72