/* * We use the enable flags to show when blocks are "dirty", but we need some * extra ones too.
*/ enum pisp_be_dirty {
PISP_BE_DIRTY_GLOBAL = 0x0001,
PISP_BE_DIRTY_SH_FC_COMBINE = 0x0002,
PISP_BE_DIRTY_CROP = 0x0004
};
/** * struct pisp_be_input_buffer_config - PiSP Back End input buffer * @addr: Input buffer address
*/ struct pisp_be_input_buffer_config { /* low 32 bits followed by high 32 bits (for each of up to 3 planes) */
__u32 addr[3][2];
} __attribute__((packed));
/** * struct pisp_be_dpc_config - PiSP Back End DPC config * * Defective Pixel Correction configuration * * @coeff_level: Coefficient for the darkest neighbouring pixel value * @coeff_range: Coefficient for the range of pixels for this Bayer channel * @pad: Padding byte * @flags: DPC configuration flags
*/ struct pisp_be_dpc_config {
__u8 coeff_level;
__u8 coeff_range;
__u8 pad; #define PISP_BE_DPC_FLAG_FOLDBACK 1
__u8 flags;
} __attribute__((packed));
/** * struct pisp_be_geq_config - PiSP Back End GEQ config * * Green Equalisation configuration * * @offset: Offset value for threshold calculation * @slope_sharper: Slope/Sharper configuration * @min: Minimum value the threshold may have * @max: Maximum value the threshold may have
*/ struct pisp_be_geq_config {
__u16 offset; #define PISP_BE_GEQ_SHARPER (1U << 15) #define PISP_BE_GEQ_SLOPE ((1 << 10) - 1) /* top bit is the "sharper" flag, slope value is bottom 10 bits */
__u16 slope_sharper;
__u16 min;
__u16 max;
} __attribute__((packed));
/** * struct pisp_be_tdn_input_buffer_config - PiSP Back End TDN input buffer * @addr: TDN input buffer address
*/ struct pisp_be_tdn_input_buffer_config { /* low 32 bits followed by high 32 bits */
__u32 addr[2];
} __attribute__((packed));
/** * struct pisp_be_tdn_config - PiSP Back End TDN config * * Temporal Denoise configuration * * @black_level: Black level value subtracted from pixels * @ratio: Multiplier for the LTA input frame * @noise_constant: Constant offset value used in noise estimation * @noise_slope: Noise estimation multiplier * @threshold: Threshold for TDN operations * @reset: Disable TDN operations * @pad: Padding byte
*/ struct pisp_be_tdn_config {
__u16 black_level;
__u16 ratio;
__u16 noise_constant;
__u16 noise_slope;
__u16 threshold;
__u8 reset;
__u8 pad;
} __attribute__((packed));
/** * struct pisp_be_tdn_output_buffer_config - PiSP Back End TDN output buffer * @addr: TDN output buffer address
*/ struct pisp_be_tdn_output_buffer_config { /* low 32 bits followed by high 32 bits */
__u32 addr[2];
} __attribute__((packed));
/** * struct pisp_be_sdn_config - PiSP Back End SDN config * * Spatial Denoise configuration * * @black_level: Black level subtracted from pixel for noise estimation * @leakage: Proportion of the original undenoised value to mix in * denoised output * @pad: Padding byte * @noise_constant: Noise constant used for noise estimation * @noise_slope: Noise slope value used for noise estimation * @noise_constant2: Second noise constant used for noise estimation * @noise_slope2: Second slope value used for noise estimation
*/ struct pisp_be_sdn_config {
__u16 black_level;
__u8 leakage;
__u8 pad;
__u16 noise_constant;
__u16 noise_slope;
__u16 noise_constant2;
__u16 noise_slope2;
} __attribute__((packed));
/** * struct pisp_be_stitch_input_buffer_config - PiSP Back End Stitch input * @addr: Stitch input buffer address
*/ struct pisp_be_stitch_input_buffer_config { /* low 32 bits followed by high 32 bits */
__u32 addr[2];
} __attribute__((packed));
/** * struct pisp_be_stitch_config - PiSP Back End Stitch config * * Stitch block configuration * * @threshold_lo: Low threshold value * @threshold_diff_power: Low and high threshold difference * @pad: Padding bytes * @exposure_ratio: Multiplier to convert long exposure pixels into * short exposure pixels * @motion_threshold_256: Motion threshold above which short exposure * pixels are used * @motion_threshold_recip: Reciprocal of motion_threshold_256 value
*/ struct pisp_be_stitch_config {
__u16 threshold_lo;
__u8 threshold_diff_power;
__u8 pad;
/* top bit indicates whether streaming input is the long exposure */
__u16 exposure_ratio;
/** * struct pisp_be_stitch_output_buffer_config - PiSP Back End Stitch output * @addr: Stitch input buffer address
*/ struct pisp_be_stitch_output_buffer_config { /* low 32 bits followed by high 32 bits */
__u32 addr[2];
} __attribute__((packed));
/** * struct pisp_be_cdn_config - PiSP Back End CDN config * * Colour Denoise configuration * * @thresh: Constant for noise estimation * @iir_strength: Relative strength of the IIR part of the filter * @g_adjust: Proportion of the change assigned to the G channel
*/ struct pisp_be_cdn_config {
__u16 thresh;
__u8 iir_strength;
__u8 g_adjust;
} __attribute__((packed));
/** * struct pisp_be_lsc_extra - PiSP Back End LSC Extra config * @offset_x: Horizontal offset into the LSC table of this tile * @offset_y: Vertical offset into the LSC table of this tile
*/ struct pisp_be_lsc_extra {
__u16 offset_x;
__u16 offset_y;
} __attribute__((packed));
/** * struct pisp_be_cac_extra - PiSP Back End CAC extra config * @offset_x: Horizontal offset into the CAC table of this tile * @offset_y: Horizontal offset into the CAC table of this tile
*/ struct pisp_be_cac_extra {
__u16 offset_x;
__u16 offset_y;
} __attribute__((packed));
/** * struct pisp_be_sat_control_config - PiSP Back End SAT config * * Saturation Control configuration * * @shift_r: Left shift for Red colour channel * @shift_g: Left shift for Green colour channel * @shift_b: Left shift for Blue colour channel * @pad: Padding byte
*/ struct pisp_be_sat_control_config {
__u8 shift_r;
__u8 shift_g;
__u8 shift_b;
__u8 pad;
} __attribute__((packed));
/** * struct pisp_be_false_colour_config - PiSP Back End False Colour config * * False Colour configuration * * @distance: Distance of neighbouring pixels, either 1 or 2 * @pad: Padding bytes
*/ struct pisp_be_false_colour_config {
__u8 distance;
__u8 pad[3];
} __attribute__((packed));
/** * struct pisp_be_sharpen_config - PiSP Back End Sharpening config * * Sharpening configuration * * @kernel0: Coefficient for filter 0 * @pad0: Padding byte * @kernel1: Coefficient for filter 1 * @pad1: Padding byte * @kernel2: Coefficient for filter 2 * @pad2: Padding byte * @kernel3: Coefficient for filter 3 * @pad3: Padding byte * @kernel4: Coefficient for filter 4 * @pad4: Padding byte * @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 * @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_strength: Factor to scale the positive sharpening strength * @positive_pre_limit: Maximum allowed possible positive sharpening value * @positive_func: Gain factor applied to positive sharpening response * @positive_limit: Final gain factor applied to positive sharpening * @negative_strength: Factor to scale the negative sharpening strength * @negative_pre_limit: Maximum allowed possible negative sharpening value * @negative_func: Gain factor applied to negative sharpening response * @negative_limit: Final gain factor applied to negative sharpening * @enables: Filter enable mask * @white: White output pixel filter mask * @black: Black output pixel filter mask * @grey: Grey output pixel filter mask
*/ 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;
} __attribute__((packed));
/** * struct pisp_be_sh_fc_combine_config - PiSP Back End Sharpening and * False Colour config * * Sharpening and False Colour configuration * * @y_factor: Control amount of desaturation of pixels being darkened * @c1_factor: Control amount of brightening of a pixel for the Cb * channel * @c2_factor: Control amount of brightening of a pixel for the Cr * channel * @pad: Padding byte
*/ struct pisp_be_sh_fc_combine_config {
__u8 y_factor;
__u8 c1_factor;
__u8 c2_factor;
__u8 pad;
} __attribute__((packed));
/** * struct pisp_be_crop_config - PiSP Back End Crop config * * Crop configuration * * @offset_x: Number of pixels cropped from the left of the tile * @offset_y: Number of pixels cropped from the top of the tile * @width: Width of the cropped tile output * @height: Height of the cropped tile output
*/ struct pisp_be_crop_config {
__u16 offset_x, offset_y;
__u16 width, height;
} __attribute__((packed));
/** * struct pisp_be_hog_config - PiSP Back End HOG config * * Histogram of Oriented Gradients configuration * * @compute_signed: Set 0 for unsigned gradients, 1 for signed * @channel_mix: Channels proportions to use * @stride: Stride in bytes between blocks directly below
*/ struct pisp_be_hog_config {
__u8 compute_signed;
__u8 channel_mix[3];
__u32 stride;
} __attribute__((packed));
/** * enum pisp_tile_edge - PiSP Back End Tile position * @PISP_LEFT_EDGE: Left edge tile * @PISP_RIGHT_EDGE: Right edge tile * @PISP_TOP_EDGE: Top edge tile * @PISP_BOTTOM_EDGE: Bottom edge tile
*/ enum pisp_tile_edge {
PISP_LEFT_EDGE = (1 << 0),
PISP_RIGHT_EDGE = (1 << 1),
PISP_TOP_EDGE = (1 << 2),
PISP_BOTTOM_EDGE = (1 << 3)
};
/** * struct pisp_tile - Raspberry Pi PiSP Back End tile configuration * * Tile parameters: each set of tile parameters is a 160-bytes block of data * which contains the tile processing parameters. * * @edge: Edge tile flag * @pad0: Padding bytes * @input_addr_offset: Top-left pixel offset, in bytes * @input_addr_offset2: Top-left pixel offset, in bytes for the second/ * third image planes * @input_offset_x: Horizontal offset in pixels of this tile in the * input image * @input_offset_y: Vertical offset in pixels of this tile in the * input image * @input_width: Width in pixels of this tile * @input_height: Height in pixels of the this tile * @tdn_input_addr_offset: TDN input image offset, in bytes * @tdn_output_addr_offset: TDN output image offset, in bytes * @stitch_input_addr_offset: Stitch input image offset, in bytes * @stitch_output_addr_offset: Stitch output image offset, in bytes * @lsc_grid_offset_x: Horizontal offset in the LSC table for this tile * @lsc_grid_offset_y: Vertical offset in the LSC table for this tile * @cac_grid_offset_x: Horizontal offset in the CAC table for this tile * @cac_grid_offset_y: Horizontal offset in the CAC table for this tile * @crop_x_start: Number of pixels cropped from the left of the * tile * @crop_x_end: Number of pixels cropped from the right of the * tile * @crop_y_start: Number of pixels cropped from the top of the * tile * @crop_y_end: Number of pixels cropped from the bottom of the * tile * @downscale_phase_x: Initial horizontal phase in pixels * @downscale_phase_y: Initial vertical phase in pixels * @resample_in_width: Width in pixels of the tile entering the * Resample block * @resample_in_height: Height in pixels of the tile entering the * Resample block * @resample_phase_x: Initial horizontal phase for the Resample block * @resample_phase_y: Initial vertical phase for the Resample block * @output_offset_x: Horizontal offset in pixels where the tile will * be written into the output image * @output_offset_y: Vertical offset in pixels where the tile will be * written into the output image * @output_width: Width in pixels in the output image of this tile * @output_height: Height in pixels in the output image of this tile * @output_addr_offset: Offset in bytes into the output buffer * @output_addr_offset2: Offset in bytes into the output buffer for the * second and third plane * @output_hog_addr_offset: Offset in bytes into the HOG buffer where * results of this tile are to be written
*/ struct pisp_tile {
__u8 edge; /* enum pisp_tile_edge */
__u8 pad0[3]; /* 4 bytes */
__u32 input_addr_offset;
__u32 input_addr_offset2;
__u16 input_offset_x;
__u16 input_offset_y;
__u16 input_width;
__u16 input_height; /* 20 bytes */
__u32 tdn_input_addr_offset;
__u32 tdn_output_addr_offset;
__u32 stitch_input_addr_offset;
__u32 stitch_output_addr_offset; /* 36 bytes */
__u32 lsc_grid_offset_x;
__u32 lsc_grid_offset_y; /* 44 bytes */
__u32 cac_grid_offset_x;
__u32 cac_grid_offset_y; /* 52 bytes */
__u16 crop_x_start[PISP_BACK_END_NUM_OUTPUTS];
__u16 crop_x_end[PISP_BACK_END_NUM_OUTPUTS];
__u16 crop_y_start[PISP_BACK_END_NUM_OUTPUTS];
__u16 crop_y_end[PISP_BACK_END_NUM_OUTPUTS]; /* 68 bytes */ /* Ordering is planes then branches */
__u16 downscale_phase_x[3 * PISP_BACK_END_NUM_OUTPUTS];
__u16 downscale_phase_y[3 * PISP_BACK_END_NUM_OUTPUTS]; /* 92 bytes */
__u16 resample_in_width[PISP_BACK_END_NUM_OUTPUTS];
__u16 resample_in_height[PISP_BACK_END_NUM_OUTPUTS]; /* 100 bytes */ /* Ordering is planes then branches */
__u16 resample_phase_x[3 * PISP_BACK_END_NUM_OUTPUTS];
__u16 resample_phase_y[3 * PISP_BACK_END_NUM_OUTPUTS]; /* 124 bytes */
__u16 output_offset_x[PISP_BACK_END_NUM_OUTPUTS];
__u16 output_offset_y[PISP_BACK_END_NUM_OUTPUTS];
__u16 output_width[PISP_BACK_END_NUM_OUTPUTS];
__u16 output_height[PISP_BACK_END_NUM_OUTPUTS]; /* 140 bytes */
__u32 output_addr_offset[PISP_BACK_END_NUM_OUTPUTS];
__u32 output_addr_offset2[PISP_BACK_END_NUM_OUTPUTS]; /* 156 bytes */
__u32 output_hog_addr_offset; /* 160 bytes */
} __attribute__((packed));
/** * struct pisp_be_tiles_config - Raspberry Pi PiSP Back End configuration * @tiles: Tile descriptors * @num_tiles: Number of tiles * @config: PiSP Back End configuration
*/ struct pisp_be_tiles_config { struct pisp_be_config config; struct pisp_tile tiles[PISP_BACK_END_NUM_TILES];
__u32 num_tiles;
} __attribute__((packed));
#endif/* _UAPI_PISP_BE_CONFIG_H_ */
Messung V0.5
¤ Dauer der Verarbeitung: 0.2 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.