| /* |
| * Copyright (c) 2009-2011 Intel Corporation. All rights reserved. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef OMX_COMPONENT_DEFINES_H_ |
| #define OMX_COMPONENT_DEFINES_H_ |
| |
| |
| |
| #define DECLARE_HANDLER(CLASS, FUNC)\ |
| static OMX_ERRORTYPE Get##FUNC(void *inst, OMX_PTR pStructure) {\ |
| return ((CLASS*)inst)->Get##FUNC(pStructure);\ |
| }\ |
| static OMX_ERRORTYPE Set##FUNC(void *inst, OMX_PTR pStructure) {\ |
| return ((CLASS*)inst)->Set##FUNC(pStructure);\ |
| }\ |
| OMX_ERRORTYPE Get##FUNC(OMX_PTR pStructure);\ |
| OMX_ERRORTYPE Set##FUNC(OMX_PTR pStructure); |
| |
| #define CHECK_TYPE_HEADER(P)\ |
| ret = CheckTypeHeader((P), sizeof(*(P)));\ |
| if (ret != OMX_ErrorNone) {\ |
| LOGE("Invalid type header.");\ |
| return ret;\ |
| } |
| |
| #define CHECK_PORT_INDEX(P, INDEX)\ |
| if ((P)->nPortIndex != INDEX) {\ |
| LOGE("Bad port index %u, expected: %d", (P)->nPortIndex, INDEX);\ |
| return OMX_ErrorBadPortIndex;\ |
| } |
| |
| #define CHECK_ENUMERATION_RANGE(INDEX, RANGE)\ |
| if (INDEX >= RANGE) {\ |
| LOGE("No more enumeration.");\ |
| return OMX_ErrorNoMore;\ |
| } |
| |
| #define CHECK_PORT_INDEX_RANGE(P)\ |
| if ((P)->nPortIndex != 0 && (P)->nPortIndex != 1) {\ |
| LOGE("Port out of range %u", (P)->nPortIndex);\ |
| return OMX_ErrorBadPortIndex;\ |
| } |
| |
| #define CHECK_RETURN_VALUE(FUNC)\ |
| if (ret != OMX_ErrorNone) {\ |
| LOGE(FUNC" failed: Error code = 0x%x", ret);\ |
| return ret;\ |
| } |
| |
| #define CHECK_SET_PARAM_STATE()\ |
| OMX_STATETYPE state;\ |
| CBaseGetState((void *)GetComponentHandle(), &state);\ |
| if (state != OMX_StateLoaded && state != OMX_StateWaitForResources) {\ |
| LOGE("Invalid state to set param.");\ |
| return OMX_ErrorIncorrectStateOperation;\ |
| } |
| |
| #define CHECK_SET_CONFIG_STATE()\ |
| OMX_STATETYPE state;\ |
| CBaseGetState((void *)GetComponentHandle(), &state);\ |
| if (state == OMX_StateLoaded || state == OMX_StateWaitForResources) {\ |
| LOGE("Invalid state to set config");\ |
| return OMX_ErrorNone;\ |
| } |
| |
| #define CHECK_BS_STATE() \ |
| if (mBsState == BS_STATE_EXECUTING) { \ |
| LOGE("Wrong state"); \ |
| return OMX_ErrorUndefined; \ |
| } |
| |
| #define CHECK_BS_STATUS(FUNC) \ |
| if (ret != BS_SUCCESS) { \ |
| LOGE(FUNC" Failed. ret = 0x%08x\n", ret); \ |
| return OMX_ErrorUndefined; \ |
| } |
| |
| #define CHECK_STATUS(FUNC) \ |
| if (ret != OMX_ErrorNone) { \ |
| LOGE(FUNC" Failed. ret = 0x%08x\n", ret); \ |
| return ret; \ |
| } |
| |
| #define CHECK_ENCODE_STATUS(FUNC)\ |
| if (ret < ENCODE_SUCCESS) { \ |
| LOGE(FUNC" Failed. ret = 0x%08x\n", ret); \ |
| return OMX_ErrorUndefined; \ |
| } |
| |
| #define DECLARE_OMX_COMPONENT(NAME, ROLE, CLASS) \ |
| static const char *gName = (const char *)(NAME);\ |
| static const char *gRole = (const char *)(ROLE);\ |
| OMX_ERRORTYPE CreateInstance(OMX_PTR *instance) {\ |
| *instance = NULL;\ |
| ComponentBase *inst = new CLASS;\ |
| if (!inst) {\ |
| return OMX_ErrorInsufficientResources;\ |
| }\ |
| *instance = inst;\ |
| return OMX_ErrorNone;\ |
| }\ |
| struct wrs_omxil_cmodule_ops_s gOps = {CreateInstance};\ |
| struct wrs_omxil_cmodule_s WRS_OMXIL_CMODULE_SYMBOL = {gName, &gRole, 1, &gOps}; |
| |
| #endif /* OMX_COMPONENT_DEFINES_H_ */ |