Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
pixelpipe_hb.h
Go to the documentation of this file.
1/*
2 This file is part of darktable,
3 Copyright (C) 2009-2021 darktable developers.
4
5 darktable is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 darktable is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with darktable. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#pragma once
20
21#include "common/atomic.h"
22#include "common/image.h"
23#include "common/imageio.h"
24#include "common/iop_order.h"
25#include "control/conf.h"
26#include "develop/develop.h"
27#include "develop/imageop.h"
29
35struct dt_iop_module_t;
36struct dt_dev_raster_mask_t;
38
40{
41 int id; // 0 is reserved for the reusable masks written in blend.c
42 float *mask;
44
46{
47 struct dt_iop_module_t *module; // the module in the dev operation stack
48 struct dt_dev_pixelpipe_t *pipe; // the pipe this piece belongs to
49 void *data; // to be used by the module to store stuff per pipe piece
50
51 // Memory size of *data upon which we will compute integrity hashes.
52 // This needs to be the size of the constant part of the data structure.
53 // It can even be 0 if nothing relevant to cache integrity hashes is held there.
54 // If the data struct contains pointers, they should go at the end of the struct,
55 // and the size here should be adjusted to only include constant bits, starting at the address of *data.
56 // "Constant" means identical between 2 pipeline nodes init,
57 // because the lifecycle of a pixelpipe cache is longer than that of a pixelpipe itself.
58 // See an example in colorbalancergb.c
59 size_t data_size;
60
61 void *blendop_data; // to be used by the module to store blendop per pipe piece
62 gboolean enabled; // used to disable parts of the pipe for export, independent on module itself.
63
64 dt_dev_request_flags_t request_histogram; // (bitwise) set if you want an histogram captured
65 dt_dev_histogram_collection_params_t histogram_params; // set histogram generation params
66 uint32_t *histogram; // pointer to histogram data; histogram_bins_count bins with 4 channels each
67 dt_dev_histogram_stats_t histogram_stats; // stats of captured histogram
68 uint32_t histogram_max[4]; // maximum levels in histogram, one per channel
69
70 int iwidth, iheight; // width and height of input buffer
71
72 // Hash representing the current state of the params, blend params and enabled state of this individual module
75
76 // Cumulative hash representing the current module hash and all the upstream modules from the pipeline,
77 // for the current ROI.
79
80 // Same as global hash but for raster masks
82
83 int bpc; // bits per channel, 32 means float
84 int colors; // how many colors per pixel
86 buf_out; // theoretical full buffer regions of interest, as passed through modify_roi_out
87 dt_iop_roi_t processed_roi_in, processed_roi_out; // the actual roi that was used for processing the piece
88 dt_iop_roi_t planned_roi_in, planned_roi_out; // sizes planned ahead for cache hash
89 int process_cl_ready; // set this to 0 in commit_params to temporarily disable the use of process_cl
90 int process_tiling_ready; // set this to 0 in commit_params to temporarily disable tiling
91
92 // the following are used internally for caching:
94
95 // bypass the cache for this module
96 gboolean bypass_cache;
97
98 GHashTable *raster_masks; // GList* of dt_dev_pixelpipe_raster_mask_t
100
102{
103 DT_DEV_PIPE_UNCHANGED = 0, // no event
104 DT_DEV_PIPE_TOP_CHANGED = 1 << 0, // only params of top element changed
105 DT_DEV_PIPE_REMOVE = 1 << 1, // possibly elements of the pipe have to be removed
107 = 1 << 2, // all nodes up to end need to be synched, but no removal of module pieces is necessary
108 DT_DEV_PIPE_ZOOMED = 1 << 3 // zoom event, preview pipe does not need changes
110
112{
113 DT_DEV_PIXELPIPE_DIRTY = 0, // history stack changed or image new
114 DT_DEV_PIXELPIPE_UNDEF = 1, // pixelpipe computation started and we don't know yet
115 DT_DEV_PIXELPIPE_VALID = 2, // pixelpipe has finished; valid result
116 DT_DEV_PIXELPIPE_INVALID = 3 // pixelpipe has finished; invalid result
118
125typedef struct dt_dev_pixelpipe_t
126{
127 // input image. Will be fetched directly from mipmap cache
128 int32_t imgid;
130
131 // width and height of input buffer
133
134 // dimensions of processed buffer
136
137 // this one actually contains the expected output format,
138 // and should be modified by process*(), if necessary.
140
142
149
150 // instances of pixelpipe, stored in GList of dt_dev_pixelpipe_iop_t
151 GList *nodes;
152 // event flag
154 // backbuffer (output)
155 void *backbuf;
160 dt_pthread_mutex_t backbuf_mutex, busy_mutex;
161 // output buffer (for display)
164
165 // the data for the luminance mask are kept in a buffer written by demosaic or rawprepare
166 // as we have to scale the mask later ke keep roi at that stage
170
172 // processing is true when actual pixel computations are ongoing
174 // running is true when the pipe thread is running, computing or idle
176 // shutting down?
178 // opencl enabled for this pixelpipe?
180 // opencl error detected?
182 // running in a tiling context?
184 // should this pixelpipe display a mask in the end?
186 // should this pixelpipe completely suppressed the blendif module?
188 // input data based on this timestamp:
191 // the final output pixel format this pixelpipe will be converted to
193 // opencl device that has been locked for this pipe.
194 int devid;
195 // image struct as it was when the pixelpipe was initialized. copied to avoid race conditions.
197 // the user might choose to overwrite the output color space and rendering intent.
201 // snapshot of modules
202 GList *iop;
203 // snapshot of modules iop_order
205 // snapshot of mask list
206 GList *forms;
207 // the masks generated in the pipe for later reusal are inside dt_dev_pixelpipe_iop_t
209
210 // hash of the last history item synchronized with pipeline
211 // that's because the sync_top option can't assume only one history
212 // item was added since the last synchronization.
214
215 // Modules can set this to TRUE internally so the pipeline will
216 // restart right away, in the same thread.
217 // The reentry flag can only be reset (to FALSE) by the same object that captured it.
218 // DO NOT SET THAT DIRECTLY, use the setter/getter functions
219 gboolean reentry;
220
221 // Unique identifier of the object capturing the reentry flag.
222 // This can be a mask or module hash, or anything that stays constant
223 // across 2 pipeline runs from a same thread (aka as long as we don't reinit).
224 // DO NOT SET THAT DIRECTLY, use the setter/getter functions
226
227 // Can be set arbitrarily by pixelpipe modules at runtime
228 // to invalidate downstream module cache lines.
229 // This always gets reset to FALSE when a pipeline finishes,
230 // whether on success or on error.
231 gboolean flush_cache;
232
234
235struct dt_develop_t;
236
237// inits the pixelpipe with plain passthrough input/output and empty input and default caching settings.
239// inits the preview pixelpipe with plain passthrough input/output and empty input and default caching
240// settings.
242// inits the pixelpipe with settings optimized for full-image export (no history stack cache)
244 gboolean store_masks);
245// inits the pixelpipe with settings optimized for thumbnail export (no history stack cache)
247// inits all but the pixel caches, so you can't actually process an image (just get dimensions and
248// distortions)
250// inits the pixelpipe
252// constructs a new input buffer from given RGB float array.
253void dt_dev_pixelpipe_set_input(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, int32_t imgid, int width,
255// set some metadata for colorout to avoid race conditions.
257 const gchar *icc_filename, dt_iop_color_intent_t icc_intent);
258
259// returns the dimensions of the full image after processing.
260void dt_dev_pixelpipe_get_roi_out(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, const int width_in,
261 const int height_in, int *width, int *height);
262void dt_dev_pixelpipe_get_roi_in(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, const struct dt_iop_roi_t roi_out);
263
264// Check if current_module is performing operations that dev->gui_module (active GUI module)
265// wants disabled. Use that to disable some features of current_module.
266// This is used mostly with distortion operations when the active GUI module
267// needs a full-ROI/undistorted input for its own editing mode,
268// like moving the framing on the full image.
269// WARNING: this doesn't check WHAT particular operations are performed and
270// and what operations should be cancelled (nor if they should all be cancelled).
271// So far, all the code uses that to prevent distortions on module output, masks and roi_out changes (cropping).
272// Meaning ANY of these operations will disable ALL of these operations.
274 struct dt_iop_module_t *current_module);
275// destroys all allocated data.
277
278// wrapper for cleanup_nodes, create_nodes, synch_all and synch_top, decides upon changed event which one to
279// take on. also locks dev->history_mutex.
281// cleanup all nodes except clean input/output
283// sync with develop_t history stack from scratch (new node added, have to pop old ones)
285// sync with develop_t history stack by just copying the top item params (same op, new params on top)
286void dt_dev_pixelpipe_synch_all_real(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, const char *caller_func);
287#define dt_dev_pixelpipe_synch_all(pipe, dev) dt_dev_pixelpipe_synch_all_real(pipe, dev, __FUNCTION__)
288// adjust output node according to history stack (history pop event)
290
291// process region of interest of pixels. returns 1 if pipe was altered during processing.
292int dt_dev_pixelpipe_process(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, int x, int y, int width,
293 int height, double scale);
294
295// disable given op and all that comes after it in the pipe:
297// disable given op and all that comes before it in the pipe:
299
300// helper function to pass a raster mask through a (so far) processed pipe
301// `*error` will be set to 1 if the raster mask reference couldn't be found while it should have been,
302// aka not if user has forgotten to input what module should provide its mask, but only
303// if the mask reference has been lost by the pipeline. This should lead to a pipeline cache flushing.
304// `*error` can be NULL, e.g. for non-cached pipelines (export, thumbnail).
305float *dt_dev_get_raster_mask(dt_dev_pixelpipe_t *pipe, const struct dt_iop_module_t *raster_mask_source,
306 const int raster_mask_id, const struct dt_iop_module_t *target_module,
307 gboolean *free_mask, int *error);
308
309// some helper functions related to the details mask interface
311
312gboolean dt_dev_write_rawdetail_mask(dt_dev_pixelpipe_iop_t *piece, float *const rgb, const dt_iop_roi_t *const roi_in, const int mode);
313#ifdef HAVE_OPENCL
314gboolean dt_dev_write_rawdetail_mask_cl(dt_dev_pixelpipe_iop_t *piece, cl_mem in, const dt_iop_roi_t *const roi_in, const int mode);
315#endif
316
317// helper function writing the pipe-processed ctmask data to dest
318float *dt_dev_distort_detail_mask(const dt_dev_pixelpipe_t *pipe, float *src, const struct dt_iop_module_t *target_module);
319
320// Compute the sequential hash over the pipeline for each module.
321// Need to run after dt_dev_pixelpipe_get_roi_in() has updated processed ROI in/out
323
324
345
356
357// check if pipeline should re-entry after it completes
359
360// Force-reset pipeline re-entry flag, for example if we lost the unique ID of the object
361// in a re-entry loop.
363
364// clang-format off
365// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py
366// vim: shiftwidth=2 expandtab tabstop=2 cindent
367// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
368// clang-format on
static void error(char *msg)
Definition ashift_lsd.c:191
atomic_int dt_atomic_int
Definition atomic.h:44
int levels(struct dt_imageio_module_data_t *data)
Definition avif.c:685
int width
Definition bilateral.h:1
int height
Definition bilateral.h:1
dt_iop_color_intent_t
Definition colorspaces.h:43
dt_colorspaces_color_profile_type_t
Definition colorspaces.h:61
dt_imageio_levels_t
Definition imageio.h:46
size_t size
Definition mipmap_cache.c:3
dt_mipmap_size_t
Definition mipmap_cache.h:30
dt_dev_request_flags_t
Definition pixelpipe.h:40
dt_dev_pixelpipe_type_t
Definition pixelpipe.h:28
Pixelpipe cache for storing intermediate results in the pixelpipe.
int dt_dev_pixelpipe_process(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, int x, int y, int width, int height, double scale)
Definition pixelpipe_hb.c:1980
void dt_dev_pixelpipe_disable_before(dt_dev_pixelpipe_t *pipe, const char *op)
Definition pixelpipe_hb.c:1932
int dt_dev_pixelpipe_init_preview(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:159
void dt_dev_pixelpipe_reset_reentry(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:314
int dt_dev_pixelpipe_init_cached(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:180
void dt_dev_pixelpipe_get_roi_out(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, const int width_in, const int height_in, int *width, int *height)
Definition pixelpipe_hb.c:2128
gboolean dt_dev_pixelpipe_has_reentry(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:309
gboolean dt_dev_write_rawdetail_mask(dt_dev_pixelpipe_iop_t *piece, float *const rgb, const dt_iop_roi_t *const roi_in, const int mode)
Definition pixelpipe_hb.c:2431
void dt_dev_pixelpipe_disable_after(dt_dev_pixelpipe_t *pipe, const char *op)
Definition pixelpipe_hb.c:1918
void dt_dev_pixelpipe_set_input(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, int32_t imgid, int width, int height, dt_mipmap_size_t size)
Definition pixelpipe_hb.c:230
dt_dev_pixelpipe_change_t
Definition pixelpipe_hb.h:102
@ DT_DEV_PIPE_ZOOMED
Definition pixelpipe_hb.h:108
@ DT_DEV_PIPE_SYNCH
Definition pixelpipe_hb.h:106
@ DT_DEV_PIPE_TOP_CHANGED
Definition pixelpipe_hb.h:104
@ DT_DEV_PIPE_REMOVE
Definition pixelpipe_hb.h:105
@ DT_DEV_PIPE_UNCHANGED
Definition pixelpipe_hb.h:103
void dt_dev_pixelpipe_set_icc(dt_dev_pixelpipe_t *pipe, dt_colorspaces_color_profile_type_t icc_type, const gchar *icc_filename, dt_iop_color_intent_t icc_intent)
Definition pixelpipe_hb.c:243
void dt_dev_pixelpipe_synch_top(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev)
Definition pixelpipe_hb.c:592
int dt_dev_pixelpipe_init_export(dt_dev_pixelpipe_t *pipe, int32_t width, int32_t height, int levels, gboolean store_masks)
Definition pixelpipe_hb.c:135
void dt_dev_pixelpipe_get_roi_in(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, const struct dt_iop_roi_t roi_out)
Definition pixelpipe_hb.c:2165
void dt_dev_pixelpipe_create_nodes(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev)
Definition pixelpipe_hb.c:351
int dt_dev_pixelpipe_init_dummy(dt_dev_pixelpipe_t *pipe, int32_t width, int32_t height)
Definition pixelpipe_hb.c:152
float * dt_dev_get_raster_mask(dt_dev_pixelpipe_t *pipe, const struct dt_iop_module_t *raster_mask_source, const int raster_mask_id, const struct dt_iop_module_t *target_module, gboolean *free_mask, int *error)
void dt_dev_pixelpipe_synch_all_real(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev, const char *caller_func)
Find the last history item matching each pipeline node (module), in the order of pipeline execution....
Definition pixelpipe_hb.c:543
void dt_dev_pixelpipe_cleanup(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:252
gboolean dt_dev_pixelpipe_unset_reentry(dt_dev_pixelpipe_t *pipe, uint64_t hash)
Remove the re-entry pipeline flag, only if the object identifier is the one that set it....
Definition pixelpipe_hb.c:296
dt_dev_pixelpipe_status_t
Definition pixelpipe_hb.h:112
@ DT_DEV_PIXELPIPE_INVALID
Definition pixelpipe_hb.h:116
@ DT_DEV_PIXELPIPE_VALID
Definition pixelpipe_hb.h:115
@ DT_DEV_PIXELPIPE_DIRTY
Definition pixelpipe_hb.h:113
@ DT_DEV_PIXELPIPE_UNDEF
Definition pixelpipe_hb.h:114
gboolean dt_dev_pixelpipe_activemodule_disables_currentmodule(struct dt_develop_t *dev, struct dt_iop_module_t *current_module)
Definition pixelpipe_hb.c:2119
int dt_dev_pixelpipe_init_thumbnail(dt_dev_pixelpipe_t *pipe, int32_t width, int32_t height)
Definition pixelpipe_hb.c:145
int dt_dev_pixelpipe_init(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:170
float * dt_dev_distort_detail_mask(const dt_dev_pixelpipe_t *pipe, float *src, const struct dt_iop_module_t *target_module)
gboolean dt_dev_pixelpipe_set_reentry(dt_dev_pixelpipe_t *pipe, uint64_t hash)
Set the re-entry pipeline flag, only if no object is already capturing it. Re-entered pipelines run w...
Definition pixelpipe_hb.c:282
void dt_dev_pixelpipe_change(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev)
Definition pixelpipe_hb.c:643
void dt_dev_clear_rawdetail_mask(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:2425
void dt_dev_pixelpipe_cleanup_nodes(dt_dev_pixelpipe_t *pipe)
Definition pixelpipe_hb.c:322
void dt_pixelpipe_get_global_hash(dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev)
Definition pixelpipe_hb.c:429
unsigned __int64 uint64_t
Definition strptime.c:71
Definition pixelpipe.h:48
Definition pixelpipe.h:59
Definition pixelpipe_hb.h:46
gboolean enabled
Definition pixelpipe_hb.h:62
int colors
Definition pixelpipe_hb.h:84
dt_iop_buffer_dsc_t dsc_out
Definition pixelpipe_hb.h:93
uint32_t histogram_max[4]
Definition pixelpipe_hb.h:68
dt_dev_request_flags_t request_histogram
Definition pixelpipe_hb.h:64
size_t data_size
Definition pixelpipe_hb.h:59
dt_iop_roi_t buf_in
Definition pixelpipe_hb.h:85
uint64_t blendop_hash
Definition pixelpipe_hb.h:74
struct dt_iop_module_t *struct dt_dev_pixelpipe_t * pipe
Definition pixelpipe_hb.h:48
dt_iop_roi_t processed_roi_in
Definition pixelpipe_hb.h:87
int iheight
Definition pixelpipe_hb.h:70
uint64_t global_hash
Definition pixelpipe_hb.h:78
uint64_t hash
Definition pixelpipe_hb.h:73
int process_cl_ready
Definition pixelpipe_hb.h:89
dt_iop_buffer_dsc_t dsc_in
Definition pixelpipe_hb.h:93
uint32_t * histogram
Definition pixelpipe_hb.h:66
int iwidth
Definition pixelpipe_hb.h:70
dt_dev_histogram_stats_t histogram_stats
Definition pixelpipe_hb.h:67
uint64_t global_mask_hash
Definition pixelpipe_hb.h:81
dt_iop_roi_t processed_roi_out
Definition pixelpipe_hb.h:87
dt_iop_roi_t planned_roi_out
Definition pixelpipe_hb.h:88
gboolean bypass_cache
Definition pixelpipe_hb.h:96
dt_iop_roi_t buf_out
Definition pixelpipe_hb.h:86
int process_tiling_ready
Definition pixelpipe_hb.h:90
int bpc
Definition pixelpipe_hb.h:83
GHashTable * raster_masks
Definition pixelpipe_hb.h:98
dt_dev_histogram_collection_params_t histogram_params
Definition pixelpipe_hb.h:65
dt_iop_buffer_dsc_t dsc_mask
Definition pixelpipe_hb.h:93
void * data
Definition pixelpipe_hb.h:49
void * blendop_data
Definition pixelpipe_hb.h:61
dt_iop_roi_t planned_roi_in
Definition pixelpipe_hb.h:88
Definition pixelpipe_hb.h:40
float * mask
Definition pixelpipe_hb.h:42
int id
Definition pixelpipe_hb.h:41
Definition pixelpipe_hb.h:126
dt_colorspaces_color_profile_type_t icc_type
Definition pixelpipe_hb.h:198
struct dt_iop_order_iccprofile_info_t * work_profile_info
Definition pixelpipe_hb.h:144
struct dt_iop_order_iccprofile_info_t * input_profile_info
Definition pixelpipe_hb.h:146
int iwidth
Definition pixelpipe_hb.h:132
int want_detail_mask
Definition pixelpipe_hb.h:169
float backbuf_zoom_x
Definition pixelpipe_hb.h:158
GList * iop
Definition pixelpipe_hb.h:202
int opencl_error
Definition pixelpipe_hb.h:181
struct dt_iop_order_iccprofile_info_t * output_profile_info
Definition pixelpipe_hb.h:148
int running
Definition pixelpipe_hb.h:175
uint64_t backbuf_hash
Definition pixelpipe_hb.h:159
gchar * icc_filename
Definition pixelpipe_hb.h:199
int processed_width
Definition pixelpipe_hb.h:135
dt_dev_pixelpipe_change_t changed
Definition pixelpipe_hb.h:153
uint64_t last_history_hash
Definition pixelpipe_hb.h:213
dt_pthread_mutex_t busy_mutex
Definition pixelpipe_hb.h:160
gboolean flush_cache
Definition pixelpipe_hb.h:231
int mask_display
Definition pixelpipe_hb.h:185
float backbuf_scale
Definition pixelpipe_hb.h:157
GList * nodes
Definition pixelpipe_hb.h:151
dt_dev_pixelpipe_status_t status
Definition pixelpipe_hb.h:141
dt_imageio_levels_t levels
Definition pixelpipe_hb.h:192
gboolean reentry
Definition pixelpipe_hb.h:219
dt_mipmap_size_t size
Definition pixelpipe_hb.h:129
dt_iop_color_intent_t icc_intent
Definition pixelpipe_hb.h:200
dt_image_t image
Definition pixelpipe_hb.h:196
float * rawdetail_mask_data
Definition pixelpipe_hb.h:167
dt_atomic_int shutdown
Definition pixelpipe_hb.h:177
int output_backbuf_width
Definition pixelpipe_hb.h:163
dt_iop_buffer_dsc_t dsc
Definition pixelpipe_hb.h:139
uint64_t reentry_hash
Definition pixelpipe_hb.h:225
int opencl_enabled
Definition pixelpipe_hb.h:179
float backbuf_zoom_y
Definition pixelpipe_hb.h:158
int output_backbuf_height
Definition pixelpipe_hb.h:163
uint8_t * output_backbuf
Definition pixelpipe_hb.h:162
dt_dev_pixelpipe_type_t type
Definition pixelpipe_hb.h:190
int processed_height
Definition pixelpipe_hb.h:135
int32_t imgid
Definition pixelpipe_hb.h:128
size_t backbuf_width
Definition pixelpipe_hb.h:156
gboolean store_all_raster_masks
Definition pixelpipe_hb.h:208
dt_pthread_mutex_t backbuf_mutex
Definition pixelpipe_hb.h:160
int bypass_blendif
Definition pixelpipe_hb.h:187
int tiling
Definition pixelpipe_hb.h:183
int iheight
Definition pixelpipe_hb.h:132
struct dt_iop_roi_t rawdetail_mask_roi
Definition pixelpipe_hb.h:168
GList * forms
Definition pixelpipe_hb.h:206
void * backbuf
Definition pixelpipe_hb.h:155
int devid
Definition pixelpipe_hb.h:194
int processing
Definition pixelpipe_hb.h:173
int output_imgid
Definition pixelpipe_hb.h:171
GList * iop_order_list
Definition pixelpipe_hb.h:204
size_t backbuf_height
Definition pixelpipe_hb.h:156
int input_timestamp
Definition pixelpipe_hb.h:189
Definition develop.h:143
dt_clipping_preview_mode_t mode
Definition develop.h:285
struct dt_dev_pixelpipe_t * pipe
Definition develop.h:156
Definition common/image.h:195
Definition develop/format.h:36
Definition imageop.h:182
Definition iop_profile.h:41
Definition imageop.h:32