STRUCT IPU3_UAPI_AF_FILTER_CONFIG(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME

okay bestie, welcome to the Kernel API Manual page for struct ipu3_uapi_af_filter_config(9) β€” this icon is literally the AF 2D filter for contrast measurements. πŸ’…


✨ SYNOPSIS

here's the struct in all its glory, no cap β€” keep it exactly like this if you're coding along:

       struct ipu3_uapi_af_filter_config {
           struct {
             __u8 a1;
             __u8 a2;
             __u8 a3;
             __u8 a4;
           } y1_coeff_0;
           struct {
             __u8 a5;
             __u8 a6;
             __u8 a7;
             __u8 a8;
           } y1_coeff_1;
           struct {
             __u8 a9;
             __u8 a10;
             __u8 a11;
             __u8 a12;
           } y1_coeff_2;
           __u32 y1_sign_vec;
           struct {
             __u8 a1;
             __u8 a2;
             __u8 a3;
             __u8 a4;
           } y2_coeff_0;
           struct {
             __u8 a5;
             __u8 a6;
             __u8 a7;
             __u8 a8;
           } y2_coeff_1;
           struct {
             __u8 a9;
             __u8 a10;
             __u8 a11;
             __u8 a12;
           } y2_coeff_2;
           __u32 y2_sign_vec;
           struct {
             __u8 y_gen_rate_gr;
             __u8 y_gen_rate_r;
             __u8 y_gen_rate_b;
             __u8 y_gen_rate_gb;
           } y_calc;
           struct {
             __u32 reserved0:8;
             __u32 y1_nf:4;
             __u32 reserved1:4;
             __u32 y2_nf:4;
             __u32 reserved2:12;
           } nf;
        };

πŸŽ€ Members

these are all the little fields inside the struct, with their defaults and everything β€” every single one, periodt. πŸ’–

  • y1_coeff_0 β€” filter Y1, structure: 3x11, support both symmetry and anti-symmetry type. A12 is center, A1-A11 are neighbours. for analyzing low frequency content, used to calculate sum of gradients in x direction. πŸ¦‹
    • y1_coeff_0.a1 β€” filter1 coefficients A1, u8, default 0.
    • y1_coeff_0.a2 β€” filter1 coefficients A2, u8, default 0.
    • y1_coeff_0.a3 β€” filter1 coefficients A3, u8, default 0.
    • y1_coeff_0.a4 β€” filter1 coefficients A4, u8, default 0.
  • y1_coeff_1 β€” Struct
    • y1_coeff_1.a5 β€” filter1 coefficients A5, u8, default 0.
    • y1_coeff_1.a6 β€” filter1 coefficients A6, u8, default 0.
    • y1_coeff_1.a7 β€” filter1 coefficients A7, u8, default 0.
    • y1_coeff_1.a8 β€” filter1 coefficients A8, u8, default 0.
  • y1_coeff_2 β€” Struct
    • y1_coeff_2.a9 β€” filter1 coefficients A9, u8, default 0.
    • y1_coeff_2.a10 β€” filter1 coefficients A10, u8, default 0.
    • y1_coeff_2.a11 β€” filter1 coefficients A11, u8, default 0.
    • y1_coeff_2.a12 β€” filter1 coefficients A12, u8, default 128.
  • y1_sign_vec β€” Each bit corresponds to one coefficient sign bit, 0: positive, 1: negative, default 0.
  • y2_coeff_0 β€” Y2, same structure as Y1. For analyzing high frequency content.
    • y2_coeff_0.a1 β€” filter2 coefficients A1, u8, default 0.
    • y2_coeff_0.a2 β€” filter2 coefficients A2, u8, default 0.
    • y2_coeff_0.a3 β€” filter2 coefficients A3, u8, default 0.
    • y2_coeff_0.a4 β€” filter2 coefficients A4, u8, default 0.
  • y2_coeff_1 β€” Struct
    • y2_coeff_1.a5 β€” filter2 coefficients A5, u8, default 0.
    • y2_coeff_1.a6 β€” filter2 coefficients A6, u8, default 0.
    • y2_coeff_1.a7 β€” filter2 coefficients A7, u8, default 0.
    • y2_coeff_1.a8 β€” filter2 coefficients A8, u8, default 0.
  • y2_coeff_2 β€” Struct
    • y2_coeff_2.a9 β€” filter1 coefficients A9, u8, default 0.
    • y2_coeff_2.a10 β€” filter1 coefficients A10, u8, default 0.
    • y2_coeff_2.a11 β€” filter1 coefficients A11, u8, default 0.
    • y2_coeff_2.a12 β€” filter1 coefficients A12, u8, default 128.
  • y2_sign_vec β€” Each bit corresponds to one coefficient sign bit, 0: positive, 1: negative, default 0.
  • y_calc β€” Pre-processing that converts Bayer quad to RGB+Y values to be used for building histogram. Range [0, 32], default 8.
    • y_calc.y_gen_rate_gr β€” Contribution ratio Gr for Y
    • y_calc.y_gen_rate_r β€” Contribution ratio R for Y
    • y_calc.y_gen_rate_b β€” Contribution ratio B for Y
    • y_calc.y_gen_rate_gb β€” Contribution ratio Gb for Y
  • nf β€” The shift right value that should be applied during the Y1/Y2 filter to make sure the total memory needed is 2 bytes per grid cell.
    • nf.reserved0 β€” reserved
    • nf.y1_nf β€” Normalization factor for the convolution coeffs of y1, should be log2 of the sum of the abs values of the filter coeffs, default 7 (2^7 = 128).
    • nf.reserved1 β€” reserved
    • nf.y2_nf β€” Normalization factor for y2, should be log2 of the sum of the abs values of the filter coeffs.
    • nf.reserved2 β€” reserved

🌸 Description

the rule is literally this, bestie: y_gen_rate_gr + y_gen_rate_r + y_gen_rate_b + y_gen_rate_gb = 32. A single Y is calculated based on sum of Gr/R/B/Gb based on their contribution ratio. ✨


πŸ‘€ SEE ALSO

the whole related-struct friend group is right here β€” Kernel file: ./drivers/staging/media/ipu3/include/uapi/intel-ipu3.h

  • Kernel file β€” ./drivers/staging/media/ipu3/include/uapi/intel-ipu3.h
  • struct ipu3_uapi_grid_config(9)
  • struct ipu3_uapi_awb_set_item(9)
  • struct ipu3_uapi_awb_raw_buffer(9)
  • struct ipu3_uapi_awb_config_s(9)
  • struct ipu3_uapi_awb_config(9)
  • struct ipu3_uapi_ae_raw_buffer(9)
  • struct ipu3_uapi_ae_raw_buffer_aligned(9)
  • struct ipu3_uapi_ae_grid_config(9)
  • struct ipu3_uapi_ae_weight_elem(9)
  • struct ipu3_uapi_ae_ccm(9)
  • struct ipu3_uapi_ae_config(9)
  • struct ipu3_uapi_af_raw_buffer(9)
  • struct ipu3_uapi_af_config_s(9)
  • struct ipu3_uapi_awb_fr_raw_buffer(9)
  • struct ipu3_uapi_awb_fr_config_s(9)
  • struct ipu3_uapi_4a_config(9)
  • struct ipu3_uapi_bubble_info(9)
  • struct ipu3_uapi_ff_status(9)
  • struct ipu3_uapi_stats_3a(9)
  • struct ipu3_uapi_bnr_static_config_wb_gains_config(9)
  • struct ipu3_uapi_bnr_static_config_wb_gains_thr_config(9)
  • struct ipu3_uapi_bnr_static_config_thr_coeffs_config(9)
  • struct ipu3_uapi_bnr_static_config_thr_ctrl_shd_config(9)
  • struct ipu3_uapi_bnr_static_config_opt_center_config(9)
  • struct ipu3_uapi_bnr_static_config_lut_config(9)
  • struct ipu3_uapi_bnr_static_config_bp_ctrl_config(9)
  • struct ipu3_uapi_bnr_static_config_dn_detect_ctrl_config(9)
  • struct ipu3_uapi_bnr_static_config_opt_center_sqr_config(9)
  • struct ipu3_uapi_bnr_static_config(9)
  • struct ipu3_uapi_bnr_static_config_green_disparity(9)
  • struct ipu3_uapi_dm_config(9)
  • struct ipu3_uapi_ccm_mat_config(9)
  • struct ipu3_uapi_gamma_corr_ctrl(9)
  • struct ipu3_uapi_gamma_corr_lut(9)
  • struct ipu3_uapi_gamma_config(9)
  • struct ipu3_uapi_csc_mat_config(9)
  • struct ipu3_uapi_cds_params(9)
  • struct ipu3_uapi_shd_grid_config(9)
  • struct ipu3_uapi_shd_general_config(9)
  • struct ipu3_uapi_shd_black_level_config(9)
  • struct ipu3_uapi_shd_config_static(9)
  • struct ipu3_uapi_shd_lut(9)
  • struct ipu3_uapi_shd_config(9)
  • struct ipu3_uapi_iefd_cux2(9)
  • struct ipu3_uapi_iefd_cux6_ed(9)
  • struct ipu3_uapi_iefd_cux2_1(9)
  • struct ipu3_uapi_iefd_cux4(9)
  • struct ipu3_uapi_iefd_cux6_rad(9)
  • struct ipu3_uapi_yuvp1_iefd_cfg_units(9)
  • struct ipu3_uapi_yuvp1_iefd_config_s(9)
  • struct ipu3_uapi_yuvp1_iefd_control(9)
  • struct ipu3_uapi_sharp_cfg(9)
  • struct ipu3_uapi_far_w(9)
  • struct ipu3_uapi_unsharp_cfg(9)
  • struct ipu3_uapi_yuvp1_iefd_shrp_cfg(9)
  • struct ipu3_uapi_unsharp_coef0(9)
  • struct ipu3_uapi_unsharp_coef1(9)
  • struct ipu3_uapi_yuvp1_iefd_unshrp_cfg(9)
  • struct ipu3_uapi_radial_reset_xy(9)
  • struct ipu3_uapi_radial_reset_x2(9)
  • struct ipu3_uapi_radial_reset_y2(9)
  • struct ipu3_uapi_radial_cfg(9)
  • struct ipu3_uapi_rad_far_w(9)
  • struct ipu3_uapi_cu_cfg0(9)
  • struct ipu3_uapi_cu_cfg1(9)
  • struct ipu3_uapi_yuvp1_iefd_rad_cfg(9)
  • struct ipu3_uapi_vss_lut_x(9)
  • struct ipu3_uapi_vss_lut_y(9)
  • struct ipu3_uapi_yuvp1_iefd_vssnlm_cfg(9)
  • struct ipu3_uapi_yuvp1_iefd_config(9)
  • struct ipu3_uapi_yuvp1_yds_config(9)
  • struct ipu3_uapi_yuvp1_chnr_enable_config(9)
  • struct ipu3_uapi_yuvp1_chnr_coring_config(9)
  • struct ipu3_uapi_yuvp1_chnr_sense_gain_config(9)
  • struct ipu3_uapi_yuvp1_chnr_iir_fir_config(9)
  • struct ipu3_uapi_yuvp1_chnr_config(9)
  • struct ipu3_uapi_yuvp1_y_ee_nr_lpf_config(9)
  • struct ipu3_uapi_yuvp1_y_ee_nr_sense_config(9)
  • struct ipu3_uapi_yuvp1_y_ee_nr_gain_config(9)
  • struct ipu3_uapi_yuvp1_y_ee_nr_clip_config(9)
  • struct ipu3_uapi_yuvp1_y_ee_nr_frng_config(9)
  • struct ipu3_uapi_yuvp1_y_ee_nr_diag_config(9)
  • struct ipu3_uapi_yuvp1_y_ee_nr_fc_coring_config(9)
  • struct ipu3_uapi_yuvp1_y_ee_nr_config(9)
  • struct ipu3_uapi_yuvp2_tcc_gen_control_static_config(9)
  • struct ipu3_uapi_yuvp2_tcc_macc_elem_static_config(9)
  • struct ipu3_uapi_yuvp2_tcc_macc_table_static_config(9)
  • struct ipu3_uapi_yuvp2_tcc_inv_y_lut_static_config(9)
  • struct ipu3_uapi_yuvp2_tcc_gain_pcwl_lut_static_config(9)
  • struct ipu3_uapi_yuvp2_tcc_r_sqr_lut_static_config(9)
  • struct ipu3_uapi_yuvp2_tcc_static_config(9)
  • struct ipu3_uapi_anr_transform_config(9)
  • struct ipu3_uapi_anr_stitch_pyramid(9)
  • struct ipu3_uapi_anr_stitch_config(9)
  • struct ipu3_uapi_anr_config(9)
  • struct ipu3_uapi_acc_param(9)
  • struct ipu3_uapi_isp_lin_vmem_params(9)
  • struct ipu3_uapi_isp_tnr3_vmem_params(9)
  • struct ipu3_uapi_isp_tnr3_params(9)
  • struct ipu3_uapi_isp_xnr3_vmem_params(9)
  • struct ipu3_uapi_xnr3_alpha_params(9)
  • struct ipu3_uapi_xnr3_coring_params(9)
  • struct ipu3_uapi_xnr3_blending_params(9)
  • struct ipu3_uapi_isp_xnr3_params(9)
  • struct ipu3_uapi_obgrid_param(9)
  • struct ipu3_uapi_flags(9)
  • struct ipu3_uapi_params(9)

mwah πŸ’‹ that's the whole page, bestie. source/version check: ./drivers/staging/media/ipu3/i..., dated October 2026, footer tag struct ipu3...ilter_config(9). stay slay 🫢

πŸ“¦ where this page comes from