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:

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 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 

Function Documentation

◆ __attribute__()

static __attribute__ ( (always_inline)  )
inlinestatic

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.

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

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()

◆ cleanup_global()

◆ cleanup_pipe()

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

◆ 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 ( )

References IOP_GROUP_TECHNICAL.

◆ description()

const char ** description ( struct dt_iop_module_t self)

◆ 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 
)

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

◆ flags()

◆ force_enable()

gboolean force_enable ( struct dt_iop_module_t self,
const gboolean  current_state 
)

◆ gui_changed()

◆ gui_init()

◆ gui_update()

◆ image_is_normalized()

static int image_is_normalized ( const dt_image_t *const  image)
static

◆ image_set_rawcrops()

◆ init_global()

◆ init_pipe()

◆ init_presets()

◆ 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 
)

◆ modify_roi_in()

◆ modify_roi_out()

◆ name()

const char * name ( )

◆ operation_tags()

int operation_tags ( )

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") }

Referenced by gui_init().