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_ 4 5 #include <linux/tracepoint.h> 6 #include "visl.h" 7 8 #undef TRACE_SYSTEM 9 #define TRACE_SYSTEM visl_h264_controls 10 11 DECLARE_EVENT_CLASS(v4l2_ctrl_h264_sps_tmpl, 12 TP_PROTO(const struct v4l2_ctrl_h264_sps *s), 13 TP_ARGS(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" 18 "level_idc %u\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" 33 "flags %s", 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"}), 42 __entry->s.level_idc, 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"} 67 )) 68 ); 69 70 DECLARE_EVENT_CLASS(v4l2_ctrl_h264_pps_tmpl, 71 TP_PROTO(const struct v4l2_ctrl_h264_pps *p), 72 TP_ARGS(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" 85 "flags %s", 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"} 105 )) 106 ); 107 108 DECLARE_EVENT_CLASS(v4l2_ctrl_h264_scaling_matrix_tmpl, 109 TP_PROTO(const struct v4l2_ctrl_h264_scaling_matrix *s), 110 TP_ARGS(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), 117 false), 118 __print_hex_dump("", DUMP_PREFIX_NONE, 32, 1, 119 __entry->s.scaling_list_8x8, 120 sizeof(__entry->s.scaling_list_8x8), 121 false) 122 ) 123 ); 124 125 DECLARE_EVENT_CLASS(v4l2_ctrl_h264_pred_weights_tmpl, 126 TP_PROTO(const struct v4l2_ctrl_h264_pred_weights *p), 127 TP_ARGS(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), 151 false), 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), 155 false), 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), 165 false), 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), 169 false) 170 ) 171 ); 172 173 DECLARE_EVENT_CLASS(v4l2_ctrl_h264_slice_params_tmpl, 174 TP_PROTO(const struct v4l2_ctrl_h264_slice_params *s), 175 TP_ARGS(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" 180 "slice_type %s\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" 191 "flags %s", 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"}) 213 ) 214 ); 215 216 DECLARE_EVENT_CLASS(v4l2_h264_reference_tmpl, 217 TP_PROTO(const struct v4l2_h264_reference *r, int i), 218 TP_ARGS(r, i), 219 TP_STRUCT__entry(__field_struct(struct v4l2_h264_reference, r) 220 __field(int, i)), 221 TP_fast_assign(__entry->r = *r; __entry->i = i;), 222 TP_printk("[%d]: fields %s index %u", 223 __entry->i, 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"}), 228 __entry->r.index 229 ) 230 ); 231 232 DECLARE_EVENT_CLASS(v4l2_ctrl_h264_decode_params_tmpl, 233 TP_PROTO(const struct v4l2_ctrl_h264_decode_params *d), 234 TP_ARGS(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" 238 "frame_num %u\n" 239 "top_field_order_cnt %d\n" 240 "bottom_field_order_cnt %d\n" 241 "idr_pic_id %u\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" 249 "flags %s\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"}) 268 ) 269 ); 270 271 DECLARE_EVENT_CLASS(v4l2_h264_dpb_entry_tmpl, 272 TP_PROTO(const struct v4l2_h264_dpb_entry *e, int i), 273 TP_ARGS(e, i), 274 TP_STRUCT__entry(__field_struct(struct v4l2_h264_dpb_entry, e) 275 __field(int, i)), 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", 279 __entry->i, 280 __entry->e.reference_ts, 281 __entry->e.pic_num, 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"}) 294 295 ) 296 ); 297 298 DEFINE_EVENT(v4l2_ctrl_h264_sps_tmpl, v4l2_ctrl_h264_sps, 299 TP_PROTO(const struct v4l2_ctrl_h264_sps *s), 300 TP_ARGS(s) 301 ); 302 303 DEFINE_EVENT(v4l2_ctrl_h264_pps_tmpl, v4l2_ctrl_h264_pps, 304 TP_PROTO(const struct v4l2_ctrl_h264_pps *p), 305 TP_ARGS(p) 306 ); 307 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), 310 TP_ARGS(s) 311 ); 312 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), 315 TP_ARGS(p) 316 ); 317 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), 320 TP_ARGS(s) 321 ); 322 323 DEFINE_EVENT(v4l2_h264_reference_tmpl, v4l2_h264_ref_pic_list0, 324 TP_PROTO(const struct v4l2_h264_reference *r, int i), 325 TP_ARGS(r, i) 326 ); 327 328 DEFINE_EVENT(v4l2_h264_reference_tmpl, v4l2_h264_ref_pic_list1, 329 TP_PROTO(const struct v4l2_h264_reference *r, int i), 330 TP_ARGS(r, i) 331 ); 332 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), 335 TP_ARGS(d) 336 ); 337 338 DEFINE_EVENT(v4l2_h264_dpb_entry_tmpl, v4l2_h264_dpb_entry, 339 TP_PROTO(const struct v4l2_h264_dpb_entry *e, int i), 340 TP_ARGS(e, i) 341 ); 342 343 #endif 344 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> 350