1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16#ifndef _IA_CSS_BINARY_H_
17#define _IA_CSS_BINARY_H_
18
19#include <type_support.h>
20#include "ia_css_types.h"
21#include "ia_css_err.h"
22#include "ia_css_stream_format.h"
23#include "ia_css_stream_public.h"
24#include "ia_css_frame_public.h"
25#include "sh_css_metrics.h"
26#include "isp/kernels/fixedbds/fixedbds_1.0/ia_css_fixedbds_types.h"
27
28
29
30#define IA_CSS_BINARY_MODE_COPY 0
31#define IA_CSS_BINARY_MODE_PREVIEW 1
32#define IA_CSS_BINARY_MODE_PRIMARY 2
33#define IA_CSS_BINARY_MODE_VIDEO 3
34#define IA_CSS_BINARY_MODE_PRE_ISP 4
35#define IA_CSS_BINARY_MODE_GDC 5
36#define IA_CSS_BINARY_MODE_POST_ISP 6
37#define IA_CSS_BINARY_MODE_ANR 7
38#define IA_CSS_BINARY_MODE_CAPTURE_PP 8
39#define IA_CSS_BINARY_MODE_VF_PP 9
40#define IA_CSS_BINARY_MODE_PRE_DE 10
41#define IA_CSS_BINARY_MODE_PRIMARY_HQ_STAGE0 11
42#define IA_CSS_BINARY_MODE_PRIMARY_HQ_STAGE1 12
43#define IA_CSS_BINARY_MODE_PRIMARY_HQ_STAGE2 13
44#define IA_CSS_BINARY_MODE_PRIMARY_HQ_STAGE3 14
45#define IA_CSS_BINARY_MODE_PRIMARY_HQ_STAGE4 15
46#define IA_CSS_BINARY_MODE_PRIMARY_HQ_STAGE5 16
47#define IA_CSS_BINARY_NUM_MODES 17
48
49#define MAX_NUM_PRIMARY_STAGES 6
50#define NUM_PRIMARY_HQ_STAGES 6
51#define NUM_PRIMARY_STAGES 1
52
53
54#define IA_CSS_BINARY_INPUT_SENSOR 0
55#define IA_CSS_BINARY_INPUT_MEMORY 1
56#define IA_CSS_BINARY_INPUT_VARIABLE 2
57
58
59
60
61
62#include "runtime/isp_param/interface/ia_css_isp_param_types.h"
63
64
65enum {
66 IA_CSS_BINARY_OUTPUT_PORT_0 = 0,
67 IA_CSS_BINARY_OUTPUT_PORT_1 = 1,
68 IA_CSS_BINARY_MAX_OUTPUT_PORTS = 2
69};
70
71struct ia_css_cas_binary_descr {
72 unsigned int num_stage;
73 unsigned int num_output_stage;
74 struct ia_css_frame_info *in_info;
75 struct ia_css_frame_info *internal_out_info;
76 struct ia_css_frame_info *out_info;
77 struct ia_css_frame_info *vf_info;
78 bool *is_output_stage;
79};
80
81struct ia_css_binary_descr {
82 int mode;
83 bool online;
84 bool continuous;
85 bool striped;
86 bool two_ppc;
87 bool enable_yuv_ds;
88 bool enable_high_speed;
89 bool enable_dvs_6axis;
90 bool enable_reduced_pipe;
91 bool enable_dz;
92 bool enable_xnr;
93 bool enable_fractional_ds;
94 bool enable_dpc;
95
96
97 bool enable_luma_only;
98 bool enable_tnr;
99
100 bool enable_capture_pp_bli;
101 struct ia_css_resolution dvs_env;
102 enum atomisp_input_format stream_format;
103 struct ia_css_frame_info *in_info;
104
105 struct ia_css_frame_info *bds_out_info;
106 struct ia_css_frame_info *out_info[IA_CSS_BINARY_MAX_OUTPUT_PORTS];
107 struct ia_css_frame_info *vf_info;
108 unsigned int isp_pipe_version;
109 unsigned int required_bds_factor;
110 int stream_config_left_padding;
111};
112
113struct ia_css_binary {
114 const struct ia_css_binary_xinfo *info;
115 enum atomisp_input_format input_format;
116 struct ia_css_frame_info in_frame_info;
117 struct ia_css_frame_info internal_frame_info;
118 struct ia_css_frame_info out_frame_info[IA_CSS_BINARY_MAX_OUTPUT_PORTS];
119 struct ia_css_resolution effective_in_frame_res;
120 struct ia_css_frame_info vf_frame_info;
121 int input_buf_vectors;
122 int deci_factor_log2;
123 int vf_downscale_log2;
124 int s3atbl_width;
125 int s3atbl_height;
126 int s3atbl_isp_width;
127 int s3atbl_isp_height;
128 unsigned int morph_tbl_width;
129 unsigned int morph_tbl_aligned_width;
130 unsigned int morph_tbl_height;
131 int sctbl_width_per_color;
132 int sctbl_aligned_width_per_color;
133 int sctbl_height;
134 int sctbl_legacy_width_per_color;
135 int sctbl_legacy_height;
136 struct ia_css_sdis_info dis;
137 struct ia_css_resolution dvs_envelope;
138 bool online;
139 unsigned int uds_xc;
140 unsigned int uds_yc;
141 unsigned int left_padding;
142 struct sh_css_binary_metrics metrics;
143 struct ia_css_isp_param_host_segments mem_params;
144 struct ia_css_isp_param_css_segments css_params;
145};
146
147#define IA_CSS_BINARY_DEFAULT_SETTINGS { \
148 .input_format = ATOMISP_INPUT_FORMAT_YUV420_8_LEGACY, \
149 .in_frame_info = IA_CSS_BINARY_DEFAULT_FRAME_INFO, \
150 .internal_frame_info = IA_CSS_BINARY_DEFAULT_FRAME_INFO, \
151 .out_frame_info = {IA_CSS_BINARY_DEFAULT_FRAME_INFO}, \
152 .vf_frame_info = IA_CSS_BINARY_DEFAULT_FRAME_INFO, \
153}
154
155int
156ia_css_binary_init_infos(void);
157
158int
159ia_css_binary_uninit(void);
160
161int
162ia_css_binary_fill_info(const struct ia_css_binary_xinfo *xinfo,
163 bool online,
164 bool two_ppc,
165 enum atomisp_input_format stream_format,
166 const struct ia_css_frame_info *in_info,
167 const struct ia_css_frame_info *bds_out_info,
168 const struct ia_css_frame_info *out_info[],
169 const struct ia_css_frame_info *vf_info,
170 struct ia_css_binary *binary,
171 struct ia_css_resolution *dvs_env,
172 int stream_config_left_padding,
173 bool accelerator);
174
175int
176ia_css_binary_find(struct ia_css_binary_descr *descr,
177 struct ia_css_binary *binary);
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194int
195ia_css_binary_get_shading_info(const struct ia_css_binary *binary,
196 enum ia_css_shading_correction_type type,
197 unsigned int required_bds_factor,
198 const struct ia_css_stream_config *stream_config,
199 struct ia_css_shading_info *shading_info,
200 struct ia_css_pipe_config *pipe_config);
201
202int
203ia_css_binary_3a_grid_info(const struct ia_css_binary *binary,
204 struct ia_css_grid_info *info,
205 struct ia_css_pipe *pipe);
206
207void
208ia_css_binary_dvs_grid_info(const struct ia_css_binary *binary,
209 struct ia_css_grid_info *info,
210 struct ia_css_pipe *pipe);
211
212void
213ia_css_binary_dvs_stat_grid_info(
214 const struct ia_css_binary *binary,
215 struct ia_css_grid_info *info,
216 struct ia_css_pipe *pipe);
217
218unsigned
219ia_css_binary_max_vf_width(void);
220
221void
222ia_css_binary_destroy_isp_parameters(struct ia_css_binary *binary);
223
224void
225ia_css_binary_get_isp_binaries(struct ia_css_binary_xinfo **binaries,
226 uint32_t *num_isp_binaries);
227
228#endif
229