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