| /****************************************************************************** |
| * |
| * Copyright (C) 2018 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 ihevce_trace.c |
| * |
| * @brief |
| * This file contains function definitions for implementing trace |
| * |
| * @author |
| * Ittiam |
| * |
| * List of Functions |
| * ihevce_trace_deinit() |
| * ihevce_trace_init() |
| * |
| ****************************************************************************** |
| */ |
| |
| /*****************************************************************************/ |
| /* File Includes */ |
| /*****************************************************************************/ |
| /* System include files */ |
| #include <stdio.h> |
| #include <string.h> |
| #include <stdlib.h> |
| #include <assert.h> |
| #include <stdarg.h> |
| #include <math.h> |
| |
| /* User include files */ |
| #include "ihevc_typedefs.h" |
| #include "ihevc_debug.h" |
| #include "ihevc_defs.h" |
| #include "ihevc_macros.h" |
| #include "ihevc_structs.h" |
| #include "ihevc_platform_macros.h" |
| #include "ihevc_cabac_tables.h" |
| #include "itt_video_api.h" |
| #include "ihevce_api.h" |
| #include "ihevce_defs.h" |
| #include "ihevce_buffer_que_interface.h" |
| #include "ihevce_hle_interface.h" |
| |
| #include "ihevce_error_codes.h" |
| #include "ihevce_bitstream.h" |
| #include "ihevce_trace.h" |
| |
| /*****************************************************************************/ |
| /* Global Variable Definitions */ |
| /*****************************************************************************/ |
| |
| /* Table of Prefix names, one for each bit of the debug_id mask */ |
| /* bits 12 - 16 are used inly to indicate the layer id */ |
| /* add null strings to those locations */ |
| // clang-format off |
| const char *g_api1_prefix_name[32] = |
| { |
| SEQ_LEVEL, /* TRACE_SEQ = 0x00000001, !< sequence params dump enable */ |
| PIC_LEVEL, /* TRACE_PIC = 0x00000002, !< picparams dump enable */ |
| SLICE_LEVEL, /* TRACE_SLICE = 0x00000004, !< slice params dump enable */ |
| MB_LEVEL, /* TRACE_MB_PARAMS = 0x00000008, !< mb level decoded dump enable */ |
| MB_LEVEL, /* TRACE_MB_INF_PARAMS = 0x00000010, !< mb level inferred dumping enable */ |
| ECD_DATA, /* TRACE_ECD_DATA = 0x00000020, !< ECD data dump */ |
| LYR_COEFF_LEVEL, /* TRACE_LYR_COEFF_LEVEL = 0x00000040, !< Current layer coeff levels */ |
| ACC_COEFF_LEVEL, /* TRACE_ACC_COEFF_LEVEL = 0x00000080, !< Accumulated coffs/level */ |
| ACC_COEFFS, /* TRACE_ACC_COEFFS = 0x00000100, !< Accumulated coeffs */ |
| LYR_DIFF_SIG, /* TRACE_LYR_DIFF_SIG = 0x00000200, !< layer level differential signal */ |
| LYR_IP_SIG, /* TRACE_LYR_IP_SIG = 0x00000400, !< layer level Intra pred signal */ |
| MB_LEVEL, /* TRACE_INTRA_UPSMPL_SIG= 0x00000800, !< Intra upsampled data */ |
| MB_LEVEL, /* TRACE_RES_UPSMPL_SIG = 0x00001000, !< Residual upsampled data */ |
| MB_LEVEL, /* TRACE_BS_INFO = 0x00002000, !< BS information */ |
| DUMMY, /* 0x00004000 */ |
| DUMMY, /* 0x00008000 */ |
| DUMMY, /* 0x00010000 */ |
| DUMMY, /* 0x00020000 */ |
| DUMMY, /* 0x00040000 */ |
| DUMMY, /* 0x00080000 */ |
| RES_CHANGE_SIG, /* TRACE_RES_CGE_MV = 0x00100000, !< Res change Motion vectors */ |
| RES_CHANGE_SIG, /* TRACE_RES_CGE_MODE = 0x00200000, !< Res change MB modes */ |
| RES_CHANGE_SIG, /* TRACE_RES_CGE_DATA = 0x00400000, !< Res change data */ |
| TARGET_MC, /* TRACE_TGT_MC_PRED = 0x00800000, !< moiton comp pred sugnal dump enable */ |
| DUMMY, /* 0x01000000 */ |
| DUMMY, /* 0x02000000 */ |
| DUMMY, /* 0x04000000 */ |
| TARGET_DEBLK, /* TRACE_TGT_LYR_DEBLK = 0x08000000, !< Input to target layer deblocking */ |
| REF_BASE_DEBLK, /* TRACE_REF_BASE_DEBLK = 0x10000000, !< deblocked data dumping enable */ |
| DUMMY, /* 0x20000000 */ |
| DUMMY, /* 0x40000000 */ |
| DUMMY /* 0x80000000 */ |
| }; |
| // clang-format on |
| |
| /*****************************************************************************/ |
| /* Function Definitions */ |
| /*****************************************************************************/ |
| |
| /** |
| ****************************************************************************** |
| * |
| * @brief Dummar trace init when trace is disabled in encoder |
| * |
| * @par Description |
| * This routine needs to be called at start of trace |
| * |
| * @param[in] pu1_file_name |
| * Name of file where trace outputs need to be stores (handle) |
| * |
| * @return success or failure error code |
| * |
| ****************************************************************************** |
| */ |
| WORD32 ihevce_trace_init(UWORD8 *pu1_file_name) |
| { |
| (void)pu1_file_name; |
| return IHEVCE_SUCCESS; |
| } |
| |
| /** |
| ****************************************************************************** |
| * |
| * @brief Dummar trace de-init function when trace is disabled |
| * |
| * @par Description |
| * This routine needs to be called at end of trace |
| * |
| * @return success or failure error code |
| * |
| ****************************************************************************** |
| */ |
| WORD32 ihevce_trace_deinit(void) |
| { |
| return IHEVCE_SUCCESS; |
| } |
| |
| /** \brief This function return the bit position set of the input */ |
| WORD32 svcd_trace_get_bit_pos(UWORD32 u4_input) |
| { |
| /* local variables */ |
| WORD32 i4_bit_pos; |
| |
| i4_bit_pos = -1; |
| |
| /* only a single bit of 32 bits should to be set */ |
| assert(0 == (u4_input & (u4_input - 1))); |
| |
| /* loop to get the bit position of the prefix */ |
| while(0 != u4_input) |
| { |
| u4_input >>= 1; |
| i4_bit_pos++; |
| } /* end of while loop */ |
| |
| /* check on validity of the bit position */ |
| assert((31 >= i4_bit_pos) && (0 <= i4_bit_pos)); |
| |
| return (i4_bit_pos); |
| } |
| |
| /** \brief This function does the parameter dumping for trace info */ |
| |
| WORD32 ihevce_trace(UWORD32 u4_prefix) |
| { |
| WORD32 i4_array_indx; |
| |
| /* get the bit position of the prefix */ |
| i4_array_indx = svcd_trace_get_bit_pos(u4_prefix); |
| return i4_array_indx; |
| } |