Merge commit '638ecc4cde79b0296f2e04f683ca4cb881c28f36' as 'rtengine/libraw'
This commit is contained in:
107
rtengine/libraw/samples/multirender_test.cpp
Normal file
107
rtengine/libraw/samples/multirender_test.cpp
Normal file
@@ -0,0 +1,107 @@
|
||||
/* -*- C++ -*-
|
||||
* File: multirender_test.cpp
|
||||
* Copyright 2008-2021 LibRaw LLC (info@libraw.org)
|
||||
* Created: Jul 10, 2011
|
||||
*
|
||||
* LibRaw simple C++ API: creates 8 different renderings from 1 source file.
|
||||
The 1st and 4th one should be identical
|
||||
|
||||
LibRaw is free software; you can redistribute it and/or modify
|
||||
it under the terms of the one of two licenses as you choose:
|
||||
|
||||
1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
|
||||
(See file LICENSE.LGPL provided in LibRaw distribution archive for details).
|
||||
|
||||
2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
|
||||
(See file LICENSE.CDDL provided in LibRaw distribution archive for details).
|
||||
|
||||
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
#include "libraw/libraw.h"
|
||||
|
||||
#ifndef LIBRAW_WIN32_CALLS
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/mman.h>
|
||||
#endif
|
||||
|
||||
#ifdef LIBRAW_WIN32_CALLS
|
||||
#define snprintf _snprintf
|
||||
#endif
|
||||
|
||||
int process_once(LibRaw &RawProcessor, int half_mode, int camera_wb,
|
||||
int auto_wb, int suffix, int user_flip, char *fname)
|
||||
{
|
||||
char outfn[1024];
|
||||
RawProcessor.imgdata.params.half_size = half_mode;
|
||||
RawProcessor.imgdata.params.use_camera_wb = camera_wb;
|
||||
RawProcessor.imgdata.params.use_auto_wb = auto_wb;
|
||||
RawProcessor.imgdata.params.user_flip = user_flip;
|
||||
|
||||
int ret = RawProcessor.dcraw_process();
|
||||
|
||||
if (LIBRAW_SUCCESS != ret)
|
||||
{
|
||||
fprintf(stderr, "Cannot do postprocessing on %s: %s\n", fname,
|
||||
libraw_strerror(ret));
|
||||
return ret;
|
||||
}
|
||||
snprintf(outfn, sizeof(outfn), "%s.%d.%s", fname, suffix,
|
||||
(RawProcessor.imgdata.idata.colors > 1 ? "ppm" : "pgm"));
|
||||
|
||||
printf("Writing file %s\n", outfn);
|
||||
|
||||
if (LIBRAW_SUCCESS != (ret = RawProcessor.dcraw_ppm_tiff_writer(outfn)))
|
||||
fprintf(stderr, "Cannot write %s: %s\n", outfn, libraw_strerror(ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
int main(int ac, char *av[])
|
||||
{
|
||||
int i, ret;
|
||||
|
||||
LibRaw RawProcessor;
|
||||
if (ac < 2)
|
||||
{
|
||||
printf("multirender_test - LibRaw %s sample. Performs 4 different "
|
||||
"renderings of one file\n"
|
||||
" %d cameras supported\n"
|
||||
"Usage: %s raw-files....\n",
|
||||
LibRaw::version(), LibRaw::cameraCount(), av[0]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (i = 1; i < ac; i++)
|
||||
{
|
||||
|
||||
printf("Processing file %s\n", av[i]);
|
||||
|
||||
if ((ret = RawProcessor.open_file(av[i])) != LIBRAW_SUCCESS)
|
||||
{
|
||||
fprintf(stderr, "Cannot open_file %s: %s\n", av[i], libraw_strerror(ret));
|
||||
continue; // no recycle b/c open file will recycle itself
|
||||
}
|
||||
|
||||
if ((ret = RawProcessor.unpack()) != LIBRAW_SUCCESS)
|
||||
{
|
||||
fprintf(stderr, "Cannot unpack %s: %s\n", av[i], libraw_strerror(ret));
|
||||
continue;
|
||||
}
|
||||
process_once(RawProcessor, 0, 0, 0, 1, -1, av[i]); // default flip
|
||||
process_once(RawProcessor, 1, 0, 1, 2, -1, av[i]);
|
||||
process_once(RawProcessor, 1, 1, 0, 3, -1, av[i]); // default flip
|
||||
process_once(RawProcessor, 1, 1, 0, 4, 1, av[i]); // flip 1
|
||||
process_once(RawProcessor, 1, 1, 0, 5, 3, av[i]); // flip 3
|
||||
process_once(RawProcessor, 1, 1, 0, 6, 1, av[i]); // 1 again same as 4
|
||||
process_once(RawProcessor, 1, 1, 0, 7, -1,
|
||||
av[i]); // default again, same as 3
|
||||
process_once(RawProcessor, 0, 0, 0, 8, -1, av[i]); // same as 1
|
||||
|
||||
RawProcessor.recycle(); // just for show this call
|
||||
}
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user