1ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu/* 22f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * cmodule.h, component module interface class 330bd6062e4b295f5f7bcaeb98165065310d29269Ho-Eun Ryu * 42f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * Copyright (c) 2009-2010 Wind River Systems, Inc. 52f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * 62f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * Licensed under the Apache License, Version 2.0 (the "License"); 72f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * you may not use this file except in compliance with the License. 82f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * You may obtain a copy of the License at 92f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * 102f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * http://www.apache.org/licenses/LICENSE-2.0 112f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * 122f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * Unless required by applicable law or agreed to in writing, software 132f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * distributed under the License is distributed on an "AS IS" BASIS, 142f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 152f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * See the License for the specific language governing permissions and 162f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * limitations under the License. 17ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu */ 18ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu 19ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu#ifndef __CMODULE_H 20ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu#define __CMODULE_H 21ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu 22ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu#include <module.h> 23ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu 24aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu/* 25aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu * WRS OMX-IL Component Module Symbol 26aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu */ 27aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu#define WRS_OMXIL_CMODULE_SYMBOL WRS_OMXIL_CMODULE 28aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu#define WRS_OMXIL_CMODULE_SYMBOL_STRING "WRS_OMXIL_CMODULE" 29aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu 30aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryustruct wrs_omxil_cmodule_ops_s { 31aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu OMX_ERRORTYPE (*instantiate)(OMX_PTR *); 32aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu}; 33ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu 34aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryustruct wrs_omxil_cmodule_s { 35aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu const char *name; 36aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu 37aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu const char **roles; 38aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu const int nr_roles; 39aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu 40aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu struct wrs_omxil_cmodule_ops_s *ops; 41aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu}; 42aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu 43aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryuclass ComponentBase; 445463849b74e78069ba8853df8be5e185e712a6c1Ho-Eun Ryu 45ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryuclass CModule { 46ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu public: 4793829fc5dd7d8b02ab8425f4f6cecf39e0636508Ho-Eun Ryu CModule(const OMX_STRING lname); 48ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu ~CModule(); 49ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu 50b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu /* 51b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu * library loading / unloading 52b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu */ 53aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu OMX_ERRORTYPE Load(int flag); 54e4cf7671304eade66d6f89200ccb7c448f12909cHo-Eun Ryu OMX_U32 Unload(void); 55ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu 56b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu /* end of library loading / unloading */ 57b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu 58b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu /* 59b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu * accessor 60b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu */ 61b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu /* library name */ 623f7ceee13aa17ae32d4263aed2ce67eb9a37c58bywan OMX_STRING GetLibraryName(void); 6393829fc5dd7d8b02ab8425f4f6cecf39e0636508Ho-Eun Ryu 64dcca56c316c37a3b79d54fc28631607e672db691Ho-Eun Ryu /* component name and roles */ 653f7ceee13aa17ae32d4263aed2ce67eb9a37c58bywan OMX_STRING GetComponentName(void); 66dcca56c316c37a3b79d54fc28631607e672db691Ho-Eun Ryu OMX_ERRORTYPE GetComponentRoles(OMX_U32 *nr_roles, OMX_U8 **roles); 67dcca56c316c37a3b79d54fc28631607e672db691Ho-Eun Ryu 684d23422b4ee131b866bb3f3016bc436fb51f68c0Ho-Eun Ryu bool QueryHavingThisRole(const OMX_STRING role); 694d23422b4ee131b866bb3f3016bc436fb51f68c0Ho-Eun Ryu 70b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu /* end of accessor */ 71b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu 72ebfafff3d5b90857bbbe1cc38e7e7914f5c24c6bHo-Eun Ryu /* library symbol method and helpers */ 73aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu OMX_ERRORTYPE QueryComponentNameAndRoles(void); 748c1c19ee4a7c0f1f7cdf1b186e92118325080f5cHo-Eun Ryu OMX_ERRORTYPE InstantiateComponent(ComponentBase **instance); 75ebfafff3d5b90857bbbe1cc38e7e7914f5c24c6bHo-Eun Ryu 76ebfafff3d5b90857bbbe1cc38e7e7914f5c24c6bHo-Eun Ryu /* end of library symbol method and helpers */ 77ebfafff3d5b90857bbbe1cc38e7e7914f5c24c6bHo-Eun Ryu 78ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu private: 79b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu /* 80b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu * library symbol 81b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu */ 82aa8a53ba28b4e12dcdc08683e770d7b3fd68ff8dHo-Eun Ryu struct wrs_omxil_cmodule_s *wrs_omxil_cmodule; 835463849b74e78069ba8853df8be5e185e712a6c1Ho-Eun Ryu 84b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu /* end of library symbol */ 85b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu 86ebfafff3d5b90857bbbe1cc38e7e7914f5c24c6bHo-Eun Ryu /* component name */ 87ebfafff3d5b90857bbbe1cc38e7e7914f5c24c6bHo-Eun Ryu char cname[OMX_MAX_STRINGNAME_SIZE]; 88ebfafff3d5b90857bbbe1cc38e7e7914f5c24c6bHo-Eun Ryu 89ebfafff3d5b90857bbbe1cc38e7e7914f5c24c6bHo-Eun Ryu /* component roles */ 90ebfafff3d5b90857bbbe1cc38e7e7914f5c24c6bHo-Eun Ryu OMX_U8 **roles; 91ebfafff3d5b90857bbbe1cc38e7e7914f5c24c6bHo-Eun Ryu OMX_U32 nr_roles; 92ebfafff3d5b90857bbbe1cc38e7e7914f5c24c6bHo-Eun Ryu 93b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu /* library name */ 9493829fc5dd7d8b02ab8425f4f6cecf39e0636508Ho-Eun Ryu char lname[OMX_MAX_STRINGNAME_SIZE]; 95b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu /* utils::module */ 96ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu struct module *module; 97ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu}; 98ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu 99ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu#endif /* __CMODULE_H */ 100