Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
rawprepare.c File Reference
#include "bauhaus/bauhaus.h"
#include "common/imageio_rawspeed.h"
#include "common/opencl.h"
#include "common/imagebuf.h"
#include "common/image.h"
#include "develop/imageop.h"
#include "develop/imageop_gui.h"
#include "develop/tiling.h"
#include "common/image_cache.h"
#include "gui/gtk.h"
#include "gui/presets.h"
#include "iop/iop_api.h"
#include "common/dng_opcode.h"
#include <gtk/gtk.h>
#include <stdint.h>
#include <stdlib.h>
+ Include dependency graph for rawprepare.c:

Go to the source code of this file.

Data Structures

struct  dt_iop_rawprepare_params_t
 
struct  dt_iop_rawprepare_gui_data_t
 
struct  dt_iop_rawprepare_data_t
 
struct  dt_iop_rawprepare_global_data_t
 

Typedefs

typedef enum dt_iop_rawprepare_flat_field_t dt_iop_rawprepare_flat_field_t
 
typedef struct dt_iop_rawprepare_params_t dt_iop_rawprepare_params_t
 
typedef struct dt_iop_rawprepare_gui_data_t dt_iop_rawprepare_gui_data_t
 
typedef struct dt_iop_rawprepare_data_t dt_iop_rawprepare_data_t
 
typedef struct dt_iop_rawprepare_global_data_t dt_iop_rawprepare_global_data_t
 

Enumerations

enum  dt_iop_rawprepare_flat_field_t {
  FLAT_FIELD_OFF = 0 ,
  FLAT_FIELD_EMBEDDED = 1
}
 

Functions

const char * name ()
 
int operation_tags ()
 
int flags ()
 
int default_group ()
 
int default_colorspace (dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_iop_t *piece)
 
int legacy_params (dt_iop_module_t *self, const void *const old_params, const int old_version, void *new_params, const int new_version)
 
const char ** description (struct dt_iop_module_t *self)
 
void init_presets (dt_iop_module_so_t *self)
 
static __attribute__ ((always_inline))
 
static void _update_output_cfa_descriptor (const dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_iop_t *piece, const dt_iop_roi_t *const roi_in, dt_iop_buffer_dsc_t *dsc)
 
int distort_transform (dt_iop_module_t *self, const dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_iop_t *piece, float *const restrict points, size_t points_count)
 
int distort_backtransform (dt_iop_module_t *self, const dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_iop_t *piece, float *const restrict points, size_t points_count)
 
void distort_mask (struct dt_iop_module_t *self, const struct dt_dev_pixelpipe_t *pipe, struct dt_dev_pixelpipe_iop_t *piece, const float *const in, float *const out, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out)
 
void modify_roi_out (dt_iop_module_t *self, const dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece, dt_iop_roi_t *roi_out, const dt_iop_roi_t *const roi_in)
 
void modify_roi_in (dt_iop_module_t *self, const dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece, const dt_iop_roi_t *const roi_out, dt_iop_roi_t *roi_in)
 
void output_format (dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece, dt_iop_buffer_dsc_t *dsc)
 
void input_format (dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece, dt_iop_buffer_dsc_t *dsc)
 
void autoset (struct dt_iop_module_t *self, const struct dt_dev_pixelpipe_t *pipe, const struct dt_dev_pixelpipe_iop_t *piece, const void *input)
 RawSpeed tends to under-evaluate the white point of RAW images, which leads to RGB values > 1 after normalization. We sanitize it here. It does the same for black point, which leads to negative RGB values, but detecting the min RGB here is not more robust to figure out black level per channel than RawSpeed reading black pixels (does it though ?).
 
__DT_CLONE_TARGETS__ int process (struct dt_iop_module_t *self, const dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_iop_t *piece, const void *const ivoid, void *const ovoid)
 
int process_cl (dt_iop_module_t *self, const dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_iop_t *piece, cl_mem dev_in, cl_mem dev_out)
 
static int image_is_normalized (const dt_image_t *const image)
 
static gboolean image_set_rawcrops (const int32_t imgid, int dx, int dy)
 
