Skip to content

Commit 8436228

Browse files
committed
probably working algorithm, pixelshift checkbox unreliable, doesn't work with whitebalance
1 parent a4829d9 commit 8436228

File tree

3 files changed

+20
-8
lines changed

3 files changed

+20
-8
lines changed

src/iop/demosaic.c

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2983,9 +2983,21 @@ void process_pixelshift(dt_dev_pixelpipe_iop_t *piece, const float *const in, fl
29832983
size_t pin = (roi_in->width * j) + i;
29842984

29852985
{
2986-
out[pout+0] = frames_in[0][pin];
2987-
out[pout+1] = (frames_in[1][pin-col_offset] + frames_in[2][pin-col_offset-row_offset])/2.0f;
2988-
out[pout+2] = frames_in[3][pin-row_offset];
2986+
const uint32_t ch[4] = { FC(j + 0 + roi_out->y, i + 0 + roi_out->x, piece->pipe->dsc.filters),
2987+
FC(j + 1 + roi_out->y, i + 0 + roi_out->x, piece->pipe->dsc.filters),
2988+
FC(j + 1 + roi_out->y, i + 1 + roi_out->x, piece->pipe->dsc.filters),
2989+
FC(j + 0 + roi_out->y, i + 1 + roi_out->x, piece->pipe->dsc.filters) };
2990+
for(int k = 0; k < 4; ++k)
2991+
{
2992+
out[pout + k] = 0.0f;
2993+
}
2994+
2995+
out[pout + ch[0]] += frames_in[0][pin];
2996+
out[pout + ch[1]] += frames_in[1][pin + row_offset];
2997+
out[pout + ch[2]] += frames_in[2][pin + col_offset + row_offset];
2998+
out[pout + ch[3]] += frames_in[3][pin + col_offset];
2999+
3000+
out[pout + 1] /= 2.0f;
29893001
}
29903002

29913003
/*for(size_t c=0;c<3;++c)
@@ -5633,7 +5645,7 @@ void commit_params(struct dt_iop_module_t *self, dt_iop_params_t *params, dt_dev
56335645
d->pixelshift_enable = (p->pixelshift_enable && (piece->dsc_in.frames == 4));
56345646
///TODO this should also change checkbox
56355647

5636-
//fprintf(stderr, "demosaic ,commit_params, %s, pixelshift: %i\n", dt_pixelpipe_name(pipe->type), d->pixelshift_enable);
5648+
fprintf(stderr, "demosaic ,commit_params, %s, pixelshift: %i\n", dt_pixelpipe_name(pipe->type), d->pixelshift_enable);
56375649
}
56385650
else
56395651
{

src/iop/rawprepare.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -355,9 +355,9 @@ void process(struct dt_iop_module_t *self, dt_dev_pixelpipe_iop_t *piece, const
355355
{
356356
const dt_iop_rawprepare_data_t *const d = (dt_iop_rawprepare_data_t *)piece->data;
357357

358-
//fprintf(stderr,"rawprepare %s\n", dt_pixelpipe_name(piece->pipe->type));
359-
//fprintf(stderr, "roi in %d %d %d %d\n", roi_in->x, roi_in->y, roi_in->width, roi_in->height);
360-
//fprintf(stderr, "roi out %d %d %d %d\n", roi_out->x, roi_out->y, roi_out->width, roi_out->height);
358+
fprintf(stderr,"rawprepare %s\n", dt_pixelpipe_name(piece->pipe->type));
359+
fprintf(stderr, "roi in %d %d %d %d\n", roi_in->x, roi_in->y, roi_in->width, roi_in->height);
360+
fprintf(stderr, "roi out %d %d %d %d\n", roi_out->x, roi_out->y, roi_out->width, roi_out->height);
361361
/*fprintf(stderr,"frame size in: %d\n", roi_in->width * roi_in->height);
362362
fprintf(stderr,"frame size iout: %d\n", roi_out->width * roi_out->height);*/
363363
//fprintf(stderr,"i: %p\n",ivoid);

0 commit comments

Comments
 (0)