/******************************************************************************
 *
 * 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
*/
/*****************************************************************************/
/*                                                                           */
/*  File Name         : c_coding_example.h                                   */
/*                                                                           */
/*  Description       : This file contains all the necessary examples to     */
/*                      establish a consistent use of Ittiam C coding        */
/*                      standards (based on Indian Hill C Standards)         */
/*                                                                           */
/*  List of Functions : <List the functions defined in this file>            */
/*                                                                           */
/*  Issues / Problems : None                                                 */
/*                                                                           */
/*  Revision History  :                                                      */
/*                                                                           */
/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
/*         10 01 2005   Ittiam          Draft                                */
/*                                                                           */
/*****************************************************************************/
#ifndef __IMPEG2D_DEBUG_H__
#define __IMPEG2D_DEBUG_H__


/*************************************************************************/
/* DEBUG                                                                 */
/*************************************************************************/
#define DEBUG_MB        0


#if DEBUG_MB
void impeg2d_trace_mb_start(UWORD32 mb_x, UWORD32 mb_y);
void impeg2d_frm_num_set(void);
UWORD32 impeg2d_frm_num_get(void);

#define IMPEG2D_TRACE_MB_START(mb_x, mb_y) void impeg2d_trace_mb_start(UWORD32 mb_x, UWORD32 mb_y);
#define IMPEG2D_FRM_NUM_SET()              void impeg2d_frm_num_set(void);
#define IMPEG2D_FRM_NUM_GET()              UWORD32 impeg2d_frm_num_get(void);
#else
#define IMPEG2D_TRACE_MB_START(mb_x, mb_y)
#define IMPEG2D_FRM_NUM_SET()
#define IMPEG2D_FRM_NUM_GET()
#endif


#define STATISTICS  0

#if STATISTICS
void impeg2d_idct_inp_statistics(WORD16 *pi2_idct_inp, WORD32 non_zero_cols, WORD32 non_zero_rows);
void impeg2d_iqnt_inp_statistics(WORD16 *pi2_iqnt_inp, WORD32 non_zero_cols, WORD32 non_zero_rows);
void impeg2d_print_statistics(void);
#define IMPEG2D_IDCT_INP_STATISTICS(pi2_idct_inp, non_zero_cols, non_zero_rows)  impeg2d_idct_inp_statistics(pi2_idct_inp, non_zero_cols, non_zero_rows)
#define IMPEG2D_IQNT_INP_STATISTICS(pi2_iqnt_inp, non_zero_cols, non_zero_rows)  impeg2d_iqnt_inp_statistics(pi2_iqnt_inp, non_zero_cols, non_zero_rows)
#define IMPEG2D_PRINT_STATISTICS()            impeg2d_print_statistics()
#else
#define IMPEG2D_IDCT_INP_STATISTICS(pi2_idct_inp, non_zero_cols, non_zero_rows)
#define IMPEG2D_IQNT_INP_STATISTICS(pi2_iqnt_inp, non_zero_cols, non_zero_rows)
#define IMPEG2D_PRINT_STATISTICS()
#endif


#if 0
#define PROFILE_DIS_SKIP_MB
#define PROFILE_DIS_MC
#define PROFILE_DIS_INVQUANT
#define PROFILE_DIS_IDCT
#define PROFILE_DIS_MEMSET_RESBUF
#endif


#ifdef PROFILE_DIS_SKIP_MB
#define PROFILE_DISABLE_SKIP_MB() return;
#else
#define PROFILE_DISABLE_SKIP_MB()
#endif

#ifdef PROFILE_DIS_MC
#define PROFILE_DISABLE_MC_IF0 if(0)
#define PROFILE_DISABLE_MC_RETURN return;
#else
#define PROFILE_DISABLE_MC_IF0
#define PROFILE_DISABLE_MC_RETURN
#endif

#ifdef PROFILE_DIS_INVQUANT
#define PROFILE_DISABLE_INVQUANT_IF0 if(0)
#else
#define PROFILE_DISABLE_INVQUANT_IF0
#endif

#ifdef PROFILE_DIS_IDCT
#define PROFILE_DISABLE_IDCT_IF0 if(0)
#else
#define PROFILE_DISABLE_IDCT_IF0
#endif

#ifdef PROFILE_DIS_MEMSET_RESBUF
#define PROFILE_DISABLE_MEMSET_RESBUF_IF0 if(0)
#else
#define PROFILE_DISABLE_MEMSET_RESBUF_IF0
#endif


#endif /* __IMPEG2D_DEBUG_H__ */