gboolean check_gain_maps (dt_iop_module_t *self, dt_dng_gain_map_t **gainmaps_out)
 
void commit_params (dt_iop_module_t *self, dt_iop_params_t *params, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece)
 
void init_pipe (dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece)
 
void cleanup_pipe (dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece)
 
static gboolean enable (const dt_image_t *image)
 
gboolean force_enable (struct dt_iop_module_t *self, const gboolean current_state)
 
void reload_defaults (dt_iop_module_t *self)
 
void init_global (dt_iop_module_so_t *self)
 
void cleanup_global (dt_iop_module_so_t *self)
 
void gui_update (dt_iop_module_t *self)
 Refresh GUI controls from current params and configuration.
 
void gui_changed (dt_iop_module_t *self, GtkWidget *w, void *previous)
 
void gui_init (dt_iop_module_t *self)
 

Variables

const gchar * black_label []
 

Typedef Documentation

◆ dt_iop_rawprepare_data_t

◆ dt_iop_rawprepare_flat_field_t

◆ dt_iop_rawprepare_global_data_t

◆ dt_iop_rawprepare_gui_data_t

◆ dt_iop_rawprepare_params_t

Enumeration Type Documentation

◆ dt_iop_rawprepare_flat_field_t

Enumerator
FLAT_FIELD_OFF 
FLAT_FIELD_EMBEDDED 

Definition at line 62 of file rawprepare.c.

Function Documentation

◆ __attribute__()

static __attribute__ ( (always_inline)  )
inlinestatic

Definition at line 199 of file rawprepare.c.

References dt_iop_roi_t::scale, and value.

◆ _update_output_cfa_descriptor()

static void _update_output_cfa_descriptor ( const dt_dev_pixelpipe_t pipe,
const dt_dev_pixelpipe_iop_t piece,
const dt_iop_roi_t *const  roi_in,
dt_iop_buffer_dsc_t dsc 
)
static

XTrans doc: XTrans sensors work by color filter tiles of 6x6 pixels, which are expected to start at the top-left corner of the image. When cropping images, depending on the number of trimmed pixels, we generally cut in the middle of the 6x6 pattern. So this corrects the phase shift to account for the current trimming, aka we reorder the filter coefficients for the current phase shift.

Definition at line 205 of file rawprepare.c.

References d, dt_dev_pixelpipe_iop_t::data, dt_dev_pixelpipe_t::dev, dt_image_t::dsc, dt_rawspeed_crop_dcraw_filters(), dt_iop_buffer_dsc_t::filters, i, dt_develop_t::image_storage, IS_NULL_PTR, dt_iop_roi_t::x, dt_iop_buffer_dsc_t::xtrans, and dt_iop_roi_t::y.

Referenced by modify_roi_in(), modify_roi_out(), and output_format().

◆ autoset()

void autoset ( struct dt_iop_module_t self,
const struct dt_dev_pixelpipe_t pipe,
const struct dt_dev_pixelpipe_iop_t piece,
const void input 
)

RawSpeed tends to under-evaluate the white point of RAW images, which leads to RGB values > 1 after normalization. We sanitize it here. It does the same for black point, which leads to negative RGB values, but detecting the min RGB here is not more robust to figure out black level per channel than RawSpeed reading black pixels (does it though ?).

Parameters
self
pipe
piece
input

Definition at line 384 of file rawprepare.c.

References __OMP_PARALLEL_FOR__, dt_iop_buffer_dsc_t::channels, dt_iop_buffer_dsc_t::datatype, dt_dev_pixelpipe_t::dev, dt_dev_pixelpipe_iop_t::dsc_in, dt_iop_buffer_dsc_t::filters, dt_iop_roi_t::height, i, dt_develop_t::image_storage, MAX, max, p, dt_iop_module_t::params, dt_image_t::raw_white_point, dt_dev_pixelpipe_iop_t::roi_in, dt_dev_pixelpipe_iop_t::roi_out, TYPE_UINT16, dt_iop_roi_t::width, dt_iop_roi_t::x, and dt_iop_roi_t::y.

