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