| /****************************************************************************** |
| * |
| * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore |
| * |
| * 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. |
| * |
| ******************************************************************************/ |
| /** |
| ******************************************************************************* |
| * @file |
| * ihevcd_trace.h |
| * |
| * @brief |
| * Header for codec trace messages |
| * |
| * @author |
| * Ittiam |
| * |
| * @remarks |
| * None |
| * |
| ******************************************************************************* |
| */ |
| #ifndef _IHEVCD_TRACE_H_ |
| #define _IHEVCD_TRACE_H_ |
| |
| #define FULLRANGE 1 |
| |
| |
| #define RANGE_NUMBITS 31 |
| #define RANGE_SHIFT (RANGE_NUMBITS - 9) |
| |
| #ifdef TRACE |
| /** |
| * Context for trace |
| */ |
| typedef struct |
| { |
| /** |
| * fp |
| */ |
| FILE *fp; |
| |
| /** |
| * u8_cnt |
| */ |
| ULWORD64 u8_cnt; |
| }trace_t; |
| |
| /** |
| * Global context for trace info |
| */ |
| extern trace_t g_trace; |
| |
| /** |
| * Call ihevcd_bits_get() to read from bitstream and dumps the data to trace file |
| */ |
| #define BITS_PARSE(m_str, m_value, m_ps_bitstrm, m_numbits) \ |
| { \ |
| m_value = ihevcd_bits_get(m_ps_bitstrm, m_numbits); \ |
| fprintf( g_trace.fp, "%-40s u(%d) : %d\n", m_str, m_numbits, m_value ); \ |
| fflush ( g_trace.fp); \ |
| } |
| |
| /** |
| * Call ihevcd_uev() to read from bitstream and dumps the data to trace file |
| */ |
| |
| #define UEV_PARSE(m_str, m_value, m_ps_bitstrm) \ |
| { \ |
| m_value = ihevcd_uev(m_ps_bitstrm); \ |
| fprintf( g_trace.fp, "%-40s ue(v) : %d\n", m_str, m_value ); \ |
| fflush ( g_trace.fp); \ |
| } |
| /** |
| * Call ihevcd_sev() to read from bitstream and dumps the data to trace file |
| */ |
| #define SEV_PARSE(m_str, m_value, m_ps_bitstrm) \ |
| { \ |
| m_value = ihevcd_sev(m_ps_bitstrm); \ |
| fprintf( g_trace.fp, "%-40s se(v) : %d\n", m_str, m_value ); \ |
| fflush ( g_trace.fp); \ |
| } |
| |
| |
| #if FULLRANGE |
| #define TRACE_CABAC_CTXT(m_string, m_range, m_ctxt_idx) \ |
| { \ |
| UWORD32 m_clz, m_range_shift, m_state_mps; \ |
| m_state_mps = ps_cabac->au1_ctxt_models[m_ctxt_idx]; \ |
| m_clz = CLZ(m_range); \ |
| m_clz -= (32 - RANGE_NUMBITS); \ |
| m_range_shift = m_range << m_clz; \ |
| m_range_shift = m_range_shift >> RANGE_SHIFT; \ |
| fprintf( g_trace.fp, "%-40s: Range:%3d State:%3d MPS:%1d\n", \ |
| m_string, m_range_shift, m_state_mps >> 1, m_state_mps & 1); \ |
| fflush ( g_trace.fp); \ |
| } |
| #define AEV_TRACE(m_str, m_value, m_range) \ |
| { \ |
| UWORD32 m_clz, m_range_shift; \ |
| m_clz = CLZ(m_range); \ |
| m_clz -= (32 - RANGE_NUMBITS); \ |
| m_range_shift = m_range << m_clz; \ |
| m_range_shift = m_range_shift >> RANGE_SHIFT; \ |
| fprintf( g_trace.fp, "%-40s:%8d R:%d\n", m_str, m_value, m_range_shift);\ |
| fflush ( g_trace.fp); \ |
| } |
| #else |
| #define TRACE_CABAC_CTXT(m_string, m_range, m_ctxt_idx) \ |
| { \ |
| UWORD32 m_state_mps; \ |
| m_state_mps = ps_cabac->au1_ctxt_models[m_ctxt_idx]; \ |
| fprintf( g_trace.fp, "%-40s: Range:%3d State:%3d MPS:%1d\n", \ |
| m_string, m_range, m_state_mps >> 1, m_state_mps & 1); \ |
| fflush ( g_trace.fp); \ |
| } |
| |
| #define AEV_TRACE(m_str, m_value, m_range) \ |
| { \ |
| fprintf( g_trace.fp, "%-40s:%8d R:%d\n", m_str, m_value, m_range); \ |
| fflush ( g_trace.fp); \ |
| } |
| #endif |
| |
| #define TUV_PARSE(m_str, m_value, m_ps_bitstrm) \ |
| m_value = ihevcd_bits_get(m_ps_bitstrm, 1); |
| |
| #define TRACE_INIT(a) ihevcd_trace_init(a) |
| #define TRACE_DEINIT(a) ihevcd_trace_deinit(a) |
| |
| #else /* TRACE */ |
| /** |
| * Call ihevcd_bits_get() to read from bitstream |
| */ |
| |
| #define BITS_PARSE(m_str, m_value, m_ps_bitstrm, m_numbits) \ |
| m_value = ihevcd_bits_get(m_ps_bitstrm, m_numbits); |
| |
| /** |
| * Call ihevcd_uev() to read from bitstream |
| */ |
| |
| #define UEV_PARSE(m_str, m_value, m_ps_bitstrm) \ |
| m_value = ihevcd_uev(m_ps_bitstrm); |
| |
| /** |
| * Call ihevcd_sev() to read from bitstream |
| */ |
| |
| #define SEV_PARSE(m_str, m_value, m_ps_bitstrm) \ |
| m_value = ihevcd_sev(m_ps_bitstrm); |
| |
| #define TUV_PARSE(m_str, m_value, m_ps_bitstrm) \ |
| m_value = ihevcd_bits_get(m_ps_bitstrm, 1); |
| |
| #define TRACE_CABAC_CTXT(m_string, m_range, m_state_mps) |
| |
| #define AEV_TRACE(m_str, m_value, m_range) |
| |
| |
| #define TRACE_INIT(a) |
| #define TRACE_DEINIT(a) |
| #endif /* TRACE */ |
| #endif /* _IHEVCD_TRACE_H_ */ |