• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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