Home | History | Annotate | Download | only in videocodec
      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