/******************************************************************************
 *
 * Copyright (C) 2015 The Android Open Source Project
 *
 * 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.
 *
 *****************************************************************************
 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
*/
#ifndef _IH264D_DEBUG_H_
#define _IH264D_DEBUG_H_

/*!
 **************************************************************************
 * \file ih264d_debug.h
 *
 * \brief
 *    Contains declarations used for debugging
 *
 * \date
 *    2/12/2002
 *
 * \author  AI
 **************************************************************************
 */
#ifdef DEBUG_DEC
#define H264_DEC_DEBUG_PRINT(...) printf("\n[H264_DEBUG] %s/%d:: ", __FUNCTION__, __LINE__);printf(__VA_ARGS__)
#else //DEBUG_DEC
#define H264_DEC_DEBUG_PRINT(...) {}
#endif //DEBUG_DEC
#define   STRENGTH_DEBLOCKING         0 //sanjeev
#define DEBUG_RECONSTRUCT_LUMA    0
#define DEBUG_RECONSTRUCT_CHROMA  0

#define DEBUG_IDCT                0
#define DEBUG_LUMA_IDCT           0
#define DEBUG_REF_IDCT            0

#define BIN_BIT_RATIO             0
#define MB_PART_HIST              0

#define MB_INTRA_PREDICTION       1

#ifdef WIN32
#define CHK_PURIFY                0
#else
#define CHK_PURIFY                0
#endif

#if MB_INTRA_PREDICTION
#define MB_INTRA_CHROMA_PREDICTION_ON 1
#define MB_INTRA_4x4_PREDICTION_ON    1
#define MB_INTRA_16x16_PREDICTION_ON  1
#endif

#define   TRACE                   0
#define   DEBUG_CABAC             0
#define   DEBUG_ABS_MVD           0
#define   DEBUG_INTRA_PRED_MODES  0
#define   DEBUG_DEBLOCKING        0

#define COPYTHECONTEXT(s,val)
#define PRINT_TRACE
#define PRINT_TRACE_CAB
#define SWITCHOFFTRACE
#define SWITCHONTRACE
#define SWITCHOFFTRACECABAC
#define SWITCHONTRACECABAC

#define INC_BIN_COUNT(ps_cab_env)
#define INC_DECISION_BINS(ps_cab_env)
#define INC_BYPASS_BINS(ps_cab_env)
#define INC_SYM_COUNT(ps_cab_env)
#define PRINT_BIN_BIT_RATIO(ps_dec)
#define RESET_BIN_COUNTS(ps_cab_env)


#ifdef PROFILE_DIS_DEBLK
#define PROFILE_DISABLE_DEBLK() return;
#else
#define PROFILE_DISABLE_DEBLK() ;
#endif

#ifdef PROFILE_DIS_IQ_IT_RECON
#define PROFILE_DISABLE_IQ_IT_RECON()   if (0)
#define PROFILE_DISABLE_IQ_IT_RECON_RETURN()   return;
#else
#define PROFILE_DISABLE_IQ_IT_RECON() ;
#define PROFILE_DISABLE_IQ_IT_RECON_RETURN() ;
#endif

#ifdef PROFILE_DIS_INTRA_PRED
#define PROFILE_DISABLE_INTRA_PRED() if (0)
#else
#define PROFILE_DISABLE_INTRA_PRED() ;
#endif

#ifdef PROFILE_DIS_UNPACK
#define PROFILE_DISABLE_UNPACK_LUMA() return 0;
#define PROFILE_DISABLE_UNPACK_CHROMA() return ;
#else
#define PROFILE_DISABLE_UNPACK_LUMA() ;
#define PROFILE_DISABLE_UNPACK_CHROMA() ;
#endif

#ifdef PROFILE_DIS_INTER_PRED
#define PROFILE_DISABLE_INTER_PRED() return;
#else
#define PROFILE_DISABLE_INTER_PRED() ;
#endif

#ifdef PROFILE_DIS_BOUNDARY_STRENGTH
#define PROFILE_DISABLE_BOUNDARY_STRENGTH() return;
#else
#define PROFILE_DISABLE_BOUNDARY_STRENGTH() ;
#endif

#ifdef PROFILE_DIS_MB_PART_INFO
#define PROFILE_DISABLE_MB_PART_INFO() return 0;
#else
#define PROFILE_DISABLE_MB_PART_INFO() ;
#endif

#endif /* _IH264D_DEBUG_H_ */