118 lines
3.7 KiB
C
118 lines
3.7 KiB
C
/*
|
|
* 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_ */
|