1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2015 Rockchip Electronics Co. LTD 3*437bfbebSnyanmisaka * 4*437bfbebSnyanmisaka * Licensed under the Apache License, Version 2.0 (the "License"); 5*437bfbebSnyanmisaka * you may not use this file except in compliance with the License. 6*437bfbebSnyanmisaka * You may obtain a copy of the License at 7*437bfbebSnyanmisaka * 8*437bfbebSnyanmisaka * http://www.apache.org/licenses/LICENSE-2.0 9*437bfbebSnyanmisaka * 10*437bfbebSnyanmisaka * Unless required by applicable law or agreed to in writing, software 11*437bfbebSnyanmisaka * distributed under the License is distributed on an "AS IS" BASIS, 12*437bfbebSnyanmisaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*437bfbebSnyanmisaka * See the License for the specific language governing permissions and 14*437bfbebSnyanmisaka * limitations under the License. 15*437bfbebSnyanmisaka */ 16*437bfbebSnyanmisaka 17*437bfbebSnyanmisaka #ifndef __M2VD_COM_H__ 18*437bfbebSnyanmisaka #define __M2VD_COM_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #include <stdio.h> 21*437bfbebSnyanmisaka #include <stdlib.h> 22*437bfbebSnyanmisaka 23*437bfbebSnyanmisaka #include "mpp_debug.h" 24*437bfbebSnyanmisaka 25*437bfbebSnyanmisaka #define M2VD_DEMO_MODE 0 26*437bfbebSnyanmisaka 27*437bfbebSnyanmisaka //------------------------ temp --------------------------------- 28*437bfbebSnyanmisaka #define M2VD_TEST_TRACE (0x00000001) 29*437bfbebSnyanmisaka #define M2VD_TEST_TIME (0x00000002) 30*437bfbebSnyanmisaka #define M2VD_TEST_MUTI_THREAD (0x00000004) 31*437bfbebSnyanmisaka #define M2VD_TEST_DUMPYUV (0x00000008) 32*437bfbebSnyanmisaka #define M2VD_TEST_FPGA (0x00000010) 33*437bfbebSnyanmisaka 34*437bfbebSnyanmisaka //log of diff 35*437bfbebSnyanmisaka #define M2VD_DBG_FUNCTION (0x00000001) 36*437bfbebSnyanmisaka #define M2VD_DBG_ASSERT (0x00000002) 37*437bfbebSnyanmisaka #define M2VD_DBG_WARNNING (0x00000004) 38*437bfbebSnyanmisaka #define M2VD_DBG_LOG (0x00000008) 39*437bfbebSnyanmisaka #define M2VD_DBG_SEC_HEADER (0x00000010) 40*437bfbebSnyanmisaka #define M2VD_DBG_DUMP_REG (0x00000020) 41*437bfbebSnyanmisaka 42*437bfbebSnyanmisaka 43*437bfbebSnyanmisaka 44*437bfbebSnyanmisaka 45*437bfbebSnyanmisaka extern RK_U32 m2vd_debug; 46*437bfbebSnyanmisaka 47*437bfbebSnyanmisaka #define M2VD_ERR(fmt, ...)\ 48*437bfbebSnyanmisaka do {\ 49*437bfbebSnyanmisaka { mpp_log(fmt, ## __VA_ARGS__); }\ 50*437bfbebSnyanmisaka } while (0) 51*437bfbebSnyanmisaka 52*437bfbebSnyanmisaka #define M2VD_ASSERT(val)\ 53*437bfbebSnyanmisaka do {\ 54*437bfbebSnyanmisaka if (M2VD_DBG_ASSERT & m2vd_debug)\ 55*437bfbebSnyanmisaka { mpp_assert(val); }\ 56*437bfbebSnyanmisaka } while (0) 57*437bfbebSnyanmisaka 58*437bfbebSnyanmisaka #define M2VD_WARNNING(fmt, ...)\ 59*437bfbebSnyanmisaka do {\ 60*437bfbebSnyanmisaka if (M2VD_DBG_WARNNING & m2vd_debug)\ 61*437bfbebSnyanmisaka { mpp_log(fmt, ## __VA_ARGS__); }\ 62*437bfbebSnyanmisaka } while (0) 63*437bfbebSnyanmisaka 64*437bfbebSnyanmisaka #define M2VD_LOG(fmt, ...)\ 65*437bfbebSnyanmisaka do {\ 66*437bfbebSnyanmisaka if (M2VD_DBG_LOG & m2vd_debug)\ 67*437bfbebSnyanmisaka { mpp_log(fmt, ## __VA_ARGS__); }\ 68*437bfbebSnyanmisaka } while (0) 69*437bfbebSnyanmisaka 70*437bfbebSnyanmisaka 71*437bfbebSnyanmisaka //check function return 72*437bfbebSnyanmisaka #define M2VD_CHK_F(val) \ 73*437bfbebSnyanmisaka do{ \ 74*437bfbebSnyanmisaka if((val) < 0) { \ 75*437bfbebSnyanmisaka ret = (val); \ 76*437bfbebSnyanmisaka M2VD_WARNNING("func return error(L%d), ret:%d\n", __LINE__, ret); \ 77*437bfbebSnyanmisaka goto __FAILED; \ 78*437bfbebSnyanmisaka } \ 79*437bfbebSnyanmisaka } while (0) 80*437bfbebSnyanmisaka 81*437bfbebSnyanmisaka //check value if is zero or NULL 82*437bfbebSnyanmisaka #define M2VD_CHK_V(val, ...)\ 83*437bfbebSnyanmisaka do{ if(!(val)){\ 84*437bfbebSnyanmisaka ret = MPP_ERR_VALUE;\ 85*437bfbebSnyanmisaka M2VD_WARNNING("value error(L%d), val:%d\n", __LINE__, val);\ 86*437bfbebSnyanmisaka goto __FAILED;\ 87*437bfbebSnyanmisaka } } while (0) 88*437bfbebSnyanmisaka 89*437bfbebSnyanmisaka //memory malloc check 90*437bfbebSnyanmisaka #define M2VD_CHK_M(val, ...)\ 91*437bfbebSnyanmisaka do{ if(!(val)) {\ 92*437bfbebSnyanmisaka ret = MPP_ERR_MALLOC;\ 93*437bfbebSnyanmisaka M2VD_ERR("malloc buffer error(%d), pointer:%p\n", __LINE__, val);\ 94*437bfbebSnyanmisaka M2VD_ASSERT(0); goto __FAILED;\ 95*437bfbebSnyanmisaka } } while (0) 96*437bfbebSnyanmisaka 97*437bfbebSnyanmisaka //file check 98*437bfbebSnyanmisaka #define M2VD_CHK_FILE(val, path, ...)\ 99*437bfbebSnyanmisaka do{ if(!(val)) {\ 100*437bfbebSnyanmisaka ret = MPP_ERR_OPEN_FILE;\ 101*437bfbebSnyanmisaka M2VD_WARNNING("open file error(line%d): %s\n", __LINE__, path);\ 102*437bfbebSnyanmisaka M2VD_ASSERT(0); goto __FAILED;\ 103*437bfbebSnyanmisaka } } while (0) 104*437bfbebSnyanmisaka 105*437bfbebSnyanmisaka //!< input check 106*437bfbebSnyanmisaka #define M2VD_CHK_I(val, ...)\ 107*437bfbebSnyanmisaka do{ if(!(val)) {\ 108*437bfbebSnyanmisaka ret = MPP_ERR_INIT;\ 109*437bfbebSnyanmisaka M2VD_WARNNING("input empty(%d), val:%d\n", __LINE__, val);\ 110*437bfbebSnyanmisaka goto __FAILED;\ 111*437bfbebSnyanmisaka } } while (0) 112*437bfbebSnyanmisaka 113*437bfbebSnyanmisaka #define m2vd_dbg_func(tag) \ 114*437bfbebSnyanmisaka do {\ 115*437bfbebSnyanmisaka if (M2VD_DBG_FUNCTION & m2vd_debug)\ 116*437bfbebSnyanmisaka { mpp_log("%s: line(%d), func(%s)", tag, __LINE__, __FUNCTION__); }\ 117*437bfbebSnyanmisaka } while (0) 118*437bfbebSnyanmisaka 119*437bfbebSnyanmisaka 120*437bfbebSnyanmisaka 121*437bfbebSnyanmisaka 122*437bfbebSnyanmisaka #define M2VD_FCLOSE(fp) do{ if(fp) fclose(fp); fp = NULL; } while (0) 123*437bfbebSnyanmisaka 124*437bfbebSnyanmisaka #endif 125