~ubuntu-branches/debian/stretch/darktable/stretch

« back to all changes in this revision

Viewing changes to src/iop/denoiseprofile.c

  • Committer: Package Import Robot
  • Author(s): David Bremner
  • Date: 2013-07-28 18:18:54 UTC
  • mfrom: (13.1.8 sid)
  • Revision ID: package-import@ubuntu.com-20130728181854-0ighzoz5nvq0zzoe
Tags: 1.2.2-1
* New upstream "hardware support release"
  - updated rawspeed r553. Support for Canon EOS 700D, Nikon Coolpix
    P330, New Olymbus base curve Updated Adobe Coeffs
  - Enhanced color matrices: Canon 700D (from Canon 650D), Canon 100D
    (from Canon 650D), Sony NEX-7
  - White balance presets: Some updates from UFRaw, Canon 100D, Canon
    700D, Sony SLT-A37 Nikon, Coolpix P330
  - Noise profiles: Canon EOS-M, Olympus E-600 (from: Olympus E-30),
    Olympus E-620 (from: Olympus E-30), Samsung WB2000, Sony A99v,
    Panasonic DMC-G10 iso 100, Nikon D60
  - Bug fixes: 0 star rating working again, LT: ctrl+d duplicates per
    default now, Some fixes concerning locale handling, double click on
    film strip jumps to image, remember position in collections, ctrl+k
    jumps to previous collection, Blending parameters are preserved when
    module is deactivated, In full-preview (alt-1) ratings and labels are
    only applied to image shown, libsquish compilation now optional, dr:
    deactivate interpolation at 200% zoom

Show diffs side-by-side

added added

removed removed

Lines of Context:
1139
1139
  cl_mem dev_buf2 = NULL;
1140
1140
  cl_mem dev_m = NULL;
1141
1141
  cl_mem dev_r = NULL;
 
1142
  cl_mem dev_filter = NULL;
1142
1143
  cl_mem dev_detail[max_max_scale];
1143
1144
  for(int k=0; k<max_scale; k++) dev_detail[k] = NULL;
1144
1145
 
1188
1189
  dev_tmp = dt_opencl_alloc_device(devid, width, height, 4*sizeof(float));
1189
1190
  if(dev_tmp == NULL) goto error;
1190
1191
 
 
1192
  float m[] = { 0.0625f, 0.25f, 0.375f, 0.25f, 0.0625f };  // 1/16, 4/16, 6/16, 4/16, 1/16
 
1193
  float mm[5][5];
 
1194
  for(int j=0; j<5; j++) for(int i=0; i<5; i++) mm[j][i] = m[i] * m[j];
 
1195
 
 
1196
  dev_filter = dt_opencl_copy_host_to_device_constant(devid, sizeof(float)*25, mm);
 
1197
  if(dev_filter == NULL) goto error;
 
1198
 
1191
1199
  for(int k=0; k<max_scale; k++)
1192
1200
  {
1193
1201
    dev_detail[k] = dt_opencl_alloc_device(devid, width, height, 4*sizeof(float));
1253
1261
    dt_opencl_set_kernel_arg(devid, gd->kernel_denoiseprofile_decompose, 4, sizeof(int), (void *)&height);
1254
1262
    dt_opencl_set_kernel_arg(devid, gd->kernel_denoiseprofile_decompose, 5, sizeof(unsigned int), (void *)&scale);
1255
1263
    dt_opencl_set_kernel_arg(devid, gd->kernel_denoiseprofile_decompose, 6, sizeof(float), (void *)&inv_sigma2);
 
1264
    dt_opencl_set_kernel_arg(devid, gd->kernel_denoiseprofile_decompose, 7, sizeof(cl_mem), (void *)&dev_filter);
1256
1265
    err = dt_opencl_enqueue_kernel_2d(devid, gd->kernel_denoiseprofile_decompose, sizes);
1257
1266
    if(err != CL_SUCCESS) goto error;
1258
1267
 
1388
1397
  if(dev_r != NULL) dt_opencl_release_mem_object(dev_r);
1389
1398
  if(dev_m != NULL)  dt_opencl_release_mem_object(dev_m);
1390
1399
  if(dev_tmp != NULL) dt_opencl_release_mem_object(dev_tmp);
 
1400
  if(dev_filter != NULL) dt_opencl_release_mem_object(dev_filter);
1391
1401
  for(int k=0; k<max_scale; k++)
1392
1402
    if (dev_detail[k] != NULL) dt_opencl_release_mem_object(dev_detail[k]);
1393
1403
  return TRUE;
1396
1406
  if(dev_r != NULL) dt_opencl_release_mem_object(dev_r);
1397
1407
  if(dev_m != NULL)  dt_opencl_release_mem_object(dev_m);
1398
1408
  if(dev_tmp != NULL) dt_opencl_release_mem_object(dev_tmp);
 
1409
  if(dev_filter != NULL) dt_opencl_release_mem_object(dev_filter);
1399
1410
  for(int k=0; k<max_scale; k++)
1400
1411
    if (dev_detail[k] != NULL) dt_opencl_release_mem_object(dev_detail[k]);
1401
1412
  dt_print(DT_DEBUG_OPENCL, "[opencl_denoiseprofile] couldn't enqueue kernel! %d, devid %d\n", err, devid);