1 /* SPDX-License-Identifier: GPL-2.0 */
2 #if !defined(_VISL_TRACE_AV1_H_) || defined(TRACE_HEADER_MULTI_READ)
3 #define _VISL_TRACE_AV1_H_
5 #include <linux/tracepoint.h>
9 #define TRACE_SYSTEM visl_av1_controls
11 DECLARE_EVENT_CLASS(v4l2_ctrl_av1_seq_tmpl
,
12 TP_PROTO(const struct v4l2_ctrl_av1_sequence
*s
),
14 TP_STRUCT__entry(__field_struct(struct v4l2_ctrl_av1_sequence
, s
)),
15 TP_fast_assign(__entry
->s
= *s
;),
16 TP_printk("\nflags %s\nseq_profile: %u\norder_hint_bits: %u\nbit_depth: %u\n"
17 "max_frame_width_minus_1: %u\nmax_frame_height_minus_1: %u\n",
18 __print_flags(__entry
->s
.flags
, "|",
19 {V4L2_AV1_SEQUENCE_FLAG_STILL_PICTURE
, "STILL_PICTURE"},
20 {V4L2_AV1_SEQUENCE_FLAG_USE_128X128_SUPERBLOCK
, "USE_128X128_SUPERBLOCK"},
21 {V4L2_AV1_SEQUENCE_FLAG_ENABLE_FILTER_INTRA
, "ENABLE_FILTER_INTRA"},
22 {V4L2_AV1_SEQUENCE_FLAG_ENABLE_INTRA_EDGE_FILTER
, "ENABLE_INTRA_EDGE_FILTER"},
23 {V4L2_AV1_SEQUENCE_FLAG_ENABLE_INTERINTRA_COMPOUND
, "ENABLE_INTERINTRA_COMPOUND"},
24 {V4L2_AV1_SEQUENCE_FLAG_ENABLE_MASKED_COMPOUND
, "ENABLE_MASKED_COMPOUND"},
25 {V4L2_AV1_SEQUENCE_FLAG_ENABLE_WARPED_MOTION
, "ENABLE_WARPED_MOTION"},
26 {V4L2_AV1_SEQUENCE_FLAG_ENABLE_DUAL_FILTER
, "ENABLE_DUAL_FILTER"},
27 {V4L2_AV1_SEQUENCE_FLAG_ENABLE_ORDER_HINT
, "ENABLE_ORDER_HINT"},
28 {V4L2_AV1_SEQUENCE_FLAG_ENABLE_JNT_COMP
, "ENABLE_JNT_COMP"},
29 {V4L2_AV1_SEQUENCE_FLAG_ENABLE_REF_FRAME_MVS
, "ENABLE_REF_FRAME_MVS"},
30 {V4L2_AV1_SEQUENCE_FLAG_ENABLE_SUPERRES
, "ENABLE_SUPERRES"},
31 {V4L2_AV1_SEQUENCE_FLAG_ENABLE_CDEF
, "ENABLE_CDEF"},
32 {V4L2_AV1_SEQUENCE_FLAG_ENABLE_RESTORATION
, "ENABLE_RESTORATION"},
33 {V4L2_AV1_SEQUENCE_FLAG_MONO_CHROME
, "MONO_CHROME"},
34 {V4L2_AV1_SEQUENCE_FLAG_COLOR_RANGE
, "COLOR_RANGE"},
35 {V4L2_AV1_SEQUENCE_FLAG_SUBSAMPLING_X
, "SUBSAMPLING_X"},
36 {V4L2_AV1_SEQUENCE_FLAG_SUBSAMPLING_Y
, "SUBSAMPLING_Y"},
37 {V4L2_AV1_SEQUENCE_FLAG_FILM_GRAIN_PARAMS_PRESENT
, "FILM_GRAIN_PARAMS_PRESENT"},
38 {V4L2_AV1_SEQUENCE_FLAG_SEPARATE_UV_DELTA_Q
, "SEPARATE_UV_DELTA_Q"}),
39 __entry
->s
.seq_profile
,
40 __entry
->s
.order_hint_bits
,
42 __entry
->s
.max_frame_width_minus_1
,
43 __entry
->s
.max_frame_height_minus_1
47 DECLARE_EVENT_CLASS(v4l2_ctrl_av1_tge_tmpl
,
48 TP_PROTO(const struct v4l2_ctrl_av1_tile_group_entry
*t
),
50 TP_STRUCT__entry(__field_struct(struct v4l2_ctrl_av1_tile_group_entry
, t
)),
51 TP_fast_assign(__entry
->t
= *t
;),
52 TP_printk("\ntile_offset: %u\n tile_size: %u\n tile_row: %u\ntile_col: %u\n",
53 __entry
->t
.tile_offset
,
60 DECLARE_EVENT_CLASS(v4l2_ctrl_av1_frame_tmpl
,
61 TP_PROTO(const struct v4l2_ctrl_av1_frame
*f
),
63 TP_STRUCT__entry(__field_struct(struct v4l2_ctrl_av1_frame
, f
)),
64 TP_fast_assign(__entry
->f
= *f
;),
65 TP_printk("\ntile_info.flags: %s\ntile_info.context_update_tile_id: %u\n"
66 "tile_info.tile_cols: %u\ntile_info.tile_rows: %u\n"
67 "tile_info.mi_col_starts: %s\ntile_info.mi_row_starts: %s\n"
68 "tile_info.width_in_sbs_minus_1: %s\ntile_info.height_in_sbs_minus_1: %s\n"
69 "tile_info.tile_size_bytes: %u\nquantization.flags: %s\n"
70 "quantization.base_q_idx: %u\nquantization.delta_q_y_dc: %d\n"
71 "quantization.delta_q_u_dc: %d\nquantization.delta_q_u_ac: %d\n"
72 "quantization.delta_q_v_dc: %d\nquantization.delta_q_v_ac: %d\n"
73 "quantization.qm_y: %u\nquantization.qm_u: %u\nquantization.qm_v: %u\n"
74 "quantization.delta_q_res: %u\nsuperres_denom: %u\nsegmentation.flags: %s\n"
75 "segmentation.last_active_seg_id: %u\nsegmentation.feature_enabled:%s\n"
76 "loop_filter.flags: %s\nloop_filter.level: %s\nloop_filter.sharpness: %u\n"
77 "loop_filter.ref_deltas: %s\nloop_filter.mode_deltas: %s\n"
78 "loop_filter.delta_lf_res: %u\ncdef.damping_minus_3: %u\ncdef.bits: %u\n"
79 "cdef.y_pri_strength: %s\ncdef.y_sec_strength: %s\n"
80 "cdef.uv_pri_strength: %s\ncdef.uv_sec_strength:%s\nskip_mode_frame: %s\n"
81 "primary_ref_frame: %u\nloop_restoration.flags: %s\n"
82 "loop_restoration.lr_unit_shift: %u\nloop_restoration.lr_uv_shift: %u\n"
83 "loop_restoration.frame_restoration_type: %s\n"
84 "loop_restoration.loop_restoration_size: %s\nflags: %s\norder_hint: %u\n"
85 "upscaled_width: %u\nframe_width_minus_1: %u\nframe_height_minus_1: %u\n"
86 "render_width_minus_1: %u\nrender_height_minus_1: %u\ncurrent_frame_id: %u\n"
87 "buffer_removal_time: %s\norder_hints: %s\nreference_frame_ts: %s\n"
88 "ref_frame_idx: %s\nrefresh_frame_flags: %u\n",
89 __print_flags(__entry
->f
.tile_info
.flags
, "|",
90 {V4L2_AV1_TILE_INFO_FLAG_UNIFORM_TILE_SPACING
, "UNIFORM_TILE_SPACING"}),
91 __entry
->f
.tile_info
.context_update_tile_id
,
92 __entry
->f
.tile_info
.tile_cols
,
93 __entry
->f
.tile_info
.tile_rows
,
94 __print_array(__entry
->f
.tile_info
.mi_col_starts
,
95 ARRAY_SIZE(__entry
->f
.tile_info
.mi_col_starts
),
96 sizeof(__entry
->f
.tile_info
.mi_col_starts
[0])),
97 __print_array(__entry
->f
.tile_info
.mi_row_starts
,
98 ARRAY_SIZE(__entry
->f
.tile_info
.mi_row_starts
),
99 sizeof(__entry
->f
.tile_info
.mi_row_starts
[0])),
100 __print_array(__entry
->f
.tile_info
.width_in_sbs_minus_1
,
101 ARRAY_SIZE(__entry
->f
.tile_info
.width_in_sbs_minus_1
),
102 sizeof(__entry
->f
.tile_info
.width_in_sbs_minus_1
[0])),
103 __print_array(__entry
->f
.tile_info
.height_in_sbs_minus_1
,
104 ARRAY_SIZE(__entry
->f
.tile_info
.height_in_sbs_minus_1
),
105 sizeof(__entry
->f
.tile_info
.height_in_sbs_minus_1
[0])),
106 __entry
->f
.tile_info
.tile_size_bytes
,
107 __print_flags(__entry
->f
.quantization
.flags
, "|",
108 {V4L2_AV1_QUANTIZATION_FLAG_DIFF_UV_DELTA
, "DIFF_UV_DELTA"},
109 {V4L2_AV1_QUANTIZATION_FLAG_USING_QMATRIX
, "USING_QMATRIX"},
110 {V4L2_AV1_QUANTIZATION_FLAG_DELTA_Q_PRESENT
, "DELTA_Q_PRESENT"}),
111 __entry
->f
.quantization
.base_q_idx
,
112 __entry
->f
.quantization
.delta_q_y_dc
,
113 __entry
->f
.quantization
.delta_q_u_dc
,
114 __entry
->f
.quantization
.delta_q_u_ac
,
115 __entry
->f
.quantization
.delta_q_v_dc
,
116 __entry
->f
.quantization
.delta_q_v_ac
,
117 __entry
->f
.quantization
.qm_y
,
118 __entry
->f
.quantization
.qm_u
,
119 __entry
->f
.quantization
.qm_v
,
120 __entry
->f
.quantization
.delta_q_res
,
121 __entry
->f
.superres_denom
,
122 __print_flags(__entry
->f
.segmentation
.flags
, "|",
123 {V4L2_AV1_SEGMENTATION_FLAG_ENABLED
, "ENABLED"},
124 {V4L2_AV1_SEGMENTATION_FLAG_UPDATE_MAP
, "UPDATE_MAP"},
125 {V4L2_AV1_SEGMENTATION_FLAG_TEMPORAL_UPDATE
, "TEMPORAL_UPDATE"},
126 {V4L2_AV1_SEGMENTATION_FLAG_UPDATE_DATA
, "UPDATE_DATA"},
127 {V4L2_AV1_SEGMENTATION_FLAG_SEG_ID_PRE_SKIP
, "SEG_ID_PRE_SKIP"}),
128 __entry
->f
.segmentation
.last_active_seg_id
,
129 __print_array(__entry
->f
.segmentation
.feature_enabled
,
130 ARRAY_SIZE(__entry
->f
.segmentation
.feature_enabled
),
131 sizeof(__entry
->f
.segmentation
.feature_enabled
[0])),
132 __print_flags(__entry
->f
.loop_filter
.flags
, "|",
133 {V4L2_AV1_LOOP_FILTER_FLAG_DELTA_ENABLED
, "DELTA_ENABLED"},
134 {V4L2_AV1_LOOP_FILTER_FLAG_DELTA_UPDATE
, "DELTA_UPDATE"},
135 {V4L2_AV1_LOOP_FILTER_FLAG_DELTA_LF_PRESENT
, "DELTA_LF_PRESENT"},
136 {V4L2_AV1_LOOP_FILTER_FLAG_DELTA_LF_MULTI
, "DELTA_LF_MULTI"}),
137 __print_array(__entry
->f
.loop_filter
.level
,
138 ARRAY_SIZE(__entry
->f
.loop_filter
.level
),
139 sizeof(__entry
->f
.loop_filter
.level
[0])),
140 __entry
->f
.loop_filter
.sharpness
,
141 __print_array(__entry
->f
.loop_filter
.ref_deltas
,
142 ARRAY_SIZE(__entry
->f
.loop_filter
.ref_deltas
),
143 sizeof(__entry
->f
.loop_filter
.ref_deltas
[0])),
144 __print_array(__entry
->f
.loop_filter
.mode_deltas
,
145 ARRAY_SIZE(__entry
->f
.loop_filter
.mode_deltas
),
146 sizeof(__entry
->f
.loop_filter
.mode_deltas
[0])),
147 __entry
->f
.loop_filter
.delta_lf_res
,
148 __entry
->f
.cdef
.damping_minus_3
,
149 __entry
->f
.cdef
.bits
,
150 __print_array(__entry
->f
.cdef
.y_pri_strength
,
151 ARRAY_SIZE(__entry
->f
.cdef
.y_pri_strength
),
152 sizeof(__entry
->f
.cdef
.y_pri_strength
[0])),
153 __print_array(__entry
->f
.cdef
.y_sec_strength
,
154 ARRAY_SIZE(__entry
->f
.cdef
.y_sec_strength
),
155 sizeof(__entry
->f
.cdef
.y_sec_strength
[0])),
156 __print_array(__entry
->f
.cdef
.uv_pri_strength
,
157 ARRAY_SIZE(__entry
->f
.cdef
.uv_pri_strength
),
158 sizeof(__entry
->f
.cdef
.uv_pri_strength
[0])),
159 __print_array(__entry
->f
.cdef
.uv_sec_strength
,
160 ARRAY_SIZE(__entry
->f
.cdef
.uv_sec_strength
),
161 sizeof(__entry
->f
.cdef
.uv_sec_strength
[0])),
162 __print_array(__entry
->f
.skip_mode_frame
,
163 ARRAY_SIZE(__entry
->f
.skip_mode_frame
),
164 sizeof(__entry
->f
.skip_mode_frame
[0])),
165 __entry
->f
.primary_ref_frame
,
166 __print_flags(__entry
->f
.loop_restoration
.flags
, "|",
167 {V4L2_AV1_LOOP_RESTORATION_FLAG_USES_LR
, "USES_LR"},
168 {V4L2_AV1_LOOP_RESTORATION_FLAG_USES_CHROMA_LR
, "USES_CHROMA_LR"}),
169 __entry
->f
.loop_restoration
.lr_unit_shift
,
170 __entry
->f
.loop_restoration
.lr_uv_shift
,
171 __print_array(__entry
->f
.loop_restoration
.frame_restoration_type
,
172 ARRAY_SIZE(__entry
->f
.loop_restoration
.frame_restoration_type
),
173 sizeof(__entry
->f
.loop_restoration
.frame_restoration_type
[0])),
174 __print_array(__entry
->f
.loop_restoration
.loop_restoration_size
,
175 ARRAY_SIZE(__entry
->f
.loop_restoration
.loop_restoration_size
),
176 sizeof(__entry
->f
.loop_restoration
.loop_restoration_size
[0])),
177 __print_flags(__entry
->f
.flags
, "|",
178 {V4L2_AV1_FRAME_FLAG_SHOW_FRAME
, "SHOW_FRAME"},
179 {V4L2_AV1_FRAME_FLAG_SHOWABLE_FRAME
, "SHOWABLE_FRAME"},
180 {V4L2_AV1_FRAME_FLAG_ERROR_RESILIENT_MODE
, "ERROR_RESILIENT_MODE"},
181 {V4L2_AV1_FRAME_FLAG_DISABLE_CDF_UPDATE
, "DISABLE_CDF_UPDATE"},
182 {V4L2_AV1_FRAME_FLAG_ALLOW_SCREEN_CONTENT_TOOLS
, "ALLOW_SCREEN_CONTENT_TOOLS"},
183 {V4L2_AV1_FRAME_FLAG_FORCE_INTEGER_MV
, "FORCE_INTEGER_MV"},
184 {V4L2_AV1_FRAME_FLAG_ALLOW_INTRABC
, "ALLOW_INTRABC"},
185 {V4L2_AV1_FRAME_FLAG_USE_SUPERRES
, "USE_SUPERRES"},
186 {V4L2_AV1_FRAME_FLAG_ALLOW_HIGH_PRECISION_MV
, "ALLOW_HIGH_PRECISION_MV"},
187 {V4L2_AV1_FRAME_FLAG_IS_MOTION_MODE_SWITCHABLE
, "IS_MOTION_MODE_SWITCHABLE"},
188 {V4L2_AV1_FRAME_FLAG_USE_REF_FRAME_MVS
, "USE_REF_FRAME_MVS"},
189 {V4L2_AV1_FRAME_FLAG_DISABLE_FRAME_END_UPDATE_CDF
,
190 "DISABLE_FRAME_END_UPDATE_CDF"},
191 {V4L2_AV1_FRAME_FLAG_ALLOW_WARPED_MOTION
, "ALLOW_WARPED_MOTION"},
192 {V4L2_AV1_FRAME_FLAG_REFERENCE_SELECT
, "REFERENCE_SELECT"},
193 {V4L2_AV1_FRAME_FLAG_REDUCED_TX_SET
, "REDUCED_TX_SET"},
194 {V4L2_AV1_FRAME_FLAG_SKIP_MODE_ALLOWED
, "SKIP_MODE_ALLOWED"},
195 {V4L2_AV1_FRAME_FLAG_SKIP_MODE_PRESENT
, "SKIP_MODE_PRESENT"},
196 {V4L2_AV1_FRAME_FLAG_FRAME_SIZE_OVERRIDE
, "FRAME_SIZE_OVERRIDE"},
197 {V4L2_AV1_FRAME_FLAG_BUFFER_REMOVAL_TIME_PRESENT
, "BUFFER_REMOVAL_TIME_PRESENT"},
198 {V4L2_AV1_FRAME_FLAG_FRAME_REFS_SHORT_SIGNALING
, "FRAME_REFS_SHORT_SIGNALING"}),
199 __entry
->f
.order_hint
,
200 __entry
->f
.upscaled_width
,
201 __entry
->f
.frame_width_minus_1
,
202 __entry
->f
.frame_height_minus_1
,
203 __entry
->f
.render_width_minus_1
,
204 __entry
->f
.render_height_minus_1
,
205 __entry
->f
.current_frame_id
,
206 __print_array(__entry
->f
.buffer_removal_time
,
207 ARRAY_SIZE(__entry
->f
.buffer_removal_time
),
208 sizeof(__entry
->f
.buffer_removal_time
[0])),
209 __print_array(__entry
->f
.order_hints
,
210 ARRAY_SIZE(__entry
->f
.order_hints
),
211 sizeof(__entry
->f
.order_hints
[0])),
212 __print_array(__entry
->f
.reference_frame_ts
,
213 ARRAY_SIZE(__entry
->f
.reference_frame_ts
),
214 sizeof(__entry
->f
.reference_frame_ts
[0])),
215 __print_array(__entry
->f
.ref_frame_idx
,
216 ARRAY_SIZE(__entry
->f
.ref_frame_idx
),
217 sizeof(__entry
->f
.ref_frame_idx
[0])),
218 __entry
->f
.refresh_frame_flags
223 DECLARE_EVENT_CLASS(v4l2_ctrl_av1_film_grain_tmpl
,
224 TP_PROTO(const struct v4l2_ctrl_av1_film_grain
*f
),
226 TP_STRUCT__entry(__field_struct(struct v4l2_ctrl_av1_film_grain
, f
)),
227 TP_fast_assign(__entry
->f
= *f
;),
228 TP_printk("\nflags %s\ncr_mult: %u\ngrain_seed: %u\n"
229 "film_grain_params_ref_idx: %u\nnum_y_points: %u\npoint_y_value: %s\n"
230 "point_y_scaling: %s\nnum_cb_points: %u\npoint_cb_value: %s\n"
231 "point_cb_scaling: %s\nnum_cr_points: %u\npoint_cr_value: %s\n"
232 "point_cr_scaling: %s\ngrain_scaling_minus_8: %u\nar_coeff_lag: %u\n"
233 "ar_coeffs_y_plus_128: %s\nar_coeffs_cb_plus_128: %s\n"
234 "ar_coeffs_cr_plus_128: %s\nar_coeff_shift_minus_6: %u\n"
235 "grain_scale_shift: %u\ncb_mult: %u\ncb_luma_mult: %u\ncr_luma_mult: %u\n"
236 "cb_offset: %u\ncr_offset: %u\n",
237 __print_flags(__entry
->f
.flags
, "|",
238 {V4L2_AV1_FILM_GRAIN_FLAG_APPLY_GRAIN
, "APPLY_GRAIN"},
239 {V4L2_AV1_FILM_GRAIN_FLAG_UPDATE_GRAIN
, "UPDATE_GRAIN"},
240 {V4L2_AV1_FILM_GRAIN_FLAG_CHROMA_SCALING_FROM_LUMA
, "CHROMA_SCALING_FROM_LUMA"},
241 {V4L2_AV1_FILM_GRAIN_FLAG_OVERLAP
, "OVERLAP"},
242 {V4L2_AV1_FILM_GRAIN_FLAG_CLIP_TO_RESTRICTED_RANGE
, "CLIP_TO_RESTRICTED_RANGE"}),
244 __entry
->f
.grain_seed
,
245 __entry
->f
.film_grain_params_ref_idx
,
246 __entry
->f
.num_y_points
,
247 __print_array(__entry
->f
.point_y_value
,
248 ARRAY_SIZE(__entry
->f
.point_y_value
),
249 sizeof(__entry
->f
.point_y_value
[0])),
250 __print_array(__entry
->f
.point_y_scaling
,
251 ARRAY_SIZE(__entry
->f
.point_y_scaling
),
252 sizeof(__entry
->f
.point_y_scaling
[0])),
253 __entry
->f
.num_cb_points
,
254 __print_array(__entry
->f
.point_cb_value
,
255 ARRAY_SIZE(__entry
->f
.point_cb_value
),
256 sizeof(__entry
->f
.point_cb_value
[0])),
257 __print_array(__entry
->f
.point_cb_scaling
,
258 ARRAY_SIZE(__entry
->f
.point_cb_scaling
),
259 sizeof(__entry
->f
.point_cb_scaling
[0])),
260 __entry
->f
.num_cr_points
,
261 __print_array(__entry
->f
.point_cr_value
,
262 ARRAY_SIZE(__entry
->f
.point_cr_value
),
263 sizeof(__entry
->f
.point_cr_value
[0])),
264 __print_array(__entry
->f
.point_cr_scaling
,
265 ARRAY_SIZE(__entry
->f
.point_cr_scaling
),
266 sizeof(__entry
->f
.point_cr_scaling
[0])),
267 __entry
->f
.grain_scaling_minus_8
,
268 __entry
->f
.ar_coeff_lag
,
269 __print_array(__entry
->f
.ar_coeffs_y_plus_128
,
270 ARRAY_SIZE(__entry
->f
.ar_coeffs_y_plus_128
),
271 sizeof(__entry
->f
.ar_coeffs_y_plus_128
[0])),
272 __print_array(__entry
->f
.ar_coeffs_cb_plus_128
,
273 ARRAY_SIZE(__entry
->f
.ar_coeffs_cb_plus_128
),
274 sizeof(__entry
->f
.ar_coeffs_cb_plus_128
[0])),
275 __print_array(__entry
->f
.ar_coeffs_cr_plus_128
,
276 ARRAY_SIZE(__entry
->f
.ar_coeffs_cr_plus_128
),
277 sizeof(__entry
->f
.ar_coeffs_cr_plus_128
[0])),
278 __entry
->f
.ar_coeff_shift_minus_6
,
279 __entry
->f
.grain_scale_shift
,
281 __entry
->f
.cb_luma_mult
,
282 __entry
->f
.cr_luma_mult
,
283 __entry
->f
.cb_offset
,
288 DEFINE_EVENT(v4l2_ctrl_av1_seq_tmpl
, v4l2_ctrl_av1_sequence
,
289 TP_PROTO(const struct v4l2_ctrl_av1_sequence
*s
),
293 DEFINE_EVENT(v4l2_ctrl_av1_frame_tmpl
, v4l2_ctrl_av1_frame
,
294 TP_PROTO(const struct v4l2_ctrl_av1_frame
*f
),
298 DEFINE_EVENT(v4l2_ctrl_av1_tge_tmpl
, v4l2_ctrl_av1_tile_group_entry
,
299 TP_PROTO(const struct v4l2_ctrl_av1_tile_group_entry
*t
),
303 DEFINE_EVENT(v4l2_ctrl_av1_film_grain_tmpl
, v4l2_ctrl_av1_film_grain
,
304 TP_PROTO(const struct v4l2_ctrl_av1_film_grain
*f
),
310 #undef TRACE_INCLUDE_PATH
311 #undef TRACE_INCLUDE_FILE
312 #define TRACE_INCLUDE_PATH ../../drivers/media/test-drivers/visl
313 #define TRACE_INCLUDE_FILE visl-trace-av1
314 #include <trace/define_trace.h>