/* * 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_ */