1 /* 2 * Copyright (c) 2017, Alliance for Open Media. All rights reserved 3 * 4 * This source code is subject to the terms of the BSD 2 Clause License and 5 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License 6 * was not distributed with this source code in the LICENSE file, you can 7 * obtain it at www.aomedia.org/license/software. If the Alliance for Open 8 * Media Patent License 1.0 was not distributed with this source code in the 9 * PATENTS file, you can obtain it at www.aomedia.org/license/patent. 10 */ 11 #ifndef AOM_AV1_DECODER_INSPECTION_H_ 12 #define AOM_AV1_DECODER_INSPECTION_H_ 13 14 #ifdef __cplusplus 15 extern "C" { 16 #endif // __cplusplus 17 18 #include "av1/common/seg_common.h" 19 #if CONFIG_ACCOUNTING 20 #include "av1/decoder/accounting.h" 21 #endif 22 23 #ifndef AOM_AOM_AOMDX_H_ 24 typedef void (*aom_inspect_cb)(void *decoder, void *data); 25 #endif 26 27 typedef struct insp_mv insp_mv; 28 29 struct insp_mv { 30 int16_t row; 31 int16_t col; 32 }; 33 34 typedef struct insp_mi_data insp_mi_data; 35 36 struct insp_mi_data { 37 insp_mv mv[2]; 38 int16_t ref_frame[2]; 39 int16_t mode; 40 int16_t uv_mode; 41 int16_t sb_type; 42 int16_t skip; 43 int16_t segment_id; 44 int16_t dual_filter_type; 45 int16_t filter[2]; 46 int16_t tx_type; 47 int16_t tx_size; 48 int16_t cdef_level; 49 int16_t cdef_strength; 50 int16_t cfl_alpha_idx; 51 int16_t cfl_alpha_sign; 52 int16_t current_qindex; 53 int16_t compound_type; 54 int16_t motion_mode; 55 int16_t intrabc; 56 int16_t palette; 57 int16_t uv_palette; 58 }; 59 60 typedef struct insp_frame_data insp_frame_data; 61 62 struct insp_frame_data { 63 #if CONFIG_ACCOUNTING 64 Accounting *accounting; 65 #endif 66 insp_mi_data *mi_grid; 67 int16_t frame_number; 68 int show_frame; 69 int frame_type; 70 int base_qindex; 71 int mi_rows; 72 int mi_cols; 73 int tile_mi_rows; 74 int tile_mi_cols; 75 int16_t y_dequant[MAX_SEGMENTS][2]; 76 int16_t u_dequant[MAX_SEGMENTS][2]; 77 int16_t v_dequant[MAX_SEGMENTS][2]; 78 // TODO(negge): add per frame CDEF data 79 int delta_q_present_flag; 80 int delta_q_res; 81 int show_existing_frame; 82 }; 83 84 void ifd_init(insp_frame_data *fd, int frame_width, int frame_height); 85 void ifd_clear(insp_frame_data *fd); 86 int ifd_inspect(insp_frame_data *fd, void *decoder, int skip_not_transform); 87 88 #ifdef __cplusplus 89 } // extern "C" 90 #endif // __cplusplus 91 #endif // AOM_AV1_DECODER_INSPECTION_H_ 92