OMXComponentDefines.h revision 0541f11be2f78b558476772f1f877e140f9d844b
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#ifndef OMX_COMPONENT_DEFINES_H_ 18#define OMX_COMPONENT_DEFINES_H_ 19 20 21 22#define DECLARE_HANDLER(CLASS, FUNC)\ 23 static OMX_ERRORTYPE Get##FUNC(void *inst, OMX_PTR pStructure) {\ 24 return ((CLASS*)inst)->Get##FUNC(pStructure);\ 25 }\ 26 static OMX_ERRORTYPE Set##FUNC(void *inst, OMX_PTR pStructure) {\ 27 return ((CLASS*)inst)->Set##FUNC(pStructure);\ 28 }\ 29 OMX_ERRORTYPE Get##FUNC(OMX_PTR pStructure);\ 30 OMX_ERRORTYPE Set##FUNC(OMX_PTR pStructure); 31 32#define CHECK_TYPE_HEADER(P)\ 33 ret = CheckTypeHeader((P), sizeof(*(P)));\ 34 if (ret != OMX_ErrorNone) {\ 35 LOGE("Invalid type header.");\ 36 return ret;\ 37 } 38 39#define CHECK_PORT_INDEX(P, INDEX)\ 40 if ((P)->nPortIndex != INDEX) {\ 41 LOGE("Bad port index %u, expected: %d", (P)->nPortIndex, INDEX);\ 42 return OMX_ErrorBadPortIndex;\ 43 } 44 45#define CHECK_ENUMERATION_RANGE(INDEX, RANGE)\ 46 if (INDEX >= RANGE) {\ 47 LOGE("No more enumeration.");\ 48 return OMX_ErrorNoMore;\ 49 } 50 51#define CHECK_PORT_INDEX_RANGE(P)\ 52 if ((P)->nPortIndex != 0 && (P)->nPortIndex != 1) {\ 53 LOGE("Port out of range %u", (P)->nPortIndex);\ 54 return OMX_ErrorBadPortIndex;\ 55 } 56 57#define CHECK_RETURN_VALUE(FUNC)\ 58 if (ret != OMX_ErrorNone) {\ 59 LOGE(FUNC" failed: Error code = 0x%x", ret);\ 60 return ret;\ 61 } 62 63#define CHECK_SET_PARAM_STATE()\ 64 OMX_STATETYPE state;\ 65 CBaseGetState((void *)GetComponentHandle(), &state);\ 66 if (state != OMX_StateLoaded && state != OMX_StateWaitForResources) {\ 67 LOGE("Invalid state to set param.");\ 68 return OMX_ErrorIncorrectStateOperation;\ 69 } 70 71#define CHECK_SET_CONFIG_STATE()\ 72 OMX_STATETYPE state;\ 73 CBaseGetState((void *)GetComponentHandle(), &state);\ 74 if (state == OMX_StateLoaded || state == OMX_StateWaitForResources) {\ 75 LOGE("Invalid state to set config");\ 76 return OMX_ErrorNone;\ 77 } 78 79#define CHECK_BS_STATE() \ 80 if (mBsState == BS_STATE_EXECUTING) { \ 81 LOGE("Wrong state"); \ 82 return OMX_ErrorUndefined; \ 83 } 84 85#define CHECK_BS_STATUS(FUNC) \ 86 if (ret != BS_SUCCESS) { \ 87 LOGE(FUNC" Failed. ret = 0x%08x\n", ret); \ 88 return OMX_ErrorUndefined; \ 89 } 90 91#define CHECK_STATUS(FUNC) \ 92 if (ret != OMX_ErrorNone) { \ 93 LOGE(FUNC" Failed. ret = 0x%08x\n", ret); \ 94 return ret; \ 95 } 96 97#define CHECK_ENCODE_STATUS(FUNC)\ 98 if (ret < ENCODE_SUCCESS) { \ 99 LOGE(FUNC" Failed. ret = 0x%08x\n", ret); \ 100 return OMX_ErrorUndefined; \ 101 } 102 103#define DECLARE_OMX_COMPONENT(NAME, ROLE, CLASS) \ 104 static const char *gName = (const char *)(NAME);\ 105 static const char *gRole = (const char *)(ROLE);\ 106 OMX_ERRORTYPE CreateInstance(OMX_PTR *instance) {\ 107 *instance = NULL;\ 108 ComponentBase *inst = new CLASS;\ 109 if (!inst) {\ 110 return OMX_ErrorInsufficientResources;\ 111 }\ 112 *instance = inst;\ 113 return OMX_ErrorNone;\ 114 }\ 115 struct wrs_omxil_cmodule_ops_s gOps = {CreateInstance};\ 116 struct wrs_omxil_cmodule_s WRS_OMXIL_CMODULE_SYMBOL = {gName, &gRole, 1, &gOps}; 117 118#endif /* OMX_COMPONENT_DEFINES_H_ */ 119