1/******************************************************************************
2*
3* Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
4*
5* Licensed under the Apache License, Version 2.0 (the "License");
6* you may not use this file except in compliance with the License.
7* You may obtain a copy of the License at:
8*
9* http://www.apache.org/licenses/LICENSE-2.0
10*
11* Unless required by applicable law or agreed to in writing, software
12* distributed under the License is distributed on an "AS IS" BASIS,
13* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14* See the License for the specific language governing permissions and
15* limitations under the License.
16*
17******************************************************************************/
18/**
19*******************************************************************************
20* @file
21*  ihevcd_debug.h
22*
23* @brief
24*  Debug defs
25*
26* @author
27*  Naveen S R
28*
29* @par List of Functions:
30*
31* @remarks
32*  None
33*
34*******************************************************************************
35*/
36
37#ifndef _IHEVCD_DEBUG_H_
38#define _IHEVCD_DEBUG_H_
39
40#define DEBUG_REF_LIST 0
41#define DEBUG_PADDED_REGION 0
42#define DEBUG_DUMP_PRE_ILF 0
43#define DEBUG_PRINT_IQ_IT_RECON 0
44#define DEBUG_PRINT_MV 0
45#define DEBUG_DEBLK_LEAF_LEVEL 0
46#define DEBUG_NAL_TYPE 0
47#define DEBUG_SAO_TMP_BUF 0
48#define DEBUG_BREAK_AFTER_SLICE_NAL 0
49#define DEBUG_DUMP_FRAME_BUFFERS_INFO 0
50#define DEBUG_DUMP_FRAME_PU_INFO 0
51#define DEBUG_MV_MAP 0
52
53#if (DEBUG_REF_LIST||DEBUG_PADDED_REGION||DEBUG_DUMP_PRE_ILF||DEBUG_PRINT_IQ_IT_RECON||DEBUG_PRINT_MV||DEBUG_DEBLK_LEAF_LEVEL||DEBUG_NAL_TYPE||DEBUG_SAO_TMP_BUF||DEBUG_BREAK_AFTER_SLICE_NAL || DEBUG_DUMP_FRAME_BUFFERS_INFO || DEBUG_DUMP_FRAME_PU_INFO)
54#define DEBUG_CODE 1
55#else
56#define DEBUG_CODE 0
57#endif
58
59
60#if DEBUG_DUMP_FRAME_PU_INFO
61#define DEBUG_DUMP_PIC_PU(ps_codec) ihevcd_debug_dump_pic_pu(ps_codec);
62#else
63#define DEBUG_DUMP_PIC_PU(ps_codec)
64#endif
65
66
67#if DEBUG_DUMP_FRAME_BUFFERS_INFO
68UWORD8 au1_pic_avail_ctb_flags[MAX_WD * MAX_HT / MIN_CTB_SIZE / MIN_CTB_SIZE];
69UWORD32 au4_pic_ctb_slice_xy[MAX_WD * MAX_HT / MIN_CTB_SIZE / MIN_CTB_SIZE];
70
71#define DEBUG_DUMP_PIC_BUFFERS(ps_codec) ihevcd_debug_dump_pic_buffers(ps_codec);
72#else
73#define DEBUG_DUMP_PIC_BUFFERS(ps_codec)
74#endif
75
76#if DEBUG_BREAK_AFTER_SLICE_NAL
77#define BREAK_AFTER_SLICE_NAL()                 \
78                if(ps_codec->i4_header_done)    \
79                    break;
80#else
81#define BREAK_AFTER_SLICE_NAL()     ;
82#endif
83
84
85#if DEBUG_SAO_TMP_BUF
86#define DEBUG_INIT_TMP_BUF(pu1_buf_luma, pu1_buf_chroma) ihevcd_debug_init_tmp_buf(pu1_buf_luma, pu1_buf_chroma)
87#define DEBUG_PROCESS_TMP_BUF(pu1_buf_luma, pu1_buf_chroma) ihevcd_debug_process_tmp_buf(pu1_buf_luma, pu1_buf_chroma)
88#else
89#define DEBUG_INIT_TMP_BUF(pu1_buf_luma, pu1_buf_chroma)
90#define DEBUG_PROCESS_TMP_BUF(pu1_buf_luma, pu1_buf_chroma)
91#endif
92
93#if DEBUG_NAL_TYPE
94
95#define DEBUG_PRINT_NAL_INFO(ps_codec, nal_type) ihevcd_debug_print_nal_info(ps_codec, nal_type); \
96    break;
97#define RETURN_IF_NAL_INFO return;
98
99#else
100
101#define DEBUG_PRINT_NAL_INFO(ps_codec, nal_type)
102#define RETURN_IF_NAL_INFO
103
104#endif
105
106#if DEBUG_REF_LIST
107
108#define DEBUG_PRINT_REF_LIST_POCS(i4_pic_order_cnt_val, ps_slice_hdr, ps_dpb_mgr, u4_num_st_curr_before, u4_num_st_curr_after, u4_num_st_foll, u4_num_lt_curr, u4_num_lt_foll, ai4_poc_st_curr_before, ai4_poc_st_curr_after, ai4_poc_st_foll, ai4_poc_lt_curr, ai4_poc_lt_foll)  \
109    ihevcd_debug_print_ref_list_pocs(i4_pic_order_cnt_val, ps_slice_hdr, ps_dpb_mgr, u4_num_st_curr_before, u4_num_st_curr_after, u4_num_st_foll, u4_num_lt_curr, u4_num_lt_foll, ai4_poc_st_curr_before, ai4_poc_st_curr_after, ai4_poc_st_foll, ai4_poc_lt_curr, ai4_poc_lt_foll);
110
111#else
112
113#define DEBUG_PRINT_REF_LIST_POCS(i4_pic_order_cnt_val, ps_slice_hdr, ps_dpb_mgr, u4_num_st_curr_before, u4_num_st_curr_after, u4_num_st_foll, u4_num_lt_curr, u4_num_lt_foll, ai4_poc_st_curr_before, ai4_poc_st_curr_after, ai4_poc_st_foll, ai4_poc_lt_curr, ai4_poc_lt_foll)
114
115#endif
116
117#if DEBUG_PADDED_REGION
118
119#define DEBUG_VALIDATE_PADDED_REGION(ps_proc) ihevcd_debug_validate_padded_region(ps_proc);
120
121#else
122
123#define DEBUG_VALIDATE_PADDED_REGION(ps_proc)
124
125#endif
126
127#if DEBUG_DUMP_PRE_ILF
128
129#define DUMP_PRE_ILF(pu1_cur_pic_luma, pu1_cur_pic_chroma, pic_wd, pic_ht, pic_strd) ihevcd_debug_dump_pic(pu1_cur_pic_luma, pu1_cur_pic_chroma, pic_wd, pic_ht, pic_strd)
130#define DUMP_BS(pu4_pic_vert_bs, pu4_pic_horz_bs, vert_size_in_bytes, horz_size_in_bytes) ihevcd_debug_dump_bs(pu4_pic_vert_bs, pu4_pic_horz_bs, vert_size_in_bytes, horz_size_in_bytes)
131#define DUMP_QP(pu1_qp, size_in_bytes) ihevcd_debug_dump_qp(pu1_qp, size_in_bytes)
132#define DUMP_QP_CONST_IN_CTB(pu1_qp_const_in_ctb, size_in_bytes) ihevcs_dump_qp_const_in_ctb(pu1_qp_const_in_ctb, size_in_bytes)
133#define DUMP_NO_LOOP_FILTER(pu1_pic_no_loop_filter, size_in_bytes) ihevcd_debug_dump_no_loop_filter(pu1_pic_no_loop_filter, size_in_bytes)
134#define DUMP_OFFSETS(beta_offset_div_2, tc_offset_div_2, qp_offset_u, qp_offset_v) ihevcd_debug_dump_offsets(beta_offset_div_2, tc_offset_div_2, qp_offset_u, qp_offset_v)
135
136#else
137
138#define DUMP_PRE_ILF(pu1_cur_pic_luma, pu1_cur_pic_chroma, pic_wd, pic_ht, pic_strd)
139#define DUMP_BS(pu4_pic_vert_bs, pu4_pic_horz_bs, vert_size_in_bytes, horz_size_in_bytes)
140#define DUMP_QP(pu1_qp, size_in_bytes)
141#define DUMP_QP_CONST_IN_CTB(pu1_qp_const_in_ctb, size_in_bytes)
142#define DUMP_NO_LOOP_FILTER(pu1_pic_no_loop_filter, size_in_bytes)
143#define DUMP_OFFSETS(beta_offset_div_2, tc_offset_div_2, qp_offset_u, qp_offset_v)
144
145#endif
146
147
148#if DEBUG_DEBLK_LEAF_LEVEL
149
150#define DUMP_DEBLK_LUMA_VERT(pu1_src, src_strd, u4_bs, qp_p, qp_q, beta_offset_div2, tc_offset_div2, filter_p, filter_q) ihevcd_debug_deblk_luma_vert(pu1_src, src_strd, u4_bs, qp_p, qp_q, beta_offset_div2, tc_offset_div2, filter_p, filter_q);
151#define DUMP_DEBLK_LUMA_HORZ(pu1_src, src_strd, u4_bs, qp_p, qp_q, beta_offset_div2, tc_offset_div2, filter_p, filter_q) ihevcd_debug_deblk_luma_horz(pu1_src, src_strd, u4_bs, qp_p, qp_q, beta_offset_div2, tc_offset_div2, filter_p, filter_q);
152#define DUMP_DEBLK_CHROMA_VERT(pu1_src, src_strd, u4_bs, qp_p, qp_q, qp_offset_u, qp_offset_v, tc_offset_div2, filter_p, filter_q) ihevcd_debug_deblk_chroma_vert(pu1_src, src_strd, u4_bs, qp_p, qp_q, qp_offset_u, qp_offset_v, tc_offset_div2, filter_p, filter_q)
153#define DUMP_DEBLK_CHROMA_HORZ(pu1_src, src_strd, u4_bs, qp_p, qp_q, qp_offset_u, qp_offset_v, tc_offset_div2, filter_p, filter_q) ihevcd_debug_deblk_chroma_horz(pu1_src, src_strd, u4_bs, qp_p, qp_q, qp_offset_u, qp_offset_v, tc_offset_div2, filter_p, filter_q)
154
155#else
156
157#define DUMP_DEBLK_LUMA_VERT(pu1_src, src_strd, u4_bs3, qp_p, qp_q, beta_offset_div2, tc_offset_div2, filter_p, filter_q)
158#define DUMP_DEBLK_LUMA_HORZ(pu1_src, src_strd, u4_bs3, qp_p, qp_q, beta_offset_div2, tc_offset_div2, filter_p, filter_q)
159#define DUMP_DEBLK_CHROMA_VERT(pu1_src, src_strd, u4_bs, qp_p, qp_q, qp_offset_u, qp_offset_v, tc_offset_div2, filter_p, filter_q)
160#define DUMP_DEBLK_CHROMA_HORZ(pu1_src, src_strd, u4_bs, qp_p, qp_q, qp_offset_u, qp_offset_v, tc_offset_div2, filter_p, filter_q)
161
162#endif
163
164#if DEBUG_MV_MAP
165#define DEBUG_DUMP_MV_MAP(ps_codec) ihevcd_debug_dump_mv_map(ps_codec);
166#else
167#define DEBUG_DUMP_MV_MAP(ps_codec)
168#endif
169void print_coeff(WORD16 *pi2_tu_coeff, WORD32 trans_size);
170
171void print_dst(UWORD8 *pu1_dst,
172               WORD32 dst_strd,
173               WORD32 trans_size,
174               WORD32 is_luma);
175
176#endif /* _IHEVCD_DEBUG_H_ */
177