1 /* SPDX-License-Identifier: GPL-2.0 */
2 #if !defined(_VISL_TRACE_H264_H_) || defined(TRACE_HEADER_MULTI_READ)
3 #define _VISL_TRACE_H264_H_
5 #include <linux/tracepoint.h>
9 #define TRACE_SYSTEM visl_h264_controls
11 DECLARE_EVENT_CLASS(v4l2_ctrl_h264_sps_tmpl
,
12 TP_PROTO(const struct v4l2_ctrl_h264_sps
*s
),
14 TP_STRUCT__entry(__field_struct(struct v4l2_ctrl_h264_sps
, s
)),
15 TP_fast_assign(__entry
->s
= *s
),
16 TP_printk("\nprofile_idc %u\n"
17 "constraint_set_flags %s\n"
19 "seq_parameter_set_id %u\n"
20 "chroma_format_idc %u\n"
21 "bit_depth_luma_minus8 %u\n"
22 "bit_depth_chroma_minus8 %u\n"
23 "log2_max_frame_num_minus4 %u\n"
24 "pic_order_cnt_type %u\n"
25 "log2_max_pic_order_cnt_lsb_minus4 %u\n"
26 "max_num_ref_frames %u\n"
27 "num_ref_frames_in_pic_order_cnt_cycle %u\n"
28 "offset_for_ref_frame %s\n"
29 "offset_for_non_ref_pic %d\n"
30 "offset_for_top_to_bottom_field %d\n"
31 "pic_width_in_mbs_minus1 %u\n"
32 "pic_height_in_map_units_minus1 %u\n"
34 __entry
->s
.profile_idc
,
35 __print_flags(__entry
->s
.constraint_set_flags
, "|",
36 {V4L2_H264_SPS_CONSTRAINT_SET0_FLAG
, "CONSTRAINT_SET0_FLAG"},
37 {V4L2_H264_SPS_CONSTRAINT_SET1_FLAG
, "CONSTRAINT_SET1_FLAG"},
38 {V4L2_H264_SPS_CONSTRAINT_SET2_FLAG
, "CONSTRAINT_SET2_FLAG"},
39 {V4L2_H264_SPS_CONSTRAINT_SET3_FLAG
, "CONSTRAINT_SET3_FLAG"},
40 {V4L2_H264_SPS_CONSTRAINT_SET4_FLAG
, "CONSTRAINT_SET4_FLAG"},
41 {V4L2_H264_SPS_CONSTRAINT_SET5_FLAG
, "CONSTRAINT_SET5_FLAG"}),
43 __entry
->s
.seq_parameter_set_id
,
44 __entry
->s
.chroma_format_idc
,
45 __entry
->s
.bit_depth_luma_minus8
,
46 __entry
->s
.bit_depth_chroma_minus8
,
47 __entry
->s
.log2_max_frame_num_minus4
,
48 __entry
->s
.pic_order_cnt_type
,
49 __entry
->s
.log2_max_pic_order_cnt_lsb_minus4
,
50 __entry
->s
.max_num_ref_frames
,
51 __entry
->s
.num_ref_frames_in_pic_order_cnt_cycle
,
52 __print_array(__entry
->s
.offset_for_ref_frame
,
53 ARRAY_SIZE(__entry
->s
.offset_for_ref_frame
),
54 sizeof(__entry
->s
.offset_for_ref_frame
[0])),
55 __entry
->s
.offset_for_non_ref_pic
,
56 __entry
->s
.offset_for_top_to_bottom_field
,
57 __entry
->s
.pic_width_in_mbs_minus1
,
58 __entry
->s
.pic_height_in_map_units_minus1
,
59 __print_flags(__entry
->s
.flags
, "|",
60 {V4L2_H264_SPS_FLAG_SEPARATE_COLOUR_PLANE
, "SEPARATE_COLOUR_PLANE"},
61 {V4L2_H264_SPS_FLAG_QPPRIME_Y_ZERO_TRANSFORM_BYPASS
, "QPPRIME_Y_ZERO_TRANSFORM_BYPASS"},
62 {V4L2_H264_SPS_FLAG_DELTA_PIC_ORDER_ALWAYS_ZERO
, "DELTA_PIC_ORDER_ALWAYS_ZERO"},
63 {V4L2_H264_SPS_FLAG_GAPS_IN_FRAME_NUM_VALUE_ALLOWED
, "GAPS_IN_FRAME_NUM_VALUE_ALLOWED"},
64 {V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY
, "FRAME_MBS_ONLY"},
65 {V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD
, "MB_ADAPTIVE_FRAME_FIELD"},
66 {V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE
, "DIRECT_8X8_INFERENCE"}
70 DECLARE_EVENT_CLASS(v4l2_ctrl_h264_pps_tmpl
,
71 TP_PROTO(const struct v4l2_ctrl_h264_pps
*p
),
73 TP_STRUCT__entry(__field_struct(struct v4l2_ctrl_h264_pps
, p
)),
74 TP_fast_assign(__entry
->p
= *p
),
75 TP_printk("\npic_parameter_set_id %u\n"
76 "seq_parameter_set_id %u\n"
77 "num_slice_groups_minus1 %u\n"
78 "num_ref_idx_l0_default_active_minus1 %u\n"
79 "num_ref_idx_l1_default_active_minus1 %u\n"
80 "weighted_bipred_idc %u\n"
81 "pic_init_qp_minus26 %d\n"
82 "pic_init_qs_minus26 %d\n"
83 "chroma_qp_index_offset %d\n"
84 "second_chroma_qp_index_offset %d\n"
86 __entry
->p
.pic_parameter_set_id
,
87 __entry
->p
.seq_parameter_set_id
,
88 __entry
->p
.num_slice_groups_minus1
,
89 __entry
->p
.num_ref_idx_l0_default_active_minus1
,
90 __entry
->p
.num_ref_idx_l1_default_active_minus1
,
91 __entry
->p
.weighted_bipred_idc
,
92 __entry
->p
.pic_init_qp_minus26
,
93 __entry
->p
.pic_init_qs_minus26
,
94 __entry
->p
.chroma_qp_index_offset
,
95 __entry
->p
.second_chroma_qp_index_offset
,
96 __print_flags(__entry
->p
.flags
, "|",
97 {V4L2_H264_PPS_FLAG_ENTROPY_CODING_MODE
, "ENTROPY_CODING_MODE"},
98 {V4L2_H264_PPS_FLAG_BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT
, "BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT"},
99 {V4L2_H264_PPS_FLAG_WEIGHTED_PRED
, "WEIGHTED_PRED"},
100 {V4L2_H264_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT
, "DEBLOCKING_FILTER_CONTROL_PRESENT"},
101 {V4L2_H264_PPS_FLAG_CONSTRAINED_INTRA_PRED
, "CONSTRAINED_INTRA_PRED"},
102 {V4L2_H264_PPS_FLAG_REDUNDANT_PIC_CNT_PRESENT
, "REDUNDANT_PIC_CNT_PRESENT"},
103 {V4L2_H264_PPS_FLAG_TRANSFORM_8X8_MODE
, "TRANSFORM_8X8_MODE"},
104 {V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT
, "SCALING_MATRIX_PRESENT"}
108 DECLARE_EVENT_CLASS(v4l2_ctrl_h264_scaling_matrix_tmpl
,
109 TP_PROTO(const struct v4l2_ctrl_h264_scaling_matrix
*s
),
111 TP_STRUCT__entry(__field_struct(struct v4l2_ctrl_h264_scaling_matrix
, s
)),
112 TP_fast_assign(__entry
->s
= *s
),
113 TP_printk("\nscaling_list_4x4 {%s}\nscaling_list_8x8 {%s}",
114 __print_hex_dump("", DUMP_PREFIX_NONE
, 32, 1,
115 __entry
->s
.scaling_list_4x4
,
116 sizeof(__entry
->s
.scaling_list_4x4
),
118 __print_hex_dump("", DUMP_PREFIX_NONE
, 32, 1,
119 __entry
->s
.scaling_list_8x8
,
120 sizeof(__entry
->s
.scaling_list_8x8
),
125 DECLARE_EVENT_CLASS(v4l2_ctrl_h264_pred_weights_tmpl
,
126 TP_PROTO(const struct v4l2_ctrl_h264_pred_weights
*p
),
128 TP_STRUCT__entry(__field_struct(struct v4l2_ctrl_h264_pred_weights
, p
)),
129 TP_fast_assign(__entry
->p
= *p
),
130 TP_printk("\nluma_log2_weight_denom %u\n"
131 "chroma_log2_weight_denom %u\n"
132 "weight_factor[0].luma_weight %s\n"
133 "weight_factor[0].luma_offset %s\n"
134 "weight_factor[0].chroma_weight {%s}\n"
135 "weight_factor[0].chroma_offset {%s}\n"
136 "weight_factor[1].luma_weight %s\n"
137 "weight_factor[1].luma_offset %s\n"
138 "weight_factor[1].chroma_weight {%s}\n"
139 "weight_factor[1].chroma_offset {%s}\n",
140 __entry
->p
.luma_log2_weight_denom
,
141 __entry
->p
.chroma_log2_weight_denom
,
142 __print_array(__entry
->p
.weight_factors
[0].luma_weight
,
143 ARRAY_SIZE(__entry
->p
.weight_factors
[0].luma_weight
),
144 sizeof(__entry
->p
.weight_factors
[0].luma_weight
[0])),
145 __print_array(__entry
->p
.weight_factors
[0].luma_offset
,
146 ARRAY_SIZE(__entry
->p
.weight_factors
[0].luma_offset
),
147 sizeof(__entry
->p
.weight_factors
[0].luma_offset
[0])),
148 __print_hex_dump("", DUMP_PREFIX_NONE
, 32, 1,
149 __entry
->p
.weight_factors
[0].chroma_weight
,
150 sizeof(__entry
->p
.weight_factors
[0].chroma_weight
),
152 __print_hex_dump("", DUMP_PREFIX_NONE
, 32, 1,
153 __entry
->p
.weight_factors
[0].chroma_offset
,
154 sizeof(__entry
->p
.weight_factors
[0].chroma_offset
),
156 __print_array(__entry
->p
.weight_factors
[1].luma_weight
,
157 ARRAY_SIZE(__entry
->p
.weight_factors
[1].luma_weight
),
158 sizeof(__entry
->p
.weight_factors
[1].luma_weight
[0])),
159 __print_array(__entry
->p
.weight_factors
[1].luma_offset
,
160 ARRAY_SIZE(__entry
->p
.weight_factors
[1].luma_offset
),
161 sizeof(__entry
->p
.weight_factors
[1].luma_offset
[0])),
162 __print_hex_dump("", DUMP_PREFIX_NONE
, 32, 1,
163 __entry
->p
.weight_factors
[1].chroma_weight
,
164 sizeof(__entry
->p
.weight_factors
[1].chroma_weight
),
166 __print_hex_dump("", DUMP_PREFIX_NONE
, 32, 1,
167 __entry
->p
.weight_factors
[1].chroma_offset
,
168 sizeof(__entry
->p
.weight_factors
[1].chroma_offset
),
173 DECLARE_EVENT_CLASS(v4l2_ctrl_h264_slice_params_tmpl
,
174 TP_PROTO(const struct v4l2_ctrl_h264_slice_params
*s
),
176 TP_STRUCT__entry(__field_struct(struct v4l2_ctrl_h264_slice_params
, s
)),
177 TP_fast_assign(__entry
->s
= *s
),
178 TP_printk("\nheader_bit_size %u\n"
179 "first_mb_in_slice %u\n"
181 "colour_plane_id %u\n"
182 "redundant_pic_cnt %u\n"
183 "cabac_init_idc %u\n"
184 "slice_qp_delta %d\n"
185 "slice_qs_delta %d\n"
186 "disable_deblocking_filter_idc %u\n"
187 "slice_alpha_c0_offset_div2 %u\n"
188 "slice_beta_offset_div2 %u\n"
189 "num_ref_idx_l0_active_minus1 %u\n"
190 "num_ref_idx_l1_active_minus1 %u\n"
192 __entry
->s
.header_bit_size
,
193 __entry
->s
.first_mb_in_slice
,
194 __print_symbolic(__entry
->s
.slice_type
,
195 {V4L2_H264_SLICE_TYPE_P
, "P"},
196 {V4L2_H264_SLICE_TYPE_B
, "B"},
197 {V4L2_H264_SLICE_TYPE_I
, "I"},
198 {V4L2_H264_SLICE_TYPE_SP
, "SP"},
199 {V4L2_H264_SLICE_TYPE_SI
, "SI"}),
200 __entry
->s
.colour_plane_id
,
201 __entry
->s
.redundant_pic_cnt
,
202 __entry
->s
.cabac_init_idc
,
203 __entry
->s
.slice_qp_delta
,
204 __entry
->s
.slice_qs_delta
,
205 __entry
->s
.disable_deblocking_filter_idc
,
206 __entry
->s
.slice_alpha_c0_offset_div2
,
207 __entry
->s
.slice_beta_offset_div2
,
208 __entry
->s
.num_ref_idx_l0_active_minus1
,
209 __entry
->s
.num_ref_idx_l1_active_minus1
,
210 __print_flags(__entry
->s
.flags
, "|",
211 {V4L2_H264_SLICE_FLAG_DIRECT_SPATIAL_MV_PRED
, "DIRECT_SPATIAL_MV_PRED"},
212 {V4L2_H264_SLICE_FLAG_SP_FOR_SWITCH
, "SP_FOR_SWITCH"})
216 DECLARE_EVENT_CLASS(v4l2_h264_reference_tmpl
,
217 TP_PROTO(const struct v4l2_h264_reference
*r
, int i
),
219 TP_STRUCT__entry(__field_struct(struct v4l2_h264_reference
, r
)
221 TP_fast_assign(__entry
->r
= *r
; __entry
->i
= i
;),
222 TP_printk("[%d]: fields %s index %u",
224 __print_flags(__entry
->r
.fields
, "|",
225 {V4L2_H264_TOP_FIELD_REF
, "TOP_FIELD_REF"},
226 {V4L2_H264_BOTTOM_FIELD_REF
, "BOTTOM_FIELD_REF"},
227 {V4L2_H264_FRAME_REF
, "FRAME_REF"}),
232 DECLARE_EVENT_CLASS(v4l2_ctrl_h264_decode_params_tmpl
,
233 TP_PROTO(const struct v4l2_ctrl_h264_decode_params
*d
),
235 TP_STRUCT__entry(__field_struct(struct v4l2_ctrl_h264_decode_params
, d
)),
236 TP_fast_assign(__entry
->d
= *d
),
237 TP_printk("\nnal_ref_idc %u\n"
239 "top_field_order_cnt %d\n"
240 "bottom_field_order_cnt %d\n"
242 "pic_order_cnt_lsb %u\n"
243 "delta_pic_order_cnt_bottom %d\n"
244 "delta_pic_order_cnt0 %d\n"
245 "delta_pic_order_cnt1 %d\n"
246 "dec_ref_pic_marking_bit_size %u\n"
247 "pic_order_cnt_bit_size %u\n"
248 "slice_group_change_cycle %u\n"
250 __entry
->d
.nal_ref_idc
,
251 __entry
->d
.frame_num
,
252 __entry
->d
.top_field_order_cnt
,
253 __entry
->d
.bottom_field_order_cnt
,
254 __entry
->d
.idr_pic_id
,
255 __entry
->d
.pic_order_cnt_lsb
,
256 __entry
->d
.delta_pic_order_cnt_bottom
,
257 __entry
->d
.delta_pic_order_cnt0
,
258 __entry
->d
.delta_pic_order_cnt1
,
259 __entry
->d
.dec_ref_pic_marking_bit_size
,
260 __entry
->d
.pic_order_cnt_bit_size
,
261 __entry
->d
.slice_group_change_cycle
,
262 __print_flags(__entry
->d
.flags
, "|",
263 {V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC
, "IDR_PIC"},
264 {V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC
, "FIELD_PIC"},
265 {V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD
, "BOTTOM_FIELD"},
266 {V4L2_H264_DECODE_PARAM_FLAG_PFRAME
, "PFRAME"},
267 {V4L2_H264_DECODE_PARAM_FLAG_BFRAME
, "BFRAME"})
271 DECLARE_EVENT_CLASS(v4l2_h264_dpb_entry_tmpl
,
272 TP_PROTO(const struct v4l2_h264_dpb_entry
*e
, int i
),
274 TP_STRUCT__entry(__field_struct(struct v4l2_h264_dpb_entry
, e
)
276 TP_fast_assign(__entry
->e
= *e
; __entry
->i
= i
;),
277 TP_printk("[%d]: reference_ts %llu, pic_num %u frame_num %u fields %s "
278 "top_field_order_cnt %d bottom_field_order_cnt %d flags %s",
280 __entry
->e
.reference_ts
,
282 __entry
->e
.frame_num
,
283 __print_flags(__entry
->e
.fields
, "|",
284 {V4L2_H264_TOP_FIELD_REF
, "TOP_FIELD_REF"},
285 {V4L2_H264_BOTTOM_FIELD_REF
, "BOTTOM_FIELD_REF"},
286 {V4L2_H264_FRAME_REF
, "FRAME_REF"}),
287 __entry
->e
.top_field_order_cnt
,
288 __entry
->e
.bottom_field_order_cnt
,
289 __print_flags(__entry
->e
.flags
, "|",
290 {V4L2_H264_DPB_ENTRY_FLAG_VALID
, "VALID"},
291 {V4L2_H264_DPB_ENTRY_FLAG_ACTIVE
, "ACTIVE"},
292 {V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM
, "LONG_TERM"},
293 {V4L2_H264_DPB_ENTRY_FLAG_FIELD
, "FIELD"})
298 DEFINE_EVENT(v4l2_ctrl_h264_sps_tmpl
, v4l2_ctrl_h264_sps
,
299 TP_PROTO(const struct v4l2_ctrl_h264_sps
*s
),
303 DEFINE_EVENT(v4l2_ctrl_h264_pps_tmpl
, v4l2_ctrl_h264_pps
,
304 TP_PROTO(const struct v4l2_ctrl_h264_pps
*p
),
308 DEFINE_EVENT(v4l2_ctrl_h264_scaling_matrix_tmpl
, v4l2_ctrl_h264_scaling_matrix
,
309 TP_PROTO(const struct v4l2_ctrl_h264_scaling_matrix
*s
),
313 DEFINE_EVENT(v4l2_ctrl_h264_pred_weights_tmpl
, v4l2_ctrl_h264_pred_weights
,
314 TP_PROTO(const struct v4l2_ctrl_h264_pred_weights
*p
),
318 DEFINE_EVENT(v4l2_ctrl_h264_slice_params_tmpl
, v4l2_ctrl_h264_slice_params
,
319 TP_PROTO(const struct v4l2_ctrl_h264_slice_params
*s
),
323 DEFINE_EVENT(v4l2_h264_reference_tmpl
, v4l2_h264_ref_pic_list0
,
324 TP_PROTO(const struct v4l2_h264_reference
*r
, int i
),
328 DEFINE_EVENT(v4l2_h264_reference_tmpl
, v4l2_h264_ref_pic_list1
,
329 TP_PROTO(const struct v4l2_h264_reference
*r
, int i
),
333 DEFINE_EVENT(v4l2_ctrl_h264_decode_params_tmpl
, v4l2_ctrl_h264_decode_params
,
334 TP_PROTO(const struct v4l2_ctrl_h264_decode_params
*d
),
338 DEFINE_EVENT(v4l2_h264_dpb_entry_tmpl
, v4l2_h264_dpb_entry
,
339 TP_PROTO(const struct v4l2_h264_dpb_entry
*e
, int i
),
345 #undef TRACE_INCLUDE_PATH
346 #undef TRACE_INCLUDE_FILE
347 #define TRACE_INCLUDE_PATH ../../drivers/media/test-drivers/visl
348 #define TRACE_INCLUDE_FILE visl-trace-h264
349 #include <trace/define_trace.h>