/* * * Copyright 2015 Rockchip Electronics Co. LTD * * 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 __HAL_H264D_GLOBAL_H__ #define __HAL_H264D_GLOBAL_H__ #include "mpp_hal.h" #include "mpp_debug.h" #include "mpp_device.h" #include "hal_bufs.h" #include "dxva_syntax.h" #include "h264d_syntax.h" #define H264D_DBG_ERROR (0x00000001) #define H264D_DBG_ASSERT (0x00000002) #define H264D_DBG_WARNNING (0x00000004) #define H264D_DBG_LOG (0x00000008) #define H264D_DBG_HARD_MODE (0x00000010) extern RK_U32 hal_h264d_debug; #define H264D_DBG(level, fmt, ...)\ do {\ if (level & hal_h264d_debug)\ { mpp_log(fmt, ## __VA_ARGS__); }\ } while (0) #define H264D_ERR(fmt, ...)\ do {\ if (H264D_DBG_ERROR & hal_h264d_debug)\ { mpp_log(fmt, ## __VA_ARGS__); }\ } while (0) #define ASSERT(val)\ do {\ if (H264D_DBG_ASSERT & hal_h264d_debug)\ { mpp_assert(val); }\ } while (0) #define H264D_WARNNING(fmt, ...)\ do {\ if (H264D_DBG_WARNNING & hal_h264d_debug)\ { mpp_log(fmt, ## __VA_ARGS__); }\ } while (0) #define H264D_LOG(fmt, ...)\ do {\ if (H264D_DBG_LOG & hal_h264d_debug)\ { mpp_log(fmt, ## __VA_ARGS__); }\ } while (0) //!< vaule check #define VAL_CHECK(ret, val, ...)\ do{\ if (!(val)){\ ret = MPP_ERR_VALUE; \ H264D_WARNNING("value error(%d).\n", __LINE__); \ goto __FAILED; \ }} while (0) //!< memory malloc check #define MEM_CHECK(ret, val, ...)\ do{\ if (!(val)) {\ ret = MPP_ERR_MALLOC; \ H264D_ERR("malloc buffer error(%d).\n", __LINE__); \ ASSERT(0); goto __FAILED; \ }} while (0) //!< input check #define INP_CHECK(ret, val, ...)\ do{\ if ((val)) {\ ret = MPP_ERR_INIT; \ H264D_WARNNING("input empty(%d).\n", __LINE__); \ goto __RETURN; \ }} while (0) //!< function return check #define FUN_CHECK(val)\ do{\ if ((val) < 0) {\ H264D_WARNNING("Function error(%d).\n", __LINE__); \ goto __FAILED; \ }} while (0) typedef struct h264d_hal_ctx_t { MppHalApi hal_api; DXVA_PicParams_H264_MVC *pp; DXVA_Qmatrix_H264 *qm; RK_U32 slice_num; DXVA_Slice_H264_Short *slice_short; //!< MAX_SLICES DXVA_Slice_H264_Long *slice_long; //!< MAX_SLICES RK_U8 *bitstream; RK_U32 strm_len; void *priv; //!< resert data for extent //!< add HalDecTask *in_task; MppBufSlots frame_slots; MppBufSlots packet_slots; MppDecCfgSet *cfg; MppBufferGroup buf_group; HalBufs cmv_bufs; RK_S32 mv_size; RK_S32 mv_count; MppCbCtx *dec_cb; MppDev dev; void *reg_ctx; RK_U32 fast_mode; } H264dHalCtx_t; #endif /*__HAL_H264D_GLOBAL_H__*/