1*c83a76b0SSuyog Pawar /****************************************************************************** 2*c83a76b0SSuyog Pawar * 3*c83a76b0SSuyog Pawar * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore 4*c83a76b0SSuyog Pawar * 5*c83a76b0SSuyog Pawar * Licensed under the Apache License, Version 2.0 (the "License"); 6*c83a76b0SSuyog Pawar * you may not use this file except in compliance with the License. 7*c83a76b0SSuyog Pawar * You may obtain a copy of the License at: 8*c83a76b0SSuyog Pawar * 9*c83a76b0SSuyog Pawar * http://www.apache.org/licenses/LICENSE-2.0 10*c83a76b0SSuyog Pawar * 11*c83a76b0SSuyog Pawar * Unless required by applicable law or agreed to in writing, software 12*c83a76b0SSuyog Pawar * distributed under the License is distributed on an "AS IS" BASIS, 13*c83a76b0SSuyog Pawar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*c83a76b0SSuyog Pawar * See the License for the specific language governing permissions and 15*c83a76b0SSuyog Pawar * limitations under the License. 16*c83a76b0SSuyog Pawar * 17*c83a76b0SSuyog Pawar ******************************************************************************/ 18*c83a76b0SSuyog Pawar /** 19*c83a76b0SSuyog Pawar ******************************************************************************* 20*c83a76b0SSuyog Pawar * @file 21*c83a76b0SSuyog Pawar * ihevcd_trace.h 22*c83a76b0SSuyog Pawar * 23*c83a76b0SSuyog Pawar * @brief 24*c83a76b0SSuyog Pawar * Header for codec trace messages 25*c83a76b0SSuyog Pawar * 26*c83a76b0SSuyog Pawar * @author 27*c83a76b0SSuyog Pawar * Ittiam 28*c83a76b0SSuyog Pawar * 29*c83a76b0SSuyog Pawar * @remarks 30*c83a76b0SSuyog Pawar * None 31*c83a76b0SSuyog Pawar * 32*c83a76b0SSuyog Pawar ******************************************************************************* 33*c83a76b0SSuyog Pawar */ 34*c83a76b0SSuyog Pawar #ifndef _IHEVCD_TRACE_H_ 35*c83a76b0SSuyog Pawar #define _IHEVCD_TRACE_H_ 36*c83a76b0SSuyog Pawar 37*c83a76b0SSuyog Pawar #define FULLRANGE 1 38*c83a76b0SSuyog Pawar 39*c83a76b0SSuyog Pawar 40*c83a76b0SSuyog Pawar #define RANGE_NUMBITS 31 41*c83a76b0SSuyog Pawar #define RANGE_SHIFT (RANGE_NUMBITS - 9) 42*c83a76b0SSuyog Pawar 43*c83a76b0SSuyog Pawar #ifdef TRACE 44*c83a76b0SSuyog Pawar /** 45*c83a76b0SSuyog Pawar * Context for trace 46*c83a76b0SSuyog Pawar */ 47*c83a76b0SSuyog Pawar typedef struct 48*c83a76b0SSuyog Pawar { 49*c83a76b0SSuyog Pawar /** 50*c83a76b0SSuyog Pawar * fp 51*c83a76b0SSuyog Pawar */ 52*c83a76b0SSuyog Pawar FILE *fp; 53*c83a76b0SSuyog Pawar 54*c83a76b0SSuyog Pawar /** 55*c83a76b0SSuyog Pawar * u8_cnt 56*c83a76b0SSuyog Pawar */ 57*c83a76b0SSuyog Pawar ULWORD64 u8_cnt; 58*c83a76b0SSuyog Pawar }trace_t; 59*c83a76b0SSuyog Pawar 60*c83a76b0SSuyog Pawar /** 61*c83a76b0SSuyog Pawar * Global context for trace info 62*c83a76b0SSuyog Pawar */ 63*c83a76b0SSuyog Pawar extern trace_t g_trace; 64*c83a76b0SSuyog Pawar 65*c83a76b0SSuyog Pawar /** 66*c83a76b0SSuyog Pawar * Call ihevcd_bits_get() to read from bitstream and dumps the data to trace file 67*c83a76b0SSuyog Pawar */ 68*c83a76b0SSuyog Pawar #define BITS_PARSE(m_str, m_value, m_ps_bitstrm, m_numbits) \ 69*c83a76b0SSuyog Pawar { \ 70*c83a76b0SSuyog Pawar m_value = ihevcd_bits_get(m_ps_bitstrm, m_numbits); \ 71*c83a76b0SSuyog Pawar fprintf( g_trace.fp, "%-40s u(%d) : %d\n", m_str, m_numbits, m_value ); \ 72*c83a76b0SSuyog Pawar fflush ( g_trace.fp); \ 73*c83a76b0SSuyog Pawar } 74*c83a76b0SSuyog Pawar 75*c83a76b0SSuyog Pawar /** 76*c83a76b0SSuyog Pawar * Call ihevcd_uev() to read from bitstream and dumps the data to trace file 77*c83a76b0SSuyog Pawar */ 78*c83a76b0SSuyog Pawar 79*c83a76b0SSuyog Pawar #define UEV_PARSE(m_str, m_value, m_ps_bitstrm) \ 80*c83a76b0SSuyog Pawar { \ 81*c83a76b0SSuyog Pawar m_value = ihevcd_uev(m_ps_bitstrm); \ 82*c83a76b0SSuyog Pawar fprintf( g_trace.fp, "%-40s ue(v) : %d\n", m_str, m_value ); \ 83*c83a76b0SSuyog Pawar fflush ( g_trace.fp); \ 84*c83a76b0SSuyog Pawar } 85*c83a76b0SSuyog Pawar /** 86*c83a76b0SSuyog Pawar * Call ihevcd_sev() to read from bitstream and dumps the data to trace file 87*c83a76b0SSuyog Pawar */ 88*c83a76b0SSuyog Pawar #define SEV_PARSE(m_str, m_value, m_ps_bitstrm) \ 89*c83a76b0SSuyog Pawar { \ 90*c83a76b0SSuyog Pawar m_value = ihevcd_sev(m_ps_bitstrm); \ 91*c83a76b0SSuyog Pawar fprintf( g_trace.fp, "%-40s se(v) : %d\n", m_str, m_value ); \ 92*c83a76b0SSuyog Pawar fflush ( g_trace.fp); \ 93*c83a76b0SSuyog Pawar } 94*c83a76b0SSuyog Pawar 95*c83a76b0SSuyog Pawar 96*c83a76b0SSuyog Pawar #if FULLRANGE 97*c83a76b0SSuyog Pawar #define TRACE_CABAC_CTXT(m_string, m_range, m_ctxt_idx) \ 98*c83a76b0SSuyog Pawar { \ 99*c83a76b0SSuyog Pawar UWORD32 m_clz, m_range_shift, m_state_mps; \ 100*c83a76b0SSuyog Pawar m_state_mps = ps_cabac->au1_ctxt_models[m_ctxt_idx]; \ 101*c83a76b0SSuyog Pawar m_clz = CLZ(m_range); \ 102*c83a76b0SSuyog Pawar m_clz -= (32 - RANGE_NUMBITS); \ 103*c83a76b0SSuyog Pawar m_range_shift = m_range << m_clz; \ 104*c83a76b0SSuyog Pawar m_range_shift = m_range_shift >> RANGE_SHIFT; \ 105*c83a76b0SSuyog Pawar fprintf( g_trace.fp, "%-40s: Range:%3d State:%3d MPS:%1d\n", \ 106*c83a76b0SSuyog Pawar m_string, m_range_shift, m_state_mps >> 1, m_state_mps & 1); \ 107*c83a76b0SSuyog Pawar fflush ( g_trace.fp); \ 108*c83a76b0SSuyog Pawar } 109*c83a76b0SSuyog Pawar #define AEV_TRACE(m_str, m_value, m_range) \ 110*c83a76b0SSuyog Pawar { \ 111*c83a76b0SSuyog Pawar UWORD32 m_clz, m_range_shift; \ 112*c83a76b0SSuyog Pawar m_clz = CLZ(m_range); \ 113*c83a76b0SSuyog Pawar m_clz -= (32 - RANGE_NUMBITS); \ 114*c83a76b0SSuyog Pawar m_range_shift = m_range << m_clz; \ 115*c83a76b0SSuyog Pawar m_range_shift = m_range_shift >> RANGE_SHIFT; \ 116*c83a76b0SSuyog Pawar fprintf( g_trace.fp, "%-40s:%8d R:%d\n", m_str, m_value, m_range_shift);\ 117*c83a76b0SSuyog Pawar fflush ( g_trace.fp); \ 118*c83a76b0SSuyog Pawar } 119*c83a76b0SSuyog Pawar #else 120*c83a76b0SSuyog Pawar #define TRACE_CABAC_CTXT(m_string, m_range, m_ctxt_idx) \ 121*c83a76b0SSuyog Pawar { \ 122*c83a76b0SSuyog Pawar UWORD32 m_state_mps; \ 123*c83a76b0SSuyog Pawar m_state_mps = ps_cabac->au1_ctxt_models[m_ctxt_idx]; \ 124*c83a76b0SSuyog Pawar fprintf( g_trace.fp, "%-40s: Range:%3d State:%3d MPS:%1d\n", \ 125*c83a76b0SSuyog Pawar m_string, m_range, m_state_mps >> 1, m_state_mps & 1); \ 126*c83a76b0SSuyog Pawar fflush ( g_trace.fp); \ 127*c83a76b0SSuyog Pawar } 128*c83a76b0SSuyog Pawar 129*c83a76b0SSuyog Pawar #define AEV_TRACE(m_str, m_value, m_range) \ 130*c83a76b0SSuyog Pawar { \ 131*c83a76b0SSuyog Pawar fprintf( g_trace.fp, "%-40s:%8d R:%d\n", m_str, m_value, m_range); \ 132*c83a76b0SSuyog Pawar fflush ( g_trace.fp); \ 133*c83a76b0SSuyog Pawar } 134*c83a76b0SSuyog Pawar #endif 135*c83a76b0SSuyog Pawar 136*c83a76b0SSuyog Pawar #define TUV_PARSE(m_str, m_value, m_ps_bitstrm) \ 137*c83a76b0SSuyog Pawar m_value = ihevcd_bits_get(m_ps_bitstrm, 1); 138*c83a76b0SSuyog Pawar 139*c83a76b0SSuyog Pawar #define TRACE_INIT(a) ihevcd_trace_init(a) 140*c83a76b0SSuyog Pawar #define TRACE_DEINIT(a) ihevcd_trace_deinit(a) 141*c83a76b0SSuyog Pawar 142*c83a76b0SSuyog Pawar #else /* TRACE */ 143*c83a76b0SSuyog Pawar /** 144*c83a76b0SSuyog Pawar * Call ihevcd_bits_get() to read from bitstream 145*c83a76b0SSuyog Pawar */ 146*c83a76b0SSuyog Pawar 147*c83a76b0SSuyog Pawar #define BITS_PARSE(m_str, m_value, m_ps_bitstrm, m_numbits) \ 148*c83a76b0SSuyog Pawar m_value = ihevcd_bits_get(m_ps_bitstrm, m_numbits); 149*c83a76b0SSuyog Pawar 150*c83a76b0SSuyog Pawar /** 151*c83a76b0SSuyog Pawar * Call ihevcd_uev() to read from bitstream 152*c83a76b0SSuyog Pawar */ 153*c83a76b0SSuyog Pawar 154*c83a76b0SSuyog Pawar #define UEV_PARSE(m_str, m_value, m_ps_bitstrm) \ 155*c83a76b0SSuyog Pawar m_value = ihevcd_uev(m_ps_bitstrm); 156*c83a76b0SSuyog Pawar 157*c83a76b0SSuyog Pawar /** 158*c83a76b0SSuyog Pawar * Call ihevcd_sev() to read from bitstream 159*c83a76b0SSuyog Pawar */ 160*c83a76b0SSuyog Pawar 161*c83a76b0SSuyog Pawar #define SEV_PARSE(m_str, m_value, m_ps_bitstrm) \ 162*c83a76b0SSuyog Pawar m_value = ihevcd_sev(m_ps_bitstrm); 163*c83a76b0SSuyog Pawar 164*c83a76b0SSuyog Pawar #define TUV_PARSE(m_str, m_value, m_ps_bitstrm) \ 165*c83a76b0SSuyog Pawar m_value = ihevcd_bits_get(m_ps_bitstrm, 1); 166*c83a76b0SSuyog Pawar 167*c83a76b0SSuyog Pawar #define TRACE_CABAC_CTXT(m_string, m_range, m_state_mps) 168*c83a76b0SSuyog Pawar 169*c83a76b0SSuyog Pawar #define AEV_TRACE(m_str, m_value, m_range) 170*c83a76b0SSuyog Pawar 171*c83a76b0SSuyog Pawar 172*c83a76b0SSuyog Pawar #define TRACE_INIT(a) 173*c83a76b0SSuyog Pawar #define TRACE_DEINIT(a) 174*c83a76b0SSuyog Pawar #endif /* TRACE */ 175*c83a76b0SSuyog Pawar #endif /* _IHEVCD_TRACE_H_ */ 176