◆ check_gain_maps()

gboolean check_gain_maps ( dt_iop_module_t self,
dt_dng_gain_map_t **  gainmaps_out 
)

◆ cleanup_global()

◆ cleanup_pipe()

void cleanup_pipe ( dt_iop_module_t self,
dt_dev_pixelpipe_t pipe,
dt_dev_pixelpipe_iop_t piece 
)

Definition at line 869 of file rawprepare.c.

References dt_dev_pixelpipe_iop_t::data, and dt_free_align.

◆ commit_params()

◆ default_colorspace()

int default_colorspace ( dt_iop_module_t self,
dt_dev_pixelpipe_t pipe,
const dt_dev_pixelpipe_iop_t piece 
)

◆ default_group()

int default_group ( )

Definition at line 132 of file rawprepare.c.

References IOP_GROUP_TECHNICAL.

◆ description()

const char ** description ( struct dt_iop_module_t self)

Definition at line 170 of file rawprepare.c.

References dt_iop_set_description().

◆ distort_backtransform()

int distort_backtransform ( dt_iop_module_t self,
const dt_dev_pixelpipe_t pipe,
const dt_dev_pixelpipe_iop_t piece,
float *const restrict  points,
size_t  points_count 
)

◆ distort_mask()

void distort_mask ( struct dt_iop_module_t self,
const struct dt_dev_pixelpipe_t pipe,
struct dt_dev_pixelpipe_iop_t piece,
const float *const  in,
float *const  out,
const dt_iop_roi_t *const  roi_in,
const dt_iop_roi_t *const  roi_out 
)

Definition at line 298 of file rawprepare.c.

References dt_iop_copy_image_roi(), out, TRUE, and void().

◆ distort_transform()

int distort_transform ( dt_iop_module_t self,
const dt_dev_pixelpipe_t pipe,
const dt_dev_pixelpipe_iop_t piece,
float *const restrict  points,
size_t  points_count 
)

◆ enable()

static gboolean enable ( const dt_image_t image)
static

Definition at line 876 of file rawprepare.c.

References dt_image_needs_rawprepare(), and image_is_normalized().

Referenced by force_enable(), and reload_defaults().

◆ flags()

◆ force_enable()

gboolean force_enable ( struct dt_iop_module_t self,
const gboolean  current_state 
)

◆ gui_changed()

◆ gui_init()

◆ gui_update()

void gui_update ( dt_iop_module_t self)

◆ image_is_normalized()

static int image_is_normalized ( const dt_image_t *const  image)
static

◆ image_set_rawcrops()

static gboolean image_set_rawcrops ( const int32_t  imgid,
int  dx,
int  dy 
)
static

◆ init_global()

◆ init_pipe()

void init_pipe ( dt_iop_module_t self,
dt_dev_pixelpipe_t pipe,
dt_dev_pixelpipe_iop_t piece 
)

◆ init_presets()

◆ input_format()

void input_format ( dt_iop_module_t self,
dt_dev_pixelpipe_t pipe,
dt_dev_pixelpipe_iop_t piece,
dt_iop_buffer_dsc_t dsc 
)

◆ legacy_params()

int legacy_params ( dt_iop_module_t self,
const void *const  old_params,
const int  old_version,
void new_params,
const int  new_version 
)

Definition at line 144 of file rawprepare.c.

References FLAT_FIELD_OFF, height, n, width, x, and dt_iop_rawprepare_params_t::y.

◆ modify_roi_in()

◆ modify_roi_out()

◆ name()

const char * name ( )

Definition at line 116 of file rawprepare.c.

◆ operation_tags()

int operation_tags ( )

Definition at line 121 of file rawprepare.c.

References IOP_TAG_DISTORT.

◆ output_format()

◆ process()

◆ process_cl()

◆ reload_defaults()

Variable Documentation

◆ black_label

const gchar* black_label[]
Initial value:
= { N_("black level 0"),
N_("black level 1"),
N_("black level 2"),
N_("black level 3") }

Definition at line 988 of file rawprepare.c.

Referenced by gui_init().