1/******************************************************************************
2 *
3 * Copyright (C) 2015 The Android Open Source Project
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 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*/
20
21/**
22******************************************************************************
23* @file
24*  ih264e_trace.h
25*
26* @brief
27*  This file contains extern declarations of routines that could be helpful
28*  for debugging purposes.
29*
30* @author
31*  ittiam
32*
33* @remarks
34*  None
35*
36*******************************************************************************
37*/
38
39#ifndef IH264E_TRACE_H_
40#define IH264E_TRACE_H_
41
42#if ENABLE_TRACE
43/*****************************************************************************/
44/* Structures                                                                */
45/*****************************************************************************/
46
47/**
48******************************************************************************
49 *  @brief      Data for the trace functionality
50******************************************************************************
51 */
52typedef struct
53{
54    /**
55     * fp
56     */
57    FILE    *fp;
58}enc_trace_t;
59
60/*****************************************************************************/
61/* Extern variable declarations                                              */
62/*****************************************************************************/
63extern enc_trace_t g_enc_trace;
64
65/*****************************************************************************/
66/* Constant Macros                                                           */
67/*****************************************************************************/
68
69/**
70******************************************************************************
71 *  @brief      defines flag used for enabling trace
72******************************************************************************
73 */
74
75
76/*****************************************************************************/
77/* Function Macros                                                           */
78/*****************************************************************************/
79
80/**
81******************************************************************************
82 *  @brief   Macro to print trace messages
83******************************************************************************
84 */
85
86#define ENTROPY_TRACE(syntax_string, value)                                           \
87    {                                                                                 \
88        if(g_enc_trace.fp)                                                            \
89        {                                                                             \
90            fprintf( g_enc_trace.fp, "%-40s : %d\n", syntax_string, value );          \
91            fflush ( g_enc_trace.fp);                                                 \
92        }                                                                             \
93    }
94
95
96/**
97******************************************************************************
98 *  @brief   Macro to print CABAC trace messages
99******************************************************************************
100 */
101
102#define AEV_TRACE(string, value, range)                                      \
103    if(range && g_enc_trace.fp)                                                                \
104    {                                                                        \
105        fprintf( g_enc_trace.fp, "%-40s:%8d R:%d\n", string, value, range);  \
106        fflush ( g_enc_trace.fp);                                            \
107    }
108
109#else
110
111/* Dummy macros when trace is disabled */
112#define ENTROPY_TRACE(syntax_string, value)
113
114#define AEV_TRACE(string, value, range)
115
116#endif
117
118
119/*****************************************************************************/
120/* Extern Function Declarations                                              */
121/*****************************************************************************/
122
123
124/**
125******************************************************************************
126*
127*  @brief Dummy trace init when trace is disabled in encoder
128*
129*  @par   Description
130*  This routine needs to be called at start of trace
131*
132*  @param[in]   pu1_file_name
133*  Name of file where trace outputs need to be stores (handle)
134*
135*  @return      success or failure error code
136*
137******************************************************************************
138*/
139extern WORD32    ih264e_trace_init
140        (
141            const char        *pu1_file_name
142        );
143
144/**
145******************************************************************************
146*
147*  @brief Dummy trace de-init function when trace is disabled
148*
149*  @par   Description
150*  This routine needs to be called at end of trace
151*
152*  @return      success or failure error code
153*
154******************************************************************************
155*/
156extern WORD32    ih264e_trace_deinit
157        (
158            void
159        );
160
161#endif // IH264E_TRACE_H_
162