STRUCT PISP_BE_SHARPEN_CONFIG(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 NAME 🌸

struct pisp_be_sharpen_config β€” the PiSP Back End Sharpening config πŸ’… that's literally it, that's the name, periodt.

So this is the page for <italic>struct pisp_be_sharpen_config(9)</italic> from the Kernel API Manual, and bestie, we are getting into the sharpening config of the PiSP Back End. Buckle up, it's giving struct energy ✨


πŸ¦‹ SYNOPSIS πŸ¦‹

okay so here's the whole struct, copied exactly, no cap, character for character β€” don't let the wall of fields scare you, we'll walk through every single one πŸ‘‡

struct pisp_be_sharpen_config {
    __s8 kernel0[PISP_BE_SHARPEN_SIZE * PISP_BE_SHARPEN_SIZE];
    __s8 pad0[3];
    __s8 kernel1[PISP_BE_SHARPEN_SIZE * PISP_BE_SHARPEN_SIZE];
    __s8 pad1[3];
    __s8 kernel2[PISP_BE_SHARPEN_SIZE * PISP_BE_SHARPEN_SIZE];
    __s8 pad2[3];
    __s8 kernel3[PISP_BE_SHARPEN_SIZE * PISP_BE_SHARPEN_SIZE];
    __s8 pad3[3];
    __s8 kernel4[PISP_BE_SHARPEN_SIZE * PISP_BE_SHARPEN_SIZE];
    __s8 pad4[3];
    __u16 threshold_offset0;
    __u16 threshold_slope0;
    __u16 scale0;
    __u16 pad5;
    __u16 threshold_offset1;
    __u16 threshold_slope1;
    __u16 scale1;
    __u16 pad6;
    __u16 threshold_offset2;
    __u16 threshold_slope2;
    __u16 scale2;
    __u16 pad7;
    __u16 threshold_offset3;
    __u16 threshold_slope3;
    __u16 scale3;
    __u16 pad8;
    __u16 threshold_offset4;
    __u16 threshold_slope4;
    __u16 scale4;
    __u16 pad9;
    __u16 positive_strength;
    __u16 positive_pre_limit;
    __u16 positive_func[PISP_BE_SHARPEN_FUNC_NUM_POINTS];
    __u16 positive_limit;
    __u16 negative_strength;
    __u16 negative_pre_limit;
    __u16 negative_func[PISP_BE_SHARPEN_FUNC_NUM_POINTS];
    __u16 negative_limit;
    __u8 enables;
    __u8 white;
    __u8 black;
    __u8 grey;
 };

πŸŽ€ Members πŸŽ€

forty-two fields, bestie, and I'm gonna hype up every single one 🫢

πŸ“ the kernels & their little padding besties

  • kernel0 β€” coefficient for filter 0 πŸ”₯
  • pad0 β€” padding byte (just vibes, padding through)
  • kernel1 β€” coefficient for filter 1
  • pad1 β€” padding byte
  • kernel2 β€” coefficient for filter 2
  • pad2 β€” padding byte
  • kernel3 β€” coefficient for filter 3
  • kernel4 β€” coefficient for filter 4
  • pad3 β€” padding byte
  • pad4 β€” padding byte

(yes the pad bytes got shuffled in the list order there β€” pad3 and pad4 are sitting together but in the struct they follow kernel3 and kernel4 respectively, and honestly? they're padding, they don't mind πŸ’€)

🌈 the threshold / slope / scale triplets

  • threshold_offset0 β€” offset for filter 0 response calculation
  • threshold_slope0 β€” slope multiplier for the filter 0 response calculation
  • scale0 β€” scale factor for filter 0 response calculation
  • pad5 β€” padding byte
heads up bestie: the source literally says "filter 0" in the descriptions for threshold_offset1 through threshold_offset4 too. not me mistyping, that's just how it is, iykyk πŸ‘€
  • threshold_offset1 β€” offset for filter 0 response calculation
  • threshold_slope1 β€” slope multiplier for the filter 0 response calculation
  • scale1 β€” scale factor for filter 0 response calculation
  • pad6 β€” padding byte
  • threshold_offset2 β€” offset for filter 0 response calculation
  • threshold_slope2 β€” slope multiplier for the filter 0 response calculation
  • scale2 β€” scale factor for filter 0 response calculation
  • pad7 β€” padding byte
  • threshold_offset3 β€” offset for filter 0 response calculation
  • threshold_slope3 β€” slope multiplier for the filter 0 response calculation
  • scale3 β€” scale factor for filter 0 response calculation
  • pad8 β€” padding byte
  • threshold_offset4 β€” offset for filter 0 response calculation
  • threshold_slope4 β€” slope multiplier for the filter 0 response calculation
  • scale4 β€” scale factor for filter 0 response calculation
  • pad9 β€” padding byte

πŸ’– positive sharpening squad

  • positive_strength β€” factor that scales the positive sharpening strength πŸ’ͺ
  • positive_pre_limit β€” the maximum allowed possible positive sharpening value (the ceiling, the limit, the "know your place")
  • positive_func β€” gain factor applied to positive sharpening response ✨ array of PISP_BE_SHARPEN_FUNC_NUM_POINTS, so it's a whole little curve
  • positive_limit β€” the final gain factor applied to positive sharpening πŸŽ€

πŸ’œ negative sharpening squad

  • negative_strength β€” factor that scales the negative sharpening strength
  • negative_pre_limit β€” the maximum allowed possible negative sharpening value
  • negative_func β€” gain factor applied to negative sharpening response ✨ also PISP_BE_SHARPEN_FUNC_NUM_POINTS of them
  • negative_limit β€” the final gain factor applied to negative sharpening πŸŽ€

🧚 the masks & the enable

  • enables β€” filter enable mask πŸ”˜
  • white β€” white output pixel filter mask
  • black β€” black output pixel filter mask
  • grey β€” grey output pixel filter mask

πŸ’€ Description πŸ’€

Sharpening configuration.

that's it. that's what the source says. iconic minimalism, honestly, the manpage said "sharpening configuration" and clocked out ✌️ the whole struct above is the elaboration, bestie, every field we just went through is the sharpening configuration πŸ’–


⭐ SEE ALSO ⭐

the kernel file where all of this actually lives:

  • ./include/uapi/linux/media/raspberrypi/pisp_be_config.h

and the whole friend group, all the sibling structs and enums, in the order they're listed:

  • struct pisp_be_global_config(9)
  • struct pisp_be_input_buffer_config(9)
  • struct pisp_be_dpc_config(9)
  • struct pisp_be_geq_config(9)
  • struct pisp_be_tdn_input_buffer_config(9)
  • struct pisp_be_tdn_config(9)
  • struct pisp_be_tdn_output_buffer_config(9)
  • struct pisp_be_sdn_config(9)
  • struct pisp_be_stitch_input_buffer_config(9)
  • struct pisp_be_stitch_config(9)
  • struct pisp_be_stitch_output_buffer_config(9)
  • struct pisp_be_cdn_config(9)
  • struct pisp_be_lsc_config(9)
  • struct pisp_be_lsc_extra(9)
  • struct pisp_be_cac_config(9)
  • struct pisp_be_cac_extra(9)
  • struct pisp_be_debin_config(9)
  • struct pisp_be_tonemap_config(9)
  • struct pisp_be_demosaic_config(9)
  • struct pisp_be_ccm_config(9)
  • struct pisp_be_sat_control_config(9)
  • struct pisp_be_false_colour_config(9)
  • struct pisp_be_sh_fc_combine_config(9)
  • struct pisp_be_gamma_config(9)
  • struct pisp_be_crop_config(9)
  • struct pisp_be_resample_config(9)
  • struct pisp_be_resample_extra(9)
  • struct pisp_be_downscale_config(9)
  • struct pisp_be_downscale_extra(9)
  • struct pisp_be_hog_config(9)
  • enum pisp_be_transform(9)
  • struct pisp_be_output_buffer_config(9)
  • struct pisp_be_hog_buffer_config(9)
  • struct pisp_be_config(9)
  • enum pisp_tile_edge(9)
  • struct pisp_tile(9)
  • struct pisp_be_tiles_config(9)

ngl, that SEE ALSO list is a whole group chat and struct pisp_be_sharpen_config(9) is the main character of this particular page πŸ‘‘

okay and finally the cute little sign-off, because the footer deserves its moment too πŸŽ€ this page came from ./include/uapi/linux/media/ras... (yes, the source path in the footer is literally truncated like that, we love a mysterious ellipsis), it's dated October 2026 🌸, and the whole thing is titled struct pisp...arpen_config(9) β€” which, same, truncated and adorable. the footer line read exactly ./include/uapi/linux/media/ras... October 2026 struct pisp...arpen_config(9), and that's a wrap bestie, slay πŸ’–βœ¨πŸ¦‹

πŸ“¦ where this page comes from