Merge commit '638ecc4cde79b0296f2e04f683ca4cb881c28f36' as 'rtengine/libraw'

This commit is contained in:
Lawrence Lee
2023-11-12 11:49:00 -08:00
213 changed files with 77043 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
BreakBeforeBraces: Allman
ColumnLimit: 120
SortIncludes: false
TabWidth: 4

27
rtengine/libraw/COPYRIGHT Normal file
View File

@@ -0,0 +1,27 @@
** LibRaw: Raw images processing library **
Copyright (C) 2008-2021 LibRaw LLC (http://www.libraw.org, info@libraw.org)
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).
LibRaw uses code from dcraw.c -- Dave Coffin's raw photo decoder,
dcraw.c is copyright 1997-2018 by Dave Coffin, dcoffin a cybercom o net.
LibRaw do not use RESTRICTED code from dcraw.c
LibRaw uses DCB demosaic and FBDD denoise licensed under BSD-like 3-clause license
DCB and FBDD are Copyright (C) 2010, Jacek Gozdz (cuniek@kft.umcs.lublin.pl)
LibRaw uses X3F library to unpack Foveon Files, licensed BSD-style license
Copyright (c) 2010, Roland Karlsson (roland@proxel.se)
All rights reserved.
LibRaw uses pieces of code from Adobe DNG SDK 1.4,
Copyright (c) 2005 Adobe Systems Incorporated, licensed under MIT license

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,20 @@
=== Notes for LibRaw contributor ===
0. Repository
LibRaw public repository is located on GitHub
URL:
http://github.com/LibRaw/LibRaw - main page
git://github.com/LibRaw/LibRaw.git - git URL
If you wish to participate in LibRaw development please use GitHub fork.
LibRaw distribution files are prepared by ./mkdist.sh script
This script
- generates ./configure script from autotools stuff
- removes developer Makefile
- fetches 'Official' dcraw.c from Dave Coffin's site
- removes itself
Feel free to contact us (info@libraw.org or Contact form on www.libraw.org) if
you have any questions or suggestions.

View File

@@ -0,0 +1,21 @@
diff --git a/source/dng_ifd.cpp b/source/dng_ifd.cpp
index 174f18f..2974323 100644
--- a/source/dng_ifd.cpp
+++ b/source/dng_ifd.cpp
@@ -3168,6 +3168,7 @@ bool dng_ifd::IsValidDNG (dng_shared &shared,
case ccUncompressed:
break;
+ case 9: /* VC5 compression support */
case ccJPEG:
{
@@ -3202,7 +3203,7 @@ bool dng_ifd::IsValidDNG (dng_shared &shared,
break;
}
-
+
case ccLossyJPEG:
{

View File

@@ -0,0 +1,15 @@
diff --git a/gpr_sdk/private/gpr_read_image.cpp b/gpr_sdk/private/gpr_read_image.cpp
index c611b3f..9200a5b 100644
--- a/gpr_sdk/private/gpr_read_image.cpp
+++ b/gpr_sdk/private/gpr_read_image.cpp
@@ -68,8 +68,10 @@ gpr_read_image::gpr_read_image( gpr_buffer_auto* vc5_buffer ) : _vc5_buffer(vc5_
}
#if GPR_WRITING || GPR_READING
+#ifndef qDNG_1_6
const int ccVc5 = 9; // Vc5 compression type
#endif
+#endif
void gpr_read_image::ReadTile (dng_host &host,
const dng_ifd &ifd,

View File

@@ -0,0 +1,21 @@
diff --git a/source/dng_ifd.cpp b/source/dng_ifd.cpp
index 174f18f..2974323 100644
--- a/source/dng_ifd.cpp
+++ b/source/dng_ifd.cpp
@@ -3168,6 +3168,7 @@ bool dng_ifd::IsValidDNG (dng_shared &shared,
case ccUncompressed:
break;
+ case 9: /* VC5 compression support */
case ccJPEG:
{
@@ -3202,7 +3203,7 @@ bool dng_ifd::IsValidDNG (dng_shared &shared,
break;
}
-
+
case ccLossyJPEG:
{

View File

@@ -0,0 +1,29 @@
--- gpr_read_image.cpp.orig 2019-08-30 12:20:00.326653300 +0300
+++ gpr_read_image.cpp 2019-08-31 10:43:26.568184100 +0300
@@ -67,6 +67,10 @@
fDecodeVC5 = true;
}
void gpr_read_image::ReadTile (dng_host &host,
const dng_ifd &ifd,
dng_stream &stream,
@@ -77,7 +81,8 @@
uint32 tileByteCount,
AutoPtr<dng_memory_block> &compressedBuffer,
AutoPtr<dng_memory_block> &uncompressedBuffer,
- AutoPtr<dng_memory_block> &subTileBlockBuffer)
+ AutoPtr<dng_memory_block> &subTileBlockBuffer,
+ bool usingMultipleThreads)
{
if( ifd.fCompression == ccVc5 )
@@ -122,7 +127,8 @@
tileByteCount,
compressedBuffer,
uncompressedBuffer,
- subTileBlockBuffer);
+ subTileBlockBuffer,
+ usingMultipleThreads);
}
}

View File

@@ -0,0 +1,12 @@
--- gpr_read_image.h.orig 2019-08-30 12:20:00.326653300 +0300
+++ gpr_read_image.h 2019-08-30 20:56:11.138246800 +0300
@@ -56,7 +56,8 @@
uint32 tileByteCount,
AutoPtr<dng_memory_block> &compressedBuffer,
AutoPtr<dng_memory_block> &uncompressedBuffer,
- AutoPtr<dng_memory_block> &subTileBlockBuffer);
+ AutoPtr<dng_memory_block> &subTileBlockBuffer,
+ bool usingMultipleThreads );
};
#endif // GPR_READING

51
rtengine/libraw/INSTALL Normal file
View File

@@ -0,0 +1,51 @@
========= Installing LibRaw ========
I. Installation steps
1. Unpack the distribution file:
$ tar xzvf LibRaw-0.xx.yy.tar.gz
2. Go to LibRaw folder and run ./configure and make:
$ cd LibRaw-0.xx.yy
$ ./configure [...optional args...]
$ make
3. install by run make install as root:
$ sudo make install
If you're using Github snapshot, create ./configure script:
autoreconf --install
before using it (you'll need autotools installed).
Alternatively, you may use pre-created Makefiles (Makefile.dist for Unix,
Makefile.msvc for Windows/VisualStudio) and add/remove options by editing
these Makefiles
II. ./configure options
--enable-openmp
--disable-openmp
Enable/disable OpenMP support if compiler supports it.
OpenMP is enabled by default.
--enable-lcms
--disable-lcms
Enable/disable LCMS color engine support. If enabled, ./configure will try to
find lcms library. Both LCMS-1.x and LCMS-2.x are supported
LCMS support is enabled by default
--enable-examples
--disable-examples
Enables/disables examples compilation and installation. Enabled by default

View File

@@ -0,0 +1,340 @@
COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
1. Definitions.
1.1. Contributor means each individual or entity that creates or
contributes to the creation of Modifications.
1.2. Contributor Version means the combination of the Original
Software, prior Modifications used by a Contributor (if any),
and the Modifications made by that particular Contributor.
1.3. Covered Software means (a) the Original Software, or (b)
Modifications, or (c) the combination of files containing
Original Software with files containing Modifications, in each
case including portions thereof.
1.4. Executable means the Covered Software in any form other
than Source Code.
1.5. Initial Developer means the individual or entity that first
makes Original Software available under this License.
1.6. Larger Workmeans a work which combines Covered Software or
portions thereof with code not governed by the terms of this
License.
1.7. License means this document.
1.8. Licensable means having the right to grant, to the maximum
extent possible, whether at the time of the initial grant or
subsequently acquired, any and all of the rights conveyed herein.
1.9. Modifications means the Source Code and Executable form of
any of the following: A. Any file that results from an addition
to, deletion from or modification of the contents of a file
containing Original Software or previous Modifications; B. Any
new file that contains any part of the Original Software or
previous Modification; or C. Any new file that is contributed or
otherwise made available under the terms of this License.
1.10. Original Software means the Source Code and Executable
form of computer software code that is originally released under
this License.
1.11. Patent Claims means any patent claim(s), now owned or
hereafter acquired, including without limitation, method,
process, and apparatus claims, in any patent Licensable by
grantor.
1.12. Source Code means (a) the common form of computer software
code in which modifications are made and (b) associated
documentation included in or with such code.
1.13. You (or Your) means an individual or a legal entity
exercising rights under, and complying with all of the terms of,
this License. For legal entities, You includes any entity which
controls, is controlled by, or is under common control with You.
For purposes of this definition, control means (a) the power,
direct or indirect, to cause the direction or management of such
entity, whether by contract or otherwise, or (b) ownership of
more than fifty percent (50%) of the outstanding shares or
beneficial ownership of such entity.
2. License Grants.
2.1. The Initial Developer Grant. Conditioned upon Your
compliance with Section 3.1 below and subject to third party
intellectual property claims, the Initial Developer hereby
grants You a world-wide, royalty-free, non-exclusive license:
(a) under intellectual property rights (other than patent or
trademark) Licensable by Initial Developer, to use, reproduce,
modify, display, perform, sublicense and distribute the Original
Software (or portions thereof), with or without Modifications,
and/or as part of a Larger Work; and
(b) under Patent Claims infringed by the making, using or
selling of Original Software, to make, have made, use, practice,
sell, and offer for sale, and/or otherwise dispose of the
Original Software (or portions thereof);
(c) The licenses granted in Sections 2.1(a) and (b) are
effective on the date Initial Developer first distributes or
otherwise makes the Original Software available to a third party
under the terms of this License;
(d) Notwithstanding Section 2.1(b) above, no patent license is
granted: (1) for code that You delete from the Original
Software, or (2) for infringements caused by: (i) the
modification of the Original Software, or (ii) the combination
of the Original Software with other software or devices.
2.2. Contributor Grant. Conditioned upon Your compliance with
Section 3.1 below and subject to third party intellectual
property claims, each Contributor hereby grants You a
world-wide, royalty-free, non-exclusive license:
(a) under intellectual property rights (other than patent or
trademark) Licensable by Contributor to use, reproduce, modify,
display, perform, sublicense and distribute the Modifications
created by such Contributor (or portions thereof), either on an
unmodified basis, with other Modifications, as Covered Software
and/or as part of a Larger Work; and
(b) under Patent Claims infringed by the making, using, or
selling of Modifications made by that Contributor either alone
and/or in combination with its Contributor Version (or portions
of such combination), to make, use, sell, offer for sale, have
made, and/or otherwise dispose of: (1) Modifications made by
that Contributor (or portions thereof); and (2) the combination
of Modifications made by that Contributor with its Contributor
Version (or portions of such combination).
(c) The licenses granted in Sections 2.2(a) and 2.2(b)
areeffective on the date Contributor first distributes or
otherwise makes the Modifications available to a third party.
(d) Notwithstanding Section 2.2(b) above, no patent license is
granted: (1) for any code that Contributor has deleted from the
Contributor Version; (2) for infringements caused by: (i) third
party modifications of Contributor Version, or (ii) the
combination of Modifications made by that Contributor with other
software (except as part of the Contributor Version) or other
devices; or (3) under Patent Claims infringed by Covered
Software in the absence of Modifications made by that
Contributor.
3. Distribution Obligations.
3.1. Availability of Source Code. Any Covered Software that You
distribute or otherwise make available in Executable form must
also be made available in Source Code form and that Source Code
form must be distributed only under the terms of this License.
You must include a copy of this License with every copy of the
Source Code form of the Covered Software You distribute or
otherwise make available. You must inform recipients of any such
Covered Software in Executable form as to how they can obtain
such Covered Software in Source Code form in a reasonable manner
on or through a medium customarily used for software exchange.
3.2. Modifications. The Modifications that You create or to
which You contribute are governed by the terms of this License.
You represent that You believe Your Modifications are Your
original creation(s) and/or You have sufficient rights to grant
the rights conveyed by this License.
3.3. Required Notices. You must include a notice in each of Your
Modifications that identifies You as the Contributor of the
Modification. You may not remove or alter any copyright, patent
or trademark notices contained within the Covered Software, or
any notices of licensing or any descriptive text giving
attribution to any Contributor or the Initial Developer.
3.4. Application of Additional Terms. You may not offer or
impose any terms on any Covered Software in Source Code form
that alters or restricts the applicable version of this License
or the recipients rights hereunder. You may choose to offer, and
to charge a fee for, warranty, support, indemnity or liability
obligations to one or more recipients of Covered
Software. However, you may do so only on Your own behalf, and
not on behalf of the Initial Developer or any Contributor. You
must make it absolutely clear that any such warranty, support,
indemnity or liability obligation is offered by You alone, and
You hereby agree to indemnify the Initial Developer and every
Contributor for any liability incurred by the Initial Developer
or such Contributor as a result of warranty, support, indemnity
or liability terms You offer.
3.5. Distribution of Executable Versions. You may distribute the
Executable form of the Covered Software under the terms of this
License or under the terms of a license of Your choice, which
may contain terms different from this License, provided that You
are in compliance with the terms of this License and that the
license for the Executable form does not attempt to limit or
alter the recipients rights in the Source Code form from the
rights set forth in this License. If You distribute the Covered
Software in Executable form under a different license, You must
make it absolutely clear that any terms which differ from this
License are offered by You alone, not by the Initial Developer
or Contributor. You hereby agree to indemnify the Initial
Developer and every Contributor for any liability incurred by
the Initial Developer or such Contributor as a result of any
such terms You offer.
3.6. Larger Works. You may create a Larger Work by combining
Covered Software with other code not governed by the terms of
this License and distribute the Larger Work as a single product.
In such a case, You must make sure the requirements of this
License are fulfilled for the Covered Software.
4. Versions of the License.
4.1. New Versions. Sun Microsystems, Inc. is the initial license
steward and may publish revised and/or new versions of this
License from time to time. Each version will be given a
distinguishing version number. Except as provided in Section
4.3, no one other than the license steward has the right to
modify this License.
4.2. Effect of New Versions. You may always continue to use,
distribute or otherwise make the Covered Software available
under the terms of the version of the License under which You
originally received the Covered Software. If the Initial
Developer includes a notice in the Original Software prohibiting
it from being distributed or otherwise made available under any
subsequent version of the License, You must distribute and make
the Covered Software available under the terms of the version of
the License under which You originally received the Covered
Software. Otherwise, You may also choose to use, distribute or
otherwise make the Covered Software available under the terms of
any subsequent version of the License published by the license
steward.
4.3. Modified Versions. When You are an Initial Developer and
You want to create a new license for Your Original Software, You
may create and use a modified version of this License if You:
(a) rename the license and remove any references to the name of
the license steward (except to note that the license differs
from this License); and (b) otherwise make it clear that the
license contains terms which differ from this License.
5. DISCLAIMER OF WARRANTY. COVERED SOFTWARE IS PROVIDED UNDER
THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND,
EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION,
WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS,
MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED
SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE
DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY
OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING,
REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE
IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
6. TERMINATION.
6.1. This License and the rights granted hereunder will
terminate automatically if You fail to comply with terms herein
and fail to cure such breach within 30 days of becoming aware of
the breach. Provisions which, by their nature, must remain in
effect beyond the termination of this License shall survive.
6.2. If You assert a patent infringement claim (excluding
declaratory judgment actions) against Initial Developer or a
Contributor (the Initial Developer or Contributor against whom
You assert such claim is referred to as Participant) alleging
that the Participant Software (meaning the Contributor Version
where the Participant is a Contributor or the Original Software
where the Participant is the Initial Developer) directly or
indirectly infringes any patent, then any and all rights granted
directly or indirectly to You by such Participant, the Initial
Developer (if the Initial Developer is not the Participant) and
all Contributors under Sections 2.1 and/or 2.2 of this License
shall, upon 60 days notice from Participant terminate
prospectively and automatically at the expiration of such 60 day
notice period, unless if within such 60 day period You withdraw
Your claim with respect to the Participant Software against such
Participant either unilaterally or pursuant to a written
agreement with Participant.
6.3. In the event of termination under Sections 6.1 or 6.2
above, all end user licenses that have been validly granted by
You or any distributor hereunder prior to termination (excluding
licenses granted to You by any distributor) shall survive
termination.
7. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO
LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR
OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER
CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY
SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY
INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST
PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR
MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES,
EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY
OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO
LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH
PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH
LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR
LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS
EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
8. U.S. GOVERNMENT END USERS. The Covered Software is a
commercial item, as that term is defined in 48 C.F.R. 2.101
(Oct. 1995), consisting of commercial computer software (as that
term is defined at 48 C.F.R. 252.227-7014(a)(1)) and commercial
computer software documentation as such terms are used in 48
C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and
48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all
U.S. Government End Users acquire Covered Software with only
those rights set forth herein. This U.S. Government Rights
clause is in lieu of, and supersedes, any other FAR, DFAR, or
other clause or provision that addresses Government rights in
computer software under this License.
9. MISCELLANEOUS. This License represents the complete agreement
concerning subject matter hereof. If any provision of this
License is held to be unenforceable, such provision shall be
reformed only to the extent necessary to make it enforceable.
This License shall be governed by the law of the jurisdiction
specified in a notice contained within the Original Software
(except to the extent applicable law, if any, provides
otherwise), excluding such jurisdictions conflict-of-law
provisions. Any litigation relating to this License shall be
subject to the jurisdiction of the courts located in the
jurisdiction and venue specified in a notice contained within
the Original Software, with the losing party responsible for
costs, including, without limitation, court costs and reasonable
attorneys fees and expenses. The application of the United
Nations Convention on Contracts for the International Sale of
Goods is expressly excluded. Any law or regulation which
provides that the language of a contract shall be construed
against the drafter shall not apply to this License. You agree
that You alone are responsible for compliance with the United
States export administration regulations (and the export control
laws and regulation of any other countries) when You use,
distribute or otherwise make available any Covered Software.
10. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and
the Contributors, each party is responsible for claims and
damages arising, directly or indirectly, out of its utilization
of rights under this License and You agree to work with Initial
Developer and Contributors to distribute such responsibility on
an equitable basis. Nothing herein is intended or shall be
deemed to constitute any admission of liability.
----------------------------------------------------------------
NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND
DISTRIBUTION LICENSE (CDDL): This code is released under the
CDDL and shall be governed by the laws of the State of
California (excluding conflict-of-law provisions). Any
litigation relating to this License shall be subject to the
jurisdiction of the Federal Courts of the Northern District of
California and the state courts of the State of California, with
venue lying in Santa Clara County, California.
----------------------------------------------------------------

View File

@@ -0,0 +1,458 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS

View File

@@ -0,0 +1,19 @@
TEMPLATE=subdirs
CONFIG+=ordered
SUBDIRS= \
buildfiles/dcraw_emu.pro \
buildfiles/libraw.pro \
buildfiles/postprocessing_benchmark.pro \
buildfiles/dcraw_half.pro \
# buildfiles/half_mt.pro \
buildfiles/mem_image.pro \
buildfiles/raw-identify.pro \
buildfiles/simple_dcraw.pro \
buildfiles/multirender_test.pro \
buildfiles/unprocessed_raw.pro \
buildfiles/4channels.pro \
buildfiles/rawtextdump.pro \
buildfiles/openbayer_sample.pro
CONFIG-=qt

123
rtengine/libraw/LibRaw.sln Normal file
View File

@@ -0,0 +1,123 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30011.22
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dcraw_emu", "buildfiles\dcraw_emu.vcxproj", "{48688DB8-559A-3DE2-ADDE-5BD27BFEDDA2}"
ProjectSection(ProjectDependencies) = postProject
{A71D2131-F425-381F-8A9A-29D60132A046} = {A71D2131-F425-381F-8A9A-29D60132A046}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libraw", "buildfiles\libraw.vcxproj", "{A71D2131-F425-381F-8A9A-29D60132A046}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "postprocessing_benchmark", "buildfiles\postprocessing_benchmark.vcxproj", "{5C66A8FA-D211-3E2F-A2F1-0C3C665689CC}"
ProjectSection(ProjectDependencies) = postProject
{A71D2131-F425-381F-8A9A-29D60132A046} = {A71D2131-F425-381F-8A9A-29D60132A046}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dcraw_half", "buildfiles\dcraw_half.vcxproj", "{C6EACFA3-9FC5-393B-BCF6-2874B05E4581}"
ProjectSection(ProjectDependencies) = postProject
{A71D2131-F425-381F-8A9A-29D60132A046} = {A71D2131-F425-381F-8A9A-29D60132A046}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mem_image", "buildfiles\mem_image.vcxproj", "{BF8A2750-B847-3BA6-9EAF-05F43380F46C}"
ProjectSection(ProjectDependencies) = postProject
{A71D2131-F425-381F-8A9A-29D60132A046} = {A71D2131-F425-381F-8A9A-29D60132A046}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "raw-identify", "buildfiles\raw-identify.vcxproj", "{7C4F61DB-717E-36C9-B20E-36F8E218AB51}"
ProjectSection(ProjectDependencies) = postProject
{A71D2131-F425-381F-8A9A-29D60132A046} = {A71D2131-F425-381F-8A9A-29D60132A046}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simple_dcraw", "buildfiles\simple_dcraw.vcxproj", "{AD1E31D8-A022-3672-982F-C8280A0D6458}"
ProjectSection(ProjectDependencies) = postProject
{A71D2131-F425-381F-8A9A-29D60132A046} = {A71D2131-F425-381F-8A9A-29D60132A046}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multirender_test", "buildfiles\multirender_test.vcxproj", "{30D21208-219A-3AA8-ADCF-E6B1FFAF6A73}"
ProjectSection(ProjectDependencies) = postProject
{A71D2131-F425-381F-8A9A-29D60132A046} = {A71D2131-F425-381F-8A9A-29D60132A046}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unprocessed_raw", "buildfiles\unprocessed_raw.vcxproj", "{1333E21E-D3B5-3640-9A4D-D8955082B855}"
ProjectSection(ProjectDependencies) = postProject
{A71D2131-F425-381F-8A9A-29D60132A046} = {A71D2131-F425-381F-8A9A-29D60132A046}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "4channels", "buildfiles\4channels.vcxproj", "{F68CBE78-B27A-3A05-BCD3-293E8CAC1C52}"
ProjectSection(ProjectDependencies) = postProject
{A71D2131-F425-381F-8A9A-29D60132A046} = {A71D2131-F425-381F-8A9A-29D60132A046}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rawtextdump", "buildfiles\rawtextdump.vcxproj", "{53A1E3F0-8032-348E-B3BF-3E540A45005F}"
ProjectSection(ProjectDependencies) = postProject
{A71D2131-F425-381F-8A9A-29D60132A046} = {A71D2131-F425-381F-8A9A-29D60132A046}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openbayer_sample", "buildfiles\openbayer_sample.vcxproj", "{EF67FEF1-4B19-3765-A660-9F8E9333DEF3}"
ProjectSection(ProjectDependencies) = postProject
{A71D2131-F425-381F-8A9A-29D60132A046} = {A71D2131-F425-381F-8A9A-29D60132A046}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{48688DB8-559A-3DE2-ADDE-5BD27BFEDDA2}.Debug|x64.ActiveCfg = Debug|x64
{48688DB8-559A-3DE2-ADDE-5BD27BFEDDA2}.Debug|x64.Build.0 = Debug|x64
{48688DB8-559A-3DE2-ADDE-5BD27BFEDDA2}.Release|x64.ActiveCfg = Release|x64
{48688DB8-559A-3DE2-ADDE-5BD27BFEDDA2}.Release|x64.Build.0 = Release|x64
{A71D2131-F425-381F-8A9A-29D60132A046}.Debug|x64.ActiveCfg = Debug|x64
{A71D2131-F425-381F-8A9A-29D60132A046}.Debug|x64.Build.0 = Debug|x64
{A71D2131-F425-381F-8A9A-29D60132A046}.Release|x64.ActiveCfg = Release|x64
{A71D2131-F425-381F-8A9A-29D60132A046}.Release|x64.Build.0 = Release|x64
{5C66A8FA-D211-3E2F-A2F1-0C3C665689CC}.Debug|x64.ActiveCfg = Debug|x64
{5C66A8FA-D211-3E2F-A2F1-0C3C665689CC}.Debug|x64.Build.0 = Debug|x64
{5C66A8FA-D211-3E2F-A2F1-0C3C665689CC}.Release|x64.ActiveCfg = Release|x64
{5C66A8FA-D211-3E2F-A2F1-0C3C665689CC}.Release|x64.Build.0 = Release|x64
{C6EACFA3-9FC5-393B-BCF6-2874B05E4581}.Debug|x64.ActiveCfg = Debug|x64
{C6EACFA3-9FC5-393B-BCF6-2874B05E4581}.Debug|x64.Build.0 = Debug|x64
{C6EACFA3-9FC5-393B-BCF6-2874B05E4581}.Release|x64.ActiveCfg = Release|x64
{C6EACFA3-9FC5-393B-BCF6-2874B05E4581}.Release|x64.Build.0 = Release|x64
{BF8A2750-B847-3BA6-9EAF-05F43380F46C}.Debug|x64.ActiveCfg = Debug|x64
{BF8A2750-B847-3BA6-9EAF-05F43380F46C}.Debug|x64.Build.0 = Debug|x64
{BF8A2750-B847-3BA6-9EAF-05F43380F46C}.Release|x64.ActiveCfg = Release|x64
{BF8A2750-B847-3BA6-9EAF-05F43380F46C}.Release|x64.Build.0 = Release|x64
{7C4F61DB-717E-36C9-B20E-36F8E218AB51}.Debug|x64.ActiveCfg = Debug|x64
{7C4F61DB-717E-36C9-B20E-36F8E218AB51}.Debug|x64.Build.0 = Debug|x64
{7C4F61DB-717E-36C9-B20E-36F8E218AB51}.Release|x64.ActiveCfg = Release|x64
{7C4F61DB-717E-36C9-B20E-36F8E218AB51}.Release|x64.Build.0 = Release|x64
{AD1E31D8-A022-3672-982F-C8280A0D6458}.Debug|x64.ActiveCfg = Debug|x64
{AD1E31D8-A022-3672-982F-C8280A0D6458}.Debug|x64.Build.0 = Debug|x64
{AD1E31D8-A022-3672-982F-C8280A0D6458}.Release|x64.ActiveCfg = Release|x64
{AD1E31D8-A022-3672-982F-C8280A0D6458}.Release|x64.Build.0 = Release|x64
{30D21208-219A-3AA8-ADCF-E6B1FFAF6A73}.Debug|x64.ActiveCfg = Debug|x64
{30D21208-219A-3AA8-ADCF-E6B1FFAF6A73}.Debug|x64.Build.0 = Debug|x64
{30D21208-219A-3AA8-ADCF-E6B1FFAF6A73}.Release|x64.ActiveCfg = Release|x64
{30D21208-219A-3AA8-ADCF-E6B1FFAF6A73}.Release|x64.Build.0 = Release|x64
{1333E21E-D3B5-3640-9A4D-D8955082B855}.Debug|x64.ActiveCfg = Debug|x64
{1333E21E-D3B5-3640-9A4D-D8955082B855}.Debug|x64.Build.0 = Debug|x64
{1333E21E-D3B5-3640-9A4D-D8955082B855}.Release|x64.ActiveCfg = Release|x64
{1333E21E-D3B5-3640-9A4D-D8955082B855}.Release|x64.Build.0 = Release|x64
{F68CBE78-B27A-3A05-BCD3-293E8CAC1C52}.Debug|x64.ActiveCfg = Debug|x64
{F68CBE78-B27A-3A05-BCD3-293E8CAC1C52}.Debug|x64.Build.0 = Debug|x64
{F68CBE78-B27A-3A05-BCD3-293E8CAC1C52}.Release|x64.ActiveCfg = Release|x64
{F68CBE78-B27A-3A05-BCD3-293E8CAC1C52}.Release|x64.Build.0 = Release|x64
{53A1E3F0-8032-348E-B3BF-3E540A45005F}.Debug|x64.ActiveCfg = Debug|x64
{53A1E3F0-8032-348E-B3BF-3E540A45005F}.Debug|x64.Build.0 = Debug|x64
{53A1E3F0-8032-348E-B3BF-3E540A45005F}.Release|x64.ActiveCfg = Release|x64
{53A1E3F0-8032-348E-B3BF-3E540A45005F}.Release|x64.Build.0 = Release|x64
{EF67FEF1-4B19-3765-A660-9F8E9333DEF3}.Debug|x64.ActiveCfg = Debug|x64
{EF67FEF1-4B19-3765-A660-9F8E9333DEF3}.Debug|x64.Build.0 = Debug|x64
{EF67FEF1-4B19-3765-A660-9F8E9333DEF3}.Release|x64.ActiveCfg = Release|x64
{EF67FEF1-4B19-3765-A660-9F8E9333DEF3}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {FB319846-66B9-4F61-8285-5EA4D2F09634}
EndGlobalSection
EndGlobal

140
rtengine/libraw/Makefile.am Normal file
View File

@@ -0,0 +1,140 @@
# autoconf macros
ACLOCAL_AMFLAGS = -I m4
AUTOMAKE_OPTIONS=subdir-objects
LIBRAW_SHLIB_VER = @LIBRAW_SHLIB_VERSION@
LIBRAW_RELEASE_VER = @LIBRAW_RELEASE_VERSION@
# Headers
nobase_include_HEADERS = libraw/libraw.h \
libraw/libraw_alloc.h \
libraw/libraw_const.h \
libraw/libraw_datastream.h \
libraw/libraw_internal.h \
libraw/libraw_types.h \
libraw/libraw_version.h
# Docs
doc_DATA = COPYRIGHT \
LICENSE.CDDL \
LICENSE.LGPL \
Changelog.txt
# pkg-config .pc files
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libraw.pc libraw_r.pc
# Libraries
lib_LTLIBRARIES = lib/libraw.la lib/libraw_r.la
lib_libraw_a_CPPFLAGS = -DLIBRAW_NOTHREADS -w
lib_libraw_a_SOURCES = src/libraw_c_api.cpp \
src/libraw_datastream.cpp src/decoders/canon_600.cpp \
src/decoders/crx.cpp src/decoders/decoders_dcraw.cpp \
src/decoders/decoders_libraw_dcrdefs.cpp \
src/decoders/decoders_libraw.cpp src/decoders/dng.cpp \
src/decoders/fp_dng.cpp src/decoders/fuji_compressed.cpp \
src/decoders/generic.cpp src/decoders/kodak_decoders.cpp \
src/decoders/load_mfbacks.cpp src/decoders/smal.cpp \
src/decoders/unpack_thumb.cpp src/decoders/unpack.cpp \
src/demosaic/aahd_demosaic.cpp src/demosaic/ahd_demosaic.cpp \
src/demosaic/dcb_demosaic.cpp src/demosaic/dht_demosaic.cpp \
src/demosaic/misc_demosaic.cpp src/demosaic/xtrans_demosaic.cpp \
src/integration/dngsdk_glue.cpp src/integration/rawspeed_glue.cpp\
src/metadata/adobepano.cpp src/metadata/canon.cpp \
src/metadata/ciff.cpp src/metadata/cr3_parser.cpp \
src/metadata/epson.cpp src/metadata/exif_gps.cpp \
src/metadata/fuji.cpp src/metadata/identify_tools.cpp \
src/metadata/identify.cpp src/metadata/kodak.cpp \
src/metadata/leica.cpp src/metadata/makernotes.cpp \
src/metadata/mediumformat.cpp src/metadata/minolta.cpp \
src/metadata/misc_parsers.cpp src/metadata/nikon.cpp \
src/metadata/normalize_model.cpp src/metadata/olympus.cpp \
src/metadata/hasselblad_model.cpp \
src/metadata/p1.cpp src/metadata/pentax.cpp src/metadata/samsung.cpp \
src/metadata/sony.cpp src/metadata/tiff.cpp \
src/postprocessing/aspect_ratio.cpp \
src/postprocessing/dcraw_process.cpp src/postprocessing/mem_image.cpp \
src/postprocessing/postprocessing_aux.cpp \
src/postprocessing/postprocessing_utils_dcrdefs.cpp \
src/postprocessing/postprocessing_utils.cpp \
src/preprocessing/ext_preprocess.cpp src/preprocessing/raw2image.cpp \
src/preprocessing/subtract_black.cpp src/tables/cameralist.cpp \
src/tables/colorconst.cpp src/tables/colordata.cpp \
src/tables/wblists.cpp src/utils/curves.cpp \
src/utils/decoder_info.cpp src/utils/init_close_utils.cpp \
src/utils/open.cpp src/utils/phaseone_processing.cpp \
src/utils/read_utils.cpp src/utils/thumb_utils.cpp \
src/utils/utils_dcraw.cpp src/utils/utils_libraw.cpp \
src/write/apply_profile.cpp src/write/file_write.cpp \
src/write/tiff_writer.cpp src/x3f/x3f_parse_process.cpp \
src/x3f/x3f_utils_patched.cpp
lib_libraw_r_a_CXXFLAGS = -pthread -w
lib_libraw_r_a_CFLAGS = -pthread -w
lib_libraw_la_SOURCES = $(lib_libraw_a_SOURCES)
lib_libraw_r_la_SOURCES = $(lib_libraw_a_SOURCES)
lib_libraw_la_LDFLAGS = -no-undefined -version-info $(LIBRAW_SHLIB_VER)
lib_libraw_r_la_LDFLAGS = -no-undefined -version-info $(LIBRAW_SHLIB_VER)
# Sample binaries
if EXAMPLES
bin_PROGRAMS = bin/raw-identify \
bin/unprocessed_raw \
bin/4channels \
bin/rawtextdump \
bin/simple_dcraw \
bin/mem_image \
bin/dcraw_half \
bin/half_mt \
bin/multirender_test \
bin/postprocessing_benchmark \
bin/dcraw_emu
endif
bin_raw_identify_SOURCES = samples/raw-identify.cpp
bin_raw_identify_CPPFLAGS = $(lib_libraw_a_CPPFLAGS)
bin_raw_identify_LDADD = lib/libraw.la
bin_unprocessed_raw_SOURCES = samples/unprocessed_raw.cpp
bin_unprocessed_raw_CPPFLAGS = $(lib_libraw_a_CPPFLAGS)
bin_unprocessed_raw_LDADD = lib/libraw.la
bin_rawtextdump_SOURCES = samples/rawtextdump.cpp
bin_rawtextdump_CPPFLAGS = $(lib_libraw_a_CPPFLAGS)
bin_rawtextdump_LDADD = lib/libraw.la
bin_4channels_SOURCES = samples/4channels.cpp
bin_4channels_CPPFLAGS = $(lib_libraw_a_CPPFLAGS)
bin_4channels_LDADD = lib/libraw.la
bin_simple_dcraw_SOURCES = samples/simple_dcraw.cpp
bin_simple_dcraw_CPPFLAGS = $(lib_libraw_a_CPPFLAGS)
bin_simple_dcraw_LDADD = lib/libraw.la
bin_multirender_test_SOURCES = samples/multirender_test.cpp
bin_multirender_test_CPPFLAGS = $(lib_libraw_a_CPPFLAGS)
bin_multirender_test_LDADD = lib/libraw.la
bin_postprocessing_benchmark_SOURCES = samples/postprocessing_benchmark.cpp
bin_postprocessing_benchmark_CPPFLAGS = $(lib_libraw_a_CPPFLAGS)
bin_postprocessing_benchmark_LDADD = lib/libraw.la
bin_mem_image_SOURCES = samples/mem_image_sample.cpp
bin_mem_image_CPPFLAGS = $(lib_libraw_a_CPPFLAGS)
bin_mem_image_LDADD = lib/libraw.la
bin_dcraw_half_SOURCES = samples/dcraw_half.c
bin_dcraw_half_CPPFLAGS = $(lib_libraw_a_CPPFLAGS)
bin_dcraw_half_LDADD = lib/libraw.la
bin_half_mt_SOURCES = samples/half_mt.c
bin_half_mt_CFLAGS = $(lib_libraw_r_a_CXXFLAGS)
bin_half_mt_LDADD = lib/libraw_r.la
bin_dcraw_emu_SOURCES = samples/dcraw_emu.cpp
bin_dcraw_emu_CPPFLAGS = $(lib_libraw_a_CPPFLAGS)
bin_dcraw_emu_LDADD = lib/libraw.la

View File

@@ -0,0 +1,496 @@
all: library all_samples
CC=clang
CXX=clang++
#CC=gcc
#CXX=g++
LDADD+=-lz
CFLAGS=-DLIBRAW_USE_AUTOPTR
CFLAGS+= -g -I. -pedantic -Wno-long-long -Wno-overflow -O3
# macOS dual arch
# CFLAGS+=-arch x86_64 -arch arm64
# RawSpeed Support
# CFLAGS+=-DUSE_RAWSPEED -I../RawSpeed -I/opt/local/include/libxml2
# LDADD+=-L../RawSpeed/RawSpeed/release -lrawspeed -L/opt/local/include -ljpeg -lxml2
# RAWSPEED_DATA=../RawSpeed/data/cameras.xml
# RawSpeed3 Support
#CFLAGS+=-DUSE_RAWSPEED3 -DUSE_RAWSPEED_BITS -I./RawSpeed3/
#LDADD+=-L../RawSpeed-v3/release -lrawspeed3 -L/usr/local/lib -ljpeg -lz
# DNG SDK Support
# CFLAGS+=-DUSE_DNGSDK -I../dng_sdk/source
# LDADDD+=-L../dng_sdk/release -ldng -ljpeg -lz
# LCMS support
# For lcms2 set -DUSE_LCMS2
#CFLAGS+=-DUSE_LCMS2 -I/opt/local/include
#LDADD+=-L/opt/local/lib -llcms
# Jasper support for RedCine
#CFLAGS+=-DUSE_JASPER -I/opt/local/include
#LDADD+=-L/opt/local/lib -ljasper
# ZLIB support (FP dng)
CFLAGS+=-DUSE_ZLIB
LDADD+=-lz
# JPEG support for DNG and Kodak
CFLAGS+=-DUSE_JPEG -I/usr/local/include
LDADD+=-L/usr/local/lib -ljpeg
# LIBJPEG8:
CFLAGS+=-DUSE_JPEG8
CSTFLAGS=$(CFLAGS) -DLIBRAW_NOTHREADS
HEADERS=libraw/libraw.h libraw/libraw_alloc.h libraw/libraw_const.h \
libraw/libraw_datastream.h libraw/libraw_internal.h \
libraw/libraw_types.h libraw/libraw_version.h \
internal/dcraw_defs.h internal/dcraw_fileio_defs.h internal/defines.h \
internal/dmp_include.h internal/libraw_cameraids.h internal/libraw_cxx_defs.h \
internal/libraw_internal_funcs.h internal/var_defines.h internal/x3f_tools.h
LIB_OBJECTS= object/libraw_datastream.o object/libraw_c_api.o \
object/cameralist.o object/fuji_compressed.o \
object/crx.o object/fp_dng.o object/decoders_libraw.o \
object/unpack.o object/unpack_thumb.o \
object/rawspeed_glue.o object/dngsdk_glue.o \
object/colorconst.o object/utils_libraw.o object/init_close_utils.o \
object/decoder_info.o object/open.o object/phaseone_processing.o \
object/thumb_utils.o \
object/tiff_writer.o object/subtract_black.o object/postprocessing_utils.o \
object/dcraw_process.o object/raw2image.o object/mem_image.o \
object/x3f_utils_patched.o object/x3f_parse_process.o \
object/read_utils.o object/curves.o object/utils_dcraw.o \
object/colordata.o \
object/canon_600.o object/decoders_dcraw.o \
object/decoders_libraw_dcrdefs.o object/generic.o \
object/kodak_decoders.o object/dng.o object/smal.o \
object/load_mfbacks.o \
object/sony.o object/nikon.o object/samsung.o object/cr3_parser.o \
object/canon.o object/epson.o object/olympus.o object/leica.o \
object/fuji.o object/adobepano.o object/pentax.o object/p1.o \
object/makernotes.o object/exif_gps.o object/kodak.o \
object/tiff.o object/ciff.o object/mediumformat.o object/minolta.o \
object/identify_tools.o \
object/hasselblad_model.o object/normalize_model.o object/identify.o \
object/misc_parsers.o object/wblists.o \
object/postprocessing_aux.o object/postprocessing_utils_dcrdefs.o \
object/aspect_ratio.o \
object/misc_demosaic.o object/xtrans_demosaic.o object/ahd_demosaic.o \
object/dht_demosaic.o object/aahd_demosaic.o object/dcb_demosaic.o \
object/file_write.o \
object/ext_preprocess.o object/apply_profile.o
LIB_MT_OBJECTS= object/libraw_datastream.mt.o object/libraw_c_api.mt.o \
object/cameralist.mt.o object/fuji_compressed.mt.o \
object/crx.mt.o object/fp_dng.mt.o object/decoders_libraw.mt.o \
object/unpack.mt.o object/unpack_thumb.mt.o \
object/rawspeed_glue.mt.o object/dngsdk_glue.mt.o \
object/colorconst.mt.o object/utils_libraw.mt.o \
object/init_close_utils.mt.o \
object/decoder_info.mt.o object/open.mt.o object/phaseone_processing.mt.o \
object/thumb_utils.mt.o \
object/tiff_writer.mt.o object/subtract_black.mt.o \
object/postprocessing_utils.mt.o object/dcraw_process.mt.o \
object/raw2image.mt.o object/mem_image.mt.o \
object/x3f_utils_patched.mt.o object/x3f_parse_process.mt.o \
object/read_utils.mt.o object/curves.mt.o object/utils_dcraw.mt.o \
object/colordata.mt.o \
object/canon_600.mt.o object/decoders_dcraw.mt.o \
object/decoders_libraw_dcrdefs.mt.o object/generic.mt.o \
object/kodak_decoders.mt.o object/dng.mt.o object/smal.mt.o \
object/load_mfbacks.mt.o \
object/sony.mt.o object/nikon.mt.o object/samsung.mt.o \
object/cr3_parser.mt.o object/canon.mt.o object/epson.mt.o \
object/olympus.mt.o object/leica.mt.o \
object/fuji.mt.o object/adobepano.mt.o object/pentax.mt.o object/p1.mt.o \
object/makernotes.mt.o object/exif_gps.mt.o object/kodak.mt.o \
object/tiff.mt.o object/ciff.mt.o object/mediumformat.mt.o \
object/minolta.mt.o \
object/identify_tools.mt.o \
object/hasselblad_model.mt.o object/normalize_model.mt.o object/identify.mt.o \
object/misc_parsers.mt.o object/wblists.mt.o \
object/postprocessing_aux.mt.o object/postprocessing_utils_dcrdefs.mt.o \
object/aspect_ratio.mt.o \
object/misc_demosaic.mt.o object/xtrans_demosaic.mt.o \
object/ahd_demosaic.mt.o object/dht_demosaic.mt.o \
object/aahd_demosaic.mt.o object/dcb_demosaic.mt.o \
object/file_write.mt.o \
object/ext_preprocess.mt.o object/apply_profile.mt.o
LR_INCLUDES=libraw/libraw.h libraw/libraw_alloc.h \
libraw/libraw_const.h libraw/libraw_datastream.h \
libraw/libraw_internal.h libraw/libraw_types.h \
libraw/libraw_version.h
library: lib/libraw.a lib/libraw_r.a
all_samples: bin/raw-identify bin/simple_dcraw bin/dcraw_emu \
bin/dcraw_half bin/half_mt bin/mem_image \
bin/unprocessed_raw bin/4channels bin/multirender_test \
bin/postprocessing_benchmark bin/rawtextdump
## RawSpeed xml file
RawSpeed/rawspeed_xmldata.cpp: ${RAWSPEED_DATA}
./rsxml2c.sh ${RAWSPEED_DATA} > RawSpeed/rawspeed_xmldata.cpp
## Samples ##
bin/raw-identify: lib/libraw.a samples/raw-identify.cpp $(HEADERS)
$(CXX) ${CFLAGS} -o bin/raw-identify samples/raw-identify.cpp -L./lib -lraw -lm ${LDADD}
bin/simple_dcraw: lib/libraw.a samples/simple_dcraw.cpp $(HEADERS)
$(CXX) -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/simple_dcraw samples/simple_dcraw.cpp -L./lib -lraw -lm ${LDADD}
bin/multirender_test: lib/libraw.a samples/multirender_test.cpp $(HEADERS)
$(CXX) -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/multirender_test samples/multirender_test.cpp -L./lib -lraw -lm ${LDADD}
bin/postprocessing_benchmark: lib/libraw.a samples/postprocessing_benchmark.cpp $(HEADERS)
$(CXX) -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/postprocessing_benchmark samples/postprocessing_benchmark.cpp -L./lib -lraw -lm ${LDADD}
bin/unprocessed_raw: lib/libraw.a samples/unprocessed_raw.cpp $(HEADERS)
$(CXX) -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/unprocessed_raw samples/unprocessed_raw.cpp -L./lib -lraw -lm ${LDADD}
bin/rawtextdump: lib/libraw.a samples/rawtextdump.cpp $(HEADERS)
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/rawtextdump samples/rawtextdump.cpp -L./lib -lraw -lm ${LDADD}
bin/4channels: lib/libraw.a samples/4channels.cpp $(HEADERS)
$(CXX) -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/4channels samples/4channels.cpp -L./lib -lraw -lm ${LDADD}
bin/mem_image: lib/libraw.a samples/mem_image_sample.cpp $(HEADERS)
$(CXX) ${CFLAGS} -o bin/mem_image samples/mem_image_sample.cpp -L./lib -lraw -lm ${LDADD}
bin/dcraw_half: lib/libraw.a samples/dcraw_half.c $(HEADERS)
$(CC) ${CFLAGS} -o bin/dcraw_half samples/dcraw_half.c -L./lib -lraw -lm -lstdc++ ${LDADD}
bin/half_mt: lib/libraw_r.a samples/half_mt.c $(HEADERS)
$(CC) -pthread ${CFLAGS} -o bin/half_mt samples/half_mt.c -L./lib -lraw_r -lm -lstdc++ ${LDADD}
bin/dcraw_emu: lib/libraw.a samples/dcraw_emu.cpp $(HEADERS)
$(CXX) ${CFLAGS} -o bin/dcraw_emu samples/dcraw_emu.cpp -L./lib -lraw_r -lm ${LDADD}
lib/libraw.a: ${LIB_OBJECTS}
rm -f lib/libraw.a
ar crv lib/libraw.a ${LIB_OBJECTS}
ranlib lib/libraw.a
lib/libraw_r.a: ${LIB_MT_OBJECTS}
rm -f lib/libraw_r.a
ar crv lib/libraw_r.a ${LIB_MT_OBJECTS}
ranlib lib/libraw_r.a
clean:
rm -fr bin/*.dSYM
rm -f *.o *~ src/*~ samples/*~ internal/*~ libraw/*~ lib/lib*.a bin/[4a-z]* object/*.o object/*.mto dcraw/*~ doc/*~ bin/*~ src/*/*~
## script-created rules
object/libraw_c_api.o: src/libraw_c_api.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/libraw_c_api.o src/libraw_c_api.cpp
object/libraw_c_api.mt.o: src/libraw_c_api.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/libraw_c_api.mt.o src/libraw_c_api.cpp
object/libraw_datastream.o: src/libraw_datastream.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/libraw_datastream.o src/libraw_datastream.cpp
object/libraw_datastream.mt.o: src/libraw_datastream.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/libraw_datastream.mt.o src/libraw_datastream.cpp
object/canon_600.o: src/decoders/canon_600.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/canon_600.o src/decoders/canon_600.cpp
object/canon_600.mt.o: src/decoders/canon_600.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/canon_600.mt.o src/decoders/canon_600.cpp
object/crx.o: src/decoders/crx.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/crx.o src/decoders/crx.cpp
object/crx.mt.o: src/decoders/crx.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/crx.mt.o src/decoders/crx.cpp
object/decoders_dcraw.o: src/decoders/decoders_dcraw.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoders_dcraw.o src/decoders/decoders_dcraw.cpp
object/decoders_dcraw.mt.o: src/decoders/decoders_dcraw.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/decoders_dcraw.mt.o src/decoders/decoders_dcraw.cpp
object/decoders_libraw_dcrdefs.o: src/decoders/decoders_libraw_dcrdefs.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoders_libraw_dcrdefs.o src/decoders/decoders_libraw_dcrdefs.cpp
object/decoders_libraw_dcrdefs.mt.o: src/decoders/decoders_libraw_dcrdefs.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/decoders_libraw_dcrdefs.mt.o src/decoders/decoders_libraw_dcrdefs.cpp
object/decoders_libraw.o: src/decoders/decoders_libraw.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoders_libraw.o src/decoders/decoders_libraw.cpp
object/decoders_libraw.mt.o: src/decoders/decoders_libraw.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/decoders_libraw.mt.o src/decoders/decoders_libraw.cpp
object/dng.o: src/decoders/dng.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dng.o src/decoders/dng.cpp
object/dng.mt.o: src/decoders/dng.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/dng.mt.o src/decoders/dng.cpp
object/fp_dng.o: src/decoders/fp_dng.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/fp_dng.o src/decoders/fp_dng.cpp
object/fp_dng.mt.o: src/decoders/fp_dng.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/fp_dng.mt.o src/decoders/fp_dng.cpp
object/fuji_compressed.o: src/decoders/fuji_compressed.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/fuji_compressed.o src/decoders/fuji_compressed.cpp
object/fuji_compressed.mt.o: src/decoders/fuji_compressed.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/fuji_compressed.mt.o src/decoders/fuji_compressed.cpp
object/generic.o: src/decoders/generic.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/generic.o src/decoders/generic.cpp
object/generic.mt.o: src/decoders/generic.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/generic.mt.o src/decoders/generic.cpp
object/kodak_decoders.o: src/decoders/kodak_decoders.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/kodak_decoders.o src/decoders/kodak_decoders.cpp
object/kodak_decoders.mt.o: src/decoders/kodak_decoders.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/kodak_decoders.mt.o src/decoders/kodak_decoders.cpp
object/load_mfbacks.o: src/decoders/load_mfbacks.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/load_mfbacks.o src/decoders/load_mfbacks.cpp
object/load_mfbacks.mt.o: src/decoders/load_mfbacks.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/load_mfbacks.mt.o src/decoders/load_mfbacks.cpp
object/smal.o: src/decoders/smal.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/smal.o src/decoders/smal.cpp
object/smal.mt.o: src/decoders/smal.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/smal.mt.o src/decoders/smal.cpp
object/unpack_thumb.o: src/decoders/unpack_thumb.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/unpack_thumb.o src/decoders/unpack_thumb.cpp
object/unpack_thumb.mt.o: src/decoders/unpack_thumb.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/unpack_thumb.mt.o src/decoders/unpack_thumb.cpp
object/unpack.o: src/decoders/unpack.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/unpack.o src/decoders/unpack.cpp
object/unpack.mt.o: src/decoders/unpack.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/unpack.mt.o src/decoders/unpack.cpp
object/aahd_demosaic.o: src/demosaic/aahd_demosaic.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/aahd_demosaic.o src/demosaic/aahd_demosaic.cpp
object/aahd_demosaic.mt.o: src/demosaic/aahd_demosaic.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/aahd_demosaic.mt.o src/demosaic/aahd_demosaic.cpp
object/ahd_demosaic.o: src/demosaic/ahd_demosaic.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/ahd_demosaic.o src/demosaic/ahd_demosaic.cpp
object/ahd_demosaic.mt.o: src/demosaic/ahd_demosaic.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/ahd_demosaic.mt.o src/demosaic/ahd_demosaic.cpp
object/dcb_demosaic.o: src/demosaic/dcb_demosaic.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dcb_demosaic.o src/demosaic/dcb_demosaic.cpp
object/dcb_demosaic.mt.o: src/demosaic/dcb_demosaic.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/dcb_demosaic.mt.o src/demosaic/dcb_demosaic.cpp
object/dht_demosaic.o: src/demosaic/dht_demosaic.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dht_demosaic.o src/demosaic/dht_demosaic.cpp
object/dht_demosaic.mt.o: src/demosaic/dht_demosaic.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/dht_demosaic.mt.o src/demosaic/dht_demosaic.cpp
object/misc_demosaic.o: src/demosaic/misc_demosaic.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/misc_demosaic.o src/demosaic/misc_demosaic.cpp
object/misc_demosaic.mt.o: src/demosaic/misc_demosaic.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/misc_demosaic.mt.o src/demosaic/misc_demosaic.cpp
object/xtrans_demosaic.o: src/demosaic/xtrans_demosaic.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/xtrans_demosaic.o src/demosaic/xtrans_demosaic.cpp
object/xtrans_demosaic.mt.o: src/demosaic/xtrans_demosaic.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/xtrans_demosaic.mt.o src/demosaic/xtrans_demosaic.cpp
object/dngsdk_glue.o: src/integration/dngsdk_glue.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dngsdk_glue.o src/integration/dngsdk_glue.cpp
object/dngsdk_glue.mt.o: src/integration/dngsdk_glue.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/dngsdk_glue.mt.o src/integration/dngsdk_glue.cpp
object/rawspeed_glue.o: src/integration/rawspeed_glue.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/rawspeed_glue.o src/integration/rawspeed_glue.cpp
object/rawspeed_glue.mt.o: src/integration/rawspeed_glue.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/rawspeed_glue.mt.o src/integration/rawspeed_glue.cpp
object/adobepano.o: src/metadata/adobepano.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/adobepano.o src/metadata/adobepano.cpp
object/adobepano.mt.o: src/metadata/adobepano.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/adobepano.mt.o src/metadata/adobepano.cpp
object/canon.o: src/metadata/canon.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/canon.o src/metadata/canon.cpp
object/canon.mt.o: src/metadata/canon.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/canon.mt.o src/metadata/canon.cpp
object/ciff.o: src/metadata/ciff.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/ciff.o src/metadata/ciff.cpp
object/ciff.mt.o: src/metadata/ciff.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/ciff.mt.o src/metadata/ciff.cpp
object/cr3_parser.o: src/metadata/cr3_parser.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/cr3_parser.o src/metadata/cr3_parser.cpp
object/cr3_parser.mt.o: src/metadata/cr3_parser.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/cr3_parser.mt.o src/metadata/cr3_parser.cpp
object/epson.o: src/metadata/epson.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/epson.o src/metadata/epson.cpp
object/epson.mt.o: src/metadata/epson.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/epson.mt.o src/metadata/epson.cpp
object/exif_gps.o: src/metadata/exif_gps.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/exif_gps.o src/metadata/exif_gps.cpp
object/exif_gps.mt.o: src/metadata/exif_gps.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/exif_gps.mt.o src/metadata/exif_gps.cpp
object/fuji.o: src/metadata/fuji.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/fuji.o src/metadata/fuji.cpp
object/fuji.mt.o: src/metadata/fuji.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/fuji.mt.o src/metadata/fuji.cpp
object/identify_tools.o: src/metadata/identify_tools.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/identify_tools.o src/metadata/identify_tools.cpp
object/identify_tools.mt.o: src/metadata/identify_tools.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/identify_tools.mt.o src/metadata/identify_tools.cpp
object/identify.o: src/metadata/identify.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/identify.o src/metadata/identify.cpp
object/identify.mt.o: src/metadata/identify.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/identify.mt.o src/metadata/identify.cpp
object/kodak.o: src/metadata/kodak.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/kodak.o src/metadata/kodak.cpp
object/kodak.mt.o: src/metadata/kodak.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/kodak.mt.o src/metadata/kodak.cpp
object/leica.o: src/metadata/leica.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/leica.o src/metadata/leica.cpp
object/leica.mt.o: src/metadata/leica.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/leica.mt.o src/metadata/leica.cpp
object/makernotes.o: src/metadata/makernotes.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/makernotes.o src/metadata/makernotes.cpp
object/makernotes.mt.o: src/metadata/makernotes.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/makernotes.mt.o src/metadata/makernotes.cpp
object/mediumformat.o: src/metadata/mediumformat.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/mediumformat.o src/metadata/mediumformat.cpp
object/mediumformat.mt.o: src/metadata/mediumformat.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/mediumformat.mt.o src/metadata/mediumformat.cpp
object/minolta.o: src/metadata/minolta.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/minolta.o src/metadata/minolta.cpp
object/minolta.mt.o: src/metadata/minolta.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/minolta.mt.o src/metadata/minolta.cpp
object/misc_parsers.o: src/metadata/misc_parsers.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/misc_parsers.o src/metadata/misc_parsers.cpp
object/misc_parsers.mt.o: src/metadata/misc_parsers.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/misc_parsers.mt.o src/metadata/misc_parsers.cpp
object/nikon.o: src/metadata/nikon.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/nikon.o src/metadata/nikon.cpp
object/nikon.mt.o: src/metadata/nikon.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/nikon.mt.o src/metadata/nikon.cpp
object/hasselblad_model.o: src/metadata/hasselblad_model.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/hasselblad_model.o src/metadata/hasselblad_model.cpp
object/hasselblad_model.mt.o: src/metadata/hasselblad_model.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/hasselblad_model.mt.o src/metadata/hasselblad_model.cpp
object/normalize_model.o: src/metadata/normalize_model.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/normalize_model.o src/metadata/normalize_model.cpp
object/normalize_model.mt.o: src/metadata/normalize_model.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/normalize_model.mt.o src/metadata/normalize_model.cpp
object/olympus.o: src/metadata/olympus.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/olympus.o src/metadata/olympus.cpp
object/olympus.mt.o: src/metadata/olympus.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/olympus.mt.o src/metadata/olympus.cpp
object/p1.o: src/metadata/p1.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/p1.o src/metadata/p1.cpp
object/p1.mt.o: src/metadata/p1.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/p1.mt.o src/metadata/p1.cpp
object/pentax.o: src/metadata/pentax.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/pentax.o src/metadata/pentax.cpp
object/pentax.mt.o: src/metadata/pentax.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/pentax.mt.o src/metadata/pentax.cpp
object/samsung.o: src/metadata/samsung.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/samsung.o src/metadata/samsung.cpp
object/samsung.mt.o: src/metadata/samsung.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/samsung.mt.o src/metadata/samsung.cpp
object/sony.o: src/metadata/sony.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/sony.o src/metadata/sony.cpp
object/sony.mt.o: src/metadata/sony.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/sony.mt.o src/metadata/sony.cpp
object/tiff.o: src/metadata/tiff.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/tiff.o src/metadata/tiff.cpp
object/tiff.mt.o: src/metadata/tiff.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/tiff.mt.o src/metadata/tiff.cpp
object/aspect_ratio.o: src/postprocessing/aspect_ratio.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/aspect_ratio.o src/postprocessing/aspect_ratio.cpp
object/aspect_ratio.mt.o: src/postprocessing/aspect_ratio.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/aspect_ratio.mt.o src/postprocessing/aspect_ratio.cpp
object/dcraw_process.o: src/postprocessing/dcraw_process.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dcraw_process.o src/postprocessing/dcraw_process.cpp
object/dcraw_process.mt.o: src/postprocessing/dcraw_process.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/dcraw_process.mt.o src/postprocessing/dcraw_process.cpp
object/mem_image.o: src/postprocessing/mem_image.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/mem_image.o src/postprocessing/mem_image.cpp
object/mem_image.mt.o: src/postprocessing/mem_image.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/mem_image.mt.o src/postprocessing/mem_image.cpp
object/postprocessing_aux.o: src/postprocessing/postprocessing_aux.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/postprocessing_aux.o src/postprocessing/postprocessing_aux.cpp
object/postprocessing_aux.mt.o: src/postprocessing/postprocessing_aux.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/postprocessing_aux.mt.o src/postprocessing/postprocessing_aux.cpp
object/postprocessing_utils_dcrdefs.o: src/postprocessing/postprocessing_utils_dcrdefs.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/postprocessing_utils_dcrdefs.o src/postprocessing/postprocessing_utils_dcrdefs.cpp
object/postprocessing_utils_dcrdefs.mt.o: src/postprocessing/postprocessing_utils_dcrdefs.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/postprocessing_utils_dcrdefs.mt.o src/postprocessing/postprocessing_utils_dcrdefs.cpp
object/postprocessing_utils.o: src/postprocessing/postprocessing_utils.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/postprocessing_utils.o src/postprocessing/postprocessing_utils.cpp
object/postprocessing_utils.mt.o: src/postprocessing/postprocessing_utils.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/postprocessing_utils.mt.o src/postprocessing/postprocessing_utils.cpp
object/raw2image.o: src/preprocessing/raw2image.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/raw2image.o src/preprocessing/raw2image.cpp
object/raw2image.mt.o: src/preprocessing/raw2image.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/raw2image.mt.o src/preprocessing/raw2image.cpp
object/ext_preprocess.o: src/preprocessing/ext_preprocess.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/ext_preprocess.o src/preprocessing/ext_preprocess.cpp
object/ext_preprocess.mt.o: src/preprocessing/ext_preprocess.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/ext_preprocess.mt.o src/preprocessing/ext_preprocess.cpp
object/subtract_black.o: src/preprocessing/subtract_black.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/subtract_black.o src/preprocessing/subtract_black.cpp
object/subtract_black.mt.o: src/preprocessing/subtract_black.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/subtract_black.mt.o src/preprocessing/subtract_black.cpp
object/cameralist.o: src/tables/cameralist.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/cameralist.o src/tables/cameralist.cpp
object/cameralist.mt.o: src/tables/cameralist.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/cameralist.mt.o src/tables/cameralist.cpp
object/colorconst.o: src/tables/colorconst.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/colorconst.o src/tables/colorconst.cpp
object/colorconst.mt.o: src/tables/colorconst.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/colorconst.mt.o src/tables/colorconst.cpp
object/colordata.o: src/tables/colordata.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/colordata.o src/tables/colordata.cpp
object/colordata.mt.o: src/tables/colordata.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/colordata.mt.o src/tables/colordata.cpp
object/wblists.o: src/tables/wblists.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/wblists.o src/tables/wblists.cpp
object/wblists.mt.o: src/tables/wblists.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/wblists.mt.o src/tables/wblists.cpp
object/curves.o: src/utils/curves.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/curves.o src/utils/curves.cpp
object/curves.mt.o: src/utils/curves.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/curves.mt.o src/utils/curves.cpp
object/decoder_info.o: src/utils/decoder_info.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoder_info.o src/utils/decoder_info.cpp
object/decoder_info.mt.o: src/utils/decoder_info.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/decoder_info.mt.o src/utils/decoder_info.cpp
object/init_close_utils.o: src/utils/init_close_utils.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/init_close_utils.o src/utils/init_close_utils.cpp
object/init_close_utils.mt.o: src/utils/init_close_utils.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/init_close_utils.mt.o src/utils/init_close_utils.cpp
object/open.o: src/utils/open.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/open.o src/utils/open.cpp
object/open.mt.o: src/utils/open.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/open.mt.o src/utils/open.cpp
object/phaseone_processing.o: src/utils/phaseone_processing.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/phaseone_processing.o src/utils/phaseone_processing.cpp
object/phaseone_processing.mt.o: src/utils/phaseone_processing.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/phaseone_processing.mt.o src/utils/phaseone_processing.cpp
object/read_utils.o: src/utils/read_utils.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/read_utils.o src/utils/read_utils.cpp
object/read_utils.mt.o: src/utils/read_utils.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/read_utils.mt.o src/utils/read_utils.cpp
object/thumb_utils.o: src/utils/thumb_utils.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/thumb_utils.o src/utils/thumb_utils.cpp
object/thumb_utils.mt.o: src/utils/thumb_utils.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/thumb_utils.mt.o src/utils/thumb_utils.cpp
object/utils_dcraw.o: src/utils/utils_dcraw.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/utils_dcraw.o src/utils/utils_dcraw.cpp
object/utils_dcraw.mt.o: src/utils/utils_dcraw.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/utils_dcraw.mt.o src/utils/utils_dcraw.cpp
object/utils_libraw.o: src/utils/utils_libraw.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/utils_libraw.o src/utils/utils_libraw.cpp
object/utils_libraw.mt.o: src/utils/utils_libraw.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/utils_libraw.mt.o src/utils/utils_libraw.cpp
object/apply_profile.o: src/write/apply_profile.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/apply_profile.o src/write/apply_profile.cpp
object/apply_profile.mt.o: src/write/apply_profile.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/apply_profile.mt.o src/write/apply_profile.cpp
object/file_write.o: src/write/file_write.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/file_write.o src/write/file_write.cpp
object/file_write.mt.o: src/write/file_write.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/file_write.mt.o src/write/file_write.cpp
object/tiff_writer.o: src/write/tiff_writer.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/tiff_writer.o src/write/tiff_writer.cpp
object/tiff_writer.mt.o: src/write/tiff_writer.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/tiff_writer.mt.o src/write/tiff_writer.cpp
object/x3f_parse_process.o: src/x3f/x3f_parse_process.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/x3f_parse_process.o src/x3f/x3f_parse_process.cpp
object/x3f_parse_process.mt.o: src/x3f/x3f_parse_process.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/x3f_parse_process.mt.o src/x3f/x3f_parse_process.cpp
object/x3f_utils_patched.o: src/x3f/x3f_utils_patched.cpp $(HEADERS)
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/x3f_utils_patched.o src/x3f/x3f_utils_patched.cpp
object/x3f_utils_patched.mt.o: src/x3f/x3f_utils_patched.cpp $(HEADERS)
${CXX} -c ${CFLAGS} -o object/x3f_utils_patched.mt.o src/x3f/x3f_utils_patched.cpp

View File

@@ -0,0 +1,230 @@
all: library all_samples
CC=clang
CXX=clang++
#CC=gcc
#CXX=g++
LDADD+=-lz
CFLAGS=-DLIBRAW_USE_AUTOPTR
CFLAGS+= -g -I. -pedantic -Wno-long-long -Wno-overflow -O3
# RawSpeed Support
# CFLAGS+=-DUSE_RAWSPEED -I../RawSpeed -I/opt/local/include/libxml2
# LDADD+=-L../RawSpeed/RawSpeed/release -lrawspeed -L/opt/local/include -ljpeg -lxml2
# RAWSPEED_DATA=../RawSpeed/data/cameras.xml
# DNG SDK Support
# CFLAGS+=-DUSE_DNGSDK -I../dng_sdk/source
# LDADDD+=-L../dng_sdk/release -ldng -ljpeg -lz
# LCMS support
# For lcms2 set -DUSE_LCMS2
#CFLAGS+=-DUSE_LCMS2 -I/opt/local/include
#LDADD+=-L/opt/local/lib -llcms
# Jasper support for RedCine
#CFLAGS+=-DUSE_JASPER -I/opt/local/include
#LDADD+=-L/opt/local/lib -ljasper
# JPEG support for DNG and Kodak
CFLAGS+=-DUSE_JPEG -I/usr/local/include
LDADD+=-L/usr/local/lib -ljpeg
# LIBJPEG8:
CFLAGS+=-DUSE_JPEG8
CSTFLAGS=$(CFLAGS) -DLIBRAW_NOTHREADS
LIB_OBJECTS= object/libraw_datastream.o \
object/cameralist.o object/fuji_compressed.o \
object/crx.o object/fp_dng.o object/decoders_libraw.o \
object/unpack.o object/unpack_thumb.o \
object/rawspeed_glue.o object/dngsdk_glue.o \
object/colorconst.o object/utils_libraw.o object/init_close_utils.o \
object/decoder_info.o object/open.o object/phaseone_processing.o \
object/thumb_utils.o \
object/tiff_writer.o object/subtract_black.o \
object/raw2image.o \
object/x3f_utils_patched.o object/x3f_parse_process.o \
object/read_utils.o object/curves.o object/utils_dcraw.o \
object/colordata.o \
object/canon_600.o object/decoders_dcraw.o \
object/decoders_libraw_dcrdefs.o object/generic.o \
object/kodak_decoders.o object/dng.o object/smal.o \
object/load_mfbacks.o \
object/sony.o object/nikon.o object/samsung.o object/cr3_parser.o \
object/canon.o object/epson.o object/olympus.o object/leica.o \
object/fuji.o object/adobepano.o object/pentax.o object/p1.o \
object/makernotes.o object/exif_gps.o object/kodak.o \
object/tiff.o object/ciff.o object/mediumformat.o object/minolta.o \
object/identify_tools.o \
object/hasselblad_model.o object/normalize_model.o object/identify.o \
object/misc_parsers.o object/wblists.o \
object/file_write.o \
object/ext_preprocess.o \
object/postprocessing_ph.o \
LR_INCLUDES=libraw/libraw.h libraw/libraw_alloc.h \
libraw/libraw_const.h libraw/libraw_datastream.h \
libraw/libraw_internal.h libraw/libraw_types.h \
libraw/libraw_version.h
LRLIB=lib/libraw_nopp.a
library: $(LRLIB)
all_samples: bin/raw-identify bin/unprocessed_raw bin/4channels
## Samples ##
bin/raw-identify: $(LRLIB) samples/raw-identify.cpp
$(CXX) ${CFLAGS} -o bin/raw-identify samples/raw-identify.cpp -L./lib -lraw_nopp -lm ${LDADD}
bin/unprocessed_raw: $(LRLIB) samples/unprocessed_raw.cpp
$(CXX) -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/unprocessed_raw samples/unprocessed_raw.cpp -L./lib -lraw_nopp -lm ${LDADD}
bin/4channels: $(LRLIB) samples/4channels.cpp
$(CXX) -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/4channels samples/4channels.cpp -L./lib -lraw_nopp -lm ${LDADD}
$(LRLIB): ${LIB_OBJECTS}
rm -f $(LRLIB)
ar crv $(LRLIB) ${LIB_OBJECTS}
ranlib $(LRLIB)
clean:
rm -fr bin/*.dSYM
rm -f *.o *~ src/*~ samples/*~ internal/*~ libraw/*~ lib/lib*.a bin/[4a-z]* object/*.o dcraw/*~ doc/*~ bin/*~ src/*/*~
## script-created rules
object/libraw_c_api.o: src/libraw_c_api.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/libraw_c_api.o src/libraw_c_api.cpp
object/libraw_datastream.o: src/libraw_datastream.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/libraw_datastream.o src/libraw_datastream.cpp
object/canon_600.o: src/decoders/canon_600.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/canon_600.o src/decoders/canon_600.cpp
object/crx.o: src/decoders/crx.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/crx.o src/decoders/crx.cpp
object/decoders_dcraw.o: src/decoders/decoders_dcraw.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoders_dcraw.o src/decoders/decoders_dcraw.cpp
object/decoders_libraw_dcrdefs.o: src/decoders/decoders_libraw_dcrdefs.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoders_libraw_dcrdefs.o src/decoders/decoders_libraw_dcrdefs.cpp
object/decoders_libraw.o: src/decoders/decoders_libraw.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoders_libraw.o src/decoders/decoders_libraw.cpp
object/dng.o: src/decoders/dng.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dng.o src/decoders/dng.cpp
object/fp_dng.o: src/decoders/fp_dng.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/fp_dng.o src/decoders/fp_dng.cpp
object/fuji_compressed.o: src/decoders/fuji_compressed.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/fuji_compressed.o src/decoders/fuji_compressed.cpp
object/generic.o: src/decoders/generic.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/generic.o src/decoders/generic.cpp
object/kodak_decoders.o: src/decoders/kodak_decoders.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/kodak_decoders.o src/decoders/kodak_decoders.cpp
object/load_mfbacks.o: src/decoders/load_mfbacks.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/load_mfbacks.o src/decoders/load_mfbacks.cpp
object/smal.o: src/decoders/smal.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/smal.o src/decoders/smal.cpp
object/unpack_thumb.o: src/decoders/unpack_thumb.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/unpack_thumb.o src/decoders/unpack_thumb.cpp
object/unpack.o: src/decoders/unpack.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/unpack.o src/decoders/unpack.cpp
object/dngsdk_glue.o: src/integration/dngsdk_glue.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dngsdk_glue.o src/integration/dngsdk_glue.cpp
object/rawspeed_glue.o: src/integration/rawspeed_glue.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/rawspeed_glue.o src/integration/rawspeed_glue.cpp
object/adobepano.o: src/metadata/adobepano.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/adobepano.o src/metadata/adobepano.cpp
object/canon.o: src/metadata/canon.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/canon.o src/metadata/canon.cpp
object/ciff.o: src/metadata/ciff.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/ciff.o src/metadata/ciff.cpp
object/cr3_parser.o: src/metadata/cr3_parser.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/cr3_parser.o src/metadata/cr3_parser.cpp
object/epson.o: src/metadata/epson.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/epson.o src/metadata/epson.cpp
object/exif_gps.o: src/metadata/exif_gps.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/exif_gps.o src/metadata/exif_gps.cpp
object/fuji.o: src/metadata/fuji.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/fuji.o src/metadata/fuji.cpp
object/identify_tools.o: src/metadata/identify_tools.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/identify_tools.o src/metadata/identify_tools.cpp
object/identify.o: src/metadata/identify.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/identify.o src/metadata/identify.cpp
object/kodak.o: src/metadata/kodak.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/kodak.o src/metadata/kodak.cpp
object/leica.o: src/metadata/leica.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/leica.o src/metadata/leica.cpp
object/makernotes.o: src/metadata/makernotes.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/makernotes.o src/metadata/makernotes.cpp
object/mediumformat.o: src/metadata/mediumformat.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/mediumformat.o src/metadata/mediumformat.cpp
object/minolta.o: src/metadata/minolta.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/minolta.o src/metadata/minolta.cpp
object/misc_parsers.o: src/metadata/misc_parsers.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/misc_parsers.o src/metadata/misc_parsers.cpp
object/nikon.o: src/metadata/nikon.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/nikon.o src/metadata/nikon.cpp
object/hasselblad_model.o: src/metadata/hasselblad_model.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/hasselblad_model.o src/metadata/hasselblad_model.cpp
object/normalize_model.o: src/metadata/normalize_model.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/normalize_model.o src/metadata/normalize_model.cpp
object/olympus.o: src/metadata/olympus.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/olympus.o src/metadata/olympus.cpp
object/p1.o: src/metadata/p1.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/p1.o src/metadata/p1.cpp
object/pentax.o: src/metadata/pentax.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/pentax.o src/metadata/pentax.cpp
object/samsung.o: src/metadata/samsung.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/samsung.o src/metadata/samsung.cpp
object/sony.o: src/metadata/sony.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/sony.o src/metadata/sony.cpp
object/tiff.o: src/metadata/tiff.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/tiff.o src/metadata/tiff.cpp
object/postprocessing_ph.o: src/postprocessing/postprocessing_ph.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/postprocessing_ph.o src/postprocessing/postprocessing_ph.cpp
object/raw2image.o: src/preprocessing/raw2image.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/raw2image.o src/preprocessing/raw2image.cpp
object/ext_preprocess.o: src/preprocessing/ext_preprocess.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/ext_preprocess.o src/preprocessing/ext_preprocess.cpp
object/subtract_black.o: src/preprocessing/subtract_black.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/subtract_black.o src/preprocessing/subtract_black.cpp
object/cameralist.o: src/tables/cameralist.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/cameralist.o src/tables/cameralist.cpp
object/colorconst.o: src/tables/colorconst.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/colorconst.o src/tables/colorconst.cpp
object/colordata.o: src/tables/colordata.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/colordata.o src/tables/colordata.cpp
object/wblists.o: src/tables/wblists.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/wblists.o src/tables/wblists.cpp
object/curves.o: src/utils/curves.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/curves.o src/utils/curves.cpp
object/decoder_info.o: src/utils/decoder_info.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoder_info.o src/utils/decoder_info.cpp
object/init_close_utils.o: src/utils/init_close_utils.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/init_close_utils.o src/utils/init_close_utils.cpp
object/open.o: src/utils/open.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/open.o src/utils/open.cpp
object/phaseone_processing.o: src/utils/phaseone_processing.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/phaseone_processing.o src/utils/phaseone_processing.cpp
object/read_utils.o: src/utils/read_utils.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/read_utils.o src/utils/read_utils.cpp
object/thumb_utils.o: src/utils/thumb_utils.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/thumb_utils.o src/utils/thumb_utils.cpp
object/utils_dcraw.o: src/utils/utils_dcraw.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/utils_dcraw.o src/utils/utils_dcraw.cpp
object/utils_libraw.o: src/utils/utils_libraw.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/utils_libraw.o src/utils/utils_libraw.cpp
object/file_write.o: src/write/file_write.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/file_write.o src/write/file_write.cpp
object/tiff_writer.o: src/write/tiff_writer.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/tiff_writer.o src/write/tiff_writer.cpp
object/x3f_parse_process.o: src/x3f/x3f_parse_process.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/x3f_parse_process.o src/x3f/x3f_parse_process.cpp
object/x3f_utils_patched.o: src/x3f/x3f_utils_patched.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/x3f_utils_patched.o src/x3f/x3f_utils_patched.cpp

View File

@@ -0,0 +1,227 @@
all: library all_samples
CC=clang
CXX=clang++
#CC=gcc
#CXX=g++
LDADD+=-lz
CFLAGS=-DLIBRAW_USE_AUTOPTR
CFLAGS+= -g -I. -pedantic -Wno-long-long -Wno-overflow -O3
# RawSpeed Support
# CFLAGS+=-DUSE_RAWSPEED -I../RawSpeed -I/opt/local/include/libxml2
# LDADD+=-L../RawSpeed/RawSpeed/release -lrawspeed -L/opt/local/include -ljpeg -lxml2
# RAWSPEED_DATA=../RawSpeed/data/cameras.xml
# DNG SDK Support
# CFLAGS+=-DUSE_DNGSDK -I../dng_sdk/source
# LDADDD+=-L../dng_sdk/release -ldng -ljpeg -lz
# LCMS support
# For lcms2 set -DUSE_LCMS2
#CFLAGS+=-DUSE_LCMS2 -I/opt/local/include
#LDADD+=-L/opt/local/lib -llcms
# Jasper support for RedCine
#CFLAGS+=-DUSE_JASPER -I/opt/local/include
#LDADD+=-L/opt/local/lib -ljasper
# JPEG support for DNG and Kodak
CFLAGS+=-DUSE_JPEG -I/usr/local/include
LDADD+=-L/usr/local/lib -ljpeg
# LIBJPEG8:
CFLAGS+=-DUSE_JPEG8
CSTFLAGS=$(CFLAGS) -DLIBRAW_NOTHREADS
LIB_OBJECTS= object/libraw_datastream.o \
object/cameralist.o object/fuji_compressed.o \
object/crx.o object/fp_dng.o object/decoders_libraw.o \
object/unpack.o object/unpack_thumb.o \
object/rawspeed_glue.o object/dngsdk_glue.o \
object/colorconst.o object/utils_libraw.o object/init_close_utils.o \
object/decoder_info.o object/open.o object/phaseone_processing.o \
object/thumb_utils.o \
object/x3f_utils_patched.o object/x3f_parse_process.o \
object/read_utils.o object/curves.o object/utils_dcraw.o \
object/colordata.o \
object/canon_600.o object/decoders_dcraw.o \
object/decoders_libraw_dcrdefs.o object/generic.o \
object/kodak_decoders.o object/dng.o object/smal.o \
object/load_mfbacks.o \
object/sony.o object/nikon.o object/samsung.o object/cr3_parser.o \
object/canon.o object/epson.o object/olympus.o object/leica.o \
object/fuji.o object/adobepano.o object/pentax.o object/p1.o \
object/makernotes.o object/exif_gps.o object/kodak.o \
object/tiff.o object/ciff.o object/mediumformat.o object/minolta.o \
object/identify_tools.o \
object/hasselblad_model.o object/normalize_model.o object/identify.o \
object/misc_parsers.o object/wblists.o \
object/write_ph.o \
object/postprocessing_ph.o \
object/preprocessing_ph.o \
LR_INCLUDES=libraw/libraw.h libraw/libraw_alloc.h \
libraw/libraw_const.h libraw/libraw_datastream.h \
libraw/libraw_internal.h libraw/libraw_types.h \
libraw/libraw_version.h
LRLIB=lib/libraw_noppr2i.a
library: $(LRLIB)
all_samples: bin/raw-identify
## Samples ##
bin/raw-identify: $(LRLIB) samples/raw-identify.cpp
$(CXX) ${CFLAGS} -o bin/raw-identify samples/raw-identify.cpp -L./lib -lraw_noppr2i -lm ${LDADD}
$(LRLIB): ${LIB_OBJECTS}
rm -f $(LRLIB)
ar crv $(LRLIB) ${LIB_OBJECTS}
ranlib $(LRLIB)
clean:
rm -fr bin/*.dSYM
rm -f *.o *~ src/*~ samples/*~ internal/*~ libraw/*~ lib/lib*.a bin/[4a-z]* object/*.o dcraw/*~ doc/*~ bin/*~ src/*/*~
## script-created rules
object/libraw_c_api.o: src/libraw_c_api.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/libraw_c_api.o src/libraw_c_api.cpp
object/libraw_datastream.o: src/libraw_datastream.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/libraw_datastream.o src/libraw_datastream.cpp
object/canon_600.o: src/decoders/canon_600.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/canon_600.o src/decoders/canon_600.cpp
object/crx.o: src/decoders/crx.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/crx.o src/decoders/crx.cpp
object/decoders_dcraw.o: src/decoders/decoders_dcraw.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoders_dcraw.o src/decoders/decoders_dcraw.cpp
object/decoders_libraw_dcrdefs.o: src/decoders/decoders_libraw_dcrdefs.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoders_libraw_dcrdefs.o src/decoders/decoders_libraw_dcrdefs.cpp
object/decoders_libraw.o: src/decoders/decoders_libraw.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoders_libraw.o src/decoders/decoders_libraw.cpp
object/dng.o: src/decoders/dng.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dng.o src/decoders/dng.cpp
object/fp_dng.o: src/decoders/fp_dng.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/fp_dng.o src/decoders/fp_dng.cpp
object/fuji_compressed.o: src/decoders/fuji_compressed.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/fuji_compressed.o src/decoders/fuji_compressed.cpp
object/generic.o: src/decoders/generic.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/generic.o src/decoders/generic.cpp
object/kodak_decoders.o: src/decoders/kodak_decoders.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/kodak_decoders.o src/decoders/kodak_decoders.cpp
object/load_mfbacks.o: src/decoders/load_mfbacks.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/load_mfbacks.o src/decoders/load_mfbacks.cpp
object/smal.o: src/decoders/smal.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/smal.o src/decoders/smal.cpp
object/unpack_thumb.o: src/decoders/unpack_thumb.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/unpack_thumb.o src/decoders/unpack_thumb.cpp
object/unpack.o: src/decoders/unpack.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/unpack.o src/decoders/unpack.cpp
object/dngsdk_glue.o: src/integration/dngsdk_glue.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dngsdk_glue.o src/integration/dngsdk_glue.cpp
object/rawspeed_glue.o: src/integration/rawspeed_glue.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/rawspeed_glue.o src/integration/rawspeed_glue.cpp
object/adobepano.o: src/metadata/adobepano.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/adobepano.o src/metadata/adobepano.cpp
object/canon.o: src/metadata/canon.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/canon.o src/metadata/canon.cpp
object/ciff.o: src/metadata/ciff.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/ciff.o src/metadata/ciff.cpp
object/cr3_parser.o: src/metadata/cr3_parser.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/cr3_parser.o src/metadata/cr3_parser.cpp
object/epson.o: src/metadata/epson.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/epson.o src/metadata/epson.cpp
object/exif_gps.o: src/metadata/exif_gps.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/exif_gps.o src/metadata/exif_gps.cpp
object/fuji.o: src/metadata/fuji.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/fuji.o src/metadata/fuji.cpp
object/identify_tools.o: src/metadata/identify_tools.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/identify_tools.o src/metadata/identify_tools.cpp
object/identify.o: src/metadata/identify.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/identify.o src/metadata/identify.cpp
object/kodak.o: src/metadata/kodak.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/kodak.o src/metadata/kodak.cpp
object/leica.o: src/metadata/leica.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/leica.o src/metadata/leica.cpp
object/makernotes.o: src/metadata/makernotes.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/makernotes.o src/metadata/makernotes.cpp
object/mediumformat.o: src/metadata/mediumformat.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/mediumformat.o src/metadata/mediumformat.cpp
object/minolta.o: src/metadata/minolta.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/minolta.o src/metadata/minolta.cpp
object/misc_parsers.o: src/metadata/misc_parsers.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/misc_parsers.o src/metadata/misc_parsers.cpp
object/nikon.o: src/metadata/nikon.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/nikon.o src/metadata/nikon.cpp
object/hasselblad_model.o: src/metadata/hasselblad_model.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/hasselblad_model.o src/metadata/hasselblad_model.cpp
object/normalize_model.o: src/metadata/normalize_model.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/normalize_model.o src/metadata/normalize_model.cpp
object/olympus.o: src/metadata/olympus.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/olympus.o src/metadata/olympus.cpp
object/p1.o: src/metadata/p1.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/p1.o src/metadata/p1.cpp
object/pentax.o: src/metadata/pentax.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/pentax.o src/metadata/pentax.cpp
object/samsung.o: src/metadata/samsung.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/samsung.o src/metadata/samsung.cpp
object/sony.o: src/metadata/sony.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/sony.o src/metadata/sony.cpp
object/tiff.o: src/metadata/tiff.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/tiff.o src/metadata/tiff.cpp
object/preprocessing_ph.o: src/preprocessing/preprocessing_ph.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/preprocessing_ph.o src/preprocessing/preprocessing_ph.cpp
object/postprocessing_ph.o: src/postprocessing/postprocessing_ph.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/postprocessing_ph.o src/postprocessing/postprocessing_ph.cpp
object/raw2image.o: src/preprocessing/raw2image.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/raw2image.o src/preprocessing/raw2image.cpp
object/ext_preprocess.o: src/preprocessing/ext_preprocess.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/ext_preprocess.o src/preprocessing/ext_preprocess.cpp
object/subtract_black.o: src/preprocessing/subtract_black.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/subtract_black.o src/preprocessing/subtract_black.cpp
object/cameralist.o: src/tables/cameralist.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/cameralist.o src/tables/cameralist.cpp
object/colorconst.o: src/tables/colorconst.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/colorconst.o src/tables/colorconst.cpp
object/colordata.o: src/tables/colordata.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/colordata.o src/tables/colordata.cpp
object/wblists.o: src/tables/wblists.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/wblists.o src/tables/wblists.cpp
object/curves.o: src/utils/curves.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/curves.o src/utils/curves.cpp
object/decoder_info.o: src/utils/decoder_info.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoder_info.o src/utils/decoder_info.cpp
object/init_close_utils.o: src/utils/init_close_utils.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/init_close_utils.o src/utils/init_close_utils.cpp
object/open.o: src/utils/open.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/open.o src/utils/open.cpp
object/phaseone_processing.o: src/utils/phaseone_processing.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/phaseone_processing.o src/utils/phaseone_processing.cpp
object/read_utils.o: src/utils/read_utils.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/read_utils.o src/utils/read_utils.cpp
object/thumb_utils.o: src/utils/thumb_utils.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/thumb_utils.o src/utils/thumb_utils.cpp
object/utils_dcraw.o: src/utils/utils_dcraw.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/utils_dcraw.o src/utils/utils_dcraw.cpp
object/utils_libraw.o: src/utils/utils_libraw.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/utils_libraw.o src/utils/utils_libraw.cpp
object/write_ph.o: src/write/write_ph.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/write_ph.o src/write/write_ph.cpp
object/file_write.o: src/write/file_write.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/file_write.o src/write/file_write.cpp
object/tiff_writer.o: src/write/tiff_writer.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/tiff_writer.o src/write/tiff_writer.cpp
object/x3f_parse_process.o: src/x3f/x3f_parse_process.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/x3f_parse_process.o src/x3f/x3f_parse_process.cpp
object/x3f_utils_patched.o: src/x3f/x3f_utils_patched.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/x3f_utils_patched.o src/x3f/x3f_utils_patched.cpp

View File

@@ -0,0 +1,501 @@
all: library all_samples
#CFLAGS=-arch i386 -arch x86_64 -O3 -I. -w
CFLAGS=-O3 -I. -w
CC=gcc
CXX=g++
# OpenMP support
#CFLAGS+=-fopenmp
# RawSpeed Support
#CFLAGS+=-pthread -DUSE_RAWSPEED -I../RawSpeed -I/usr/local/include/libxml2
#LDADD+=-L../RawSpeed/RawSpeed -lrawspeed -L/usr/local/lib -ljpeg -lxml2
#RAWSPEED_DATA=../RawSpeed/data/cameras.xml
# RawSpeed3 Support
#CFLAGS+=-DUSE_RAWSPEED3 -DUSE_RAWSPEED_BITS -I./RawSpeed3/
#LDADD+=-L../RawSpeed-v3/release -lrawspeed3 -L/usr/local/lib -ljpeg -lz
# DNG SDK Support
# CFLAGS+=-DUSE_DNGSDK -I../dng_sdk/source
# LDADDD+=-L../dng_sdk/release -ldng -lXMPCore -ljpeg -lz
# Jasper support for RedCine
#CFLAGS+=-DUSE_JASPER -I/usr/local/include
#LDADD+=-L/usr/local/lib -ljasper
# ZLIB support (FP dng)
CFLAGS+=-DUSE_ZLIB
LDADD+=-lz
# JPEG support for lossy DNG
#CFLAGS+=-DUSE_JPEG -I/usr/local/include
#LDADD+=-L/usr/local/lib -ljpeg
# LIBJPEG8:
#CFLAGS+=-DUSE_JPEG8
# LCMS support
#CFLAGS+=-DUSE_LCMS -I/usr/local/include
#LDADD+=-L/usr/local/lib -llcms
# LCMS2.x support
#CFLAGS+=-DUSE_LCMS2 -I/usr/local/include
#LDADD+=-L/usr/local/lib -llcms2
CSTFLAGS=$(CFLAGS) -DLIBRAW_NOTHREADS
LIB_OBJECTS= object/libraw_datastream.o object/libraw_c_api.o \
object/cameralist.o object/fuji_compressed.o \
object/crx.o object/fp_dng.o object/decoders_libraw.o \
object/unpack.o object/unpack_thumb.o \
object/rawspeed_glue.o object/dngsdk_glue.o \
object/colorconst.o object/utils_libraw.o object/init_close_utils.o \
object/decoder_info.o object/open.o object/phaseone_processing.o \
object/thumb_utils.o \
object/tiff_writer.o object/subtract_black.o object/postprocessing_utils.o \
object/dcraw_process.o object/raw2image.o object/mem_image.o \
object/x3f_utils_patched.o object/x3f_parse_process.o \
object/read_utils.o object/curves.o object/utils_dcraw.o \
object/colordata.o \
object/canon_600.o object/decoders_dcraw.o \
object/decoders_libraw_dcrdefs.o object/generic.o \
object/kodak_decoders.o object/dng.o object/smal.o \
object/load_mfbacks.o \
object/sony.o object/nikon.o object/samsung.o object/cr3_parser.o \
object/canon.o object/epson.o object/olympus.o object/leica.o \
object/fuji.o object/adobepano.o object/pentax.o object/p1.o \
object/makernotes.o object/exif_gps.o object/kodak.o \
object/tiff.o object/ciff.o object/mediumformat.o object/minolta.o \
object/identify_tools.o \
object/hasselblad_model.o object/normalize_model.o object/identify.o \
object/misc_parsers.o object/wblists.o \
object/postprocessing_aux.o object/postprocessing_utils_dcrdefs.o \
object/aspect_ratio.o \
object/misc_demosaic.o object/xtrans_demosaic.o object/ahd_demosaic.o \
object/dht_demosaic.o object/aahd_demosaic.o object/dcb_demosaic.o \
object/file_write.o \
object/ext_preprocess.o object/apply_profile.o
LIB_MT_OBJECTS= object/libraw_datastream.mt.o object/libraw_c_api.mt.o \
object/cameralist.mt.o object/fuji_compressed.mt.o \
object/crx.mt.o object/fp_dng.mt.o object/decoders_libraw.mt.o \
object/unpack.mt.o object/unpack_thumb.mt.o \
object/rawspeed_glue.mt.o object/dngsdk_glue.mt.o \
object/colorconst.mt.o object/utils_libraw.mt.o \
object/init_close_utils.mt.o \
object/decoder_info.mt.o object/open.mt.o object/phaseone_processing.mt.o \
object/thumb_utils.mt.o \
object/tiff_writer.mt.o object/subtract_black.mt.o \
object/postprocessing_utils.mt.o object/dcraw_process.mt.o \
object/raw2image.mt.o object/mem_image.mt.o \
object/x3f_utils_patched.mt.o object/x3f_parse_process.mt.o \
object/read_utils.mt.o object/curves.mt.o object/utils_dcraw.mt.o \
object/colordata.mt.o \
object/canon_600.mt.o object/decoders_dcraw.mt.o \
object/decoders_libraw_dcrdefs.mt.o object/generic.mt.o \
object/kodak_decoders.mt.o object/dng.mt.o object/smal.mt.o \
object/load_mfbacks.mt.o \
object/sony.mt.o object/nikon.mt.o object/samsung.mt.o \
object/cr3_parser.mt.o object/canon.mt.o object/epson.mt.o \
object/olympus.mt.o object/leica.mt.o \
object/fuji.mt.o object/adobepano.mt.o object/pentax.mt.o object/p1.mt.o \
object/makernotes.mt.o object/exif_gps.mt.o object/kodak.mt.o \
object/tiff.mt.o object/ciff.mt.o object/mediumformat.mt.o \
object/minolta.mt.o \
object/identify_tools.mt.o \
object/hasselblad_model.o object/normalize_model.mt.o object/identify.mt.o \
object/misc_parsers.mt.o object/wblists.mt.o \
object/postprocessing_aux.mt.o object/postprocessing_utils_dcrdefs.mt.o \
object/aspect_ratio.mt.o \
object/misc_demosaic.mt.o object/xtrans_demosaic.mt.o \
object/ahd_demosaic.mt.o object/dht_demosaic.mt.o \
object/aahd_demosaic.mt.o object/dcb_demosaic.mt.o \
object/file_write.mt.o \
object/ext_preprocess.mt.o object/apply_profile.mt.o
LR_INCLUDES=libraw/libraw.h libraw/libraw_alloc.h \
libraw/libraw_const.h libraw/libraw_datastream.h \
libraw/libraw_internal.h libraw/libraw_types.h \
libraw/libraw_version.h
library: lib/libraw.a lib/libraw_r.a
all_samples: bin/raw-identify bin/simple_dcraw bin/dcraw_emu bin/dcraw_half bin/half_mt bin/mem_image \
bin/unprocessed_raw bin/4channels bin/multirender_test bin/postprocessing_benchmark \
bin/rawtextdump
install: library
@if [ -d /usr/local/include ] ; then cp -R libraw /usr/local/include/ ; else echo 'no /usr/local/include' ; fi
@if [ -d /usr/local/lib ] ; then cp lib/libraw.a lib/libraw_r.a /usr/local/lib/ ; else echo 'no /usr/local/lib' ; fi
install-binaries: all_samples
@if [ -d /usr/local/bin ] ; then cp bin/[a-z]* /usr/local/bin/ ; else echo 'no /usr/local/bin' ; fi
## RawSpeed xml file
RawSpeed/rawspeed_xmldata.cpp: ${RAWSPEED_DATA}
./rsxml2c.sh ${RAWSPEED_DATA} > RawSpeed/rawspeed_xmldata.cpp
#binaries
bin/raw-identify: lib/libraw.a samples/raw-identify.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/raw-identify samples/raw-identify.cpp -L./lib -lraw -lm ${LDADD}
bin/unprocessed_raw: lib/libraw.a samples/unprocessed_raw.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/unprocessed_raw samples/unprocessed_raw.cpp -L./lib -lraw -lm ${LDADD}
bin/4channels: lib/libraw.a samples/4channels.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/4channels samples/4channels.cpp -L./lib -lraw -lm ${LDADD}
bin/rawtextdump: lib/libraw.a samples/rawtextdump.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/rawtextdump samples/rawtextdump.cpp -L./lib -lraw -lm ${LDADD}
bin/simple_dcraw: lib/libraw.a samples/simple_dcraw.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/simple_dcraw samples/simple_dcraw.cpp -L./lib -lraw -lm ${LDADD}
bin/multirender_test: lib/libraw.a samples/multirender_test.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/multirender_test samples/multirender_test.cpp -L./lib -lraw -lm ${LDADD}
bin/postprocessing_benchmark: lib/libraw.a samples/postprocessing_benchmark.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/postprocessing_benchmark samples/postprocessing_benchmark.cpp -L./lib -lraw -lm ${LDADD}
bin/mem_image: lib/libraw.a samples/mem_image_sample.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/mem_image samples/mem_image_sample.cpp -L./lib -lraw -lm ${LDADD}
bin/dcraw_half: lib/libraw.a object/dcraw_half.o
${CC} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/dcraw_half object/dcraw_half.o -L./lib -lraw -lm -lstdc++ ${LDADD}
bin/half_mt: lib/libraw_r.a object/half_mt.o
${CC} -pthread ${CFLAGS} -o bin/half_mt object/half_mt.o -L./lib -lraw_r -lm -lstdc++ ${LDADD}
bin/dcraw_emu: lib/libraw.a samples/dcraw_emu.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/dcraw_emu samples/dcraw_emu.cpp -L./lib -lraw -lm ${LDADD}
#objects
object/dcraw_half.o: samples/dcraw_half.c
${CC} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dcraw_half.o samples/dcraw_half.c
object/half_mt.o: samples/half_mt.c
${CC} -c -pthread ${CFLAGS} -o object/half_mt.o samples/half_mt.c
lib/libraw.a: ${LIB_OBJECTS}
rm -f lib/libraw.a
ar crv lib/libraw.a ${LIB_OBJECTS}
ranlib lib/libraw.a
lib/libraw_r.a: ${LIB_MT_OBJECTS}
rm -f lib/libraw_r.a
ar crv lib/libraw_r.a ${LIB_MT_OBJECTS}
ranlib lib/libraw_r.a
clean:
rm -fr bin/*.dSYM
rm -f *.o *~ src/*~ samples/*~ internal/*~ libraw/*~ lib/lib*.a bin/[4a-z]* object/*o dcraw/*~ doc/*~ bin/*~ src/*/*~
### generated
object/libraw_c_api.o: src/libraw_c_api.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/libraw_c_api.o src/libraw_c_api.cpp
object/libraw_c_api.mt.o: src/libraw_c_api.cpp
${CXX} -c ${CFLAGS} -o object/libraw_c_api.mt.o src/libraw_c_api.cpp
object/libraw_datastream.o: src/libraw_datastream.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/libraw_datastream.o src/libraw_datastream.cpp
object/libraw_datastream.mt.o: src/libraw_datastream.cpp
${CXX} -c ${CFLAGS} -o object/libraw_datastream.mt.o src/libraw_datastream.cpp
object/canon_600.o: src/decoders/canon_600.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/canon_600.o src/decoders/canon_600.cpp
object/canon_600.mt.o: src/decoders/canon_600.cpp
${CXX} -c ${CFLAGS} -o object/canon_600.mt.o src/decoders/canon_600.cpp
object/crx.o: src/decoders/crx.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/crx.o src/decoders/crx.cpp
object/crx.mt.o: src/decoders/crx.cpp
${CXX} -c ${CFLAGS} -o object/crx.mt.o src/decoders/crx.cpp
object/decoders_dcraw.o: src/decoders/decoders_dcraw.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoders_dcraw.o src/decoders/decoders_dcraw.cpp
object/decoders_dcraw.mt.o: src/decoders/decoders_dcraw.cpp
${CXX} -c ${CFLAGS} -o object/decoders_dcraw.mt.o src/decoders/decoders_dcraw.cpp
object/decoders_libraw_dcrdefs.o: src/decoders/decoders_libraw_dcrdefs.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoders_libraw_dcrdefs.o src/decoders/decoders_libraw_dcrdefs.cpp
object/decoders_libraw_dcrdefs.mt.o: src/decoders/decoders_libraw_dcrdefs.cpp
${CXX} -c ${CFLAGS} -o object/decoders_libraw_dcrdefs.mt.o src/decoders/decoders_libraw_dcrdefs.cpp
object/decoders_libraw.o: src/decoders/decoders_libraw.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoders_libraw.o src/decoders/decoders_libraw.cpp
object/decoders_libraw.mt.o: src/decoders/decoders_libraw.cpp
${CXX} -c ${CFLAGS} -o object/decoders_libraw.mt.o src/decoders/decoders_libraw.cpp
object/dng.o: src/decoders/dng.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dng.o src/decoders/dng.cpp
object/dng.mt.o: src/decoders/dng.cpp
${CXX} -c ${CFLAGS} -o object/dng.mt.o src/decoders/dng.cpp
object/fp_dng.o: src/decoders/fp_dng.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/fp_dng.o src/decoders/fp_dng.cpp
object/fp_dng.mt.o: src/decoders/fp_dng.cpp
${CXX} -c ${CFLAGS} -o object/fp_dng.mt.o src/decoders/fp_dng.cpp
object/fuji_compressed.o: src/decoders/fuji_compressed.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/fuji_compressed.o src/decoders/fuji_compressed.cpp
object/fuji_compressed.mt.o: src/decoders/fuji_compressed.cpp
${CXX} -c ${CFLAGS} -o object/fuji_compressed.mt.o src/decoders/fuji_compressed.cpp
object/generic.o: src/decoders/generic.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/generic.o src/decoders/generic.cpp
object/generic.mt.o: src/decoders/generic.cpp
${CXX} -c ${CFLAGS} -o object/generic.mt.o src/decoders/generic.cpp
object/kodak_decoders.o: src/decoders/kodak_decoders.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/kodak_decoders.o src/decoders/kodak_decoders.cpp
object/kodak_decoders.mt.o: src/decoders/kodak_decoders.cpp
${CXX} -c ${CFLAGS} -o object/kodak_decoders.mt.o src/decoders/kodak_decoders.cpp
object/load_mfbacks.o: src/decoders/load_mfbacks.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/load_mfbacks.o src/decoders/load_mfbacks.cpp
object/load_mfbacks.mt.o: src/decoders/load_mfbacks.cpp
${CXX} -c ${CFLAGS} -o object/load_mfbacks.mt.o src/decoders/load_mfbacks.cpp
object/smal.o: src/decoders/smal.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/smal.o src/decoders/smal.cpp
object/smal.mt.o: src/decoders/smal.cpp
${CXX} -c ${CFLAGS} -o object/smal.mt.o src/decoders/smal.cpp
object/unpack_thumb.o: src/decoders/unpack_thumb.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/unpack_thumb.o src/decoders/unpack_thumb.cpp
object/unpack_thumb.mt.o: src/decoders/unpack_thumb.cpp
${CXX} -c ${CFLAGS} -o object/unpack_thumb.mt.o src/decoders/unpack_thumb.cpp
object/unpack.o: src/decoders/unpack.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/unpack.o src/decoders/unpack.cpp
object/unpack.mt.o: src/decoders/unpack.cpp
${CXX} -c ${CFLAGS} -o object/unpack.mt.o src/decoders/unpack.cpp
object/aahd_demosaic.o: src/demosaic/aahd_demosaic.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/aahd_demosaic.o src/demosaic/aahd_demosaic.cpp
object/aahd_demosaic.mt.o: src/demosaic/aahd_demosaic.cpp
${CXX} -c ${CFLAGS} -o object/aahd_demosaic.mt.o src/demosaic/aahd_demosaic.cpp
object/ahd_demosaic.o: src/demosaic/ahd_demosaic.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/ahd_demosaic.o src/demosaic/ahd_demosaic.cpp
object/ahd_demosaic.mt.o: src/demosaic/ahd_demosaic.cpp
${CXX} -c ${CFLAGS} -o object/ahd_demosaic.mt.o src/demosaic/ahd_demosaic.cpp
object/dcb_demosaic.o: src/demosaic/dcb_demosaic.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dcb_demosaic.o src/demosaic/dcb_demosaic.cpp
object/dcb_demosaic.mt.o: src/demosaic/dcb_demosaic.cpp
${CXX} -c ${CFLAGS} -o object/dcb_demosaic.mt.o src/demosaic/dcb_demosaic.cpp
object/dht_demosaic.o: src/demosaic/dht_demosaic.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dht_demosaic.o src/demosaic/dht_demosaic.cpp
object/dht_demosaic.mt.o: src/demosaic/dht_demosaic.cpp
${CXX} -c ${CFLAGS} -o object/dht_demosaic.mt.o src/demosaic/dht_demosaic.cpp
object/misc_demosaic.o: src/demosaic/misc_demosaic.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/misc_demosaic.o src/demosaic/misc_demosaic.cpp
object/misc_demosaic.mt.o: src/demosaic/misc_demosaic.cpp
${CXX} -c ${CFLAGS} -o object/misc_demosaic.mt.o src/demosaic/misc_demosaic.cpp
object/xtrans_demosaic.o: src/demosaic/xtrans_demosaic.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/xtrans_demosaic.o src/demosaic/xtrans_demosaic.cpp
object/xtrans_demosaic.mt.o: src/demosaic/xtrans_demosaic.cpp
${CXX} -c ${CFLAGS} -o object/xtrans_demosaic.mt.o src/demosaic/xtrans_demosaic.cpp
object/dngsdk_glue.o: src/integration/dngsdk_glue.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dngsdk_glue.o src/integration/dngsdk_glue.cpp
object/dngsdk_glue.mt.o: src/integration/dngsdk_glue.cpp
${CXX} -c ${CFLAGS} -o object/dngsdk_glue.mt.o src/integration/dngsdk_glue.cpp
object/rawspeed_glue.o: src/integration/rawspeed_glue.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/rawspeed_glue.o src/integration/rawspeed_glue.cpp
object/rawspeed_glue.mt.o: src/integration/rawspeed_glue.cpp
${CXX} -c ${CFLAGS} -o object/rawspeed_glue.mt.o src/integration/rawspeed_glue.cpp
object/adobepano.o: src/metadata/adobepano.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/adobepano.o src/metadata/adobepano.cpp
object/adobepano.mt.o: src/metadata/adobepano.cpp
${CXX} -c ${CFLAGS} -o object/adobepano.mt.o src/metadata/adobepano.cpp
object/canon.o: src/metadata/canon.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/canon.o src/metadata/canon.cpp
object/canon.mt.o: src/metadata/canon.cpp
${CXX} -c ${CFLAGS} -o object/canon.mt.o src/metadata/canon.cpp
object/ciff.o: src/metadata/ciff.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/ciff.o src/metadata/ciff.cpp
object/ciff.mt.o: src/metadata/ciff.cpp
${CXX} -c ${CFLAGS} -o object/ciff.mt.o src/metadata/ciff.cpp
object/cr3_parser.o: src/metadata/cr3_parser.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/cr3_parser.o src/metadata/cr3_parser.cpp
object/cr3_parser.mt.o: src/metadata/cr3_parser.cpp
${CXX} -c ${CFLAGS} -o object/cr3_parser.mt.o src/metadata/cr3_parser.cpp
object/epson.o: src/metadata/epson.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/epson.o src/metadata/epson.cpp
object/epson.mt.o: src/metadata/epson.cpp
${CXX} -c ${CFLAGS} -o object/epson.mt.o src/metadata/epson.cpp
object/exif_gps.o: src/metadata/exif_gps.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/exif_gps.o src/metadata/exif_gps.cpp
object/exif_gps.mt.o: src/metadata/exif_gps.cpp
${CXX} -c ${CFLAGS} -o object/exif_gps.mt.o src/metadata/exif_gps.cpp
object/fuji.o: src/metadata/fuji.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/fuji.o src/metadata/fuji.cpp
object/fuji.mt.o: src/metadata/fuji.cpp
${CXX} -c ${CFLAGS} -o object/fuji.mt.o src/metadata/fuji.cpp
object/identify_tools.o: src/metadata/identify_tools.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/identify_tools.o src/metadata/identify_tools.cpp
object/identify_tools.mt.o: src/metadata/identify_tools.cpp
${CXX} -c ${CFLAGS} -o object/identify_tools.mt.o src/metadata/identify_tools.cpp
object/identify.o: src/metadata/identify.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/identify.o src/metadata/identify.cpp
object/identify.mt.o: src/metadata/identify.cpp
${CXX} -c ${CFLAGS} -o object/identify.mt.o src/metadata/identify.cpp
object/kodak.o: src/metadata/kodak.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/kodak.o src/metadata/kodak.cpp
object/kodak.mt.o: src/metadata/kodak.cpp
${CXX} -c ${CFLAGS} -o object/kodak.mt.o src/metadata/kodak.cpp
object/leica.o: src/metadata/leica.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/leica.o src/metadata/leica.cpp
object/leica.mt.o: src/metadata/leica.cpp
${CXX} -c ${CFLAGS} -o object/leica.mt.o src/metadata/leica.cpp
object/makernotes.o: src/metadata/makernotes.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/makernotes.o src/metadata/makernotes.cpp
object/makernotes.mt.o: src/metadata/makernotes.cpp
${CXX} -c ${CFLAGS} -o object/makernotes.mt.o src/metadata/makernotes.cpp
object/mediumformat.o: src/metadata/mediumformat.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/mediumformat.o src/metadata/mediumformat.cpp
object/mediumformat.mt.o: src/metadata/mediumformat.cpp
${CXX} -c ${CFLAGS} -o object/mediumformat.mt.o src/metadata/mediumformat.cpp
object/minolta.o: src/metadata/minolta.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/minolta.o src/metadata/minolta.cpp
object/minolta.mt.o: src/metadata/minolta.cpp
${CXX} -c ${CFLAGS} -o object/minolta.mt.o src/metadata/minolta.cpp
object/misc_parsers.o: src/metadata/misc_parsers.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/misc_parsers.o src/metadata/misc_parsers.cpp
object/misc_parsers.mt.o: src/metadata/misc_parsers.cpp
${CXX} -c ${CFLAGS} -o object/misc_parsers.mt.o src/metadata/misc_parsers.cpp
object/nikon.o: src/metadata/nikon.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/nikon.o src/metadata/nikon.cpp
object/nikon.mt.o: src/metadata/nikon.cpp
${CXX} -c ${CFLAGS} -o object/nikon.mt.o src/metadata/nikon.cpp
object/hasselblad_model.o: src/metadata/hasselblad_model.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/hasselblad_model.o src/metadata/hasselblad_model.cpp
object/hasselblad_model.mt.o: src/metadata/hasselblad_model.cpp
${CXX} -c ${CFLAGS} -o object/hasselblad_model.mt.o src/metadata/hasselblad_model.cpp
object/normalize_model.o: src/metadata/normalize_model.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/normalize_model.o src/metadata/normalize_model.cpp
object/normalize_model.mt.o: src/metadata/normalize_model.cpp
${CXX} -c ${CFLAGS} -o object/normalize_model.mt.o src/metadata/normalize_model.cpp
object/olympus.o: src/metadata/olympus.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/olympus.o src/metadata/olympus.cpp
object/olympus.mt.o: src/metadata/olympus.cpp
${CXX} -c ${CFLAGS} -o object/olympus.mt.o src/metadata/olympus.cpp
object/p1.o: src/metadata/p1.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/p1.o src/metadata/p1.cpp
object/p1.mt.o: src/metadata/p1.cpp
${CXX} -c ${CFLAGS} -o object/p1.mt.o src/metadata/p1.cpp
object/pentax.o: src/metadata/pentax.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/pentax.o src/metadata/pentax.cpp
object/pentax.mt.o: src/metadata/pentax.cpp
${CXX} -c ${CFLAGS} -o object/pentax.mt.o src/metadata/pentax.cpp
object/samsung.o: src/metadata/samsung.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/samsung.o src/metadata/samsung.cpp
object/samsung.mt.o: src/metadata/samsung.cpp
${CXX} -c ${CFLAGS} -o object/samsung.mt.o src/metadata/samsung.cpp
object/sony.o: src/metadata/sony.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/sony.o src/metadata/sony.cpp
object/sony.mt.o: src/metadata/sony.cpp
${CXX} -c ${CFLAGS} -o object/sony.mt.o src/metadata/sony.cpp
object/tiff.o: src/metadata/tiff.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/tiff.o src/metadata/tiff.cpp
object/tiff.mt.o: src/metadata/tiff.cpp
${CXX} -c ${CFLAGS} -o object/tiff.mt.o src/metadata/tiff.cpp
object/aspect_ratio.o: src/postprocessing/aspect_ratio.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/aspect_ratio.o src/postprocessing/aspect_ratio.cpp
object/aspect_ratio.mt.o: src/postprocessing/aspect_ratio.cpp
${CXX} -c ${CFLAGS} -o object/aspect_ratio.mt.o src/postprocessing/aspect_ratio.cpp
object/dcraw_process.o: src/postprocessing/dcraw_process.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dcraw_process.o src/postprocessing/dcraw_process.cpp
object/dcraw_process.mt.o: src/postprocessing/dcraw_process.cpp
${CXX} -c ${CFLAGS} -o object/dcraw_process.mt.o src/postprocessing/dcraw_process.cpp
object/mem_image.o: src/postprocessing/mem_image.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/mem_image.o src/postprocessing/mem_image.cpp
object/mem_image.mt.o: src/postprocessing/mem_image.cpp
${CXX} -c ${CFLAGS} -o object/mem_image.mt.o src/postprocessing/mem_image.cpp
object/postprocessing_aux.o: src/postprocessing/postprocessing_aux.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/postprocessing_aux.o src/postprocessing/postprocessing_aux.cpp
object/postprocessing_aux.mt.o: src/postprocessing/postprocessing_aux.cpp
${CXX} -c ${CFLAGS} -o object/postprocessing_aux.mt.o src/postprocessing/postprocessing_aux.cpp
object/postprocessing_utils_dcrdefs.o: src/postprocessing/postprocessing_utils_dcrdefs.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/postprocessing_utils_dcrdefs.o src/postprocessing/postprocessing_utils_dcrdefs.cpp
object/postprocessing_utils_dcrdefs.mt.o: src/postprocessing/postprocessing_utils_dcrdefs.cpp
${CXX} -c ${CFLAGS} -o object/postprocessing_utils_dcrdefs.mt.o src/postprocessing/postprocessing_utils_dcrdefs.cpp
object/postprocessing_utils.o: src/postprocessing/postprocessing_utils.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/postprocessing_utils.o src/postprocessing/postprocessing_utils.cpp
object/postprocessing_utils.mt.o: src/postprocessing/postprocessing_utils.cpp
${CXX} -c ${CFLAGS} -o object/postprocessing_utils.mt.o src/postprocessing/postprocessing_utils.cpp
object/raw2image.o: src/preprocessing/raw2image.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/raw2image.o src/preprocessing/raw2image.cpp
object/raw2image.mt.o: src/preprocessing/raw2image.cpp
${CXX} -c ${CFLAGS} -o object/raw2image.mt.o src/preprocessing/raw2image.cpp
object/ext_preprocess.o: src/preprocessing/ext_preprocess.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/ext_preprocess.o src/preprocessing/ext_preprocess.cpp
object/ext_preprocess.mt.o: src/preprocessing/ext_preprocess.cpp
${CXX} -c ${CFLAGS} -o object/ext_preprocess.mt.o src/preprocessing/ext_preprocess.cpp
object/subtract_black.o: src/preprocessing/subtract_black.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/subtract_black.o src/preprocessing/subtract_black.cpp
object/subtract_black.mt.o: src/preprocessing/subtract_black.cpp
${CXX} -c ${CFLAGS} -o object/subtract_black.mt.o src/preprocessing/subtract_black.cpp
object/cameralist.o: src/tables/cameralist.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/cameralist.o src/tables/cameralist.cpp
object/cameralist.mt.o: src/tables/cameralist.cpp
${CXX} -c ${CFLAGS} -o object/cameralist.mt.o src/tables/cameralist.cpp
object/colorconst.o: src/tables/colorconst.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/colorconst.o src/tables/colorconst.cpp
object/colorconst.mt.o: src/tables/colorconst.cpp
${CXX} -c ${CFLAGS} -o object/colorconst.mt.o src/tables/colorconst.cpp
object/colordata.o: src/tables/colordata.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/colordata.o src/tables/colordata.cpp
object/colordata.mt.o: src/tables/colordata.cpp
${CXX} -c ${CFLAGS} -o object/colordata.mt.o src/tables/colordata.cpp
object/wblists.o: src/tables/wblists.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/wblists.o src/tables/wblists.cpp
object/wblists.mt.o: src/tables/wblists.cpp
${CXX} -c ${CFLAGS} -o object/wblists.mt.o src/tables/wblists.cpp
object/curves.o: src/utils/curves.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/curves.o src/utils/curves.cpp
object/curves.mt.o: src/utils/curves.cpp
${CXX} -c ${CFLAGS} -o object/curves.mt.o src/utils/curves.cpp
object/decoder_info.o: src/utils/decoder_info.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoder_info.o src/utils/decoder_info.cpp
object/decoder_info.mt.o: src/utils/decoder_info.cpp
${CXX} -c ${CFLAGS} -o object/decoder_info.mt.o src/utils/decoder_info.cpp
object/init_close_utils.o: src/utils/init_close_utils.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/init_close_utils.o src/utils/init_close_utils.cpp
object/init_close_utils.mt.o: src/utils/init_close_utils.cpp
${CXX} -c ${CFLAGS} -o object/init_close_utils.mt.o src/utils/init_close_utils.cpp
object/open.o: src/utils/open.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/open.o src/utils/open.cpp
object/open.mt.o: src/utils/open.cpp
${CXX} -c ${CFLAGS} -o object/open.mt.o src/utils/open.cpp
object/phaseone_processing.o: src/utils/phaseone_processing.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/phaseone_processing.o src/utils/phaseone_processing.cpp
object/phaseone_processing.mt.o: src/utils/phaseone_processing.cpp
${CXX} -c ${CFLAGS} -o object/phaseone_processing.mt.o src/utils/phaseone_processing.cpp
object/read_utils.o: src/utils/read_utils.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/read_utils.o src/utils/read_utils.cpp
object/read_utils.mt.o: src/utils/read_utils.cpp
${CXX} -c ${CFLAGS} -o object/read_utils.mt.o src/utils/read_utils.cpp
object/thumb_utils.o: src/utils/thumb_utils.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/thumb_utils.o src/utils/thumb_utils.cpp
object/thumb_utils.mt.o: src/utils/thumb_utils.cpp
${CXX} -c ${CFLAGS} -o object/thumb_utils.mt.o src/utils/thumb_utils.cpp
object/utils_dcraw.o: src/utils/utils_dcraw.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/utils_dcraw.o src/utils/utils_dcraw.cpp
object/utils_dcraw.mt.o: src/utils/utils_dcraw.cpp
${CXX} -c ${CFLAGS} -o object/utils_dcraw.mt.o src/utils/utils_dcraw.cpp
object/utils_libraw.o: src/utils/utils_libraw.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/utils_libraw.o src/utils/utils_libraw.cpp
object/utils_libraw.mt.o: src/utils/utils_libraw.cpp
${CXX} -c ${CFLAGS} -o object/utils_libraw.mt.o src/utils/utils_libraw.cpp
object/apply_profile.o: src/write/apply_profile.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/apply_profile.o src/write/apply_profile.cpp
object/apply_profile.mt.o: src/write/apply_profile.cpp
${CXX} -c ${CFLAGS} -o object/apply_profile.mt.o src/write/apply_profile.cpp
object/file_write.o: src/write/file_write.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/file_write.o src/write/file_write.cpp
object/file_write.mt.o: src/write/file_write.cpp
${CXX} -c ${CFLAGS} -o object/file_write.mt.o src/write/file_write.cpp
object/tiff_writer.o: src/write/tiff_writer.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/tiff_writer.o src/write/tiff_writer.cpp
object/tiff_writer.mt.o: src/write/tiff_writer.cpp
${CXX} -c ${CFLAGS} -o object/tiff_writer.mt.o src/write/tiff_writer.cpp
object/x3f_parse_process.o: src/x3f/x3f_parse_process.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/x3f_parse_process.o src/x3f/x3f_parse_process.cpp
object/x3f_parse_process.mt.o: src/x3f/x3f_parse_process.cpp
${CXX} -c ${CFLAGS} -o object/x3f_parse_process.mt.o src/x3f/x3f_parse_process.cpp
object/x3f_utils_patched.o: src/x3f/x3f_utils_patched.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/x3f_utils_patched.o src/x3f/x3f_utils_patched.cpp
object/x3f_utils_patched.mt.o: src/x3f/x3f_utils_patched.cpp
${CXX} -c ${CFLAGS} -o object/x3f_utils_patched.mt.o src/x3f/x3f_utils_patched.cpp

View File

@@ -0,0 +1,297 @@
all: library all_samples
CFLAGS=-O3 -I. -w
CC=gcc
CXX=g++
# OpenMP support
#CFLAGS+=-fopenmp
# RawSpeed Support
#CFLAGS+=-pthread -DUSE_RAWSPEED -I../RawSpeed -I/usr/local/include/libxml2
#LDADD+=-L../RawSpeed/RawSpeed -lrawspeed -L/usr/local/lib -ljpeg -lxml2
#RAWSPEED_DATA=../RawSpeed/data/cameras.xml
# DNG SDK Support
# CFLAGS+=-DUSE_DNGSDK -I../dng_sdk/source
# LDADDD+=-L../dng_sdk/release -ldng -lXMPCore -ljpeg -lz
# Jasper support for RedCine
#CFLAGS+=-DUSE_JASPER -I/usr/local/include
#LDADD+=-L/usr/local/lib -ljasper
# JPEG support for lossy DNG
#CFLAGS+=-DUSE_JPEG -I/usr/local/include
#LDADD+=-L/usr/local/lib -ljpeg
# LIBJPEG8:
#CFLAGS+=-DUSE_JPEG8
# LCMS support
#CFLAGS+=-DUSE_LCMS -I/usr/local/include
#LDADD+=-L/usr/local/lib -llcms
# LCMS2.x support
#CFLAGS+=-DUSE_LCMS2 -I/usr/local/include
#LDADD+=-L/usr/local/lib -llcms2
CSTFLAGS=$(CFLAGS) -DLIBRAW_NOTHREADS
LIB_OBJECTS= object/libraw_datastream.o object/libraw_c_api.o \
object/cameralist.o object/fuji_compressed.o \
object/crx.o object/fp_dng.o object/decoders_libraw.o \
object/unpack.o object/unpack_thumb.o \
object/rawspeed_glue.o object/dngsdk_glue.o \
object/colorconst.o object/utils_libraw.o object/init_close_utils.o \
object/decoder_info.o object/open.o object/phaseone_processing.o \
object/thumb_utils.o \
object/tiff_writer.o object/subtract_black.o object/postprocessing_utils.o \
object/dcraw_process.o object/raw2image.o object/mem_image.o \
object/x3f_utils_patched.o object/x3f_parse_process.o \
object/read_utils.o object/curves.o object/utils_dcraw.o \
object/colordata.o \
object/canon_600.o object/decoders_dcraw.o \
object/decoders_libraw_dcrdefs.o object/generic.o \
object/kodak_decoders.o object/dng.o object/smal.o \
object/load_mfbacks.o \
object/sony.o object/nikon.o object/samsung.o object/cr3_parser.o \
object/canon.o object/epson.o object/olympus.o object/leica.o \
object/fuji.o object/adobepano.o object/pentax.o object/p1.o \
object/makernotes.o object/exif_gps.o object/kodak.o \
object/tiff.o object/ciff.o object/mediumformat.o object/minolta.o \
object/identify_tools.o \
object/hasselblad_model.o object/normalize_model.o object/identify.o \
object/misc_parsers.o object/wblists.o \
object/postprocessing_aux.o object/postprocessing_utils_dcrdefs.o \
object/aspect_ratio.o \
object/misc_demosaic.o object/xtrans_demosaic.o object/ahd_demosaic.o \
object/dht_demosaic.o object/aahd_demosaic.o object/dcb_demosaic.o \
object/file_write.o \
object/ext_preprocess.o object/apply_profile.o
LR_INCLUDES=libraw/libraw.h libraw/libraw_alloc.h \
libraw/libraw_const.h libraw/libraw_datastream.h \
libraw/libraw_internal.h libraw/libraw_types.h \
libraw/libraw_version.h
library: lib/libraw.a
all_samples: bin/raw-identify bin/simple_dcraw bin/dcraw_emu bin/dcraw_half bin/mem_image \
bin/unprocessed_raw bin/4channels bin/multirender_test bin/postprocessing_benchmark \
bin/rawtextdump
install: library
@if [ -d /usr/local/include ] ; then cp -R libraw /usr/local/include/ ; else echo 'no /usr/local/include' ; fi
@if [ -d /usr/local/lib ] ; then cp lib/libraw.a lib/libraw_r.a /usr/local/lib/ ; else echo 'no /usr/local/lib' ; fi
install-binaries: all_samples
@if [ -d /usr/local/bin ] ; then cp bin/[a-z]* /usr/local/bin/ ; else echo 'no /usr/local/bin' ; fi
#binaries
bin/raw-identify: lib/libraw.a samples/raw-identify.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/raw-identify samples/raw-identify.cpp -L./lib -lraw -lws2_32 -lm ${LDADD}
bin/unprocessed_raw: lib/libraw.a samples/unprocessed_raw.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/unprocessed_raw samples/unprocessed_raw.cpp -L./lib -lraw -lws2_32 -lm ${LDADD}
bin/4channels: lib/libraw.a samples/4channels.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/4channels samples/4channels.cpp -L./lib -lraw -lws2_32 -lm ${LDADD}
bin/rawtextdump: lib/libraw.a samples/rawtextdump.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/rawtextdump samples/rawtextdump.cpp -L./lib -lraw -lws2_32 -lm ${LDADD}
bin/simple_dcraw: lib/libraw.a samples/simple_dcraw.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/simple_dcraw samples/simple_dcraw.cpp -L./lib -lraw -lws2_32 -lm ${LDADD}
bin/multirender_test: lib/libraw.a samples/multirender_test.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/multirender_test samples/multirender_test.cpp -L./lib -lraw -lws2_32 -lm ${LDADD}
bin/postprocessing_benchmark: lib/libraw.a samples/postprocessing_benchmark.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/postprocessing_benchmark samples/postprocessing_benchmark.cpp -L./lib -lraw -lws2_32 -lm ${LDADD}
bin/mem_image: lib/libraw.a samples/mem_image_sample.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/mem_image samples/mem_image_sample.cpp -L./lib -lraw -lws2_32 -lm ${LDADD}
bin/dcraw_half: lib/libraw.a object/dcraw_half.o
${CC} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/dcraw_half object/dcraw_half.o -L./lib -lraw -lws2_32 -lm -lstdc++ ${LDADD}
bin/dcraw_emu: lib/libraw.a samples/dcraw_emu.cpp
${CXX} -DLIBRAW_NOTHREADS ${CFLAGS} -o bin/dcraw_emu samples/dcraw_emu.cpp -L./lib -lraw -lws2_32 -lm ${LDADD}
#objects
object/dcraw_half.o: samples/dcraw_half.c
${CC} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dcraw_half.o samples/dcraw_half.c
object/half_mt.o: samples/half_mt.c
${CC} -c -pthread ${CFLAGS} -o object/half_mt.o samples/half_mt.c
lib/libraw.a: ${LIB_OBJECTS}
rm -f lib/libraw.a
ar crv lib/libraw.a ${LIB_OBJECTS}
ranlib lib/libraw.a
lib/libraw_r.a: ${LIB_MT_OBJECTS}
rm -f lib/libraw_r.a
ar crv lib/libraw_r.a ${LIB_MT_OBJECTS}
ranlib lib/libraw_r.a
clean:
rm -fr bin/*.dSYM
rm -f *.o *~ src/*~ samples/*~ internal/*~ libraw/*~ lib/lib*.a bin/[4a-z]* object/*o dcraw/*~ doc/*~ bin/*~ src/*/*~
### generated
object/libraw_c_api.o: src/libraw_c_api.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/libraw_c_api.o src/libraw_c_api.cpp
object/libraw_datastream.o: src/libraw_datastream.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/libraw_datastream.o src/libraw_datastream.cpp
object/canon_600.o: src/decoders/canon_600.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/canon_600.o src/decoders/canon_600.cpp
object/crx.o: src/decoders/crx.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/crx.o src/decoders/crx.cpp
object/decoders_dcraw.o: src/decoders/decoders_dcraw.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoders_dcraw.o src/decoders/decoders_dcraw.cpp
object/decoders_libraw_dcrdefs.o: src/decoders/decoders_libraw_dcrdefs.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoders_libraw_dcrdefs.o src/decoders/decoders_libraw_dcrdefs.cpp
object/decoders_libraw.o: src/decoders/decoders_libraw.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoders_libraw.o src/decoders/decoders_libraw.cpp
object/dng.o: src/decoders/dng.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dng.o src/decoders/dng.cpp
object/fp_dng.o: src/decoders/fp_dng.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/fp_dng.o src/decoders/fp_dng.cpp
object/fuji_compressed.o: src/decoders/fuji_compressed.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/fuji_compressed.o src/decoders/fuji_compressed.cpp
object/generic.o: src/decoders/generic.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/generic.o src/decoders/generic.cpp
object/kodak_decoders.o: src/decoders/kodak_decoders.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/kodak_decoders.o src/decoders/kodak_decoders.cpp
object/load_mfbacks.o: src/decoders/load_mfbacks.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/load_mfbacks.o src/decoders/load_mfbacks.cpp
object/smal.o: src/decoders/smal.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/smal.o src/decoders/smal.cpp
object/unpack_thumb.o: src/decoders/unpack_thumb.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/unpack_thumb.o src/decoders/unpack_thumb.cpp
object/unpack.o: src/decoders/unpack.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/unpack.o src/decoders/unpack.cpp
object/aahd_demosaic.o: src/demosaic/aahd_demosaic.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/aahd_demosaic.o src/demosaic/aahd_demosaic.cpp
object/ahd_demosaic.o: src/demosaic/ahd_demosaic.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/ahd_demosaic.o src/demosaic/ahd_demosaic.cpp
object/dcb_demosaic.o: src/demosaic/dcb_demosaic.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dcb_demosaic.o src/demosaic/dcb_demosaic.cpp
object/dht_demosaic.o: src/demosaic/dht_demosaic.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dht_demosaic.o src/demosaic/dht_demosaic.cpp
object/misc_demosaic.o: src/demosaic/misc_demosaic.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/misc_demosaic.o src/demosaic/misc_demosaic.cpp
object/xtrans_demosaic.o: src/demosaic/xtrans_demosaic.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/xtrans_demosaic.o src/demosaic/xtrans_demosaic.cpp
object/dngsdk_glue.o: src/integration/dngsdk_glue.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dngsdk_glue.o src/integration/dngsdk_glue.cpp
object/rawspeed_glue.o: src/integration/rawspeed_glue.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/rawspeed_glue.o src/integration/rawspeed_glue.cpp
object/adobepano.o: src/metadata/adobepano.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/adobepano.o src/metadata/adobepano.cpp
object/canon.o: src/metadata/canon.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/canon.o src/metadata/canon.cpp
object/ciff.o: src/metadata/ciff.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/ciff.o src/metadata/ciff.cpp
object/cr3_parser.o: src/metadata/cr3_parser.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/cr3_parser.o src/metadata/cr3_parser.cpp
object/epson.o: src/metadata/epson.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/epson.o src/metadata/epson.cpp
object/exif_gps.o: src/metadata/exif_gps.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/exif_gps.o src/metadata/exif_gps.cpp
object/fuji.o: src/metadata/fuji.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/fuji.o src/metadata/fuji.cpp
object/identify_tools.o: src/metadata/identify_tools.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/identify_tools.o src/metadata/identify_tools.cpp
object/identify.o: src/metadata/identify.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/identify.o src/metadata/identify.cpp
object/kodak.o: src/metadata/kodak.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/kodak.o src/metadata/kodak.cpp
object/leica.o: src/metadata/leica.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/leica.o src/metadata/leica.cpp
object/makernotes.o: src/metadata/makernotes.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/makernotes.o src/metadata/makernotes.cpp
object/mediumformat.o: src/metadata/mediumformat.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/mediumformat.o src/metadata/mediumformat.cpp
object/minolta.o: src/metadata/minolta.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/minolta.o src/metadata/minolta.cpp
object/misc_parsers.o: src/metadata/misc_parsers.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/misc_parsers.o src/metadata/misc_parsers.cpp
object/nikon.o: src/metadata/nikon.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/nikon.o src/metadata/nikon.cpp
object/hasselblad_model.o: src/metadata/hasselblad_model.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/hasselblad_model.o src/metadata/hasselblad_model.cpp
object/normalize_model.o: src/metadata/normalize_model.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/normalize_model.o src/metadata/normalize_model.cpp
object/olympus.o: src/metadata/olympus.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/olympus.o src/metadata/olympus.cpp
object/p1.o: src/metadata/p1.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/p1.o src/metadata/p1.cpp
object/pentax.o: src/metadata/pentax.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/pentax.o src/metadata/pentax.cpp
object/samsung.o: src/metadata/samsung.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/samsung.o src/metadata/samsung.cpp
object/sony.o: src/metadata/sony.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/sony.o src/metadata/sony.cpp
object/tiff.o: src/metadata/tiff.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/tiff.o src/metadata/tiff.cpp
object/aspect_ratio.o: src/postprocessing/aspect_ratio.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/aspect_ratio.o src/postprocessing/aspect_ratio.cpp
object/dcraw_process.o: src/postprocessing/dcraw_process.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/dcraw_process.o src/postprocessing/dcraw_process.cpp
object/mem_image.o: src/postprocessing/mem_image.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/mem_image.o src/postprocessing/mem_image.cpp
object/postprocessing_aux.o: src/postprocessing/postprocessing_aux.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/postprocessing_aux.o src/postprocessing/postprocessing_aux.cpp
object/postprocessing_utils_dcrdefs.o: src/postprocessing/postprocessing_utils_dcrdefs.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/postprocessing_utils_dcrdefs.o src/postprocessing/postprocessing_utils_dcrdefs.cpp
object/postprocessing_utils.o: src/postprocessing/postprocessing_utils.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/postprocessing_utils.o src/postprocessing/postprocessing_utils.cpp
object/raw2image.o: src/preprocessing/raw2image.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/raw2image.o src/preprocessing/raw2image.cpp
object/ext_preprocess.o: src/preprocessing/ext_preprocess.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/ext_preprocess.o src/preprocessing/ext_preprocess.cpp
object/subtract_black.o: src/preprocessing/subtract_black.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/subtract_black.o src/preprocessing/subtract_black.cpp
object/cameralist.o: src/tables/cameralist.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/cameralist.o src/tables/cameralist.cpp
object/colorconst.o: src/tables/colorconst.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/colorconst.o src/tables/colorconst.cpp
object/colordata.o: src/tables/colordata.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/colordata.o src/tables/colordata.cpp
object/wblists.o: src/tables/wblists.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/wblists.o src/tables/wblists.cpp
object/curves.o: src/utils/curves.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/curves.o src/utils/curves.cpp
object/decoder_info.o: src/utils/decoder_info.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/decoder_info.o src/utils/decoder_info.cpp
object/init_close_utils.o: src/utils/init_close_utils.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/init_close_utils.o src/utils/init_close_utils.cpp
object/open.o: src/utils/open.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/open.o src/utils/open.cpp
object/phaseone_processing.o: src/utils/phaseone_processing.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/phaseone_processing.o src/utils/phaseone_processing.cpp
object/read_utils.o: src/utils/read_utils.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/read_utils.o src/utils/read_utils.cpp
object/thumb_utils.o: src/utils/thumb_utils.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/thumb_utils.o src/utils/thumb_utils.cpp
object/utils_dcraw.o: src/utils/utils_dcraw.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/utils_dcraw.o src/utils/utils_dcraw.cpp
object/utils_libraw.o: src/utils/utils_libraw.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/utils_libraw.o src/utils/utils_libraw.cpp
object/apply_profile.o: src/write/apply_profile.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/apply_profile.o src/write/apply_profile.cpp
object/file_write.o: src/write/file_write.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/file_write.o src/write/file_write.cpp
object/tiff_writer.o: src/write/tiff_writer.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/tiff_writer.o src/write/tiff_writer.cpp
object/x3f_parse_process.o: src/x3f/x3f_parse_process.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/x3f_parse_process.o src/x3f/x3f_parse_process.cpp
object/x3f_utils_patched.o: src/x3f/x3f_utils_patched.cpp
${CXX} -c -DLIBRAW_NOTHREADS ${CFLAGS} -o object/x3f_utils_patched.o src/x3f/x3f_utils_patched.cpp

View File

@@ -0,0 +1,628 @@
# Additional compiler flags (OpenMP, SSEx, AVX, ...)
#COPT_OPT=/arch:SSE2 /arch:AVX
# Compile with RawSpeed support
#CFLAGS_RAWSPEED=/DUSE_RAWSPEED /I"..\\RawSpeed" /I"..\\RawSpeed\include" /I"..\\RawSpeed\include\libjpeg"
#LDFLAGS_RAWSPEED=..\RawSpeed\lib\rawspeed.lib ..\RawSpeed\lib\libxml2.lib ..\RawSpeed\lib\iconv.lib ..\RawSpeed\lib\charset.lib ..\RawSpeed\lib\turbojpeg-static.lib
# Compile with DNG SDK support
#CFLAGS_DNG=/DUSE_DNGSDK /I"..\\dng_sdk\\source"
#LDFLAGS_DNG=..\\dng_sdk\\release\\libdng.lib ..\\dng_sdk\\release\\XMPCore.lib
# you may also need to specify zlib.lib and jpeg.lib in the line above
# LCMS 1.x support
#LCMS_DEF=/DUSE_LCMS /DCMS_DLL /I..\lcms-1.19\include
#LCMS_LIB=..\lcms-1.19\bin\lcms.lib
# LCMS 2.x support
#LCMS_DEF=/DUSE_LCMS2 /DCMS_DLL /I..\lcms2-2.3\include
#LCMS_LIB=..\lcms2-2.3\bin\lcms2_dll.lib
# JPEG support for DNG
#JPEG_DEF=/DUSE_JPEG /I..\jpeg-8d
#JPEG_LIB=..\jpeg-8d\Release\jpeg.lib
SAMPLES=bin\raw-identify.exe bin\simple_dcraw.exe bin\dcraw_emu.exe bin\dcraw_half.exe \
bin\half_mt.exe bin\mem_image.exe bin\unprocessed_raw.exe bin\4channels.exe \
bin\multirender_test.exe bin\postprocessing_benchmark.exe bin\openbayer_sample.exe \
bin\rawtextdump.exe
LIBSTATIC=lib\libraw_static.lib
DLL=bin\libraw.dll
LIBDLL=lib\libraw.lib
all: $(DLL) $(LIBSTATIC) $(SAMPLES)
$(LIBDLL): $(DLL)
# Guess LIBPATH from $INCLUDE
LIB_OBJECTS= object\libraw_datastream_st.obj object\libraw_c_api_st.obj \
object\cameralist_st.obj object\fuji_compressed_st.obj \
object\crx_st.obj object\fp_dng_st.obj object\decoders_libraw_st.obj \
object\unpack_st.obj object\unpack_thumb_st.obj \
object\rawspeed_glue_st.obj object\dngsdk_glue_st.obj \
object\colorconst_st.obj object\utils_libraw_st.obj object\init_close_utils_st.obj \
object\decoder_info_st.obj object\open_st.obj object\phaseone_processing_st.obj \
object\thumb_utils_st.obj \
object\tiff_writer_st.obj object\subtract_black_st.obj object\postprocessing_utils_st.obj \
object\dcraw_process_st.obj object\raw2image_st.obj object\mem_image_st.obj \
object\x3f_utils_patched_st.obj object\x3f_parse_process_st.obj \
object\read_utils_st.obj object\curves_st.obj object\utils_dcraw_st.obj \
object\colordata_st.obj \
object\canon_600_st.obj object\decoders_dcraw_st.obj \
object\decoders_libraw_dcrdefs_st.obj object\generic_st.obj \
object\kodak_decoders_st.obj object\dng_st.obj object\smal_st.obj \
object\load_mfbacks_st.obj \
object\sony_st.obj object\nikon_st.obj object\samsung_st.obj object\cr3_parser_st.obj \
object\canon_st.obj object\epson_st.obj object\olympus_st.obj object\leica_st.obj \
object\fuji_st.obj object\adobepano_st.obj object\pentax_st.obj object\p1_st.obj \
object\makernotes_st.obj object\exif_gps_st.obj object\kodak_st.obj \
object\tiff_st.obj object\ciff_st.obj object\mediumformat_st.obj object\minolta_st.obj \
object\identify_tools_st.obj \
object\hasselblad_model_st.obj object\normalize_model_st.obj object\identify_st.obj \
object\misc_parsers_st.obj object\wblists_st.obj \
object\postprocessing_aux_st.obj object\postprocessing_utils_dcrdefs_st.obj \
object\aspect_ratio_st.obj \
object\misc_demosaic_st.obj object\xtrans_demosaic_st.obj object\ahd_demosaic_st.obj \
object\dht_demosaic_st.obj object\aahd_demosaic_st.obj object\dcb_demosaic_st.obj \
object\file_write_st.obj \
object\ext_preprocess_st.obj object\apply_profile_st.obj
DLL_OBJECTS= object\libraw_datastream.obj object\libraw_c_api.obj \
object\cameralist.obj object\fuji_compressed.obj \
object\crx.obj object\fp_dng.obj object\decoders_libraw.obj \
object\unpack.obj object\unpack_thumb.obj \
object\rawspeed_glue.obj object\dngsdk_glue.obj \
object\colorconst.obj object\utils_libraw.obj \
object\init_close_utils.obj \
object\decoder_info.obj object\open.obj object\phaseone_processing.obj \
object\thumb_utils.obj \
object\tiff_writer.obj object\subtract_black.obj \
object\postprocessing_utils.obj object\dcraw_process.obj \
object\raw2image.obj object\mem_image.obj \
object\x3f_utils_patched.obj object\x3f_parse_process.obj \
object\read_utils.obj object\curves.obj object\utils_dcraw.obj \
object\colordata.obj \
object\canon_600.obj object\decoders_dcraw.obj \
object\decoders_libraw_dcrdefs.obj object\generic.obj \
object\kodak_decoders.obj object\dng.obj object\smal.obj \
object\load_mfbacks.obj \
object\sony.obj object\nikon.obj object\samsung.obj \
object\cr3_parser.obj object\canon.obj object\epson.obj \
object\olympus.obj object\leica.obj \
object\fuji.obj object\adobepano.obj object\pentax.obj object\p1.obj \
object\makernotes.obj object\exif_gps.obj object\kodak.obj \
object\tiff.obj object\ciff.obj object\mediumformat.obj \
object\minolta.obj \
object\identify_tools.obj \
object\hasselblad_model.obj object\normalize_model.obj object\identify.obj \
object\misc_parsers.obj object\wblists.obj \
object\postprocessing_aux.obj object\postprocessing_utils_dcrdefs.obj \
object\aspect_ratio.obj \
object\misc_demosaic.obj object\xtrans_demosaic.obj \
object\ahd_demosaic.obj object\dht_demosaic.obj \
object\aahd_demosaic.obj object\dcb_demosaic.obj \
object\file_write.obj \
object\ext_preprocess.obj object\apply_profile.obj
CC=cl.exe
COPT=/EHsc /MP /MD /I. /DWIN32 /O2 /W0 /nologo $(COPT_OPT) $(CFLAGSG2) $(CFLAGSG3) $(LCMS_DEF) $(JPEG_DEF) $(CFLAGS_RAWSPEED) $(CFLAGS_DNG)
LINKLIB=$(LIBDLL) $(LDFLAGS_RAWSPEED) $(LDFLAGS_DNG)
# Samples - default to dynamic (DLL) link, uncomment next lines
#CFLAGS2=/DLIBRAW_NODLL
#LINKLIB=$(LIBSTATIC)
bin\raw-identify.exe: $(LINKLIB) samples\raw-identify.cpp
$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\raw-identify.exe" /Fo"object\\" samples\raw-identify.cpp $(LINKLIB)
bin\unprocessed_raw.exe: $(LINKLIB) samples\unprocessed_raw.cpp
$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\unprocessed_raw.exe" /Fo"object\\" samples\unprocessed_raw.cpp $(LINKLIB) ws2_32.lib
bin\4channels.exe: $(LINKLIB) samples\4channels.cpp
$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\4channels.exe" /Fo"object\\" samples\4channels.cpp $(LINKLIB)
bin\rawtextdump.exe: $(LINKLIB) samples\rawtextdump.cpp
$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\rawtextdump.exe" /Fo"object\\" samples\rawtextdump.cpp $(LINKLIB)
bin\simple_dcraw.exe: $(LINKLIB) samples\simple_dcraw.cpp
$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\simple_dcraw.exe" /Fo"object\\" samples\simple_dcraw.cpp $(LINKLIB)
bin\postprocessing_benchmark.exe: $(LINKLIB) samples\postprocessing_benchmark.cpp
$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\postprocessing_benchmark.exe" /Fo"object\\" samples\postprocessing_benchmark.cpp $(LINKLIB)
bin\multirender_test.exe: $(LINKLIB) samples\multirender_test.cpp
$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\multirender_test.exe" /Fo"object\\" samples\multirender_test.cpp $(LINKLIB)
bin\openbayer_sample.exe: $(LINKLIB) samples\openbayer_sample.cpp
$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\openbayer_sample.exe" /Fo"object\\" samples\openbayer_sample.cpp $(LINKLIB)
bin\mem_image.exe: $(LINKLIB) samples\mem_image_sample.cpp
$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\mem_image.exe" /Fo"object\\" samples\mem_image_sample.cpp $(LINKLIB)
bin\dcraw_emu.exe: $(LINKLIB) samples\dcraw_emu.cpp
$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\dcraw_emu.exe" /Fo"object\\" samples\dcraw_emu.cpp $(LINKLIB)
bin\dcraw_half.exe: $(LINKLIB) samples\dcraw_half.c
$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\dcraw_half.exe" /Fo"object\\" samples\dcraw_half.c $(LINKLIB)
bin\half_mt.exe: $(LINKLIB) samples\half_mt_win32.c
$(CC) $(COPT) $(CFLAGS2) /Fe"bin\\half_mt.exe" /Fo"object\\" samples\half_mt_win32.c $(LINKLIB)
# DLL build
$(DLL): $(DLL_OBJECTS)
-del /f $(DLL) $(LIBDLL)
cl $(COPT) /LD $(DLL_OBJECTS) $(LDFLAGS_RAWSPEED) $(LDFLAGS_DNG) $(LCMS_LIB) $(JPEG_LIB) /link /out:"$(DLL)" /implib:"$(LIBDLL)"
# LIBRARY BUILD
$(LIBSTATIC): $(LIB_OBJECTS)
-del /f $(LIBSTATIC)
lib /OUT:$(LIBSTATIC) /LTCG $(LIB_OBJECTS)
# clean
clean:
-del $(LIBSTATIC) $(LIBDLL) lib\*.exp
-del $(LIB_OBJECTS) $(DLL_OBJECTS)
-del object\*.o
-del $(DLL) $(SAMPLES)
# OBJ generation rules
object\canon_600_st.obj: src\decoders\canon_600.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\canon_600_st.obj" /c src\decoders\canon_600.cpp
object\canon_600.obj: src\decoders\canon_600.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\canon_600.obj" /c src\decoders\canon_600.cpp
object\crx_st.obj: src\decoders\crx.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\crx_st.obj" /c src\decoders\crx.cpp
object\crx.obj: src\decoders\crx.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\crx.obj" /c src\decoders\crx.cpp
object\decoders_dcraw_st.obj: src\decoders\decoders_dcraw.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\decoders_dcraw_st.obj" /c src\decoders\decoders_dcraw.cpp
object\decoders_dcraw.obj: src\decoders\decoders_dcraw.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\decoders_dcraw.obj" /c src\decoders\decoders_dcraw.cpp
object\decoders_libraw_dcrdefs_st.obj: src\decoders\decoders_libraw_dcrdefs.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\decoders_libraw_dcrdefs_st.obj" /c src\decoders\decoders_libraw_dcrdefs.cpp
object\decoders_libraw_dcrdefs.obj: src\decoders\decoders_libraw_dcrdefs.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\decoders_libraw_dcrdefs.obj" /c src\decoders\decoders_libraw_dcrdefs.cpp
object\decoders_libraw_st.obj: src\decoders\decoders_libraw.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\decoders_libraw_st.obj" /c src\decoders\decoders_libraw.cpp
object\decoders_libraw.obj: src\decoders\decoders_libraw.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\decoders_libraw.obj" /c src\decoders\decoders_libraw.cpp
object\dng_st.obj: src\decoders\dng.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\dng_st.obj" /c src\decoders\dng.cpp
object\dng.obj: src\decoders\dng.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\dng.obj" /c src\decoders\dng.cpp
object\fp_dng_st.obj: src\decoders\fp_dng.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\fp_dng_st.obj" /c src\decoders\fp_dng.cpp
object\fp_dng.obj: src\decoders\fp_dng.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\fp_dng.obj" /c src\decoders\fp_dng.cpp
object\fuji_compressed_st.obj: src\decoders\fuji_compressed.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\fuji_compressed_st.obj" /c src\decoders\fuji_compressed.cpp
object\fuji_compressed.obj: src\decoders\fuji_compressed.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\fuji_compressed.obj" /c src\decoders\fuji_compressed.cpp
object\generic_st.obj: src\decoders\generic.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\generic_st.obj" /c src\decoders\generic.cpp
object\generic.obj: src\decoders\generic.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\generic.obj" /c src\decoders\generic.cpp
object\kodak_decoders_st.obj: src\decoders\kodak_decoders.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\kodak_decoders_st.obj" /c src\decoders\kodak_decoders.cpp
object\kodak_decoders.obj: src\decoders\kodak_decoders.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\kodak_decoders.obj" /c src\decoders\kodak_decoders.cpp
object\load_mfbacks_st.obj: src\decoders\load_mfbacks.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\load_mfbacks_st.obj" /c src\decoders\load_mfbacks.cpp
object\load_mfbacks.obj: src\decoders\load_mfbacks.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\load_mfbacks.obj" /c src\decoders\load_mfbacks.cpp
object\smal_st.obj: src\decoders\smal.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\smal_st.obj" /c src\decoders\smal.cpp
object\smal.obj: src\decoders\smal.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\smal.obj" /c src\decoders\smal.cpp
object\unpack_thumb_st.obj: src\decoders\unpack_thumb.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\unpack_thumb_st.obj" /c src\decoders\unpack_thumb.cpp
object\unpack_thumb.obj: src\decoders\unpack_thumb.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\unpack_thumb.obj" /c src\decoders\unpack_thumb.cpp
object\unpack_st.obj: src\decoders\unpack.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\unpack_st.obj" /c src\decoders\unpack.cpp
object\unpack.obj: src\decoders\unpack.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\unpack.obj" /c src\decoders\unpack.cpp
object\aahd_demosaic_st.obj: src\demosaic\aahd_demosaic.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\aahd_demosaic_st.obj" /c src\demosaic\aahd_demosaic.cpp
object\aahd_demosaic.obj: src\demosaic\aahd_demosaic.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\aahd_demosaic.obj" /c src\demosaic\aahd_demosaic.cpp
object\ahd_demosaic_st.obj: src\demosaic\ahd_demosaic.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\ahd_demosaic_st.obj" /c src\demosaic\ahd_demosaic.cpp
object\ahd_demosaic.obj: src\demosaic\ahd_demosaic.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\ahd_demosaic.obj" /c src\demosaic\ahd_demosaic.cpp
object\dcb_demosaic_st.obj: src\demosaic\dcb_demosaic.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\dcb_demosaic_st.obj" /c src\demosaic\dcb_demosaic.cpp
object\dcb_demosaic.obj: src\demosaic\dcb_demosaic.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\dcb_demosaic.obj" /c src\demosaic\dcb_demosaic.cpp
object\dht_demosaic_st.obj: src\demosaic\dht_demosaic.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\dht_demosaic_st.obj" /c src\demosaic\dht_demosaic.cpp
object\dht_demosaic.obj: src\demosaic\dht_demosaic.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\dht_demosaic.obj" /c src\demosaic\dht_demosaic.cpp
object\misc_demosaic_st.obj: src\demosaic\misc_demosaic.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\misc_demosaic_st.obj" /c src\demosaic\misc_demosaic.cpp
object\misc_demosaic.obj: src\demosaic\misc_demosaic.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\misc_demosaic.obj" /c src\demosaic\misc_demosaic.cpp
object\xtrans_demosaic_st.obj: src\demosaic\xtrans_demosaic.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\xtrans_demosaic_st.obj" /c src\demosaic\xtrans_demosaic.cpp
object\xtrans_demosaic.obj: src\demosaic\xtrans_demosaic.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\xtrans_demosaic.obj" /c src\demosaic\xtrans_demosaic.cpp
object\dngsdk_glue_st.obj: src\integration\dngsdk_glue.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\dngsdk_glue_st.obj" /c src\integration\dngsdk_glue.cpp
object\dngsdk_glue.obj: src\integration\dngsdk_glue.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\dngsdk_glue.obj" /c src\integration\dngsdk_glue.cpp
object\rawspeed_glue_st.obj: src\integration\rawspeed_glue.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\rawspeed_glue_st.obj" /c src\integration\rawspeed_glue.cpp
object\rawspeed_glue.obj: src\integration\rawspeed_glue.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\rawspeed_glue.obj" /c src\integration\rawspeed_glue.cpp
object\adobepano_st.obj: src\metadata\adobepano.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\adobepano_st.obj" /c src\metadata\adobepano.cpp
object\adobepano.obj: src\metadata\adobepano.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\adobepano.obj" /c src\metadata\adobepano.cpp
object\canon_st.obj: src\metadata\canon.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\canon_st.obj" /c src\metadata\canon.cpp
object\canon.obj: src\metadata\canon.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\canon.obj" /c src\metadata\canon.cpp
object\ciff_st.obj: src\metadata\ciff.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\ciff_st.obj" /c src\metadata\ciff.cpp
object\ciff.obj: src\metadata\ciff.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\ciff.obj" /c src\metadata\ciff.cpp
object\cr3_parser_st.obj: src\metadata\cr3_parser.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\cr3_parser_st.obj" /c src\metadata\cr3_parser.cpp
object\cr3_parser.obj: src\metadata\cr3_parser.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\cr3_parser.obj" /c src\metadata\cr3_parser.cpp
object\epson_st.obj: src\metadata\epson.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\epson_st.obj" /c src\metadata\epson.cpp
object\epson.obj: src\metadata\epson.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\epson.obj" /c src\metadata\epson.cpp
object\exif_gps_st.obj: src\metadata\exif_gps.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\exif_gps_st.obj" /c src\metadata\exif_gps.cpp
object\exif_gps.obj: src\metadata\exif_gps.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\exif_gps.obj" /c src\metadata\exif_gps.cpp
object\fuji_st.obj: src\metadata\fuji.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\fuji_st.obj" /c src\metadata\fuji.cpp
object\fuji.obj: src\metadata\fuji.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\fuji.obj" /c src\metadata\fuji.cpp
object\identify_tools_st.obj: src\metadata\identify_tools.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\identify_tools_st.obj" /c src\metadata\identify_tools.cpp
object\identify_tools.obj: src\metadata\identify_tools.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\identify_tools.obj" /c src\metadata\identify_tools.cpp
object\identify_st.obj: src\metadata\identify.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\identify_st.obj" /c src\metadata\identify.cpp
object\identify.obj: src\metadata\identify.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\identify.obj" /c src\metadata\identify.cpp
object\kodak_st.obj: src\metadata\kodak.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\kodak_st.obj" /c src\metadata\kodak.cpp
object\kodak.obj: src\metadata\kodak.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\kodak.obj" /c src\metadata\kodak.cpp
object\leica_st.obj: src\metadata\leica.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\leica_st.obj" /c src\metadata\leica.cpp
object\leica.obj: src\metadata\leica.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\leica.obj" /c src\metadata\leica.cpp
object\makernotes_st.obj: src\metadata\makernotes.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\makernotes_st.obj" /c src\metadata\makernotes.cpp
object\makernotes.obj: src\metadata\makernotes.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\makernotes.obj" /c src\metadata\makernotes.cpp
object\mediumformat_st.obj: src\metadata\mediumformat.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\mediumformat_st.obj" /c src\metadata\mediumformat.cpp
object\mediumformat.obj: src\metadata\mediumformat.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\mediumformat.obj" /c src\metadata\mediumformat.cpp
object\minolta_st.obj: src\metadata\minolta.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\minolta_st.obj" /c src\metadata\minolta.cpp
object\minolta.obj: src\metadata\minolta.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\minolta.obj" /c src\metadata\minolta.cpp
object\misc_parsers_st.obj: src\metadata\misc_parsers.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\misc_parsers_st.obj" /c src\metadata\misc_parsers.cpp
object\misc_parsers.obj: src\metadata\misc_parsers.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\misc_parsers.obj" /c src\metadata\misc_parsers.cpp
object\nikon_st.obj: src\metadata\nikon.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\nikon_st.obj" /c src\metadata\nikon.cpp
object\nikon.obj: src\metadata\nikon.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\nikon.obj" /c src\metadata\nikon.cpp
object\hasselblad_model_st.obj: src\metadata\hasselblad_model.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\hasselblad_model_st.obj" /c src\metadata\hasselblad_model.cpp
object\hasselblad_model.obj: src\metadata\hasselblad_model.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\hasselblad_model.obj" /c src\metadata\hasselblad_model.cpp
object\normalize_model_st.obj: src\metadata\normalize_model.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\normalize_model_st.obj" /c src\metadata\normalize_model.cpp
object\normalize_model.obj: src\metadata\normalize_model.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\normalize_model.obj" /c src\metadata\normalize_model.cpp
object\olympus_st.obj: src\metadata\olympus.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\olympus_st.obj" /c src\metadata\olympus.cpp
object\olympus.obj: src\metadata\olympus.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\olympus.obj" /c src\metadata\olympus.cpp
object\p1_st.obj: src\metadata\p1.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\p1_st.obj" /c src\metadata\p1.cpp
object\p1.obj: src\metadata\p1.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\p1.obj" /c src\metadata\p1.cpp
object\pentax_st.obj: src\metadata\pentax.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\pentax_st.obj" /c src\metadata\pentax.cpp
object\pentax.obj: src\metadata\pentax.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\pentax.obj" /c src\metadata\pentax.cpp
object\samsung_st.obj: src\metadata\samsung.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\samsung_st.obj" /c src\metadata\samsung.cpp
object\samsung.obj: src\metadata\samsung.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\samsung.obj" /c src\metadata\samsung.cpp
object\sony_st.obj: src\metadata\sony.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\sony_st.obj" /c src\metadata\sony.cpp
object\sony.obj: src\metadata\sony.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\sony.obj" /c src\metadata\sony.cpp
object\tiff_st.obj: src\metadata\tiff.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\tiff_st.obj" /c src\metadata\tiff.cpp
object\tiff.obj: src\metadata\tiff.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\tiff.obj" /c src\metadata\tiff.cpp
object\aspect_ratio_st.obj: src\postprocessing\aspect_ratio.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\aspect_ratio_st.obj" /c src\postprocessing\aspect_ratio.cpp
object\aspect_ratio.obj: src\postprocessing\aspect_ratio.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\aspect_ratio.obj" /c src\postprocessing\aspect_ratio.cpp
object\dcraw_process_st.obj: src\postprocessing\dcraw_process.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\dcraw_process_st.obj" /c src\postprocessing\dcraw_process.cpp
object\dcraw_process.obj: src\postprocessing\dcraw_process.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\dcraw_process.obj" /c src\postprocessing\dcraw_process.cpp
object\mem_image_st.obj: src\postprocessing\mem_image.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\mem_image_st.obj" /c src\postprocessing\mem_image.cpp
object\mem_image.obj: src\postprocessing\mem_image.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\mem_image.obj" /c src\postprocessing\mem_image.cpp
object\postprocessing_aux_st.obj: src\postprocessing\postprocessing_aux.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\postprocessing_aux_st.obj" /c src\postprocessing\postprocessing_aux.cpp
object\postprocessing_aux.obj: src\postprocessing\postprocessing_aux.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\postprocessing_aux.obj" /c src\postprocessing\postprocessing_aux.cpp
object\postprocessing_utils_dcrdefs_st.obj: src\postprocessing\postprocessing_utils_dcrdefs.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\postprocessing_utils_dcrdefs_st.obj" /c src\postprocessing\postprocessing_utils_dcrdefs.cpp
object\postprocessing_utils_dcrdefs.obj: src\postprocessing\postprocessing_utils_dcrdefs.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\postprocessing_utils_dcrdefs.obj" /c src\postprocessing\postprocessing_utils_dcrdefs.cpp
object\postprocessing_utils_st.obj: src\postprocessing\postprocessing_utils.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\postprocessing_utils_st.obj" /c src\postprocessing\postprocessing_utils.cpp
object\postprocessing_utils.obj: src\postprocessing\postprocessing_utils.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\postprocessing_utils.obj" /c src\postprocessing\postprocessing_utils.cpp
object\ext_preprocess_st.obj: src\preprocessing\ext_preprocess.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\ext_preprocess_st.obj" /c src\preprocessing\ext_preprocess.cpp
object\ext_preprocess.obj: src\preprocessing\ext_preprocess.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\ext_preprocess.obj" /c src\preprocessing\ext_preprocess.cpp
object\raw2image_st.obj: src\preprocessing\raw2image.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\raw2image_st.obj" /c src\preprocessing\raw2image.cpp
object\raw2image.obj: src\preprocessing\raw2image.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\raw2image.obj" /c src\preprocessing\raw2image.cpp
object\subtract_black_st.obj: src\preprocessing\subtract_black.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\subtract_black_st.obj" /c src\preprocessing\subtract_black.cpp
object\subtract_black.obj: src\preprocessing\subtract_black.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\subtract_black.obj" /c src\preprocessing\subtract_black.cpp
object\cameralist_st.obj: src\tables\cameralist.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\cameralist_st.obj" /c src\tables\cameralist.cpp
object\cameralist.obj: src\tables\cameralist.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\cameralist.obj" /c src\tables\cameralist.cpp
object\colorconst_st.obj: src\tables\colorconst.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\colorconst_st.obj" /c src\tables\colorconst.cpp
object\colorconst.obj: src\tables\colorconst.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\colorconst.obj" /c src\tables\colorconst.cpp
object\colordata_st.obj: src\tables\colordata.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\colordata_st.obj" /c src\tables\colordata.cpp
object\colordata.obj: src\tables\colordata.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\colordata.obj" /c src\tables\colordata.cpp
object\wblists_st.obj: src\tables\wblists.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\wblists_st.obj" /c src\tables\wblists.cpp
object\wblists.obj: src\tables\wblists.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\wblists.obj" /c src\tables\wblists.cpp
object\curves_st.obj: src\utils\curves.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\curves_st.obj" /c src\utils\curves.cpp
object\curves.obj: src\utils\curves.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\curves.obj" /c src\utils\curves.cpp
object\decoder_info_st.obj: src\utils\decoder_info.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\decoder_info_st.obj" /c src\utils\decoder_info.cpp
object\decoder_info.obj: src\utils\decoder_info.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\decoder_info.obj" /c src\utils\decoder_info.cpp
object\init_close_utils_st.obj: src\utils\init_close_utils.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\init_close_utils_st.obj" /c src\utils\init_close_utils.cpp
object\init_close_utils.obj: src\utils\init_close_utils.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\init_close_utils.obj" /c src\utils\init_close_utils.cpp
object\open_st.obj: src\utils\open.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\open_st.obj" /c src\utils\open.cpp
object\open.obj: src\utils\open.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\open.obj" /c src\utils\open.cpp
object\phaseone_processing_st.obj: src\utils\phaseone_processing.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\phaseone_processing_st.obj" /c src\utils\phaseone_processing.cpp
object\phaseone_processing.obj: src\utils\phaseone_processing.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\phaseone_processing.obj" /c src\utils\phaseone_processing.cpp
object\read_utils_st.obj: src\utils\read_utils.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\read_utils_st.obj" /c src\utils\read_utils.cpp
object\read_utils.obj: src\utils\read_utils.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\read_utils.obj" /c src\utils\read_utils.cpp
object\thumb_utils_st.obj: src\utils\thumb_utils.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\thumb_utils_st.obj" /c src\utils\thumb_utils.cpp
object\thumb_utils.obj: src\utils\thumb_utils.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\thumb_utils.obj" /c src\utils\thumb_utils.cpp
object\utils_dcraw_st.obj: src\utils\utils_dcraw.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\utils_dcraw_st.obj" /c src\utils\utils_dcraw.cpp
object\utils_dcraw.obj: src\utils\utils_dcraw.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\utils_dcraw.obj" /c src\utils\utils_dcraw.cpp
object\utils_libraw_st.obj: src\utils\utils_libraw.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\utils_libraw_st.obj" /c src\utils\utils_libraw.cpp
object\utils_libraw.obj: src\utils\utils_libraw.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\utils_libraw.obj" /c src\utils\utils_libraw.cpp
object\apply_profile_st.obj: src\write\apply_profile.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\apply_profile_st.obj" /c src\write\apply_profile.cpp
object\apply_profile.obj: src\write\apply_profile.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\apply_profile.obj" /c src\write\apply_profile.cpp
object\file_write_st.obj: src\write\file_write.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\file_write_st.obj" /c src\write\file_write.cpp
object\file_write.obj: src\write\file_write.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\file_write.obj" /c src\write\file_write.cpp
object\tiff_writer_st.obj: src\write\tiff_writer.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\tiff_writer_st.obj" /c src\write\tiff_writer.cpp
object\tiff_writer.obj: src\write\tiff_writer.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\tiff_writer.obj" /c src\write\tiff_writer.cpp
object\x3f_parse_process_st.obj: src\x3f\x3f_parse_process.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\x3f_parse_process_st.obj" /c src\x3f\x3f_parse_process.cpp
object\x3f_parse_process.obj: src\x3f\x3f_parse_process.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\x3f_parse_process.obj" /c src\x3f\x3f_parse_process.cpp
object\x3f_utils_patched_st.obj: src\x3f\x3f_utils_patched.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\x3f_utils_patched_st.obj" /c src\x3f\x3f_utils_patched.cpp
object\x3f_utils_patched.obj: src\x3f\x3f_utils_patched.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\x3f_utils_patched.obj" /c src\x3f\x3f_utils_patched.cpp
object\libraw_c_api_st.obj: src\libraw_c_api.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\libraw_c_api_st.obj" /c src\libraw_c_api.cpp
object\libraw_c_api.obj: src\libraw_c_api.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\libraw_c_api.obj" /c src\libraw_c_api.cpp
object\libraw_datastream_st.obj: src\libraw_datastream.cpp
$(CC) $(COPT) /DLIBRAW_NODLL /DLIBRAW_BUILDLIB /Fo"object\\libraw_datastream_st.obj" /c src\libraw_datastream.cpp
object\libraw_datastream.obj: src\libraw_datastream.cpp
$(CC) $(COPT) /DLIBRAW_BUILDLIB /Fo"object\\libraw_datastream.obj" /c src\libraw_datastream.cpp

View File

@@ -0,0 +1,43 @@
LibRaw can decode most common DNG formats (Bayer/Linear, 16-bit integer and
floating point) by itself (you need to use zlib for deflate decompression
support and libjpeg for lossy compressed DNGs).
Some rare flavours of DNG files (e.g. for 8-bit files) are not implemented in
LibRaw. These files never come from camera or DNG files created by
Adobe DNG Converter, but created by some processing software that uses DNG as
intermediate format.
To decode such files you need to compile LibRaw with Adobe DNG SDK. This SDK
to be used internally, standard LibRaw API remains untouched (you may specify
what kinds of DNG files you want to decode via Adobe code, see below).
To build LibRaw with DNG SDK specify USE_DNGSDK in defines and adjust
include/linker path settings to point to DNG SDK's include and library folders.
DNG SDK Version compatibility:
- Since LibRaw 0.20, DNG SDK 1.4 is required (DNG SDK 1.5 may work too, but
have not tested w/ LibRaw).
- There are several DNG SDK 1.4 versions circulated, the oldest known is
dated May 2012, you'll need the last one (dated June 2015).
- This version is available from Adobe site:
http://download.adobe.com/pub/adobe/dng/dng_sdk_1_4.zip
In your application
* create dng_host object (or derived object, e.g. with multithreaded) entity in your program;
* pass it to LibRaw via LibRaw::set_dng_host(dng_host *) call to enable DNG SDK use on runtime
* adjust imgdata.rawparams.use_dngsdk parameter with one of this values
(ORed bitwise):
LIBRAW_DNG_NONE - do not use DNG SDK for DNG processing
LIBRAW_DNG_FLOAT - process floating point DNGs via Adobe DNG SDK
LIBRAW_DNG_LINEAR - process 'linear DNG' (i.e. demosaiced)
LIBRAW_DNG_DEFLATE - process DNGs compressed with deflate (gzip)
LIBRAW_DNG_XTRANS - process Fuji X-Trans DNGs (6x6 CFA)
LIBRAW_DNG_OTHER - process other files (so usual 2x2 bayer)
LIBRAW_DNG_8BIT - process 8bit DNGs (e.g. JPEG compressed ones)
Default value for this field:
LIBRAW_DNG_DEFAULT=LIBRAW_DNG_FLOAT|LIBRAW_DNG_LINEAR|LIBRAW_DNG_DEFLATE | LIBRAW_DNG_8BIT
You also may use this macro to pass all supported DNGs to Adobe SDK:
LIBRAW_DNG_ALL = LIBRAW_DNG_FLOAT|LIBRAW_DNG_LINEAR|LIBRAW_DNG_XTRANS|LIBRAW_DNG_OTHER | LIBRAW_DNG_8BIT

View File

@@ -0,0 +1,112 @@
GoPro HERO/Fusion .GPR files are DNG files by nature, but with own wavelet-based codec.
GoPro provides GPR SDK for reading these files, available at https://github.com/gopro/gpr
LibRaw is able to use this GPR SDK to read GoPro HERO/Fusion files.
To enable this support:
1. Build GPR SDK (see NOTES section below)
2. Build LibRaw with -DUSE_DNGSDK and -DUSE_GPRSDK compiler flags
(you'll need to adjust INCLUDE path and linker flags to add GPR SDK files to compile/link).
NOTES:
I. GPR SDK comes with (patched) Adobe DNG SDK source (v1.4 but outdated).
This DNG SDK is *NOT* compatible with LibRaw since 0.20 due to
internals change .
II. So, you need to patch latest Adobe DNG SDK v1.4 (dated 2015), this version
is available from Adobe:
http://download.adobe.com/pub/adobe/dng/dng_sdk_1_4.zip
or use Adobe DNG SDK v1.6
(most likely, this apply for v1.5 too, but not tested/checked):
a) For Adobe DNG SDK v1.4 you'll need to enable dng_ifd.fCompression value == 9 in
dng_ifd::IsValidCFA() call
Use provided patch: LibRaw/GoPro/dng-sdk-1_4-allow-VC5-validate.diff
(it may not apply to any Adobe DNG SDK version, if so apply it by hands).
This compression type is already handled (passed via validation)
in Adobe DNG SDK v1.6
b) Adobe DNG SDK v1.6 defines the ccVc5 constant in dng_tag_values.h
so GPR SDK's gpr_read_image.cpp will not compile due to constant redefinition
so use provided patch: LibRaw/GoPro/dng-sdk-1_6-hide-ccVc5-definitiion.diff
to use Adobe's definitiion
c) Newer (than supplied w/ GPR SDK) Adobe SDK versions changes
dng_read_image::ReadTile interface, please apply patches
LibRaw/GoPro/gpr_read_image.cpp.diff
and LibRaw/GoPro/gpr_read_image.h.diff to your GPR SDK code
d) GPR SDK's gpr_sdk/private/gpr.cpp uses own (added) dng_host method
GetGPMFPayload so it will not compile with Adobes (not patched)
dng_host.h
LibRaw does not use high-level interface provided by gpr.cpp, so
possible problem solutions are:
- either compile GPR SDK without gpr_sdk/private/gpr.cpp file
- or provide GPR's dng_host.h while building GPR SDK.
(in our software we use 1st method).
See Note VII below for detailed GPR SDK build instructions w/ Cmake
III. LibRaw uses private gpr_read_image() interface
So you'll need to add PATH_TO/gpr_sdk/gpr_sdk/private to -I compiler flags.
IV. -DUSE_GPRSDK LibRaw build flag requires -DUSE_DNGSDK. LibRaw will not
compile if USE_GPRSDK is set, but USE_DNGSDK is not
V. LibRaw will use DNG SDK to unpack GoPro files even if imgdata.params.use_dng_sdk is set to 0.
VI. If LibRaw is built with -DUSE_GPRSDK, LibRaw::capabilities will return LIBRAW_CAPS_GPRSDK flag.
VII. GPR SDK build using cmake (contributed by our user, great thanks)
1. replace gopro's toplevel CMakeLists.txt with this one (this builds only a subset of the libraries):
------------------------------------
# minimum required cmake version
cmake_minimum_required( VERSION 3.5 FATAL_ERROR )
set(CMAKE_SUPPRESS_REGENERATION true)
set(CMAKE_C_FLAGS "-std=c99")
# project name
project( gpr )
option(DNGINCLUDEDIR "Adobe DNG toolkit include directory")
INCLUDE_DIRECTORIES( ${DNGINCLUDEDIR} )
# DNG toolkit requires C++11 minimum:
set_property(GLOBAL PROPERTY CXX_STANDARD 17)
# add needed subdirectories
add_subdirectory( "source/lib/common" )
add_subdirectory( "source/lib/vc5_common" )
add_subdirectory( "source/lib/vc5_decoder" )
add_subdirectory( "source/lib/gpr_sdk" )
set_property(TARGET gpr_sdk PROPERTY CXX_STANDARD 17)
IF (WIN32)
TARGET_COMPILE_DEFINITIONS( gpr_sdk PUBLIC -DqWinOS=1 -DqMacOS=0 -DqLinux=0)
ELSEIF (APPLE)
TARGET_COMPILE_DEFINITIONS( gpr_sdk PUBLIC -DqWinOS=0 -DqMacOS=1 -DqLinux=0)
ELSE()
TARGET_COMPILE_DEFINITIONS( gpr_sdk PUBLIC -DqWinOS=0 -DqMacOS=0 -DqLinux=1)
ENDIF()
----------------------------------------
2. apply the two patches of README.GoPro.txt section II b.
the patch of section IIa is not needed with libdng1.5.
3. delete these two files:
/source/lib/gpr_sdk/private/gpr.cpp
/source/lib/gpr_sdk/private/gpr_image_writer.cpp
4. run CMAKE with -DDNGINCLUDEDIR, pointing to the headers from Adobe dng 1.5.
5. build. You get 4 libraries "gpr_sdk", "vc5_common", "vc5_decoder", "common", the rest is ignored.

View File

@@ -0,0 +1,62 @@
================= Compile LibRaw with RawSpeed support ========================
0) RawSpeed version:
LibRaw supports 'master' version of RawSpeed library: https://github.com/darktable-org/rawspeed/tree/master
Although this version is really outdated, newer versions does not looks stable enough for production
use (for example, this critical issue not fixed for 10+ months: https://github.com/darktable-org/rawspeed/issues/100 )
1) Prerequisites
To build RawSpeed you need libxml2, iconv, and JPEG library installed on your
system.
2) Build RawSpeed:
-- consult http://rawstudio.org/blog/?p=800 for details
-- Win32: you need POSIX Threads for Win32 installed on your system
(http://sources.redhat.com/pthreads-win32/)
-- use provided RawSpeed/rawspeed.samsung-decoder.patch to fix
old Samsung decoder bug
-- you may use qmake .pro files supplied in LibRaw distribution
(RawSpeed/rawspeed.qmake-pro-files.patch)
Adjust path to libraries/includes according to your setup.
-- Win32: you need to add __declspec(..) to external C++ classes.
Use patch provided with LibRaw (RawSpeed/rawspeed.win32-dll.patch)
-- Unix: you need to define rawspeed_get_number_of_processor_cores() call
For most unix systems (Linux, MacOS X 10.4+, FreeBSD) patch provided
with LibRaw (RawSpeed/rawspeed.cpucount-unix.patch) should work.
3) Build LibRaw with RawSpeed support:
Win32:
--Uncomment CFLAGS_RAWSPEED and LDFLAGS_RAWSPEED lines in
Makefile.msvc. Adjust paths to libraries/includes if needed.
-- run nmake -f Makefile.msvc
Unix/MacOS:
-- Uncomment CFLAGS/LDADD lines in RawSpeed section in Makefile.dist
-- Uncomment RAWSPEED_DATA line if you wish to rebuild
internal copy of RawSpeed's cameras.xml
-- run make -f Makefile.dist
Compile options:
-- You may specify -DNOSONY_RAWSPEED define if you do not want to use
RawSpeed's Sony formats decoder (because result of this decoder is
different from LibRaw's built-in decoder)
4) Build/run your Apps with LibRaw+RawSpeed
-- Build as usual, no changes required in your apps unless you
access LibRaw::imgdata.rawdata.raw_image[] directly
-- you may turn off RawSpeed support on runtime by setting
imgdata.params.use_rawspeed to 0.
-- You'll need all shared libraries you linked to at runtime (libxml2,
iconv, LibJPEG, and posix threads on Win32).

View File

@@ -0,0 +1,9 @@
Due to inability to support (user contributed) Cmake scripts,
the cmake builds are not officially supported by LibRaw team
since October 23, 2014
The scripts are moved to separate github repository
github.com:LibRaw/LibRaw-cmake.git
Checkout from this repo if you want to use Cmake to build LibRaw.

View File

@@ -0,0 +1,17 @@
======================= LibRaw demosaic pack(s) ===============================
We were forced to stop supporting LibRaw demosaic packs: the contributed code
is out of date for several years, initial contributors has no interest in it.
We too: we (LibRaw team) focused on RAW decode and metadata extraction, but not
on postprocessing (demosaic, noise suppression, etc).
So, LibRaw-demosaic-pack-GPLn are abandoned now. We will be happy to convey
their support and development to any developer who will show interest.
LibRaw 0.19 contains callback calls placed instead of calls to demosaic pack routines.
So, adaptation of demosaic packs to new LibRaw should be easy (and, of course, we'll
provide some support and/or implement additional callbacks if needed).

106
rtengine/libraw/README.md Normal file
View File

@@ -0,0 +1,106 @@
# LibRaw
## Library for reading and processing of RAW digicam images
The LibRaw library provides a simple and unified interface for extracting out of RAW files generated by digital photo cameras the following:
* RAW data (_pixel values)_
* Metadata necessary for processing RAW (_geometry, CFA / Bayer pattern, black level, white balance, etc.)_
* Embedded preview / thumbnail.
The library is intended for use with programs that work with RAW files, such as:
* RAW viewers
* RAW converters
* RAW data analyzers
* Software for stitching and compositing multi-frame aggregates like panoramas and image stacks.
Using the LibRaw library allows one to focus on the substantive part of processing the data contained in RAW files, without getting distracted by the wide variety of RAW file and metadata formats, compression algorithms, etc.
The library<72>s development is focused on:
* Support for new cameras and formats
* Improving extraction of metadata necessary for RAW processing
* Providing an interface for reading other types of metadata.
Additionally, the LibRaw library offers some basic RAW conversion, intended for cases when such conversion is not the main function of the LibRaw-using application _(for example: a viewer for 500+ graphic file formats, including RAW)._ These methods are inherited from the Dave Coffin<69>s dcraw.c utility _(see below the <20>Project history<72> section);_ their further development is not currently planned, because we do not consider production-quality rendering to be in the scope of LibRaw<61>s functionality _(the methods are retained for compatibility with prior versions and for rapid-fire testing of RAW support and other aspects)._
## Licensing
The LibRaw library is distributed free of charge and with open-source code subject to two licenses:
1\. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
2\. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
To use the LibRaw library in an application, you can choose the license that better suits your needs.
If you modify/add/improve the LibRaw source code, then your patches can only be included into the library<72>s official source code if you agree to it being distributed under both of the above licenses.
We do not guarantee that the licensing will not change in future versions of LibRaw.
## Update policy
### Major/minor releases
* Major releases _(for example, 0.20)_ are published once every year and a half to two years.
* When the first public beta version of a major release is published, the list of supported cameras and formats is frozen; we try (but do not guarantee) to freeze the API/ABI as well.
* The public major release contains only that code which has been sufficiently tested on a wide user base (including in our commercial products). Something very new may not be included in it (but it will probably be included in a public snapshot, see below).
* Minor updates _(0.20.1, 0.20.2<EFBFBD>)_ do not change the API/ABI and new cameras are not added; generally they are just bugfixes.
* Bugfixes are published as soon as possible in the [public GitHub repository](https://github.com/LibRaw/LibRaw).
* Minor version increments: these are generally published if a serious error has been fixed, one that potentially affects many library users (for example, a possible stack overflow).
### Public snapshots
* Public snapshots are published every 7-9 months in the [public GitHub repository](https://github.com/LibRaw/LibRaw).
* These versions contain support for new cameras that was added after the previous major release. The API/ABI of public snapshots is not frozen, and may change.
* Public snapshots are always tested on a fairly large user base, and may be considered suitable for use in programs that work with files with known origins (that is, recorded directly by users<72> digital cameras). However, public snapshots should not be considered sufficiently reliable for processing files that are specially constructed for vulnerability testing; that is, they should not be used in public services that allow for anonymous processing of files of unknown provenance
## Support and feedback
* You can submit a bug report in one of the following ways:
* [Issues](https://github.com/LibRaw/LibRaw/issues) on GitHub
* The libraw.org [forum](https://www.libraw.org/forum)
* [Feedback form](https://www.libraw.org/contact) on libraw.org
* E-mail us at [info@libraw.org](mailto:info@libraw.org)
* Questions can be asked on the forum, through the feedback form, and via the email indicated above.
Please do not use Issues on GitHub for questions; it is intended specifically for problem reports.
* We prefer to process additions to the source code via the [Pull Requests](https://github.com/LibRaw/LibRaw/pulls) on GitHub.
We cannot guarantee any response to requests submitted via the above methods. If you need a guaranteed response for a bug report and/or for extending technical support, please use the Extended Support option.
## Project history
The LibRaw project was launched in 2008, based on the [dcraw.c](https://www.dechifro.org/dcraw/) (Dave Coffin) utility, with its goals being to:
* Convert dcraw.c into a library that could be used by other programs, while also somewhat improving the structure of dcraw.c (removing global variables, making it thread-safe, etc.)
* Import changes made to dcraw.c
* Improve/expand the extraction of metadata.
Unfortunately, support for dcraw.c was reduced to a minimum in 2015, and completely ceased in 2018. Since then, support for new cameras (including support for new formats) has been done entirely by the LibRaw team.
The code that implements rendering of RAW to RGB is inherited from dcraw.c, without major changes (though a set of changes was implemented to speed up and parallelize this code).
In the early-to-mid 2010s, we gladly expanded post-processing implemented in LibRaw, and readily accepted the input of outside developers (new/improved methods for debayerization/demosaicing, systematic noise reduction etc.).
Experience has shown that the LibRaw team cannot support this added code on their own, while contributors do not provide support and development of the code they suggest and it ends up abandoned. As such, the majority of the modifications that are implemented by people outside the LibRaw team was moved to the [LibRaw-demosaic-pack-<2D>.](https://github.com/LibRaw?tab=repositories), where they remain in their original form (but these projects are still present in our GitHub).
Thus, we arrive at our current status, described in the first part of this text.
## Copyrights and Acknowledgements
Copyright (C) 2008-2021 LibRaw LLC
LibRaw uses code from Dave Coffin<69>s dcraw.c utility (without RESTRICTED/GPL2 code):
Copyright 1997-2018 by Dave Coffin, dcoffin a cybercom o net
LibRaw uses DCB demosaic code by Jaceck Gozdz distributed under BSD license:
Copyright (C) 2010, Jacek Gozdz (mailto:cuniek@kft.umcs.lublin.pl)
LibRaw uses Roland Karlsson<6F>s X3F tools source code, licensed under BSD license:
Copyright (c) 2010, Roland Karlsson (roland@proxel.se)

View File

@@ -0,0 +1,15 @@
diff --git a/RawSpeed/Common.cpp b/RawSpeed/Common.cpp
index abec232..6990c04 100644
--- a/RawSpeed/Common.cpp
+++ b/RawSpeed/Common.cpp
@@ -31,5 +31,10 @@ void* _aligned_malloc(size_t bytes, size_t alignment) {
else
return NULL;
}
+#include <unistd.h>
+int rawspeed_get_number_of_processor_cores()
+{
+ return sysconf( _SC_NPROCESSORS_ONLN );
+}
#endif

View File

@@ -0,0 +1,84 @@
diff --git a/RawSpeed/rawspeed-lib.pro b/RawSpeed/rawspeed-lib.pro
new file mode 100644
index 0000000..1599ddf
--- /dev/null
+++ b/RawSpeed/rawspeed-lib.pro
@@ -0,0 +1,42 @@
+TEMPLATE=lib
+TARGET=rawspeed
+
+win32:INCLUDEPATH+=d:/Qt/iconv/include d:/Qt/libxml2/include/libxml2 d:/Qt/pthreads/include d:/Qt/libjpeg-turbo/include
+win32:LIBS+=-Ld:/Qt/iconv/lib/x86 -liconv -Ld:/Qt/libxml2/lib/x86 -llibxml2 -Ld:/Qt/pthreads/lib/x86 -lpthreadVC2 -Ld:/Qt/libjpeg-turbo/lib/x86 -ljpeg8
+
+unix:INCLUDEPATH+=/usr/local/include /usr/local/include/libxml2
+unix:CONFIG+=staticlib
+
+INCLUDEPATH+=.
+
+HEADERS = ArwDecoder.h BitPumpJPEG.h BitPumpMSB.h BitPumpMSB32.h \
+ BitPumpPlain.h BlackArea.h ByteStream.h ByteStreamSwap.h \
+ Camera.h CameraMetaData.h CameraMetadataException.h \
+ CameraSensorInfo.h ColorFilterArray.h Common.h Cr2Decoder.h \
+ DngDecoder.h DngDecoderSlices.h DngOpcodes.h FileIOException.h \
+ FileMap.h FileReader.h IOException.h LJpegDecompressor.h \
+ LJpegPlain.h NefDecoder.h NikonDecompressor.h OrfDecoder.h \
+ PefDecoder.h PentaxDecompressor.h Point.h RawDecoder.h \
+ RawDecoderException.h RawImage.h RawParser.h Rw2Decoder.h SrwDecoder.h \
+ StdAfx.h TiffEntry.h TiffEntryBE.h TiffIFD.h TiffIFDBE.h TiffParser.h \
+ TiffParserException.h TiffParserHeaderless.h TiffParserOlympus.h \
+ TiffTag.h dlldef.h
+
+SOURCES = \
+ ArwDecoder.cpp BitPumpJPEG.cpp BitPumpMSB.cpp BitPumpMSB32.cpp \
+ BitPumpPlain.cpp BlackArea.cpp ByteStream.cpp ByteStreamSwap.cpp \
+ Camera.cpp CameraMetaData.cpp CameraMetadataException.cpp \
+ CameraSensorInfo.cpp ColorFilterArray.cpp Common.cpp Cr2Decoder.cpp \
+ DngDecoder.cpp DngDecoderSlices.cpp DngOpcodes.cpp \
+ FileIOException.cpp FileMap.cpp FileReader.cpp IOException.cpp \
+ LJpegDecompressor.cpp LJpegPlain.cpp NefDecoder.cpp \
+ NikonDecompressor.cpp OrfDecoder.cpp PefDecoder.cpp \
+ PentaxDecompressor.cpp RawDecoder.cpp RawDecoderException.cpp \
+ RawImage.cpp RawImageDataFloat.cpp RawImageDataU16.cpp RawParser.cpp \
+ Rw2Decoder.cpp SrwDecoder.cpp TiffEntry.cpp TiffEntryBE.cpp\
+ TiffIFD.cpp TiffIFDBE.cpp TiffParser.cpp TiffParserException.cpp \
+ TiffParserHeaderless.cpp TiffParserOlympus.cpp
+
+DEFINES+=RAWSPEED_BUILDLIB
+CONFIG-=qt
+win32:QMAKE_CXXFLAGS+=/O2 /arch:SSE2 /fp:fast /MP
diff --git a/RawSpeed/rawspeed-test.pro b/RawSpeed/rawspeed-test.pro
new file mode 100644
index 0000000..518aa98
--- /dev/null
+++ b/RawSpeed/rawspeed-test.pro
@@ -0,0 +1,21 @@
+TEMPLATE=app
+TARGET=rawspeed-test
+
+SOURCES=RawSpeed.cpp
+
+win32:CONFIG(debug,debug|release) {
+ LIBDIR = debug
+} else {
+ LIBDIR = release
+}
+
+
+INCLUDEPATH+=../
+
+unix:INCLUDEPATH+=/usr/local/include /usr/local/include/libxml2
+unix:LIBS+=-L. -lrawspeed -L/usr/local/lib -lxml2 -ljpeg
+win32:LIBS+=-L$$LIBDIR -llibrawspeed
+win32:LIBS+=-Ld:/Qt/iconv/lib/x86 -liconv -Ld:/Qt/libxml2/lib/x86 -llibxml2a -Ld:/Qt/pthreads/lib/x86 -lpthreadVC2 -Ld:/Qt/libjpeg-turbo/lib/x86 -ljpeg8
+win32:INCLUDEPATH+=d:/Qt/iconv/include d:/Qt/libxml2/include/libxml2 d:/Qt/pthreads/include d:/Qt/libjpeg-turbo/include
+CONFIG-=qt
+CONFIG+=console
diff --git a/RawSpeed/rawspeed.pro b/RawSpeed/rawspeed.pro
new file mode 100644
index 0000000..df2a0b9
--- /dev/null
+++ b/RawSpeed/rawspeed.pro
@@ -0,0 +1,3 @@
+TEMPLATE=subdirs
+SUBDIRS=rawspeed-lib.pro rawspeed-test.pro
+

View File

@@ -0,0 +1,39 @@
diff --git a/RawSpeed/SrwDecoder.cpp b/RawSpeed/SrwDecoder.cpp
index fa46499..1aff689 100644
--- a/RawSpeed/SrwDecoder.cpp
+++ b/RawSpeed/SrwDecoder.cpp
@@ -141,7 +141,7 @@ void SrwDecoder::decodeCompressed( TiffIFD* raw )
// First we decode even pixels
for (int c = 0; c < 16; c += 2) {
int b = len[(c >> 3)];
- int32 adj = ((int32) bits.getBits(b) << (32-b) >> (32-b));
+ int32 adj = b > 0 ? ((int32) bits.getBits(b) << (32-b) >> (32-b)) :0;
img[c] = adj + img_up[c];
}
// Now we decode odd pixels
@@ -149,7 +149,7 @@ void SrwDecoder::decodeCompressed( TiffIFD* raw )
// is beyond me, it will hurt compression a deal.
for (int c = 1; c < 16; c += 2) {
int b = len[2 | (c >> 3)];
- int32 adj = ((int32) bits.getBits(b) << (32-b) >> (32-b));
+ int32 adj = b > 0 ? ((int32) bits.getBits(b) << (32-b) >> (32-b)) :0;
img[c] = adj + img_up2[c];
}
} else {
@@ -158,14 +158,14 @@ void SrwDecoder::decodeCompressed( TiffIFD* raw )
int pred_left = x ? img[-2] : 128;
for (int c = 0; c < 16; c += 2) {
int b = len[(c >> 3)];
- int32 adj = ((int32) bits.getBits(b) << (32-b) >> (32-b));
+ int32 adj = b > 0 ? ((int32) bits.getBits(b) << (32-b) >> (32-b)) :0;
img[c] = adj + pred_left;
}
// Now we decode odd pixels
pred_left = x ? img[-1] : 128;
for (int c = 1; c < 16; c += 2) {
int b = len[2 | (c >> 3)];
- int32 adj = ((int32) bits.getBits(b) << (32-b) >> (32-b));
+ int32 adj = b > 0 ? ((int32) bits.getBits(b) << (32-b) >> (32-b)) :0;
img[c] = adj + pred_left;
}
}

View File

@@ -0,0 +1,13 @@
diff --git a/RawSpeed/DngDecoder.cpp b/RawSpeed/DngDecoder.cpp
index 56c701b..98f2474 100644
--- a/RawSpeed/DngDecoder.cpp
+++ b/RawSpeed/DngDecoder.cpp
@@ -216,7 +216,7 @@ RawImage DngDecoder::decodeRawInternal() {
if (bps != 8 && bps != 16)
big_endian = true;
try {
- readUncompressedRaw(in, size, pos, width*bps / 8, bps, big_endian ? BitOrder_Jpeg : BitOrder_Plain);
+ readUncompressedRaw(in, size, pos, mRaw->getCpp()*width*bps / 8, bps, big_endian ? BitOrder_Jpeg : BitOrder_Plain);
} catch(IOException &ex) {
if (i > 0)
mRaw->setError(ex.what());

View File

@@ -0,0 +1,186 @@
diff --git a/RawSpeed/Camera.h b/RawSpeed/Camera.h
index 7b3045d..4363c1b 100644
--- a/RawSpeed/Camera.h
+++ b/RawSpeed/Camera.h
@@ -6,6 +6,7 @@
#include <libxml/parser.h>
#include "BlackArea.h"
#include "CameraMetadataException.h"
+#include "dlldef.h"
/*
RawSpeed - RAW file decoder.
@@ -30,7 +31,7 @@
namespace RawSpeed {
-class Camera
+class DllDef Camera
{
public:
Camera(xmlDocPtr doc, xmlNodePtr cur);
diff --git a/RawSpeed/CameraMetaData.h b/RawSpeed/CameraMetaData.h
index 616b2bb..c6b8031 100644
--- a/RawSpeed/CameraMetaData.h
+++ b/RawSpeed/CameraMetaData.h
@@ -27,9 +27,10 @@
http://www.klauspost.com
*/
+#include "dlldef.h"
namespace RawSpeed {
-class CameraMetaData
+class DllDef CameraMetaData
{
public:
CameraMetaData();
diff --git a/RawSpeed/CameraMetadataException.h b/RawSpeed/CameraMetadataException.h
index 55a2814..52d5ea1 100644
--- a/RawSpeed/CameraMetadataException.h
+++ b/RawSpeed/CameraMetadataException.h
@@ -22,10 +22,11 @@
#ifndef CAMERA_METADATA_EXCEPTION_H
#define CAMERA_METADATA_EXCEPTION_H
+#include "dlldef.h"
namespace RawSpeed {
-void ThrowCME(const char* fmt, ...);
+void DllDef ThrowCME(const char* fmt, ...);
class CameraMetadataException :
public std::runtime_error
diff --git a/RawSpeed/FileMap.h b/RawSpeed/FileMap.h
index 5c15918..bcd2a79 100644
--- a/RawSpeed/FileMap.h
+++ b/RawSpeed/FileMap.h
@@ -25,6 +25,7 @@
*/
#include "IOException.h"
+#include "dlldef.h"
namespace RawSpeed {
@@ -36,7 +37,7 @@ namespace RawSpeed {
* This can also be done as a MemMap
*
*****************************/
-class FileMap
+class DllDef FileMap
{
public:
FileMap(uint32 _size); // Allocates the data array itself
diff --git a/RawSpeed/FileReader.h b/RawSpeed/FileReader.h
index 7448ec2..fb42ac0 100644
--- a/RawSpeed/FileReader.h
+++ b/RawSpeed/FileReader.h
@@ -24,10 +24,11 @@
#include "FileIOException.h"
#include "FileMap.h"
+#include "dlldef.h"
namespace RawSpeed {
-class FileReader
+class DllDef FileReader
{
public:
FileReader(LPCWSTR filename);
diff --git a/RawSpeed/RawDecoder.h b/RawSpeed/RawDecoder.h
index a6c4708..b35cae5 100644
--- a/RawSpeed/RawDecoder.h
+++ b/RawSpeed/RawDecoder.h
@@ -9,6 +9,7 @@
#include "BitPumpPlain.h"
#include "CameraMetaData.h"
#include "TiffIFD.h"
+#include "dlldef.h"
/*
RawSpeed - RAW file decoder.
@@ -48,7 +49,7 @@ class RawDecoderThread
RawDecoder* parent;
};
-class RawDecoder
+class DllDef RawDecoder
{
public:
/* Construct decoder instance - FileMap is a filemap of the file to be decoded */
diff --git a/RawSpeed/RawImage.h b/RawSpeed/RawImage.h
index 5741760..74cea96 100644
--- a/RawSpeed/RawImage.h
+++ b/RawSpeed/RawImage.h
@@ -26,13 +26,15 @@
http://www.klauspost.com
*/
+#include "dlldef.h"
+
namespace RawSpeed {
class RawImage;
class RawImageWorker;
typedef enum {TYPE_USHORT16, TYPE_FLOAT32} RawImageType;
-class RawImageData
+class DllDef RawImageData
{
friend class RawImageWorker;
public:
@@ -125,7 +127,7 @@ protected:
int end_y;
};
- class RawImage {
+ class DllDef RawImage {
public:
static RawImage create(RawImageType type = TYPE_USHORT16);
static RawImage create(iPoint2D dim, RawImageType type = TYPE_USHORT16, uint32 componentsPerPixel = 1);
diff --git a/RawSpeed/RawParser.h b/RawSpeed/RawParser.h
index 9ef86e3..1b3cb83 100644
--- a/RawSpeed/RawParser.h
+++ b/RawSpeed/RawParser.h
@@ -25,10 +25,11 @@
#include "FileMap.h"
#include "RawDecoder.h"
+#include "dlldef.h"
namespace RawSpeed {
-class RawParser
+class DllDef RawParser
{
public:
RawParser(FileMap* input);
diff --git a/RawSpeed/dlldef.h b/RawSpeed/dlldef.h
new file mode 100644
index 0000000..c806451
--- /dev/null
+++ b/RawSpeed/dlldef.h
@@ -0,0 +1,20 @@
+#ifndef DLLDEF_H
+#define DLLDEF_H
+
+#ifdef _WIN32
+#ifdef _MSC_VER
+#pragma warning( disable: 4251 )
+#endif
+#ifdef RAWSPEED_NODLL
+# define DllDef
+#else
+# ifdef RAWSPEED_BUILDLIB
+# define DllDef __declspec( dllexport )
+# else
+# define DllDef __declspec( dllimport )
+# endif
+#endif
+#else
+# define DllDef
+#endif
+#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,69 @@
# About RawSpeed v3
The current version of the RawSpeed library (https://github.com/darktable-org/rawspeed ) does not have a version number, we call it "version 3" to distinguish it from RawSpeed/master, the version number is taken from darktable 3.x (which uses this library).
This library provides faster decoding of some RAW formats (even faster than RawSpeed v1), the difference can be tens of percent (without using OpenMP) for Huffman-compressed files (Canon CR2, Nikon NEF, etc).
Unfortunately, the RawSpeed-v3 source code is constantly changing and this is due not so much to the development of the library (support for new cameras, formats, etc.), but to the fact that the current maintainer is using it as an aid in self-development as a programmer.
They are extremely reluctant to accept 3rd-party patches to this library, therefore, the fixes necessary for correct work with LibRaw have been added to the LibRaw distribution (see below). All our patches, of course, are suitable only for a specific version (commit-id) of RawSpeed-v3, if you want to use a different version, you will have to adjust them.
# Building RawSpeed v3 and C-API wrapper
## Preparing the source
1. Take a specific commit from github
https://github.com/darktable-org/rawspeed/commit/de70ef5fbc62cde91009c8cff7a206272abe631e
2. Apply the following patches from LibRaw/RawSpeed3/patches folder:
* **01.CameraMeta-extensibility.patch** - allows derived classes from CameraMeta, which allows loading camera descriptions not only from a disk file.
* **02.Makernotes-processing.patch** - fixes an error in processing the Makernotes tag.
* **03.remove-limits-and-logging.patch** - removes debug printing and file size limits. This patch is optional, but if you are going to decode files from cameras that were not available at the time a particular version of RawSpeed was created, then this patch can be useful.
* **04.clang-cl-compatibility.patch -** fixes for compatibility with Microsoft C++ library.
## Building the RawSpeed-v3 library
We **do not** offer advice on building RawSpeed3, if you need such advice please contact the maintainer of the library. At a minimum, it **can be** compiled with Clang (XCode) on macOS and clang-cl (MSVC) on Windows.
Use your favorite build system. Files for CMake come with RawSpeed, but any other build system can be used (in that case you probably will need to create your own rawspeedconfig.h instead of one created via CMake).
In our projects we use RawSpeed-v3 without OpenMP.
## Building the C-API wrapper
To simplify the integration with LibRaw, we have implemented a simple wrapper with a C interface, which hides everything unnecessary, thus:
* To build LibRaw (with RawSpeed-v3 support) you do not need access to RawSpeed .h-files
* When building LibRaw and RawSpeed-v3 using different compilers there is no issue with C++ name mangling.
The wrapper sources are in the **LibRaw/RawSpeed3/rawspeed3_c_api folder**, they include four files:
1. **rawspeed3_capi.h** - header file
2. **rawspeed3_capi.cpp** - wrapper sources
3. **rsxml2c.sh** - shell script that will convert RawSpeed/data/cameras.xml to a C++ file containing camera definitions
4. **rawspeed3_capi_test.cpp** - test program for checking the build correctness and operation ability.
The wrapper provides simple *decode only* interface (init library, decode RAW passed via buffer, free decoded file buffer, release the library) it is self-documented via comments in the rawspeed3_capi.h file.
To make a file with camera definitions, run the command (you can add it to the build system):
`sh ./rawspeed3_c_api/rsxml2c.sh < path/to/RawSpeed/data/cameras.xml > rawspeed3_c_api/cameras.cpp`
The **rsxml2c.sh** script requires **cat**, **tr**, and **sed** unix command-line utilities installed, there is no specific version requirements.
Add the resulting file (LibRaw/RawSpeed3/rawspeed3_c_api/cameras.cpp) and LibRaw/RawSpeed3/rawspeed3_c_api/rawspeed3_capi.cpp, to the build of the RawSpeed-v3 (dynamic) library, which you learned to build in the previous step.
If building Windows DLL: rawspeed3_capi.cpp should be compiled with -DRAWSPEED_BUILDLIB to create dll export entries automatically.
To check that everything works, you can use the LibRaw/RawSpeed3/rawspeed3_c_api/rawspeed3_capi_test.cpp test program, it should be possible to build it and link with RawSpeed-v3 (+ C-API); and after that this test program should be ready to decode RAW files passed to it from command line.
# Building LibRaw with RawSpeed-v3 support
When building, specify the following parameters
* LibRaw/RawSpeed3/rawspeed3_c_api to the search path for include files
* Specify preprocessor flags -DUSE_RAWSPEED3 -DUSE_RAWSPEED_BITS:
* USE_RAWSPEED3 enables the use of RawSpeed-v3
* USE_RAWSPEED_BITS enables (a more granulated) control of RawSpeed-v3 / RawSpeed processing
* set the RawSpeed-v3 (+ C-API) library, obtained in the previous steps, as an input linker file
# Using LibRaw with RawSpeed-v3 Support
Use LibRaw as usual. Enable RawSpeed3 use by setting bits in imgdata.rawparams.userawspeed (LIBRAW_RAWSPEEDV3_USE, LIBRAW_RAWSPEEDV3_IGNOREERRORS, LIBRAW_RAWSPEEDV3_FAILONUNKNOWN)
If RawSpeed was set as the decoder the following bits will be set in imgdata.processwarnings:
* LIBRAW_WARN_RAWSPEED3_PROCESSED - if decoding was successful
* LIBRAW_WARN_RAWSPEED3_PROBLEM - if decoding attempt failed
(flags and bits are described in LibRaw's Changelog)
With RawSpeed-v3, the entire RAW file is read into the memory buffer (as it is with RawSpeed version 1), so it increases LibRaw memory footprint.

View File

@@ -0,0 +1,13 @@
diff --git a/src/librawspeed/metadata/CameraMetaData.h b/src/librawspeed/metadata/CameraMetaData.h
index c2f6f1dd..13cab9c9 100644
--- a/src/librawspeed/metadata/CameraMetaData.h
+++ b/src/librawspeed/metadata/CameraMetaData.h
@@ -41,7 +41,7 @@ struct CameraId {
}
};
-class CameraMetaData {
+class CameraMetaData final {
public:
CameraMetaData() = default;

View File

@@ -0,0 +1,36 @@
diff --git a/src/librawspeed/tiff/TiffIFD.cpp b/src/librawspeed/tiff/TiffIFD.cpp
index e732eae2..05251dd9 100644
--- a/src/librawspeed/tiff/TiffIFD.cpp
+++ b/src/librawspeed/tiff/TiffIFD.cpp
@@ -143,6 +143,7 @@ TiffRootIFDOwner TiffIFD::parseMakerNote(NORangesSet<Buffer>* ifds,
string make = makeEntry != nullptr ? trimSpaces(makeEntry->getString()) : "";
ByteStream bs = t->getData();
+ auto bufbegin = bs.begin() + bs.getPosition();
// helper function for easy setup of ByteStream buffer for the different maker note types
// 'rebase' means position 0 of new stream equals current position
@@ -159,7 +160,9 @@ TiffRootIFDOwner TiffIFD::parseMakerNote(NORangesSet<Buffer>* ifds,
bs.skipBytes(newPosition);
};
- if (bs.hasPrefix("AOC\0", 4)) {
+ if (bs.hasPrefix("LSI1\0", 5)) { // Skip LSI1 makernotes
+ return std::make_unique<TiffRootIFD>(this, ifds, bs, UINT32_MAX); // UINT32_MAX offset => special handling, empty IFD
+ } else if (bs.hasPrefix("AOC\0", 4)) {
setup(false, 6, 4, "Pentax makernote");
} else if (bs.hasPrefix("PENTAX", 6)) {
setup(true, 10, 8, "Pentax makernote");
@@ -197,6 +200,12 @@ TiffRootIFDOwner TiffIFD::parseMakerNote(NORangesSet<Buffer>* ifds,
}
}
+ auto readed = bs.begin() - bufbegin + bs.getPosition();
+ ByteStream bscheck(bs);
+ const auto IFDSize = 6 + 12 * bscheck.getU16();
+
+ if(IFDSize > t->count - readed) // IFDSize too big, probably binary Makernotes dir, not TIFF-like, could not be handled by TiffRootIFD reader
+ return std::make_unique<TiffRootIFD>(this, ifds, bs, UINT32_MAX); // // UINT32_MAX offset => special handling, empty IFD
// Attempt to parse the rest as an IFD
return std::make_unique<TiffRootIFD>(this, ifds, bs, bs.getPosition());
}

View File

@@ -0,0 +1,245 @@
diff --git a/src/librawspeed/common/Common.cpp b/src/librawspeed/common/Common.cpp
index 8c8c5663..d9b5e463 100644
--- a/src/librawspeed/common/Common.cpp
+++ b/src/librawspeed/common/Common.cpp
@@ -36,6 +36,7 @@ writeLog(DEBUG_PRIO priority, const char* format, ...) {
#else
void writeLog(DEBUG_PRIO priority, const char* format, ...) {
+#if 0
#ifndef _DEBUG
if (priority < DEBUG_PRIO_INFO)
#endif // _DEBUG
@@ -55,6 +56,7 @@ void writeLog(DEBUG_PRIO priority, const char* format, ...) {
if (priority < DEBUG_PRIO_INFO)
#endif // _DEBUG
fprintf(stdout, "%s", "\n");
+#endif
}
#endif
diff --git a/src/librawspeed/common/RawspeedException.h b/src/librawspeed/common/RawspeedException.h
index 33b9cc29..a9f503a7 100644
--- a/src/librawspeed/common/RawspeedException.h
+++ b/src/librawspeed/common/RawspeedException.h
@@ -45,12 +45,13 @@ template <typename T>
"Don't have thread-local-storage! Exception text may be garbled if used multithreaded"
static char buf[bufSize];
#endif
-
+#if 0
va_list val;
va_start(val, fmt);
vsnprintf(buf.data(), sizeof(buf), fmt, val);
va_end(val);
writeLog(DEBUG_PRIO_EXTRA, "EXCEPTION: %s", buf.data());
+#endif
throw T(buf.data());
}
diff --git a/src/librawspeed/decoders/ArwDecoder.cpp b/src/librawspeed/decoders/ArwDecoder.cpp
index f1d5a63c..2025d260 100644
--- a/src/librawspeed/decoders/ArwDecoder.cpp
+++ b/src/librawspeed/decoders/ArwDecoder.cpp
@@ -186,8 +186,8 @@ RawImage ArwDecoder::decodeRawInternal() {
}
}
- if (width == 0 || height == 0 || height % 2 != 0 || width > 9600 ||
- height > 6376)
+ if (width == 0 || height == 0 || height % 2 != 0 /* || width > 9600 ||
+ height > 6376 */)
ThrowRDE("Unexpected image dimensions found: (%u; %u)", width, height);
bool arw1 = uint64_t(counts->getU32()) * 8 != width * height * bitPerPixel;
@@ -241,7 +241,7 @@ void ArwDecoder::DecodeUncompressed(const TiffIFD* raw) {
mRaw->dim = iPoint2D(width, height);
- if (width == 0 || height == 0 || width > 9600 || height > 6376)
+ if (width == 0 || height == 0 /* || width > 9600 || height > 6376 */)
ThrowRDE("Unexpected image dimensions found: (%u; %u)", width, height);
if (c2 == 0)
diff --git a/src/librawspeed/decoders/IiqDecoder.cpp b/src/librawspeed/decoders/IiqDecoder.cpp
index 31c460d9..61b04e1a 100644
--- a/src/librawspeed/decoders/IiqDecoder.cpp
+++ b/src/librawspeed/decoders/IiqDecoder.cpp
@@ -185,7 +185,7 @@ RawImage IiqDecoder::decodeRawInternal() {
}
// FIXME: could be wrong. max "active pixels" in "Sensor+" mode - "101 MP"
- if (width == 0 || height == 0 || width > 11976 || height > 8854)
+ if (width == 0 || height == 0 /* || width > 11976 || height > 8854 */)
ThrowRDE("Unexpected image dimensions found: (%u; %u)", width, height);
if (split_col > width || split_row > height)
diff --git a/src/librawspeed/decoders/MosDecoder.cpp b/src/librawspeed/decoders/MosDecoder.cpp
index 9f01a11c..db4b8f50 100644
--- a/src/librawspeed/decoders/MosDecoder.cpp
+++ b/src/librawspeed/decoders/MosDecoder.cpp
@@ -113,7 +113,7 @@ RawImage MosDecoder::decodeRawInternal() {
uint32_t height = raw->getEntry(IMAGELENGTH)->getU32();
// FIXME: could be wrong. max "active pixels" - "80 MP"
- if (width == 0 || height == 0 || width > 10328 || height > 7760)
+ if (width == 0 || height == 0 /* || width > 10328 || height > 7760 */)
ThrowRDE("Unexpected image dimensions found: (%u; %u)", width, height);
mRaw->dim = iPoint2D(width, height);
diff --git a/src/librawspeed/decoders/NefDecoder.cpp b/src/librawspeed/decoders/NefDecoder.cpp
index 222c62f0..7314ca15 100644
--- a/src/librawspeed/decoders/NefDecoder.cpp
+++ b/src/librawspeed/decoders/NefDecoder.cpp
@@ -214,7 +214,7 @@ void NefDecoder::DecodeUncompressed() {
mRaw->dim = iPoint2D(width, height);
- if (width == 0 || height == 0 || width > 8288 || height > 5520)
+ if (width == 0 || height == 0 /* || width > 8288 || height > 5520 */)
ThrowRDE("Unexpected image dimensions found: (%u; %u)", width, height);
if (counts->count != offsets->count) {
@@ -370,8 +370,8 @@ void NefDecoder::DecodeSNefUncompressed() {
uint32_t width = raw->getEntry(IMAGEWIDTH)->getU32();
uint32_t height = raw->getEntry(IMAGELENGTH)->getU32();
- if (width == 0 || height == 0 || width % 2 != 0 || width > 3680 ||
- height > 2456)
+ if (width == 0 || height == 0 || width % 2 != 0 /* || width > 3680 ||
+ height > 2456 */)
ThrowRDE("Unexpected image dimensions found: (%u; %u)", width, height);
mRaw->dim = iPoint2D(width, height);
diff --git a/src/librawspeed/decoders/OrfDecoder.cpp b/src/librawspeed/decoders/OrfDecoder.cpp
index 7eb1a901..de557d5f 100644
--- a/src/librawspeed/decoders/OrfDecoder.cpp
+++ b/src/librawspeed/decoders/OrfDecoder.cpp
@@ -109,7 +109,7 @@ RawImage OrfDecoder::decodeRawInternal() {
uint32_t width = raw->getEntry(IMAGEWIDTH)->getU32();
uint32_t height = raw->getEntry(IMAGELENGTH)->getU32();
- if (!width || !height || width % 2 != 0 || width > 10400 || height > 7796)
+ if (!width || !height || width % 2 != 0 /* || width > 10400 || height > 7796 */ )
ThrowRDE("Unexpected image dimensions found: (%u; %u)", width, height);
mRaw->dim = iPoint2D(width, height);
diff --git a/src/librawspeed/decoders/RafDecoder.cpp b/src/librawspeed/decoders/RafDecoder.cpp
index 5baf02b9..27e67e7a 100644
--- a/src/librawspeed/decoders/RafDecoder.cpp
+++ b/src/librawspeed/decoders/RafDecoder.cpp
@@ -79,7 +79,7 @@ RawImage RafDecoder::decodeRawInternal() {
} else
ThrowRDE("Unable to locate image size");
- if (width == 0 || height == 0 || width > 11808 || height > 8754)
+ if (width == 0 || height == 0 /* || width > 11808 || height > 8754 */ )
ThrowRDE("Unexpected image dimensions found: (%u; %u)", width, height);
if (raw->hasEntry(FUJI_LAYOUT)) {
@@ -334,7 +334,7 @@ int RafDecoder::isCompressed() {
} else
ThrowRDE("Unable to locate image size");
- if (width == 0 || height == 0 || width > 11808 || height > 8754)
+ if (width == 0 || height == 0 /* || width > 11808 || height > 8754 */)
ThrowRDE("Unexpected image dimensions found: (%u; %u)", width, height);
uint32_t count = raw->getEntry(FUJI_STRIPBYTECOUNTS)->getU32();
diff --git a/src/librawspeed/decoders/RawDecoder.cpp b/src/librawspeed/decoders/RawDecoder.cpp
index a69727f6..e5315a42 100644
--- a/src/librawspeed/decoders/RawDecoder.cpp
+++ b/src/librawspeed/decoders/RawDecoder.cpp
@@ -62,7 +62,7 @@ void RawDecoder::decodeUncompressed(const TiffIFD *rawIFD, BitOrder order) {
uint32_t height = rawIFD->getEntry(IMAGELENGTH)->getU32();
uint32_t bitPerPixel = rawIFD->getEntry(BITSPERSAMPLE)->getU32();
- if (width == 0 || height == 0 || width > 5632 || height > 3720)
+ if (width == 0 || height == 0 /* || width > 5632 || height > 3720 */)
ThrowRDE("Unexpected image dimensions found: (%u; %u)", width, height);
mRaw->dim = iPoint2D(width, height);
diff --git a/src/librawspeed/decoders/Rw2Decoder.cpp b/src/librawspeed/decoders/Rw2Decoder.cpp
index 0e9d111d..a54de998 100644
--- a/src/librawspeed/decoders/Rw2Decoder.cpp
+++ b/src/librawspeed/decoders/Rw2Decoder.cpp
@@ -72,7 +72,7 @@ RawImage Rw2Decoder::decodeRawInternal() {
uint32_t width = raw->getEntry(static_cast<TiffTag>(2))->getU16();
if (isOldPanasonic) {
- if (width == 0 || height == 0 || width > 4330 || height > 2751)
+ if (width == 0 || height == 0 /* || width > 4330 || height > 2751 */)
ThrowRDE("Unexpected image dimensions found: (%u; %u)", width, height);
TiffEntry *offsets = raw->getEntry(STRIPOFFSETS);
diff --git a/src/librawspeed/decompressors/HasselbladDecompressor.cpp b/src/librawspeed/decompressors/HasselbladDecompressor.cpp
index 0d650065..aaa70fb5 100644
--- a/src/librawspeed/decompressors/HasselbladDecompressor.cpp
+++ b/src/librawspeed/decompressors/HasselbladDecompressor.cpp
@@ -41,8 +41,8 @@ HasselbladDecompressor::HasselbladDecompressor(const ByteStream& bs,
ThrowRDE("Unexpected component count / data type");
// FIXME: could be wrong. max "active pixels" - "100 MP"
- if (mRaw->dim.x == 0 || mRaw->dim.y == 0 || mRaw->dim.x % 2 != 0 ||
- mRaw->dim.x > 12000 || mRaw->dim.y > 8816) {
+ if (mRaw->dim.x == 0 || mRaw->dim.y == 0 || mRaw->dim.x % 2 != 0 /* ||
+ mRaw->dim.x > 12000 || mRaw->dim.y > 8816 */) {
ThrowRDE("Unexpected image dimensions found: (%u; %u)", mRaw->dim.x,
mRaw->dim.y);
}
diff --git a/src/librawspeed/decompressors/NikonDecompressor.cpp b/src/librawspeed/decompressors/NikonDecompressor.cpp
index ca39cd0a..54568243 100644
--- a/src/librawspeed/decompressors/NikonDecompressor.cpp
+++ b/src/librawspeed/decompressors/NikonDecompressor.cpp
@@ -442,8 +442,8 @@ NikonDecompressor::NikonDecompressor(const RawImage& raw, ByteStream metadata,
mRaw->getBpp() != sizeof(uint16_t))
ThrowRDE("Unexpected component count / data type");
- if (mRaw->dim.x == 0 || mRaw->dim.y == 0 || mRaw->dim.x % 2 != 0 ||
- mRaw->dim.x > 8288 || mRaw->dim.y > 5520)
+ if (mRaw->dim.x == 0 || mRaw->dim.y == 0 || mRaw->dim.x % 2 != 0 /* ||
+ mRaw->dim.x > 8288 || mRaw->dim.y > 5520 */)
ThrowRDE("Unexpected image dimensions found: (%u; %u)", mRaw->dim.x,
mRaw->dim.y);
diff --git a/src/librawspeed/decompressors/OlympusDecompressor.cpp b/src/librawspeed/decompressors/OlympusDecompressor.cpp
index b859b562..dc8aa0bc 100644
--- a/src/librawspeed/decompressors/OlympusDecompressor.cpp
+++ b/src/librawspeed/decompressors/OlympusDecompressor.cpp
@@ -56,7 +56,7 @@ OlympusDecompressor::OlympusDecompressor(const RawImage& img) : mRaw(img) {
const uint32_t w = mRaw->dim.x;
const uint32_t h = mRaw->dim.y;
- if (w == 0 || h == 0 || w % 2 != 0 || w > 10400 || h > 7792)
+ if (w == 0 || h == 0 || w % 2 != 0 /* || w > 10400 || h > 7792 */)
ThrowRDE("Unexpected image dimensions found: (%u; %u)", w, h);
}
diff --git a/src/librawspeed/decompressors/PentaxDecompressor.cpp b/src/librawspeed/decompressors/PentaxDecompressor.cpp
index 11b1d677..c2adc2e6 100644
--- a/src/librawspeed/decompressors/PentaxDecompressor.cpp
+++ b/src/librawspeed/decompressors/PentaxDecompressor.cpp
@@ -49,8 +49,8 @@ PentaxDecompressor::PentaxDecompressor(const RawImage& img,
mRaw->getBpp() != sizeof(uint16_t))
ThrowRDE("Unexpected component count / data type");
- if (!mRaw->dim.x || !mRaw->dim.y || mRaw->dim.x % 2 != 0 ||
- mRaw->dim.x > 8384 || mRaw->dim.y > 6208) {
+ if (!mRaw->dim.x || !mRaw->dim.y || mRaw->dim.x % 2 != 0 /* ||
+ mRaw->dim.x > 8384 || mRaw->dim.y > 6208 */) {
ThrowRDE("Unexpected image dimensions found: (%u; %u)", mRaw->dim.x,
mRaw->dim.y);
}
diff --git a/src/librawspeed/decompressors/SonyArw2Decompressor.cpp b/src/librawspeed/decompressors/SonyArw2Decompressor.cpp
index 8f935d9c..3cbc7e26 100644
--- a/src/librawspeed/decompressors/SonyArw2Decompressor.cpp
+++ b/src/librawspeed/decompressors/SonyArw2Decompressor.cpp
@@ -45,7 +45,7 @@ SonyArw2Decompressor::SonyArw2Decompressor(const RawImage& img,
const uint32_t w = mRaw->dim.x;
const uint32_t h = mRaw->dim.y;
- if (w == 0 || h == 0 || w % 32 != 0 || w > 9600 || h > 6376)
+ if (w == 0 || h == 0 || w % 32 != 0 /* || w > 9600 || h > 6376 */)
ThrowRDE("Unexpected image dimensions found: (%u; %u)", w, h);
// 1 byte per pixel

View File

@@ -0,0 +1,37 @@
diff --git a/src/librawspeed/common/DefaultInitAllocatorAdaptor.h b/src/librawspeed/common/DefaultInitAllocatorAdaptor.h
index 2ff8969e..fa18c312 100644
--- a/src/librawspeed/common/DefaultInitAllocatorAdaptor.h
+++ b/src/librawspeed/common/DefaultInitAllocatorAdaptor.h
@@ -27,8 +27,12 @@
namespace rawspeed {
template <typename T, typename ActualAllocator = std::allocator<T>,
- typename = std::enable_if_t<std::is_pod<T>::value>>
-class DefaultInitAllocatorAdaptor {
+#ifdef _MSC_VER
+ typename = std::enable_if_t<true>>
+#else
+ typename = std::enable_if_t<std::is_pod<T>::value >>
+#endif
+ class DefaultInitAllocatorAdaptor {
public:
using allocator_traits = std::allocator_traits<ActualAllocator>;
diff --git a/src/librawspeed/decompressors/VC5Decompressor.cpp b/src/librawspeed/decompressors/VC5Decompressor.cpp
index c498ac3a..de4ae412 100644
--- a/src/librawspeed/decompressors/VC5Decompressor.cpp
+++ b/src/librawspeed/decompressors/VC5Decompressor.cpp
@@ -398,7 +398,12 @@ VC5Decompressor::VC5Decompressor(ByteStream bs, const RawImage& img)
wavelet.height = waveletHeight;
wavelet.bands.resize(
- &wavelet == channel.wavelets.begin() ? 1 : Wavelet::maxBands);
+#ifdef _MSC_VER
+ Wavelet::maxBands
+#else
+ &wavelet == channel.wavelets.begin() ? 1 : Wavelet::maxBands
+#endif
+ );
}
}

View File

@@ -0,0 +1,251 @@
#include "rawspeed3_capi.h"
#include "RawSpeed-API.h"
#define HAVE_PUGIXML
#include <../pugixml/pugixml.hpp> // for xml_document, xml_pars...
extern const char* _rawspeed3_data_xml;
class rawspeed3_handle_data
{
public:
rawspeed3_handle_data(const char* cameradefs, bool is_file);
void release();
int decodefile(rawspeed3_ret_t* resultp, const void *data, size_t datasize, bool allowunknown);
~rawspeed3_handle_data();
private:
std::unique_ptr <rawspeed::CameraMetaData> cameraMeta;
std::unique_ptr<rawspeed::RawParser> rawParser;
std::unique_ptr<rawspeed::RawDecoder> rawDecoder;
};
/* API calls */
extern "C"
{
/*
void rawspeed3_clearresult(rawspeed3_ret_t* r)
Clears (inits) results structure
*/
DllDef void rawspeed3_clearresult(rawspeed3_ret_t* r)
{
if(!r) return;
r->width = r->height = r->bpp = r->cpp = 0;
r->status = rawspeed_inited;
r->pitch = r->filters = 0;
r->pixeldata = nullptr;
}
/*
rawspeed3_init()
Init rawspeed3 Camera, returns: 0 on failure, pointer to data block on success
Cameradefs: cameras.xml in string (is_file == false) or file (is_file == true)
*/
DllDef rawspeed3_handle_t rawspeed3_init(const char* cameradefs, bool is_file)
{
/* Create rawspeed3_handle_data and return it as void document */
if(!cameradefs) return nullptr;
try
{
/* code */
auto *handle = new rawspeed3_handle_data(cameradefs, is_file);
return (void*)handle;
}
catch(const std::exception& e)
{
return nullptr;
}
}
/*
rawspeed3_initdefault()
Init rawspeed3 Cameradefs with built-in cameras.xml (converted to _rawspeed3_data_xml),
returns: 0 on failure, pointer to data block on success
*/
DllDef rawspeed3_handle_t rawspeed3_initdefault()
{
return rawspeed3_init(_rawspeed3_data_xml,false);
}
/*
rawspeed3_decodefile(..)
parse/decode RAW file passed via memory
Parameters:
handle - rawspeed3_handle_t => handle created by rawspeed3_init()
resultp -> pointer to rawspeed3_ret_t to be filled with
data -> data buffer with raw file
datasize -> size of this buffer
allowunknown -> allow to process unknown cameras (not listed in cameras.xml)
Return values:
0 -> OK
>=1 -> decode error
-1 -> Incorrect parameters passed (handle, or data, or datasize)
*/
DllDef int rawspeed3_decodefile(rawspeed3_handle_t handle, rawspeed3_ret_t* resultp,
const void *data, size_t datasize, bool allowunknown)
{
if(!handle || !resultp || !data || datasize > 2UL * 1024UL * 1024UL * 1024UL)
{
if(resultp)
resultp->status = rawspeed3_param_error;
return -1;
}
rawspeed3_clearresult(resultp);
auto *p = static_cast<rawspeed3_handle_data*>(handle);
return p->decodefile(resultp,data,datasize,allowunknown);
}
/*
void rawspeed3_release(rawspeed3_handle_t handle)
release internal raw data buffer and error code;
*/
/* release internal raw data buffer and errmessage (if any) */
DllDef void rawspeed3_release(rawspeed3_handle_t handle)
{
if(!handle) return;
auto *p = static_cast<rawspeed3_handle_data*>(handle);
p->release();
}
/* close handle: release all internal data */
DllDef void rawspeed3_close(rawspeed3_handle_t handle)
{
if(!handle) return;
auto *p = static_cast<rawspeed3_handle_data*>(handle);
delete p;
}
} /* extern "C" */
// == Implementation
int rawspeed3_handle_data::decodefile(rawspeed3_ret_t* resultp,
const void *data, size_t datasize, bool allowunknown)
{
if(!cameraMeta)
{
resultp->status = rawspeed3_not_inited;
return rawspeed3_not_inited;
}
try
{
rawspeed::Buffer buffer( static_cast<const uint8_t*>(data),datasize);
release();
rawParser = std::make_unique<rawspeed::RawParser>(buffer);
auto d(rawParser->getDecoder(cameraMeta.get()));
if(!d)
{
resultp->status = rawspeed3_no_decoder;
return rawspeed3_no_decoder;
}
d->applyCrop = false;
d->failOnUnknown = !allowunknown;
d->interpolateBadPixels = false;
d->applyStage1DngOpcodes = false;
d->fujiRotate = false;
d->applyCrop = false;
try {
d->checkSupport(cameraMeta.get());
} catch (...) {
release();
resultp->status = rawspeed3_not_supported;
return resultp->status;
}
rawspeed::RawImage r = d->mRaw;
d->decodeMetaData(cameraMeta.get());
d->checkSupport(cameraMeta.get());
d->decodeRaw();
d->decodeMetaData(cameraMeta.get());
r = d->mRaw;
rawDecoder = std::move(d);
// we're here w/o exceptions: success
const rawspeed::iPoint2D dimUncropped = r->getUncroppedDim();
resultp->width = dimUncropped.x;
resultp->height = dimUncropped.y;
resultp->filters = r->cfa.getDcrawFilter();
resultp->cpp = r->getCpp();
resultp->bpp = r->getBpp();
resultp->pitch = r->pitch;
resultp->pixeldata = r->getDataUncropped(0,0);
const auto errors = r->getErrors();
resultp->status = errors.empty()? rawspeed3_ok : rawspeed3_ok_warnings;
return resultp->status;
/* code */
}
catch(...)
{
resultp->status = rawspeed3_processing_error;
return rawspeed3_processing_error;
}
}
namespace rawspeed
{
class CameraMetaDataFromMem : public CameraMetaData
{
public:
explicit CameraMetaDataFromMem(const char* xmlstring);
};
}
rawspeed3_handle_data::rawspeed3_handle_data(const char* cameradefs, bool is_file)
: rawParser(nullptr)
{
cameraMeta = is_file ? std::make_unique<rawspeed::CameraMetaData>(cameradefs)
: std::make_unique <rawspeed::CameraMetaDataFromMem>(cameradefs);
}
rawspeed3_handle_data::~rawspeed3_handle_data()
{
release();
cameraMeta.reset();
}
void rawspeed3_handle_data::release()
{
if(rawDecoder)
rawDecoder.reset();
if (rawParser)
rawParser.reset();
}
// Camera metadata from mem
namespace rawspeed
{
CameraMetaDataFromMem::CameraMetaDataFromMem(const char* document)
{
using pugi::xml_node;
using pugi::xml_document;
using pugi::xml_parse_result;
xml_document doc;
xml_parse_result result = doc.load_string(document);
if (!result)
throw "Camera definitions parse error";
for (xml_node camera : doc.child("Cameras").children("Camera"))
{
const auto* cam = addCamera(std::make_unique<Camera>(camera));
if (cam == nullptr)
continue;
// Create cameras for aliases.
for (auto i = 0UL; i < cam->aliases.size(); i++)
addCamera(std::make_unique<Camera>(cam, i));
}
}
} // namespace rawspeed

View File

@@ -0,0 +1,83 @@
#pragma once
#include <stdint.h>
#include <stdlib.h>
#ifdef _MSC_VER
#ifdef RAWSPEED_BUILDLIB
#define DllDef __declspec(dllexport)
#else
#define DllDef __declspec(dllimport)
#endif
#else
#define DllDef
#endif
#ifdef __cplusplus
extern "C"
{
#endif
enum rawspeed3_error_codes
{
rawspeed_inited = -2,
rawspeed3_param_error = -1,
rawspeed3_ok = 0,
rawspeed3_ok_warnings = 1,
rawspeed3_not_inited = 2,
rawspeed3_processing_error = 3,
rawspeed3_no_decoder = 4,
rawspeed3_not_supported = 5,
};
typedef void *rawspeed3_handle_t;
/* RAW file parsing results */
typedef struct
{
int status; /* -1: param error, 0 => OK, >=1 error code */
uint16_t width, height, bpp, cpp;
unsigned pitch, filters;
const void *pixeldata;
}rawspeed3_ret_t;
/* API calls */
DllDef void rawspeed3_clearresult(rawspeed3_ret_t*);
/*
rawspeed3_init()
Init rawspeed3 Camera, returns: 0 on failure, pointer to data block on success
Cameradefs: cameras.xml in string (is_file == false) or file (is_file == true)
*/
DllDef rawspeed3_handle_t rawspeed3_init(const char* cameradefs, bool is_file);
/* init with built-in cameras.xml */
DllDef rawspeed3_handle_t rawspeed3_initdefault();
/*
rawspeed3_decodefile(..)
parse/decode RAW file passed via memory
Parameters:
handle - rawspeed3_handle_t => handle created by rawspeed3_init()
resultp -> pointer to rawspeed3_ret_t to be filled with
data -> data buffer with raw file
datasize -> size of this buffer
allowunknown -> allow to process unknown cameras (not listed in cameras.xml)
Return values:
0 -> OK
1 -> decode warnings (not fatal)
>1 -> error code
-1 -> Incorrect parameters passed (handle, or data, or datasize)
*/
DllDef int rawspeed3_decodefile(rawspeed3_handle_t handle, rawspeed3_ret_t* resultp,
const void *data, size_t datasize, bool allowunknown);
/* release internal raw data buffer */
DllDef void rawspeed3_release(rawspeed3_handle_t handle);
/* close handle: release all internal data */
DllDef void rawspeed3_close(rawspeed3_handle_t handle);
#ifdef __cplusplus
} /* Extern C */
#endif

View File

@@ -0,0 +1,71 @@
#include "rawspeed3_capi.h"
#include <fstream>
#include <iostream>
#include <vector>
#include <stdint.h>
std::vector<uint8_t> readfile(char *fn)
{
std::ifstream is(fn,std::ifstream::binary);
if(is)
{
is.seekg(0, is.end);
size_t length = is.tellg();
is.seekg(0, is.beg);
std::vector<uint8_t> ret;
ret.resize(length+1);
is.read ((char*)ret.data(),length);
is.close();
ret[length] = 0; // zero terminated
std::cout << "File: " << fn << " size:" << ret.size() << std::endl;
return ret;
}
else
return std::vector<uint8_t>();
}
int main(int ac, char *av[])
{
if(ac < 2)
{
std::cout << "Usage: " << av[0] << " rawfile rawfile2 ...." << std::endl;
return 1;
}
rawspeed3_handle_t handle = rawspeed3_initdefault();
if(!handle)
{
std::cerr << "Unable to init rs3" << std::endl;
return 2;
}
for(int i = 1; i < ac; i++)
{
std::vector<uint8_t> rawdata = readfile(av[i]);
if (rawdata.size() < 100) {
std::cerr << "Input file " << av[i] << " too small or nonexistent" << std::endl;
continue;
}
rawspeed3_ret_t result;
int q = rawspeed3_decodefile(handle, &result, rawdata.data(),
rawdata.size(), true);
if (q >= rawspeed3_ok && q <= rawspeed3_ok_warnings) {
std::cout << "File decoded code=" << result.status <<" width=" << result.width
<< " height=" << result.height
<< " pitch=" << result.pitch
<< " filters=" << std::hex << result.filters << std::dec
<< " channels=" << result.cpp
<< " bpp=" << result.bpp
<< std::endl;
} else
std::cout << "RawSpeed wrapper error code:" << result.status
<< std::endl;
rawspeed3_release(handle);
}
rawspeed3_close(handle);
}

View File

@@ -0,0 +1,5 @@
#!/bin/sh
echo "const char *_rawspeed3_data_xml="
cat $1 | tr -d '\015' | sed -e 's/\\/\\\\/g;s/"/\\"/g;s/ /\\t/g;s/^/"/;s/$/\\n"/'
echo "\"\\0\";"

View File

@@ -0,0 +1,2 @@

View File

@@ -0,0 +1,5 @@
include (libraw-common.pro)
win32:LIBS+=libraw.lib
unix:LIBS+=-lraw
CONFIG-=qt
SOURCES=../samples/4channels.cpp

View File

@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{F68CBE78-B27A-3A05-BCD3-293E8CAC1C52}</ProjectGuid>
<RootNamespace>4channels</RootNamespace>
<Keyword>Qt4VSv1.0</Keyword>
<WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.18362.0</WindowsTargetPlatformMinVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>debug-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>debug-x86_64\4channels.obj\</IntermediateDirectory>
<PrimaryOutput>4channels</PrimaryOutput>
</PropertyGroup>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>release-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>release-x86_64\4channels.obj\</IntermediateDirectory>
<PrimaryOutput>4channels</PrimaryOutput>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\4channels.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">4channels</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">true</IgnoreImportLibrary>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\4channels.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">4channels</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">true</IgnoreImportLibrary>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>debug-x86_64\4channels.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>debug-x86_64\4channels.obj\</ObjectFileName>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>debug-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>true</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<OutputFile>$(OutDir)\4channels.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>release-x86_64\4channels.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>None</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>release-x86_64\4channels.obj\</ObjectFileName>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<ProgramDataBaseFileName></ProgramDataBaseFileName>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>release-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>false</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental>
<OptimizeReferences>true</OptimizeReferences>
<OutputFile>$(OutDir)\4channels.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\samples\4channels.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\samples\4channels.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,6 @@
include (libraw-common.pro)
win32:LIBS+=libraw.lib
unix:LIBS+=-lraw
CONFIG-=qt
CONFIG+=debug_and_release
SOURCES=../samples/dcraw_emu.cpp

View File

@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{48688DB8-559A-3DE2-ADDE-5BD27BFEDDA2}</ProjectGuid>
<RootNamespace>dcraw_emu</RootNamespace>
<Keyword>Qt4VSv1.0</Keyword>
<WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.18362.0</WindowsTargetPlatformMinVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>debug-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>debug-x86_64\dcraw_emu.obj\</IntermediateDirectory>
<PrimaryOutput>dcraw_emu</PrimaryOutput>
</PropertyGroup>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>release-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>release-x86_64\dcraw_emu.obj\</IntermediateDirectory>
<PrimaryOutput>dcraw_emu</PrimaryOutput>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\dcraw_emu.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">dcraw_emu</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">true</IgnoreImportLibrary>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\dcraw_emu.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">dcraw_emu</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">true</IgnoreImportLibrary>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>debug-x86_64\dcraw_emu.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>debug-x86_64\dcraw_emu.obj\</ObjectFileName>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>debug-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>true</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<OutputFile>$(OutDir)\dcraw_emu.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>release-x86_64\dcraw_emu.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>None</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>release-x86_64\dcraw_emu.obj\</ObjectFileName>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<ProgramDataBaseFileName></ProgramDataBaseFileName>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>release-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>false</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental>
<OptimizeReferences>true</OptimizeReferences>
<OutputFile>$(OutDir)\dcraw_emu.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\samples\dcraw_emu.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\samples\dcraw_emu.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,6 @@
include (libraw-common.pro)
win32:LIBS+=libraw.lib
unix:LIBS+=-lraw
CONFIG-=qt
CONFIG+=debug_and_release
SOURCES=../samples/dcraw_half.c

View File

@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{C6EACFA3-9FC5-393B-BCF6-2874B05E4581}</ProjectGuid>
<RootNamespace>dcraw_half</RootNamespace>
<Keyword>Qt4VSv1.0</Keyword>
<WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.18362.0</WindowsTargetPlatformMinVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>debug-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>debug-x86_64\dcraw_half.obj\</IntermediateDirectory>
<PrimaryOutput>dcraw_half</PrimaryOutput>
</PropertyGroup>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>release-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>release-x86_64\dcraw_half.obj\</IntermediateDirectory>
<PrimaryOutput>dcraw_half</PrimaryOutput>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\dcraw_half.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">dcraw_half</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">true</IgnoreImportLibrary>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\dcraw_half.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">dcraw_half</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">true</IgnoreImportLibrary>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>debug-x86_64\dcraw_half.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>debug-x86_64\dcraw_half.obj\</ObjectFileName>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>debug-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>true</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<OutputFile>$(OutDir)\dcraw_half.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>release-x86_64\dcraw_half.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>None</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>release-x86_64\dcraw_half.obj\</ObjectFileName>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<ProgramDataBaseFileName></ProgramDataBaseFileName>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>release-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>false</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental>
<OptimizeReferences>true</OptimizeReferences>
<OutputFile>$(OutDir)\dcraw_half.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\samples\dcraw_half.c" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\samples\dcraw_half.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,10 @@
include (libraw-common.pro)
win32:LIBS+=libraw.lib
unix:LIBS+=-lraw
CONFIG-=qt
CONFIG+=debug_and_release
win32 {
SOURCES=../samples/half_mt_win32.c
} else {
SOURCES=../samples/half_mt.c
}

View File

@@ -0,0 +1,28 @@
win32 {
QMAKE_CXXFLAGS+=/MP
!contains(QMAKE_HOST.arch, x86_64) {
SUFF="x86"
} else {
## Windows x64 (64bit) specific build here
SUFF="x86_64"
}
}
CONFIG(debug,debug|release) {
win32:OUTD=debug-$$SUFF
win32:OUTDE=debug-$$SUFF
macx:OUTD=debug
} else {
win32:OUTD=release-$$SUFF
win32:OUTDE=release-$$SUFF
macx:OUTD=release
}
INCLUDEPATH+=../
OBJECTS_DIR = $$OUTD/$${TARGET}.obj
MOC_DIR = $$OUTD/
RCC_DIR = $$OUTD/
UI_DIR = $$OUTD/
DESTDIR = $$OUTD/
LIBS+=-L$$OUTD
CONFIG+=warn_off

View File

@@ -0,0 +1,8 @@
win32:CONFIG+=console
win32:LIBS+=libraw.lib
unix:LIBS+=-lraw
win32-g++:
{
LIBS += -lws2_32
}
include (libraw-common-lib.pro)

View File

@@ -0,0 +1,70 @@
TEMPLATE=lib
TARGET=libraw
INCLUDEPATH+=../
include (libraw-common-lib.pro)
HEADERS=../libraw/libraw.h \
../libraw/libraw_alloc.h \
../libraw/libraw_const.h \
../libraw/libraw_datastream.h \
../libraw/libraw_types.h \
../libraw/libraw_internal.h \
../libraw/libraw_version.h \
../internal/defines.h \
../internal/var_defines.h \
../internal/libraw_internal_funcs.h \
../internal/dcraw_defs.h ../internal/dcraw_fileio_defs.h \
../internal/dmp_include.h ../internal/libraw_cxx_defs.h \
../internal/x3f_tools.h
CONFIG +=precompiled_headers
CONFIG-=qt
CONFIG+=warn_off
CONFIG+=debug_and_release
macx: CONFIG+= static x86 x86_64
macx: QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.5
DEFINES+=LIBRAW_BUILDLIB
SOURCES+= ../src/libraw_datastream.cpp ../src/decoders/canon_600.cpp \
../src/decoders/crx.cpp ../src/decoders/decoders_dcraw.cpp \
../src/decoders/decoders_libraw_dcrdefs.cpp \
../src/decoders/decoders_libraw.cpp ../src/decoders/dng.cpp \
../src/decoders/fp_dng.cpp ../src/decoders/fuji_compressed.cpp \
../src/decoders/generic.cpp ../src/decoders/kodak_decoders.cpp \
../src/decoders/load_mfbacks.cpp ../src/decoders/smal.cpp \
../src/decoders/unpack_thumb.cpp ../src/decoders/unpack.cpp \
../src/demosaic/aahd_demosaic.cpp ../src/demosaic/ahd_demosaic.cpp \
../src/demosaic/dcb_demosaic.cpp ../src/demosaic/dht_demosaic.cpp \
../src/demosaic/misc_demosaic.cpp ../src/demosaic/xtrans_demosaic.cpp \
../src/integration/dngsdk_glue.cpp ../src/integration/rawspeed_glue.cpp \
../src/metadata/adobepano.cpp ../src/metadata/canon.cpp \
../src/metadata/ciff.cpp ../src/metadata/cr3_parser.cpp \
../src/metadata/epson.cpp ../src/metadata/exif_gps.cpp \
../src/metadata/fuji.cpp ../src/metadata/identify_tools.cpp \
../src/metadata/hasselblad_model.cpp \
../src/metadata/identify.cpp ../src/metadata/kodak.cpp \
../src/metadata/leica.cpp ../src/metadata/makernotes.cpp \
../src/metadata/mediumformat.cpp ../src/metadata/minolta.cpp \
../src/metadata/misc_parsers.cpp ../src/metadata/nikon.cpp \
../src/metadata/normalize_model.cpp ../src/metadata/olympus.cpp \
../src/metadata/p1.cpp ../src/metadata/pentax.cpp \
../src/metadata/samsung.cpp ../src/metadata/sony.cpp \
../src/metadata/tiff.cpp ../src/postprocessing/aspect_ratio.cpp \
../src/postprocessing/dcraw_process.cpp ../src/postprocessing/mem_image.cpp \
../src/postprocessing/postprocessing_aux.cpp \
../src/postprocessing/postprocessing_utils_dcrdefs.cpp \
../src/postprocessing/postprocessing_utils.cpp \
../src/preprocessing/ext_preprocess.cpp ../src/preprocessing/raw2image.cpp \
../src/preprocessing/subtract_black.cpp ../src/tables/cameralist.cpp \
../src/tables/colorconst.cpp ../src/tables/colordata.cpp \
../src/tables/wblists.cpp ../src/utils/curves.cpp \
../src/utils/decoder_info.cpp ../src/utils/init_close_utils.cpp \
../src/utils/open.cpp ../src/utils/phaseone_processing.cpp \
../src/utils/read_utils.cpp ../src/utils/thumb_utils.cpp \
../src/utils/utils_dcraw.cpp ../src/utils/utils_libraw.cpp \
../src/write/apply_profile.cpp ../src/write/file_write.cpp \
../src/write/tiff_writer.cpp ../src/x3f/x3f_parse_process.cpp \
../src/x3f/x3f_utils_patched.cpp \
../src/libraw_c_api.cpp

View File

@@ -0,0 +1,234 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{A71D2131-F425-381F-8A9A-29D60132A046}</ProjectGuid>
<RootNamespace>libraw</RootNamespace>
<Keyword>Qt4VSv1.0</Keyword>
<WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.18362.0</WindowsTargetPlatformMinVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>debug-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>DynamicLibrary</ConfigurationType>
<IntermediateDirectory>debug-x86_64\libraw.obj\</IntermediateDirectory>
<PrimaryOutput>libraw</PrimaryOutput>
</PropertyGroup>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>release-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>DynamicLibrary</ConfigurationType>
<IntermediateDirectory>release-x86_64\libraw.obj\</IntermediateDirectory>
<PrimaryOutput>libraw</PrimaryOutput>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\libraw.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">libraw</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">true</IgnoreImportLibrary>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\libraw.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">libraw</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">true</IgnoreImportLibrary>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>debug-x86_64\libraw.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>debug-x86_64\libraw.obj\</ObjectFileName>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;LIBRAW_BUILDLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalLibraryDirectories>debug-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>true</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkDLL>true</LinkDLL>
<OutputFile>$(OutDir)\libraw.dll</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Windows</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;LIBRAW_BUILDLIB;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>release-x86_64\libraw.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>None</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>release-x86_64\libraw.obj\</ObjectFileName>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;LIBRAW_BUILDLIB;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<ProgramDataBaseFileName></ProgramDataBaseFileName>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalLibraryDirectories>release-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>false</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkDLL>true</LinkDLL>
<LinkIncremental>false</LinkIncremental>
<OptimizeReferences>true</OptimizeReferences>
<OutputFile>$(OutDir)\libraw.dll</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Windows</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;LIBRAW_BUILDLIB;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\src\demosaic\aahd_demosaic.cpp" />
<ClCompile Include="..\src\metadata\adobepano.cpp" />
<ClCompile Include="..\src\demosaic\ahd_demosaic.cpp" />
<ClCompile Include="..\src\write\apply_profile.cpp" />
<ClCompile Include="..\src\postprocessing\aspect_ratio.cpp" />
<ClCompile Include="..\src\tables\cameralist.cpp" />
<ClCompile Include="..\src\metadata\canon.cpp" />
<ClCompile Include="..\src\decoders\canon_600.cpp" />
<ClCompile Include="..\src\metadata\ciff.cpp" />
<ClCompile Include="..\src\tables\colorconst.cpp" />
<ClCompile Include="..\src\tables\colordata.cpp" />
<ClCompile Include="..\src\metadata\cr3_parser.cpp" />
<ClCompile Include="..\src\decoders\crx.cpp" />
<ClCompile Include="..\src\utils\curves.cpp" />
<ClCompile Include="..\src\demosaic\dcb_demosaic.cpp" />
<ClCompile Include="..\src\postprocessing\dcraw_process.cpp" />
<ClCompile Include="..\src\utils\decoder_info.cpp" />
<ClCompile Include="..\src\decoders\decoders_dcraw.cpp" />
<ClCompile Include="..\src\decoders\decoders_libraw.cpp" />
<ClCompile Include="..\src\decoders\decoders_libraw_dcrdefs.cpp" />
<ClCompile Include="..\src\demosaic\dht_demosaic.cpp" />
<ClCompile Include="..\src\decoders\dng.cpp" />
<ClCompile Include="..\src\integration\dngsdk_glue.cpp" />
<ClCompile Include="..\src\metadata\epson.cpp" />
<ClCompile Include="..\src\metadata\exif_gps.cpp" />
<ClCompile Include="..\src\preprocessing\ext_preprocess.cpp" />
<ClCompile Include="..\src\write\file_write.cpp" />
<ClCompile Include="..\src\decoders\fp_dng.cpp" />
<ClCompile Include="..\src\metadata\fuji.cpp" />
<ClCompile Include="..\src\decoders\fuji_compressed.cpp" />
<ClCompile Include="..\src\decoders\generic.cpp" />
<ClCompile Include="..\src\metadata\hasselblad_model.cpp" />
<ClCompile Include="..\src\metadata\identify.cpp" />
<ClCompile Include="..\src\metadata\identify_tools.cpp" />
<ClCompile Include="..\src\utils\init_close_utils.cpp" />
<ClCompile Include="..\src\metadata\kodak.cpp" />
<ClCompile Include="..\src\decoders\kodak_decoders.cpp" />
<ClCompile Include="..\src\metadata\leica.cpp" />
<ClCompile Include="..\src\libraw_c_api.cpp" />
<ClCompile Include="..\src\libraw_datastream.cpp" />
<ClCompile Include="..\src\decoders\load_mfbacks.cpp" />
<ClCompile Include="..\src\metadata\makernotes.cpp" />
<ClCompile Include="..\src\metadata\mediumformat.cpp" />
<ClCompile Include="..\src\postprocessing\mem_image.cpp" />
<ClCompile Include="..\src\metadata\minolta.cpp" />
<ClCompile Include="..\src\demosaic\misc_demosaic.cpp" />
<ClCompile Include="..\src\metadata\misc_parsers.cpp" />
<ClCompile Include="..\src\metadata\nikon.cpp" />
<ClCompile Include="..\src\metadata\normalize_model.cpp" />
<ClCompile Include="..\src\metadata\olympus.cpp" />
<ClCompile Include="..\src\utils\open.cpp" />
<ClCompile Include="..\src\metadata\p1.cpp" />
<ClCompile Include="..\src\metadata\pentax.cpp" />
<ClCompile Include="..\src\utils\phaseone_processing.cpp" />
<ClCompile Include="..\src\postprocessing\postprocessing_aux.cpp" />
<ClCompile Include="..\src\postprocessing\postprocessing_utils.cpp" />
<ClCompile Include="..\src\postprocessing\postprocessing_utils_dcrdefs.cpp" />
<ClCompile Include="..\src\preprocessing\raw2image.cpp" />
<ClCompile Include="..\src\integration\rawspeed_glue.cpp" />
<ClCompile Include="..\src\utils\read_utils.cpp" />
<ClCompile Include="..\src\metadata\samsung.cpp" />
<ClCompile Include="..\src\decoders\smal.cpp" />
<ClCompile Include="..\src\metadata\sony.cpp" />
<ClCompile Include="..\src\preprocessing\subtract_black.cpp" />
<ClCompile Include="..\src\utils\thumb_utils.cpp" />
<ClCompile Include="..\src\metadata\tiff.cpp" />
<ClCompile Include="..\src\write\tiff_writer.cpp" />
<ClCompile Include="..\src\decoders\unpack.cpp" />
<ClCompile Include="..\src\decoders\unpack_thumb.cpp" />
<ClCompile Include="..\src\utils\utils_dcraw.cpp" />
<ClCompile Include="..\src\utils\utils_libraw.cpp" />
<ClCompile Include="..\src\tables\wblists.cpp" />
<ClCompile Include="..\src\x3f\x3f_parse_process.cpp" />
<ClCompile Include="..\src\x3f\x3f_utils_patched.cpp" />
<ClCompile Include="..\src\demosaic\xtrans_demosaic.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\internal\dcraw_defs.h" />
<ClInclude Include="..\internal\dcraw_fileio_defs.h" />
<ClInclude Include="..\internal\defines.h" />
<ClInclude Include="..\internal\dmp_include.h" />
<ClInclude Include="..\libraw\libraw.h" />
<ClInclude Include="..\libraw\libraw_alloc.h" />
<ClInclude Include="..\libraw\libraw_const.h" />
<ClInclude Include="..\internal\libraw_cxx_defs.h" />
<ClInclude Include="..\libraw\libraw_datastream.h" />
<ClInclude Include="..\libraw\libraw_internal.h" />
<ClInclude Include="..\internal\libraw_internal_funcs.h" />
<ClInclude Include="..\libraw\libraw_types.h" />
<ClInclude Include="..\libraw\libraw_version.h" />
<ClInclude Include="..\internal\var_defines.h" />
<ClInclude Include="..\internal\x3f_tools.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

View File

@@ -0,0 +1,295 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\src\demosaic\aahd_demosaic.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\adobepano.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\demosaic\ahd_demosaic.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\write\apply_profile.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\postprocessing\aspect_ratio.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\tables\cameralist.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\canon.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\decoders\canon_600.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\ciff.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\tables\colorconst.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\tables\colordata.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\cr3_parser.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\decoders\crx.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\utils\curves.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\demosaic\dcb_demosaic.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\postprocessing\dcraw_process.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\utils\decoder_info.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\decoders\decoders_dcraw.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\decoders\decoders_libraw.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\decoders\decoders_libraw_dcrdefs.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\demosaic\dht_demosaic.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\decoders\dng.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\integration\dngsdk_glue.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\epson.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\exif_gps.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\preprocessing\ext_preprocess.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\write\file_write.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\decoders\fp_dng.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\fuji.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\decoders\fuji_compressed.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\decoders\generic.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\hasselblad_model.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\identify.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\identify_tools.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\utils\init_close_utils.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\kodak.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\decoders\kodak_decoders.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\leica.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\libraw_c_api.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\libraw_datastream.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\decoders\load_mfbacks.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\makernotes.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\mediumformat.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\postprocessing\mem_image.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\minolta.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\demosaic\misc_demosaic.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\misc_parsers.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\nikon.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\normalize_model.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\olympus.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\utils\open.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\p1.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\pentax.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\utils\phaseone_processing.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\postprocessing\postprocessing_aux.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\postprocessing\postprocessing_utils.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\postprocessing\postprocessing_utils_dcrdefs.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\preprocessing\raw2image.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\integration\rawspeed_glue.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\utils\read_utils.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\samsung.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\decoders\smal.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\sony.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\preprocessing\subtract_black.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\utils\thumb_utils.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\metadata\tiff.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\write\tiff_writer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\decoders\unpack.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\decoders\unpack_thumb.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\utils\utils_dcraw.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\utils\utils_libraw.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\tables\wblists.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\x3f\x3f_parse_process.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\x3f\x3f_utils_patched.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\demosaic\xtrans_demosaic.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\internal\dcraw_defs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\internal\dcraw_fileio_defs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\internal\defines.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\internal\dmp_include.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\libraw\libraw.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\libraw\libraw_alloc.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\libraw\libraw_const.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\internal\libraw_cxx_defs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\libraw\libraw_datastream.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\libraw\libraw_internal.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\internal\libraw_internal_funcs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\libraw\libraw_types.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\libraw\libraw_version.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\internal\var_defines.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\internal\x3f_tools.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,6 @@
include (libraw-common.pro)
win32:LIBS+=libraw.lib
unix:LIBS+=-lraw
CONFIG-=qt
CONFIG+=debug_and_release
SOURCES=../samples/mem_image_sample.cpp

View File

@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{BF8A2750-B847-3BA6-9EAF-05F43380F46C}</ProjectGuid>
<RootNamespace>mem_image</RootNamespace>
<Keyword>Qt4VSv1.0</Keyword>
<WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.18362.0</WindowsTargetPlatformMinVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>debug-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>debug-x86_64\mem_image.obj\</IntermediateDirectory>
<PrimaryOutput>mem_image</PrimaryOutput>
</PropertyGroup>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>release-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>release-x86_64\mem_image.obj\</IntermediateDirectory>
<PrimaryOutput>mem_image</PrimaryOutput>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\mem_image.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">mem_image</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">true</IgnoreImportLibrary>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\mem_image.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">mem_image</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">true</IgnoreImportLibrary>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>debug-x86_64\mem_image.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>debug-x86_64\mem_image.obj\</ObjectFileName>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>debug-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>true</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<OutputFile>$(OutDir)\mem_image.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>release-x86_64\mem_image.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>None</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>release-x86_64\mem_image.obj\</ObjectFileName>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<ProgramDataBaseFileName></ProgramDataBaseFileName>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>release-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>false</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental>
<OptimizeReferences>true</OptimizeReferences>
<OutputFile>$(OutDir)\mem_image.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\samples\mem_image_sample.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\samples\mem_image_sample.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,6 @@
include (libraw-common.pro)
win32:LIBS+=libraw.lib
unix:LIBS+=-lraw
CONFIG-=qt
CONFIG+=debug_and_release
SOURCES=../samples/multirender_test.cpp

View File

@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{30D21208-219A-3AA8-ADCF-E6B1FFAF6A73}</ProjectGuid>
<RootNamespace>multirender_test</RootNamespace>
<Keyword>Qt4VSv1.0</Keyword>
<WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.18362.0</WindowsTargetPlatformMinVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>debug-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>debug-x86_64\multirender_test.obj\</IntermediateDirectory>
<PrimaryOutput>multirender_test</PrimaryOutput>
</PropertyGroup>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>release-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>release-x86_64\multirender_test.obj\</IntermediateDirectory>
<PrimaryOutput>multirender_test</PrimaryOutput>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\multirender_test.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">multirender_test</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">true</IgnoreImportLibrary>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\multirender_test.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">multirender_test</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">true</IgnoreImportLibrary>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>debug-x86_64\multirender_test.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>debug-x86_64\multirender_test.obj\</ObjectFileName>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>debug-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>true</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<OutputFile>$(OutDir)\multirender_test.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>release-x86_64\multirender_test.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>None</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>release-x86_64\multirender_test.obj\</ObjectFileName>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<ProgramDataBaseFileName></ProgramDataBaseFileName>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>release-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>false</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental>
<OptimizeReferences>true</OptimizeReferences>
<OutputFile>$(OutDir)\multirender_test.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\samples\multirender_test.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\samples\multirender_test.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,6 @@
include (libraw-common.pro)
win32:LIBS+=libraw.lib
unix:LIBS+=-lraw
CONFIG-=qt
CONFIG+=debug_and_release
SOURCES=../samples/openbayer_sample.cpp

View File

@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{EF67FEF1-4B19-3765-A660-9F8E9333DEF3}</ProjectGuid>
<RootNamespace>openbayer_sample</RootNamespace>
<Keyword>Qt4VSv1.0</Keyword>
<WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.18362.0</WindowsTargetPlatformMinVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>debug-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>debug-x86_64\openbayer_sample.obj\</IntermediateDirectory>
<PrimaryOutput>openbayer_sample</PrimaryOutput>
</PropertyGroup>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>release-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>release-x86_64\openbayer_sample.obj\</IntermediateDirectory>
<PrimaryOutput>openbayer_sample</PrimaryOutput>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\openbayer_sample.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">openbayer_sample</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">true</IgnoreImportLibrary>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\openbayer_sample.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">openbayer_sample</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">true</IgnoreImportLibrary>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>debug-x86_64\openbayer_sample.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>debug-x86_64\openbayer_sample.obj\</ObjectFileName>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>debug-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>true</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<OutputFile>$(OutDir)\openbayer_sample.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>release-x86_64\openbayer_sample.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>None</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>release-x86_64\openbayer_sample.obj\</ObjectFileName>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<ProgramDataBaseFileName></ProgramDataBaseFileName>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>release-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>false</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental>
<OptimizeReferences>true</OptimizeReferences>
<OutputFile>$(OutDir)\openbayer_sample.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\samples\openbayer_sample.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\samples\openbayer_sample.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,4 @@
include (libraw-common.pro)
CONFIG-=qt
CONFIG+=debug_and_release
SOURCES=../samples/postprocessing_benchmark.cpp

View File

@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{5C66A8FA-D211-3E2F-A2F1-0C3C665689CC}</ProjectGuid>
<RootNamespace>postprocessing_benchmark</RootNamespace>
<Keyword>Qt4VSv1.0</Keyword>
<WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.18362.0</WindowsTargetPlatformMinVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>debug-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>debug-x86_64\postprocessing_benchmark.obj\</IntermediateDirectory>
<PrimaryOutput>postprocessing_benchmark</PrimaryOutput>
</PropertyGroup>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>release-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>release-x86_64\postprocessing_benchmark.obj\</IntermediateDirectory>
<PrimaryOutput>postprocessing_benchmark</PrimaryOutput>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\postprocessing_benchmark.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">postprocessing_benchmark</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">true</IgnoreImportLibrary>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\postprocessing_benchmark.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">postprocessing_benchmark</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">true</IgnoreImportLibrary>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>debug-x86_64\postprocessing_benchmark.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>debug-x86_64\postprocessing_benchmark.obj\</ObjectFileName>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>libraw.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>debug-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>true</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<OutputFile>$(OutDir)\postprocessing_benchmark.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>release-x86_64\postprocessing_benchmark.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>None</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>release-x86_64\postprocessing_benchmark.obj\</ObjectFileName>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<ProgramDataBaseFileName></ProgramDataBaseFileName>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>libraw.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>release-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>false</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental>
<OptimizeReferences>true</OptimizeReferences>
<OutputFile>$(OutDir)\postprocessing_benchmark.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\samples\postprocessing_benchmark.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\samples\postprocessing_benchmark.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,6 @@
include (libraw-common.pro)
win32:LIBS+=libraw.lib
unix:LIBS+=-lraw
CONFIG-=qt
CONFIG+=debug_and_release
SOURCES=../samples/raw-identify.cpp

View File

@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{7C4F61DB-717E-36C9-B20E-36F8E218AB51}</ProjectGuid>
<RootNamespace>raw-identify</RootNamespace>
<Keyword>Qt4VSv1.0</Keyword>
<WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.18362.0</WindowsTargetPlatformMinVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>debug-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>debug-x86_64\raw-identify.obj\</IntermediateDirectory>
<PrimaryOutput>raw-identify</PrimaryOutput>
</PropertyGroup>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>release-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>release-x86_64\raw-identify.obj\</IntermediateDirectory>
<PrimaryOutput>raw-identify</PrimaryOutput>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\raw-identify.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">raw-identify</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">true</IgnoreImportLibrary>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\raw-identify.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">raw-identify</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">true</IgnoreImportLibrary>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>debug-x86_64\raw-identify.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>debug-x86_64\raw-identify.obj\</ObjectFileName>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>debug-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>true</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<OutputFile>$(OutDir)\raw-identify.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>release-x86_64\raw-identify.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>None</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>release-x86_64\raw-identify.obj\</ObjectFileName>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<ProgramDataBaseFileName></ProgramDataBaseFileName>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>release-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>false</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental>
<OptimizeReferences>true</OptimizeReferences>
<OutputFile>$(OutDir)\raw-identify.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\samples\raw-identify.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\samples\raw-identify.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,6 @@
include (libraw-common.pro)
win32:LIBS+=libraw.lib
unix:LIBS+=-lraw
CONFIG-=qt
CONFIG+=debug_and_release
SOURCES=../samples/rawtextdump.cpp

View File

@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{53A1E3F0-8032-348E-B3BF-3E540A45005F}</ProjectGuid>
<RootNamespace>rawtextdump</RootNamespace>
<Keyword>Qt4VSv1.0</Keyword>
<WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.18362.0</WindowsTargetPlatformMinVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>debug-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>debug-x86_64\rawtextdump.obj\</IntermediateDirectory>
<PrimaryOutput>rawtextdump</PrimaryOutput>
</PropertyGroup>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>release-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>release-x86_64\rawtextdump.obj\</IntermediateDirectory>
<PrimaryOutput>rawtextdump</PrimaryOutput>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\rawtextdump.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">rawtextdump</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">true</IgnoreImportLibrary>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\rawtextdump.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">rawtextdump</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">true</IgnoreImportLibrary>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>debug-x86_64\rawtextdump.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>debug-x86_64\rawtextdump.obj\</ObjectFileName>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>debug-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>true</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<OutputFile>$(OutDir)\rawtextdump.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>release-x86_64\rawtextdump.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>None</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>release-x86_64\rawtextdump.obj\</ObjectFileName>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<ProgramDataBaseFileName></ProgramDataBaseFileName>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>release-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>false</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental>
<OptimizeReferences>true</OptimizeReferences>
<OutputFile>$(OutDir)\rawtextdump.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\samples\rawtextdump.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\samples\rawtextdump.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,6 @@
include (libraw-common.pro)
win32:LIBS+=libraw.lib
unix:LIBS+=-lraw
CONFIG-=qt
CONFIG+=debug_and_release
SOURCES=../samples/simple_dcraw.cpp

View File

@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{AD1E31D8-A022-3672-982F-C8280A0D6458}</ProjectGuid>
<RootNamespace>simple_dcraw</RootNamespace>
<Keyword>Qt4VSv1.0</Keyword>
<WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.18362.0</WindowsTargetPlatformMinVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>debug-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>debug-x86_64\simple_dcraw.obj\</IntermediateDirectory>
<PrimaryOutput>simple_dcraw</PrimaryOutput>
</PropertyGroup>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>release-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>release-x86_64\simple_dcraw.obj\</IntermediateDirectory>
<PrimaryOutput>simple_dcraw</PrimaryOutput>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\simple_dcraw.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">simple_dcraw</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">true</IgnoreImportLibrary>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\simple_dcraw.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">simple_dcraw</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">true</IgnoreImportLibrary>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>debug-x86_64\simple_dcraw.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>debug-x86_64\simple_dcraw.obj\</ObjectFileName>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>debug-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>true</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<OutputFile>$(OutDir)\simple_dcraw.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>release-x86_64\simple_dcraw.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>None</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>release-x86_64\simple_dcraw.obj\</ObjectFileName>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<ProgramDataBaseFileName></ProgramDataBaseFileName>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>release-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>false</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental>
<OptimizeReferences>true</OptimizeReferences>
<OutputFile>$(OutDir)\simple_dcraw.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\samples\simple_dcraw.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\samples\simple_dcraw.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,6 @@
include (libraw-common.pro)
win32:LIBS+=libraw.lib
unix:LIBS+=-lraw
CONFIG-=qt
CONFIG+=debug_and_release
SOURCES=../samples/unprocessed_raw.cpp

View File

@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{1333E21E-D3B5-3640-9A4D-D8955082B855}</ProjectGuid>
<RootNamespace>unprocessed_raw</RootNamespace>
<Keyword>Qt4VSv1.0</Keyword>
<WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.18362.0</WindowsTargetPlatformMinVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>debug-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>debug-x86_64\unprocessed_raw.obj\</IntermediateDirectory>
<PrimaryOutput>unprocessed_raw</PrimaryOutput>
</PropertyGroup>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="Configuration">
<PlatformToolset>v142</PlatformToolset>
<OutputDirectory>release-x86_64\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
<CharacterSet>NotSet</CharacterSet>
<ConfigurationType>Application</ConfigurationType>
<IntermediateDirectory>release-x86_64\unprocessed_raw.obj\</IntermediateDirectory>
<PrimaryOutput>unprocessed_raw</PrimaryOutput>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">debug-x86_64\unprocessed_raw.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">unprocessed_raw</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">true</IgnoreImportLibrary>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">release-x86_64\unprocessed_raw.obj\</IntDir>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">unprocessed_raw</TargetName>
<IgnoreImportLibrary Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">true</IgnoreImportLibrary>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>debug-x86_64\unprocessed_raw.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>debug-x86_64\unprocessed_raw.obj\</ObjectFileName>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>debug-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>true</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<OutputFile>$(OutDir)\unprocessed_raw.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">
<ClCompile>
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>release-x86_64\unprocessed_raw.obj\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>None</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>release-x86_64\unprocessed_raw.obj\</ObjectFileName>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<ProgramDataBaseFileName></ProgramDataBaseFileName>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;libraw.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>release-x86_64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot; %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>false</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental>
<OptimizeReferences>true</OptimizeReferences>
<OutputFile>$(OutDir)\unprocessed_raw.exe</OutputFile>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Link>
<Midl>
<DefaultCharType>Unsigned</DefaultCharType>
<EnableErrorChecks>None</EnableErrorChecks>
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\samples\unprocessed_raw.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\samples\unprocessed_raw.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

12
rtengine/libraw/clist2c.pl Executable file
View File

@@ -0,0 +1,12 @@
#!/usr/bin/perl
while (<>)
{
chomp;
s/^\s+//;
s/^\s+\*\s+//;
s/^\s+//;
s/\"/\\\"/g;
s/\s+$//;
print "\"$_\",\n";
}

54
rtengine/libraw/clist2html.pl Executable file
View File

@@ -0,0 +1,54 @@
#!/usr/bin/perl
use Data::Dumper;
@makes=( "AgfaPhoto", "Canon", "Casio", "Digital Bolex", "Epson", "Fujifilm", "Imacon",
"Mamiya", "Minolta", "Motorola", "Kodak", "Konica", "Leica", "Hasselblad",
"Nikon", "Nokia", "Olympus", "Pentax", "Phase One", "Ricoh",
"Samsung", "Sigma", "Sinar", "Sony" );
MAINLOOP:
while(<>)
{
chomp;
$cname = $_;
$cname=~s/^\s+//g;
$cname=~s/\s+$//g;
for my $camera (@makes)
{
if ($cname=~/\Q$camera\E\s+(.*)/)
{
$model = $1;
push @{$cameralist->{$camera}},$model;
next MAINLOOP;
}
}
if($cname=~/(\S+)\s+(.*)/)
{
($make,$model) = ($1,$2);
push @{$cameralist->{$make}},$model;
next MAINLOOP;
}
push @{$cameralist->{$make}},"NO MODEL";
}
my $havenx1=0;
print "<ul>\n";
for my $make (sort keys %$cameralist)
{
if( $#{$cameralist->{$make}} < 1)
{
print "<li>$make $cameralist->{$make}->[0]</li>\n";
}
else
{
print "<li>$make\n<ul>\n";
for my $model (@{$cameralist->{$make}})
{
print " <li>$model</li>\n";
}
print "</ul>\n</li>\n";
}
}
print "</ul>\n";

View File

@@ -0,0 +1,153 @@
# Initialization
AC_INIT([LibRaw], m4_esyscmd([./version.sh]), [info@libraw.org], [], [http://www.libraw.org])
AM_INIT_AUTOMAKE([foreign no-define])
#AM_SILENT_RULES([yes])
AC_CONFIG_MACRO_DIR([m4])
AC_CANONICAL_HOST
# Tools to use
AC_PROG_CXX
AC_PROG_CC
AC_PROG_LIBTOOL
AC_ENABLE_SHARED
AC_ENABLE_STATIC
AC_LIBTOOL_WIN32_DLL
AC_LIBTOOL_SETUP
AC_SUBST(LIBTOOL_DEPS)
# Config files to generate
AC_CONFIG_FILES([
Makefile
libraw.pc
libraw_r.pc
])
# check if we want OpenMP support
AC_ARG_ENABLE([openmp],
[ --enable-openmp Enable OpenMP support],
[case "${enableval}" in
yes) openmp=true ;;
no) openmp=false ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-openmp]) ;;
esac],[openmp=true])
if test x$openmp = xtrue ; then
AX_OPENMP([
CXXFLAGS="$CXXFLAGS $OPENMP_CFLAGS"
CFLAGS="$CFLAGS $OPENMP_CFLAGS"
AC_SUBST([PC_OPENMP],[" $OPENMP_CFLAGS"])
],[
AC_MSG_WARN([OpenMP support cannot be enabled because your system doesn't support it.])
])
fi
# check for libjpeg v8
AC_ARG_ENABLE([jpeg],
[ --enable-jpeg Enable JPEG support for Lossy compressed DNG files],
[case "${enableval}" in
yes) jpeg=true ;;
no) jpeg=false ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-jpeg]) ;;
esac],[jpeg=true])
if test x$jpeg = xtrue; then
AC_CHECK_LIB([jpeg], [jpeg_mem_src],
[
AC_CHECK_HEADERS([jpeglib.h], [
CPPFLAGS="$CPPFLAGS -DUSE_JPEG -DUSE_JPEG8"
LIBS="$LIBS -ljpeg"
AC_SUBST([PACKAGE_LIBS_PRIVATE],"-ljpeg $PACKAGE_LIBS_PRIVATE")
], AC_MSG_WARN([no jpeg headers found]))
],
AC_MSG_WARN([libjpeg not found])
)
fi
# check for Jasper (JPEG2000) support
AC_ARG_ENABLE([jasper],
[ --enable-jasper Enable Jasper (JPEG2000) support for RedCine files],
[case "${enableval}" in
yes) jasper=true ;;
no) jasper=false ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-jasper]) ;;
esac],[jasper=true])
if test x$jasper = xtrue; then
AC_CHECK_LIB([jasper], [jas_init],
[
AC_CHECK_HEADERS([jasper/jasper.h], [
CPPFLAGS="$CPPFLAGS -DUSE_JASPER"
LIBS="$LIBS -ljasper"
AC_SUBST([PACKAGE_LIBS_PRIVATE],"-ljasper $PACKAGE_LIBS_PRIVATE")
], AC_MSG_WARN([no jasper headers found]))
],
AC_MSG_WARN([libjasper not found])
)
fi
# check if we want zlib support
AC_ARG_ENABLE([zlib],
[ --enable-zlib Enable zlib support for deflate compressed DNG files],
[case "${enableval}" in
yes) zlib=true ;;
no) zlib=false ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-zlib]) ;;
esac],[zlib=true])
if test x$zlib = xtrue; then
PKG_CHECK_MODULES([ZLIB],[zlib],[
CPPFLAGS="$CPPFLAGS $ZLIB_CFLAGS -DUSE_ZLIB"
LIBS="$LIBS $ZLIB_LIBS"
AC_SUBST([PACKAGE_REQUIRES],[zlib])
],
AC_MSG_WARN([zlib support cannot be enabled])
)
fi
# check if we want LCMS support
AC_ARG_ENABLE([lcms],
[ --enable-lcms Enable LCMS support],
[case "${enableval}" in
yes) lcms=true ;;
no) lcms=false ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-lcms]) ;;
esac],[lcms=true])
if test x$lcms = xtrue; then
PKG_CHECK_MODULES([LCMS2],[lcms2],[
CPPFLAGS="$CPPFLAGS $LCMS2_CFLAGS -DUSE_LCMS2"
LIBS="$LIBS $LCMS2_LIBS"
AC_SUBST([PACKAGE_REQUIRES],[lcms2])
],[
PKG_CHECK_MODULES([LCMS],[lcms],[
CPPFLAGS="$CPPFLAGS $LCMS_CFLAGS -DUSE_LCMS"
LIBS="$LIBS $LCMS_LIBS"
AC_SUBST([PACKAGE_REQUIRES],[lcms])
],[
AC_MSG_WARN([LCMS support cannot be enabled])
])
])
fi
# check if we want build examples
AC_ARG_ENABLE([examples],
[ --enable-examples Enable building of examples],
[case "${enableval}" in
yes) examples=true ;;
no) examples=false ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-examples]) ;;
esac],[examples=true])
AM_CONDITIONAL([EXAMPLES], [test x$examples = xtrue])
LIBS="$LIBS -lm"
case "${host_os}" in
*mingw32*) LIBS="$LIBS -lws2_32" ;;
esac
AC_SUBST([LIBRAW_SHLIB_VERSION],m4_esyscmd([./shlib-version.sh]))
AC_SUBST([LIBRAW_RELEASE_VERSION],m4_esyscmd([./version.sh]))
AC_OUTPUT

View File

@@ -0,0 +1,187 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
</head>
<body>
<p>LibRaw: C API<a href="index.html">[back to Index]</a></p>
<h1>LibRaw: C API</h1>
<p>LibRaw C API is a wrapper around C++ API; therefore, virtually all
documentation to C API functions is represented by a set of hyperlinks to
the corresponding places in the <a href="API-CXX.html">description of C++
API</a>.</p>
<p>Contents</p>
<ol>
<li><a href="#init">Initialization and de</a><a href="#init">nitialization</a></li>
<li><a href="#return">Returned values</a></li>
<li><a href="#dataload">Data loading</a></li>
<li><a href="#setters">Parameters getters/setters</a></li>
<li><a href="#utility">Auxiliary Functions</a></li>
<li><a href="#dcrawemu">Data Postprocessing, Emulation of dcraw Behavior</a>
<ul>
<li><a href="#dcrawparams">Setting of Parameters</a></li>
<li><a href="#emu">Emulation of dcraw Behavior</a></li>
</ul>
</li>
<li><a href="#write">Writing to Output Files</a></li>
<li><a href="#memwrite">Writing processing results to memory buffer</a></li>
</ol>
<p><a name="init"></a></p>
<h2>Initialization and denitialization</h2>
<dl>
<dt>libraw_data_t *libraw_init(unsigned int flags);</dt>
<dd> The function returns the pointer to the <a href="#API-datastruct.html#libraw_data_t">instance
of libraw_data_t structure</a>.<br>
The resultant pointer should be passed as the first argument to all C
API functions (except for libraw_strerror). <br>
Returns NULL in case of error, pointer to the structure in all other
cases. </dd>
<dt>void libraw_close(libraw_data_t *);</dt>
<dd> Closes libraw_data_t handler and deallocates all memory. </dd>
</dl>
<p><a name="return"></a></p>
<h2>Returned values</h2>
<p>Functions of C API return EINVAL (see errno.h) if the null pointer was
passed to them as the first argument. In all other cases, the <a href="API-CXX.html#return">C++
API return code</a> is returned.</p>
<p><a name="dataload"></a></p>
<h2>Data Loading from a File/Buffer</h2>
<dl>
<dt>int libraw_open_file(libraw_data_t*, const char *)</dt>
<dt>int libraw_open_file_ex(libraw_data_t*, const char *,INT64
bigfile_size)</dt>
<dt>WIN32: int libraw_open_wfile(libraw_data_t*, const wchar_t *)</dt>
<dt>WIN32: int libraw_open_wfile_ex(libraw_data_t*, const wchar_t *,INT64
bigfile_size)</dt>
<dd>See <a href="API-CXX.html#open_file">LibRaw::open_file()</a></dd>
<dt>int libraw_open_buffer(libraw_data_t*, void *buffer, size_t bufsize)</dt>
<dd>See <a href="API-CXX.html#open_buffer">LibRaw::open_buffer()</a></dd>
<dt>int libraw_open_bayer(libraw_data_t *lr, unsigned char *data, unsigned
datalen, ushort _raw_width, ushort _raw_height, ushort _left_margin,
ushort _top_margin, ushort _right_margin, ushort _bottom_margin,
unsigned char procflags, unsigned char bayer_battern, unsigned
unused_bits, unsigned otherflags, unsigned black_level)</dt>
<dd>See <a href="API-CXX.html#open_bayer">LibRaw::open_bayer()</a></dd>
<dt>int libraw_unpack(libraw_data_t*);</dt>
<dd>See <a href="API-CXX.html#unpack">LibRaw::unpack()</a></dd>
<dt>int libraw_unpack_thumb(libraw_data_t*);</dt>
<dd>See <a href="API-CXX.html#unpack_thumb">LibRaw::unpack_thumb()</a></dd>
<dt>int libraw_unpack_thumb_ex(libraw_data_t*,int);</dt>
<dd>See <a href="API-CXX.html#unpack_thumb_ex">LibRaw::unpack_thumb_ex()</a></dd>
</dl>
<p><a name="setters"></a></p>
<h2>Parameters setters/getters</h2>
<p>These functions provides interface to imgdata.params, .sizes and .color
fields which works regardless of LibRaw versions used when building
calling app and the library itself.</p>
<ul>
<li>int libraw_get_raw_height(libraw_data_t *lr); </li>
<li>int libraw_get_raw_width(libraw_data_t *lr); </li>
<li>int libraw_get_iheight(libraw_data_t *lr); </li>
<li>int libraw_get_iwidth(libraw_data_t *lr); </li>
<li>float libraw_get_cam_mul(libraw_data_t *lr,int index); </li>
<li>float libraw_get_pre_mul(libraw_data_t *lr,int index); </li>
<li>float libraw_get_rgb_cam(libraw_data_t *lr,int index1, int index2);</li>
<li>libraw_iparams_t *libraw_get_iparams(libraw_data_t *lr);</li>
<li>libraw_lensinfo_t *libraw_get_lensinfo(libraw_data_t *lr);</li>
<li>libraw_imgother_t *libraw_get_imgother(libraw_data_t *lr);</li>
<li>int libraw_get_color_maximum(libraw_data_t *lr); </li>
<li>void libraw_set_user_mul(libraw_data_t *lr,int index, float val);</li>
<li>void libraw_set_demosaic(libraw_data_t *lr,int value); </li>
<li>void libraw_set_adjust_maximum_thr(libraw_data_t *lr,float value); </li>
<li>void libraw_set_output_color(libraw_data_t *lr,int value); </li>
<li>void libraw_set_output_bps(libraw_data_t *lr,int value);</li>
<li>void libraw_set_gamma(libraw_data_t *lr,int index, float value);</li>
<li>void libraw_set_no_auto_bright(libraw_data_t *lr,int value);</li>
<li>void libraw_set_bright(libraw_data_t *lr,float value);</li>
<li>void libraw_set_highlight(libraw_data_t *lr,int value);</li>
<li>void libraw_set_fbdd_noiserd(libraw_data_t *lr,int value);</li>
</ul>
<p><a name="utility"></a></p>
<h2>Auxiliary Functions</h2>
<dl>
<dt>const char* libraw_version()</dt>
<dd>See <a href="API-CXX.html#version">LibRaw::version()</a></dd>
<dt>int libraw_versionNumber()</dt>
<dt>See <a href="API-CXX.html#versionNumber">LibRaw::versionNumber()</a><br>
</dt>
<dd>See <a href="API-CXX.html#versionNumber">LibRaw::versionNumber()</a></dd>
<dt>bool LIBRAW_CHECK_VERSION(major,minor,patch)</dt>
<dd>See <a href="API-CXX.html#LIBRAW_CHECK_VERSION">LIBRAW_CHECK_VERSION</a></dd>
<dt>unsigned libraw_capabilities()</dt>
<dd>See <a href="API-CXX.html#capabilities">LibRaw::capabilities()</a></dd>
<dt>int libraw_cameraCount()</dt>
<dd>See <a href="API-CXX.html#cameraCount">LibRaw::cameraCount()</a></dd>
<dt>const char* libraw_cameraList()</dt>
<dd>See <a href="API-CXX.html#cameraList">LibRaw::cameraList()</a></dd>
<dt>int libraw_get_decoder_info(libraw_data_t*,libraw_decoder_info_t *);</dt>
<dd>See <a href="API-CXX.html#get_decoder_info">LibRaw::get_decoder_info()</a></dd>
<dt>const char* libraw_unpack_function_name(libraw_data_t*);</dt>
<dd>See <a href="API-CXX.html#unpack_function_name">LibRaw::unpack_function_name()</a></dd>
<dt>int libraw_COLOR(libraw_data_t*,int row,int col);</dt>
<dd>See <a href="API-CXX.html#COLOR">LibRaw::COLOR()</a></dd>
<dt>void libraw_subtract_black(libraw_data_t*);</dt>
<dd>See <a href="API-CXX.html#add_subtract_black">LibRaw::subtract_black()</a></dd>
<dt>void libraw_recycle_datastream(libraw_data_t*);</dt>
<dd>See <a href="API-CXX.html#recycle_datastream">LibRaw::recycle_datastream()</a></dd>
<dt>void libraw_recycle(libraw_data_t*);</dt>
<dd>See <a href="API-CXX.html#recycle">LibRaw::recycle()</a></dd>
<dt>const char *libraw_strerror(int errorcode);</dt>
<dd>See <a href="API-CXX.html#libraw_strerror">LibRaw::strerror</a></dd>
<dt>const char *libraw_strprogress(enum LibRaw_progress);</dt>
<dd>See <a href="API-CXX.html#strprogress">LibRaw::strprogress</a></dd>
<dt>void libraw_set_dataerror_handler(libraw_data_t*,data_callback func,
void *);</dt>
<dd>See <a href="API-CXX.html#dataerror">LibRaw::set_dataerror_handler()</a></dd>
<dt>void libraw_set_progress_handler(libraw_data_t*,progress_callback
func, void *);</dt>
<dd>See <a href="API-CXX.html#progress">LibRaw::set_progress_handler()</a></dd>
</dl>
<p><a name="dcrawemu"></a></p>
<h2>Data Postprocessing, Emulation of dcraw Behavior</h2>
<p><a name="dcrawparams"></a></p>
<h3>Setting of Parameters</h3>
<p>The postprocessing parameters for the calls described below are set, just
as for C++ API, via setting of fields in the libraw_output_params_t
structure:</p>
<pre> libraw_data_t *ptr = libraw_init(0);
ptr-&gt;params.output_tiff = 1; // output to TIFF
</pre>
<p>Fields of this structure are described in the <a href="API-datastruct.html#libraw_output_params_t">documentation
to libraw_output_params_t</a>. For notes on their use, see <a href="API-notes.html">API
notes</a>.</p>
<p><a name="emu"></a></p>
<h3>Emulation of dcraw Behavior</h3>
<dl>
<dt>int libraw_raw2image(libraw_data_t*);</dt>
<dd>See <a href="API-CXX.html#raw2image">LibRaw::raw2image</a></dd>
<dt>int libraw_free_image(libraw_data_t*);</dt>
<dd>See <a href="API-CXX.html#free_image">LibRaw::free_image</a></dd>
<dt>int libraw_adjust_sizes_info_only(libraw_data_t*);</dt>
<dd>See <a href="API-CXX.html#adjust_sizes_info_only">LibRaw::adjust_sizes_info_only()</a></dd>
<dt>int libraw_dcraw_process(libraw_data_t* lr);</dt>
<dd>See <a href="API-CXX.html#dcraw_process">LibRaw::dcraw_process()</a></dd>
</dl>
<h2>Writing to Output Files</h2>
<dl>
<dt>int libraw_dcraw_ppm_tiff_writer(libraw_data_t* lr,const char
*filename);</dt>
<dd>See <a href="API-CXX.html#dcraw_ppm_tiff_writer">LibRaw::dcraw_ppm_tiff_writer()</a></dd>
<dt>int libraw_dcraw_thumb_writer(libraw_data_t* lr,const char *fname);</dt>
<dd>See <a href="API-CXX.html#dcraw_thumb_writer">LibRaw::dcraw_thumb_writer()</a></dd>
</dl>
<h2>Writing processing results to memory buffer</h2>
<dl>
<dt>libraw_processed_image_t *libraw_dcraw_make_mem_image(libraw_data_t*
lr,int * errcode)</dt>
<dd>See <a href="API-CXX.html#dcraw_make_mem_image">LibRaw::dcraw_make_mem_image()</a></dd>
<dt>libraw_processed_image_t *libraw_dcraw_make_mem_thumb(libraw_data_t*
lr,int * errcode)</dt>
<dd>See <a href="API-CXX.html#dcraw_make_mem_thumb">LibRaw::dcraw_make_mem_thumb()</a></dd>
<dt>void libraw_dcraw_clear_mem(libraw_processed_image_t *);</dt>
<dd>See <a href="API-CXX.html#dcraw_clear_mem">LibRaw::dcraw_clear_mem()</a></dd>
<dd><br>
</dd>
</dl>
<p><a href="index.html">[back to Index]</a></p>
</body>
</html>

View File

@@ -0,0 +1,881 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
</head>
<body>
<p>LibRaw C++ API<a href="index.html">[back to Index]</a></p>
<h1>LibRaw C++ API</h1>
<p>Contents</p>
<ol>
<li><a href="#LibRaw">LibRaw Objects</a></li>
<li><a href="#return">Returned values</a></li>
<li><a href="#dataload">Methods Loading Data from a File</a>
<ul>
<li><a href="#open_datastream">int
LibRaw::open_datastream(LibRaw_abstract_datastream *stream)</a></li>
<li><a href="#open_file">int LibRaw::open_file(const char
*rawfile[,INT64 bigfile_size])</a></li>
<li><a href="#open_buffer">int LibRaw::open_buffer(void *buffer,
size_t bufsize)</a></li>
<li><a href="#open_bayer">int LibRaw::open_bayer(...)</a></li>
<li><a href="#unpack">int LibRaw::unpack(void)</a></li>
<li><a href="#unpack_thumb">int LibRaw::unpack_thumb(void)</a></li>
<li><a href="#unpack_thumb_ex">int LibRaw::unpack_thumb_ex(int)</a></li>
</ul>
</li>
<li><a href="#utility">Auxiliary Functions</a>
<ul>
<li>Library version info
<ul>
<li><a href="#version">const char* LibRaw::version()</a></li>
<li><a href="#versionNumber">int LibRaw::versionNumber()</a></li>
<li><a href="#LIBRAW_CHECK_VERSION">bool
LIBRAW_CHECK_VERSION(major,minor,patch)</a></li>
</ul>
</li>
<li>List of supported cameras
<ul>
<li><a href="#cameraCount">int LibRaw::cameraCount()</a></li>
<li><a href="#cameraList">const char** LibRaw::cameraList()</a></li>
</ul>
</li>
<li><a href="#set_rawspeed_camerafile">int
LibRaw::set_rawspeed_camerafile(char *path_to_cameras_xml)</a></li>
<li><a href="#get_decoder_info">int
LibRaw::get_decoder_info(libraw_decoder_info_t *)</a></li>
<li><a href="#unpack_function_name">const char*
LibRaw::unpack_function_name()</a></li>
<li><a href="#COLOR">int LibRaw::COLOR()</a></li>
<li><a href="#error_count">int LibRaw::error_count()</a></li>
<li><a href="#setCancelFlag">void LibRaw::setCancelFlag()</a></li>
<li><a href="#clearCancelFlag">void LibRaw::clearCancelFlag()</a></li>
<li><a href="#subtract_black">int LibRaw::subtract_black()</a></li>
<li><a href="#adjust_to_raw_inset_crop">int
LibRaw::adjust_to_raw_inset_crop()</a></li>
<li><a href="#floatingpoint">Support for Floating Point data</a></li>
<li><a href="#ycc">Support for YCC formats</a></li>
<li><a href="#recycle">void LibRaw::recycle_datastream(void)</a></li>
<li><a href="#recycle">void LibRaw::recycle(void)</a></li>
<li><a href="#%7ELibRaw">LibRaw::~LibRaw()</a></li>
<li><a href="#strprogress">const char* LibRaw::strprogress(enum
LibRaw_progress code)</a></li>
<li><a href="#libraw_strerror">const char* LibRaw::strerror(int
errorcode)</a></li>
<li><a href="#callbacks">Setting Error Notification Functions and
other callbacks</a>
<ul>
<li><a href="#progress">User callback for progress
indication/interruption</a></li>
<li><a href="#exif">User callback for exif/makernotes parser
routines</a></li>
<li><a href="#dataerror">File Read Error Notifier</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#dcrawemu">Data Postprocessing: Emulation of dcraw Behavior</a>
<ul>
<li><a href="#dcraw_params">Parameter Setting</a></li>
<li><a href="#raw2image">int LibRaw::raw2image</a></li>
<li><a href="#free_image">void LibRaw::free_image</a></li>
<li><a href="#adjust_sizes_info_only">int
LibRaw::adjust_sizes_info_only(void)</a></li>
<li><a href="#dcraw_process">int LibRaw::dcraw_process(void)</a></li>
</ul>
</li>
<li><a href="#dcrawrite">Data Output to Files: Emulation of dcraw Behavior</a>
<ul>
<li><a href="#dcraw_ppm_tiff_writer">int
LibRaw::dcraw_ppm_tiff_writer(const char *outfile)</a></li>
<li><a href="#dcraw_thumb_writer">int LibRaw::dcraw_thumb_writer(const
char *thumbfile)</a></li>
</ul>
</li>
<li><a href="#memwrite">Copying unpacked data into memory buffer</a>
<ul>
<li><a href="#get_mem_image_format">void get_mem_image_format(int
*widthp, int *heightp, int *colorsp, int *bpp)</a></li>
<li><a href="#copy_mem_image">int LibRaw::copy_mem_image(void* scan0,
int stride, int bgr)</a></li>
<li><a href="#dcraw_make_mem_image">libraw_processed_image_t
*dcraw_make_mem_image(int *errorcode)</a></li>
<li><a href="#dcraw_make_mem_thumb">libraw_processed_image_t
*dcraw_make_mem_thumb(int *errorcode)</a></li>
<li><a href="#dcraw_clear_mem">void
LibRaw::dcraw_clear_mem(libraw_processed_image_t *)</a></li>
</ul>
</li>
<li><a href="#datastream">Input layer abstraction</a>
<ul>
<li><a href="LibRaw_abstract_datastream">class
LibRaw_abstract_datastream - abstract RAW read interface</a><a href="#datastream_methods">LibRaw_abstract_datastream
class methods</a>
<ul>
<li><a href="#datastream_methods_utility">Object verification</a></li>
<li><a href="#datastream_methods_read">Stream read and positioning</a></li>
<li><a href="#datastream_methods_other">Other methods</a></li>
</ul>
</li>
<li><a href="#datastream_derived">Derived input classes included in
LibRaw</a>
<ul>
<li><a href="#file_datastream">class LibRaw_file_datastream - file
input interface</a></li>
<li><a href="#bigfile_datastream">class LibRaw_file_datastream -
file input interface for large files</a></li>
<li><a href="#buffer_datastream">class LibRaw_buffer_datastream -
input from memory buffer</a></li>
</ul>
</li>
<li><a href="#own_datastreams">Own datastream derived classes</a>
<ul>
<li><a href="#substream">substream field: secondary input stream</a></li>
</ul>
</li>
</ul>
</li>
</ol>
<p><a name="LibRaw"></a></p>
<h2>LibRaw Objects</h2>
<p>The main LibRaw object (class) is created either without parameters or
with flags determining the object behavior.</p>
<pre>#include "libraw/libraw.h"<br>...<br><br> LibRaw ImageProcessor(unsigned int flags=0);<br>...<br> </pre>
<p>Flags (several flags are combined via operator |, i.e., bitwise OR):</p>
<ul>
<li><strong>LIBRAW_OPTIONS_NO_DATAERR_CALLBACK</strong>: do not set the
standard <a href="#callbacks">file read error handler</a> (standard
handler outputs the error report in stderr).</li>
</ul>
<p>Three groups of methods are used for image processing</p>
<ul>
<li><a href="#dataload">Data loading from the RAW file</a></li>
<li><a href="#dcrawemu">Postprocessing functions emulating the dcraw
behavior</a></li>
<li><a href="#dcrawrite">File output functions emulating the dcraw
behavior</a>.</li>
</ul>
<p>The results of processing are placed in the imgdata field of type <a href="API-datastruct.html">libraw_data_t</a>;
the same data set contains fields that control the postprocessing and
output.</p>
<p><a name="return"></a></p>
<h2>Returned Values</h2>
<p>All LibRaw API functions return an integer number in accordance with the
<a href="API-notes.html#errors">return code convention</a>. Please read
the descriptions of <a href="API-notes.html#errors">this convention</a>
and <a href="#callbacks">LibRaw behavior in cases of fatal errors</a>.</p>
<p><a name="dataload"></a></p>
<h2>Methods Loading Data from a File</h2>
<p><a name="open_datastream"></a></p>
<h3>int LibRaw::open_datastream(LibRaw_abstract_datastream *stream)</h3>
<p>Opens a datastream with RAW data, reads metadata (EXIF) from it, and
fills the following structures:</p>
<ul>
<li>imgdata.idata (<a href="API-datastruct.html#libraw_iparams_t">libraw_iparams_t</a>),</li>
<li>imgdata.sizes (<a href="API-datastruct.html#libraw_image_sizes_t">libraw_image_sizes_t</a>),</li>
<li>imgdata.color (<a href="API-datastruct.html#libraw_colordata_t">libraw_colordata_t</a>),</li>
<li>imgdata.other (<a href="API-datastruct.html#libraw_imgother_t">libraw_imgother_t</a>),
and</li>
<li>imgdata.thumbnail (<a href="API-datastruct.html#libraw_thumbnail_t">libraw_thumbnail_t</a>).</li>
</ul>
<p>The function returns an integer number in accordance with the <a href="API-notes.html#errors">return
code convention</a>: positive if any system call has returned an error,
negative (from the <a href="API-datastruct.html#LibRaw_errors">LibRaw
error list</a>) if there has been an error situation within LibRaw.</p>
<p>Before file opening, <a href="#recycle">recycle()</a> is always called;
hence, if several images are processed in the batch mode, there is no need
to call recycle() at the end of each processing cycle.</p>
<p><strong>Input data</strong>: pointer to object, derived from <a href="#datastream">LibRaw_abstract_datastream</a>
class. This object should be initialized and ready to read. This object
should be destroyed in calling application after use.</p>
<p><a name="open_file"></a></p>
<h3>int LibRaw::open_file(const char *filename[,INT64 bigfile_size])</h3>
<h3>Win32 only: int LibRaw::open_file(const wchar_t *filename[,INT64
bigfile_size])</h3>
<p>Creates an <a href="#file_datastream">LibRaw_file_datastream</a> object,
calls <a href="#open_datastream">open_datastream()</a>. If succeed, sets
internal flag which signals to destroy internal datastream object on <a href="#recycle">recycle()</a>.
On failure, just created file_datastream destroyed immediately.</p>
<p>Second optional parameter <strong>bigfile_size</strong> controls
background I/O interface used for file operations. For files smaller than
bigfile_size the <a href="#file_datastream">LibRaw_file_datastream</a>
will be used and the <a href="#bigfile_datastream">LibRaw_bigfile_datastream</a>
otherwise.</p>
<p>The function returns an integer number in accordance with the <a href="API-notes.html#errors">return
code convention</a>: positive if any system call has returned an error,
negative (from the <a href="API-datastruct.html#LibRaw_errors">LibRaw
error list</a>) if there has been an error situation within LibRaw.</p>
<p><a name="open_buffer"></a></p>
<h3>int LibRaw::open_buffer(void *buffer, size_t bufsize)</h3>
<p>Created an <a href="#buffer_datastream">LibRaw_buffer_datastream</a>
object, calls <a href="#open_datastream">open_datastream()</a>. If
succeed, sets internal flag which signals to destroy internal datastream
object on <a href="#recycle">recycle()</a>. On failure, just created
file_datastream destroyed immediately.</p>
<p>The function returns an integer number in accordance with the <a href="API-notes.html#errors">return
code convention</a>: positive if any system call has returned an error,
negative (from the <a href="API-datastruct.html#LibRaw_errors">LibRaw
error list</a>) if there has been an error situation within LibRaw.</p>
<p><a name="open_bayer"></a></p>
<h3>int LibRaw::open_bayer(unsigned char *data, unsigned datalen, ushort
_raw_width, ushort _raw_height, ushort _left_margin, ushort _top_margin,
ushort _right_margin, ushort _bottom_margin, unsigned char procflags,
unsigned char bayer_pattern, unsigned unused_bits, unsigned otherflags,
unsigned black_level)</h3>
<p>Parameters: </p>
<ul>
<li>data, datalen - buffer passed </li>
<li>_raw_width/_raw_height/*margin - image size and margins </li>
<li> procflags:
<ul>
<li>for 10-bit format:
<ul>
<li>1: "4 pixels in 5 bytes" packing is used </li>
<li>0: "6 pixels in 8 bytes" packing is used </li>
</ul>
</li>
<li>for 16-bit format:
<ul>
<li>1: Big-endian data </li>
</ul>
</li>
</ul>
</li>
<li>bayer_pattern: one of LIBRAW_OPENBAYER_RGGB,LIBRAW_OPENBAYER_BGGR,
LIBRAW_OPENBAYER_GRBG,LIBRAW_OPENBAYER_GBRG </li>
<li>unused_bits: count of upper zero bits </li>
<li>otherflags:
<ul>
<li>Bit 1 - filter (average neighbors) for pixels with values of zero
</li>
<li>Bits 2-4 - the orientation of the image (0=do not rotate, 3=180,
5=90CCW, 6=90CW) </li>
</ul>
</li>
<li>black_level: file black level (it also may be specified via
imgdata.params) </li>
</ul>
See samples/openbayer_sample.cpp for usage sample (note, this sample is
'sample only', suited for Kodak KAI-0340 sensor, you'll need change
open_bayer() params for your data).
<p><a name="unpack"></a></p>
<h3>int LibRaw::unpack(void)</h3>
<p>Unpacks the RAW files of the image, calculates the black level (not for
all formats). The results are placed in imgdata.image.</p>
<p>Data reading is sometimes (not frequently) affected by settings made in
imgdata.params (<a href="API-datastruct.html#libraw_output_params_t">libraw_output_params_t</a>);
see <a href="API-notes.html">API notes</a> for details.</p>
<p>The function returns an integer number in accordance with the <a href="API-notes.html#errors">return
code convention</a>: positive if any system call has returned an error,
negative (from the <a href="API-datastruct.html#LibRaw_errors">LibRaw
error list</a>) if there has been an error situation within LibRaw.</p>
<p><a name="unpack_thumb"></a><a name="unpack_thumb_ex"></a></p>
<h3>int LibRaw::unpack_thumb(void)</h3>
<h3>int LibRaw::unpack_thumb_ex(int i)</h3>
<p></p>
<p>unpack_thumb(): reads (or unpacks) the default (largest) image preview
(thumbnail), placing the result into the imgdata.thumbnail.thumb buffer.</p>
<p>unpack_thumb_ex(int i): reads i-th thumbnail (thumbnails list is
available in imgdata.thumbs_list structure).</p>
<p> JPEG previews are placed into this buffer without any changes (with the
header etc.). Other preview formats are placed into the buffer in the form
of the unpacked bitmap image (three components, 8 bits per component).<br>
The thumbnail format is written to the imgdata.thumbnail.tformat field;
for the possible values, see <a href="API-datastruct.html#LibRaw_thumbnail_formats">description
of constants and data structures</a>.</p>
<p>The function returns an integer number in accordance with the <a href="API-notes.html#errors">return
code convention</a>: positive if any system call has returned an error,
negative (from the <a href="API-datastruct.html#LibRaw_errors">LibRaw
error list</a>) if there has been an error situation within LibRaw.</p>
<h3></h3>
<p></p>
<p><a name="utility"></a></p>
<h2>Auxiliary Functions</h2>
<h3>Library version check</h3>
<p><a name="version"></a></p>
<h4>const char* LibRaw::version()</h4>
<p>Returns string representation of LibRaw version in
MAJOR.MINOR.PATCH-Status format (i.e. 0.6.0-Alpha2 or 0.6.1-Release).</p>
<p><a name="versionNumber"></a></p>
<h4>int LibRaw::versionNumber()</h4>
<p>Returns integer representation of LibRaw version. During LibRaw
development, the version number is always increase .</p>
<p><a name="LIBRAW_CHECK_VERSION"></a></p>
<h4>bool LIBRAW_CHECK_VERSION(major,minor,patch)</h4>
<p>Macro for version check in caller applications. Returns 'true' if current
library version is greater or equal to set in macro parameters. This macro
executes at runtime (not at compile time) and may be used for checking
version of dynamically loaded LibRaw (from DLL/shared library).</p>
<h3>List of supported RAW formats (cameras)</h3>
<p><a name="cameraCount"></a></p>
<h4>int LibRaw::cameraCount()</h4>
<p>Returns count of cameras supported.</p>
<p><a name="cameraList"></a></p>
<h4>const char** LibRaw::cameraList()</h4>
<p>Returns list of supported cameras. Latest item of list is set to NULL
(for easy printing).</p>
<p><a name="#set_rawspeed_camerafile"></a></p>
<h4>int LibRaw::set_rawspeed_camerafile(char *path_to_cameras_xml)</h4>
<p>(Only if LibRaw was built with RawSpeed support).</p>
<p>Loads XML file with RawSpeed camera description data (cameras.xml)
specified by path_to_cameras_xml. Returns 0 on success, nonzero on error.
<a name="get_decoder_info"></a></p>
<h4>int LibRaw::get_decoder_info(libraw_decoder_info_t *)</h4>
<p>The function fills <a href="API-datastruct.html#libraw_decoder_info_t">libraw_decoder_info_t</a>
structure by passed pointer with current raw decoder data.</p>
<p>The function returns an integer number in accordance with the <a href="API-notes.html#errors">return
code convention</a>: positive if any system call has returned an error,
negative (from the <a href="API-datastruct.html#LibRaw_errors">LibRaw
error list</a>) if there has been an error situation within LibRaw.</p>
<p><a name="unpack_function_name"></a></p>
<h3>const char* LibRaw::unpack_function_name()</h3>
<p>Returns function name of file unpacking function. Intended only for
LibRaw test suite designers to use in test coverage evaluation.</p>
<p><a name="setCancelFlag"></a></p>
<h4>void LibRaw::setCancelFlag()</h4>
<p>This call sets internal fast cancel flags. If set, current Raw decoder
will be terminated ASAP. This call is useful if you need to cancel all
LibRaw decoders in multithreaded program (e.g. for fast program
termination or just for cancel current processing).</p>
<p><a name="clearCancelFlag"></a></p>
<h4>void LibRaw::clearCancelFlag()</h4>
<p>This call clears internal fast cancel flags, so (early) terminated LibRaw
decoder may work again.</p>
<p><a name="COLOR"></a></p>
<h4>int LibRaw::COLOR(int row, int col)</h4>
<p>This call returns pixel color (color component number) in bayer pattern at
row,col. The returned value is in 0..3 range for 4-component Bayer (RGBG2,
CMYG and so on) and in 0..2 range for 3-color data.</p>
<p>Color indexes returned could be used as index in imgdata.idata.cdesc
string to get color 'name'.</p>
<p><a name="error_count"></a></p>
<h4>int LibRaw::error_count()</h4>
<p>This call returns count of non-fatal data errors (out of range, etc)
occurred in unpack() stage.</p>
<p><a name="subtract_black"></a></p>
<h4>int LibRaw::subtract_black()</h4>
<p>This call will subtract black level values from RAW data (for suitable
RAW data). <a href="API-datastruct.html#libraw_colordata_t">colordata.data_maximum</a>
and <strong>colordata.maximum</strong> and black level data (<a href="API-datastruct.html#libraw_colordata_t">colordata.black</a>
and colordata.cblack) will be adjusted too.</p>
<p>This call should be used if you postprocess RAW data by your own code.
LibRaw <a href="#dcrawemu">postprocessing functions</a> will call <strong>subtract_black()</strong>
by oneself.</p>
<p>The function returns an integer number in accordance with the <a href="API-notes.html#errors">return
code convention</a>: positive if any system call has returned an error,
negative (from the <a href="API-datastruct.html#LibRaw_errors">LibRaw
error list</a>) if there has been an error situation within LibRaw.</p>
<a name="adjust_to_raw_inset_crop"></a>
<h4>int LibRaw::adjust_to_raw_inset_crop(unsigned mask, float maxcrop =
0.55f)</h4>
<p> Promotes imgdata.sizes.raw_inset_crops[] values to imgdata.sizes.*margin
and imgdata.sizes.width/height fields</p>
<p> Parameters<br>
mask: </p>
<ul>
<li>if bit 1 is set: prefer raw_inset_crops[1] </li>
<li>if bit 0 is set: prefer raw_inset_crops[0] </li>
</ul>
<p>maxcrop: limits crop to not less than (original width/height)*maxcrop; if
raw_inset_crops[i] data results in tighter crop, than this item is
ignored. </p>
<p>return value: index in raw_inset_crops[] used increased by one, so </p>
<ul>
<li>0: no changes made </li>
<li>1: [0]th data used </li>
<li>2: [1]th data used </li>
</ul>
<p>Note: this call SHOULD be used after LibRaw::unpack(), otherwise black
level calculation from masked area may be fooled resulting in wrong black
levels. </p>
<p><a name="floatingpoint"></a></p>
<h4>Support for floating point data</h4>
<p>Libraw can read floating point DNG files (no other RAW formats may use
floating point) with or without conversion to integer data. Floating point
values are stored in imgdata.rawdata buffers:</p>
<ul>
<li><span style="font-family: monospace;">float * float_image</span> (if
not NULL) points to floating point bayer data</li>
<li><span style="font-family: monospace;">float (*float3_image)[3]</span>
(if not NULL) points to floating point 3-channel buffer</li>
<li><span style="font-family: monospace;">float (*float4_image)[4]</span>
(if not NULL) points to floating point 4-channel buffer</li>
</ul>
<p>Function calls for floating point support:</p>
<ul>
<li><span style="font-family: monospace;">int LibRaw::is_floating_point();
</span>function will return 1 if file contains floating point data</li>
<li><span style="font-family: monospace;">int LibRaw::have_fpdata();</span>
function will return 1 if FP data has read (decoded) into memory and not
converted to integer data</li>
<li>int LibRaw::convertFloatToInt(float dmin=4096.f, float dmax=32767.f,
float dtarget = 16383.f) converts floating point data to integer. If
data maximum is out of dmin..dmax range, than data scaled to set maximum
to dtarget</li>
</ul>
<p><a name="ycc"></a></p>
<h4>Support for YCC formats (Canon sRAW/mRAW and Nikon Small NEF)</h4>
<pre> int LibRaw::is_sraw();<br> int LibRaw::is_nikon_sraw();<br> int LibRaw::sraw_midpoint()</pre>
<ul>
<li>is_sraw() call returns nonzero if current image is YCC-based.</li>
<li>is_nikon_sraw() call returns nonzero for Nikon Small NEF files</li>
<li>sraw_midpoint() call returns neutral (gray) point for color channels</li>
</ul>
<p><a name="recycle_datastream"></a></p>
<h4>void LibRaw::set_dng_host(void* p)</h4>
<p>If LibRaw is compiled with Adobe DNG SDK support and you wish to use this
support:</p>
<ul>
<li>you need to create own dng_host object</li>
<li>and pass it to LibRaw object using this function</li>
</ul>
<h4>void LibRaw::recycle_datastream(void)</h4>
<p>This call closes input datastream with associated data buffer and
unblocks opened file. <a name="recycle"></a></p>
<h3>void LibRaw::recycle(void)</h3>
<p>Frees the allocated data of LibRaw instance, enabling one to process the
next file using the same processor. Repeated calls of recycle() are quite
possible and do not conflict with anything.</p>
<p><a name="~LibRaw"></a></p>
<h3>LibRaw::~LibRaw()</h3>
<p>Destructor, which consists in calling recycle().</p>
<p><a name="strprogress"></a></p>
<h3>const char* LibRaw::strprogress(enum LibRaw_progress code)</h3>
<p>Converts progress stage code to description string (in English).</p>
<p><a name="libraw_strerror"></a></p>
<h3>const char* LibRaw::strerror(int errorcode)</h3>
<p>Analog of strerror(3) function: outputs the text descriptions of LibRaw
error codes (in English).</p>
<p><a name="callbacks"></a></p>
<h3>Setting Error Notification Functions</h3>
<p>In process of RAW conversion LibRaw can call user-setted callback. This
callback can be used for:</p>
<ul>
<li>Dynamic status update (progress bar and so on).</li>
<li>Cancel of processing (for example, user pressed Cancel button).</li>
</ul>
<p>Also, work of the library may cause two types of exceptional situations
that require notification of the calling application:</p>
<ul>
<li>Memory shortage</li>
<li>Data read error.</li>
</ul>
<p>An application may set its own callbacks that will be called in the cases
mentioned above to notify the user (or the calling program).</p>
<p><a name="progress"></a></p>
<h4>Progress indication/processing termination</h4>
<pre> typedef int (*progress_callback)(void *callback_data,enum LibRaw_progress stage, int iteration, int expected);<br> void LibRaw::set_progress_handler(progress_callback func,void *callback_data);<br> </pre>
<p>LibRaw user can set own callback which will be called 10-50 times during
RAW postprocessing by dcraw_process().</p>
<p>This callback may terminate current image processing by returning of
non-zero value. In such case all processing will be cancelled immediately
and all resources will be returned to system by recycle() call. Current
call of dcraw_process() will return error code
LIBRAW_CANCELLED_BY_CALLBACK.</p>
<p>Callback parameters:</p>
<dl>
<dt>void *callback_data</dt>
<dd>void*-pointer, passed as 2nd argument to set_progress_handler(). This
pointer should be used to pass additional data to callback (i.e. thread
local data and so on).</dd>
<dt>enum LibRaw_progress stage</dt>
<dd>Current processing stage. This number can be converted to string by
call to <a href="#strprogress">LibRaw::strprogress</a>. Not all
processing stages are covered by callback calls.</dd>
<dt>int iteration</dt>
<dd>Iteration number within current stage (from 0 to expected-1).</dd>
<dt>int expected</dt>
<dd>Expected number of iterations on current stage.</dd>
</dl>
<p>Callback should return value of: <strong>0</strong> for continue
processing and <strong>non-zero</strong> for immediate cancel of
processing.</p>
<p>&nbsp;</p>
<p>If LibRaw compiled with OpenMP support, iteration parameter may not
always increase within one stage. Out of order callback calls are
possible.</p>
<p>Callback code sample:</p>
<pre>int my_progress_callback(void *data,enum LibRaw_progress p,int iteration, int expected)<br>{<br> char *passed_string = (char *data);<br> printf("Callback: %s pass %d of %d, data passed: %s\n",libraw_strprogress(p),iteration,expected,passed_string);<br> if(timeout || key_pressed )<br> return 1; // cancel processing immediately<br> else<br> return 0; // can continue<br>}</pre>
<p><a name="exif"></a></p>
<h4>User-specified exif tag parser callback</h4>
<pre> typedef void (*exif_parser_callback) (void *context, int tag, int type, int len,unsigned int ord, void *ifp);<br> void LibRaw::set_exifparser_handler( exif_parser_callback cb,void *context);<br> </pre>
<p>Callback to be called on each parsed EXIF/Makernotes tag with parameters:</p>
<ul>
<li>context - pointer to context passed to set_exifparser_handler();</li>
<li>tag - EXIF/Makernotes tag value</li>
<li>type - TIFF(EXIF) tag type</li>
<li>len - tag length</li>
<li>ord - byte order (II or MM)</li>
<li>void *ifp - pointer to LibRaw_abstract_datastream, positioned to tag
data</li>
</ul>
<p><a name="dataerror"></a></p>
<h4>File Read Error Notifier</h4>
<pre> typedef void (*data_callback)(void *callback_data,const char *file, const int offset);<br> void LibRaw::set_dataerror_handler(data_callback func, void *callback_data); <br> </pre>
<p>The user can define his or her own function to be called in the case of
error in the input data. It is a void function receiving two parameters:</p>
<ul>
<li><strong>void *callback_data</strong> - void*-pointer, passed as 2nd
argument to set_progress_handler(). This pointer should be used to pass
additional data to callback (i.e. thread local data and so on).</li>
<li><strong>file</strong> is the name of the RAW file whose processing
evoked the file read error. This name <strong>can be NULL</strong> if
underlying data input layer does not know the name. So, if calling
application sets own callback, this callback should work with NULL file
name.</li>
<li><strong>offset</strong> is -1 at end-of-file (if LibRaw expects more
data) or a positive number equal to the file position (bytes from file
beginning) where the unpacking error occurred.</li>
</ul>
<p>The callback function is intended for information purposes: it notifies
the user or the program code that processing is impossible.</p>
<p>If the user does not set his or her own handler, the standard one (output
of error message in stderr) will be used.</p>
<p>One can set the null handler by passing NULL to set_dataerror_handler;
then no notifier function will be called. The same effect can be achieved
by creating a LibRaw object with the LIBRAW_OPTIONS_NO_DATAERR_CALLBACK
flag in the constructor.</p>
<p>In the case of error in the input data, processing of the current file is
terminated and a notifier is called; all allocated resources are freed,
and <a href="#recycle">recycle()</a> is performed. The current call will
return LIBRAW_IO_ERROR. <br>
At an attempt to continue data processing, all subsequent calls will
return LIBRAW_OUT_OF_ORDER_CALL. Processing of a new file may be started
in the usual way, by calling LibRaw::open_file().</p>
<p><a name="dcrawemu"></a></p>
<h2>Data Postprocessing: Emulation of dcraw Behavior</h2>
<p>Instead of writing one's own Bayer pattern postprocessing, one can use
the dcraw functions, which are called after the calls of open_file() +
unpack() /+ unpack_thumb()/</p>
<p><a name="dcraw_params"></a></p>
<h3>Parameter Setting</h3>
<p>Virtually all parameters that can be set through the dcraw command line
are specified by assigning values to fields of the <strong>LibRaw::imgdata.params</strong>
structure. The type of this structure is <strong>libraw_output_params_t</strong>;
all fields are listed and described in sufficient detail in the <a href="API-datastruct.html#libraw_output_params_t">description
of data structures</a>.</p>
<p><a name="raw2image"></a></p>
<h3>int LibRaw::raw2image</h3>
<p>This function allocates buffer for postprocessing (imgdata.image) and
fills it with data layout compatible with LibRaw 0.13/0.14 and below. If
the buffer is already allocated, it will be free()ed and allocated again.</p>
<p>This function should be called only if your code do postprocessing stage.
If you use LibRaw's postprocessing calls (see below) you don't need to
call raw2image().</p>
<p>The function returns an integer number in accordance with the <a href="API-notes.html#errors">return
code convention</a>: positive if any system call has returned an error,
negative (from the <a href="API-datastruct.html#LibRaw_errors">LibRaw
error list</a>) if there has been an error situation within LibRaw.</p>
<p><a name="free_image"></a></p>
<h3>void LibRaw::free_image</h3>
<p>This function releases the imgdata.image buffer allocated by raw2image();</p>
<p>This method should be called if current postprocessing results are not
needed by the program (e.g. already copied somewhere), but new
postprocessing calls (with another settings) are possible, so it is to
early to call <a href="#recycle">recycle()</a>.</p>
<p><a name="adjust_sizes_info_only"></a></p>
<h3>int LibRaw::adjust_sizes_info_only(void)</h3>
<p>The function calculates the correct size of the output image
(imgdata.sizes.iwidth and imgdata.sizes.iheight) for the following cases:</p>
<ul>
<li>Files from Fuji cameras (with a 45-degree rotation)</li>
<li>Files from cameras with non-square pixels</li>
<li>Images shot by a rotated camera.</li>
</ul>
<p>In the aforementioned cases, the function changes the fields of the image
output size; note that this change cannot be repeated again.</p>
<p><a name="dcraw_process"></a></p>
<h3>int LibRaw::dcraw_process(void)</h3>
<p>The function emulates the postprocessing capabilities available in <strong>dcraw</strong>.<br>
Called after calling LibRaw::unpack();</p>
<p>The entire functionality of dcraw (set via the field values in <a href="API-datastruct.html#libraw_output_params_t">imgdata.params</a>)
is supported, except for</p>
<ul>
<li>Dark frame subtraction</li>
<li>Work with bad pixels.</li>
</ul>
<p>The function is intended solely for demonstration and testing purposes;
it is assumed that its source code will be used in most real applications
as the reference material concerning the order of RAW data processing.</p>
<p>The function returns an integer number in accordance with the <a href="API-notes.html#errors">error
code convention</a>: positive if any system call has returned an error,
negative (from the <a href="API-datastruct.html#LibRaw_errors">LibRaw
error list</a>) if there has been an error situation within LibRaw.</p>
<p><a name="dcrawrite"></a></p>
<h2>Data Output to Files: Emulation of dcraw Behavior</h2>
<p>In spite of the abundance of libraries for file output in any formats,
LibRaw includes calls that emulate the file output provided by dcraw. This
is done primarily for easier verification of library work: the resultant
files must be binary identical.</p>
<p><a name="dcraw_ppm_tiff_writer"></a></p>
<h3>int LibRaw::dcraw_ppm_tiff_writer(const char *outfile)</h3>
<p>The function outputs the postprocessing results to a file in the PPM/PGM
or TIFF format (the format is set via imgdata.params.output_tiff). The
results are binary identical to those provided by dcraw.</p>
<p>If "-" is passed as outfile, the function will write to standard output
(stdout).</p>
<p>The function returns an integer number in accordance with the <a href="API-notes.html#errors">error
code convention</a>: positive if any system call has returned an error,
negative (from the <a href="API-datastruct.html#LibRaw_errors">LibRaw
error list</a>) if there has been an error situation within LibRaw.</p>
<p><a name="dcraw_thumb_writer"></a></p>
<h3>int LibRaw::dcraw_thumb_writer(const char *thumbfile)</h3>
<p>Writes the thumbnail to a file in the PPM format for bitmap thumbnails
and in the JPEG format for JPEG thumbnails, i.e., in the format completely
identical to the results provided by dcraw.</p>
<p>The function returns an integer number in accordance with the <a href="API-notes.html#errors">error
code convention</a>: positive if any system call has returned an error,
negative (from the <a href="API-datastruct.html#LibRaw_errors">LibRaw
error list</a>) if there has been an error situation within LibRaw.</p>
<p><a name="memwrite"></a></p>
<h2>Copying unpacked data into memory buffer</h2>
<p>There is several function calls for store unpacked data into memory
buffer (after using dcraw_process() and so on):</p>
<ul>
<li><strong>get_mem_image_format</strong> - get resulting bitmap size and
bit depth.</li>
<li><strong>copy_mem_image</strong> - copy postprocessed data into some
memory buffer with different color order and line stride.</li>
<li><strong>dcraw_make_mem_image</strong> - store processed image data
into allocated buffer;</li>
<li><strong>dcraw_make_mem_thumb</strong> - store extracted thumbnail into
buffer as JPEG-file image (for most cameras) or as RGB-bitmap.</li>
</ul>
<p>For usage primer see samples/mem_image.c sample.</p>
<p>&nbsp;</p>
<p><a name="get_mem_image_format"></a></p>
<h3>void get_mem_image_format(int *widthp, int *heightp, int *colorsp, int
*bpp) const - return processing bitmap size</h3>
<p>This function returns size of postprocessed image:</p>
<ul>
<li>Image width is returned in *widthp;</li>
<li>Bitmap height is returned in *heightp;</li>
<li>Image color count is returned in *colorsp;</li>
<li>Bits per pixel (8 or 16) is returned in *bpp;</li>
</ul>
<p><a name="copy_mem_image"></a></p>
<h3>int LibRaw::copy_mem_image(void* scan0, int stride, int bgr) - copies
postprocessed bitmap data into buffer</h3>
<p>Function parameters:</p>
<ul>
<li>void *scan0 - pointer to buffer to copy data to. The buffer should be
at least stride*image_height bytes;</li>
<li>int stride - stride of each other image line (row) in bytes. Usually
image_width*(bit_per_pixel/8)*image_colors, but may be more if you wish
to align image rows to, for example, 8 or 16 or 32 bytes to make CPU
more happy.</li>
<li>int bgr - pixel copy order. RGB if bgr==0 and BGR otherwise.</li>
</ul>
<p>The function returns an integer number in accordance with the <a href="API-notes.html#errors">error
code convention</a>: positive if any system call has returned an error,
negative (from the <a href="API-datastruct.html#LibRaw_errors">LibRaw
error list</a>) if there has been an error situation within LibRaw.</p>
<p><a name="dcraw_make_mem_image"></a></p>
<h3>libraw_processed_image_t *dcraw_make_mem_image(int *errorcode=NULL) -
store unpacked and processed image into memory buffer as RGB-bitmap</h3>
<p>This function allocates memory buffer and stores unpacked-preprocessed
image into this buffer. Function returns allocated structure <a href="API-datastruct.html#libraw_processed_image_t">libraw_processed_image_t</a>
with filled fields. Always returns data as RGB bitmap (i.e. <strong>type</strong>
field is equal to LIBRAW_IMAGE_BITMAP).</p>
<p>dcraw_process() should be called before dcraw_make_mem_image();</p>
<p>Returns NULL in case of an error. If caller has passed not-NULL value as
errorcode parameter, than *errorcode will be set to error code according
to <a href="API-notes.html#errors">error code convention</a>.</p>
<p><strong>NOTE!</strong> Memory, allocated for return value will not be
fried at destructor or <strong>LibRaw::recycle</strong> calls. Caller of
dcraw_make_mem_image should free this memory by call to <a href="#dcraw_clear_mem">LibRaw::dcraw_clear_mem()</a>.</p>
<p><a name="dcraw_make_mem_thumb"></a></p>
<h3>libraw_processed_image_t *dcraw_make_mem_thumb(int *errorcode=NULL) -
store unpacked thumbnail into memory buffer</h3>
<p>This function allocates memory buffer and stores thumbnail data in it.
Function returns allocated structure <a href="API-datastruct.html#libraw_processed_image_t">libraw_processed_image_t</a>
with filled fields. For most RAW images allocated structure will contains
JPEG image (i.e. <strong>type</strong> field is equal to
LIBRAW_IMAGE_JPEG). For some cameras with RGB-bitmap thumbnail (Kodak
SLRs) returned structure contains RGB bitmap (<strong>type</strong> field
is equal to LIBRAW_IMAGE_JPEG, see structure description for details).</p>
<p>unpack_thumb() should be called before dcraw_make_mem_thumb();</p>
<p>Returns NULL in case of an error. If caller has passed not-NULL value as
errorcode parameter, than *errorcode will be set to error code according
to <20> <a href="API-notes.html#errors">error code convention</a>.</p>
<p><strong>NOTE!</strong> Memory, allocated for return value will not be
fried at destructor or <strong>LibRaw::recycle</strong> calls. Caller of
dcraw_make_mem_image should free this memory by call to <a href="#dcraw_clear_mem">LibRaw::dcraw_clear_mem()</a>.</p>
<h3>void LibRaw::dcraw_clear_mem(libraw_processed_image_t *)</h3>
<p>This function will free the memory allocated by <strong>dcraw_make_mem_image</strong>
or <strong>dcraw_make_mem_thumb</strong>.</p>
<p>This is static class member, so call syntax should be
LibRaw::dcraw_clear_mem(...).</p>
<p>This call translates directly to free() system function, but it is better
to use dcraw_clear_mem because LibRaw (DLL) may be compiled with memory
manager other than in calling application.</p>
<p><a name="datastream"></a></p>
<h2>Input layer abstraction</h2>
<p><a name="LibRaw_abstract_datastream"></a></p>
<h3>class LibRaw_abstract_datastream - abstract RAW read interface</h3>
<p>LibRaw reads RAW-data by calling (virtual) methods of C++ object derived
from <strong>LibRaw_abstract_datastream</strong>. This C++ class does not
implement any read, but defines interface to be called. Call to base class
methods always results in error.</p>
<p><a name="datastream_methods"></a></p>
<h4>LibRaw_abstract_datastream class methods</h4>
<p><a name="datastream_methods_utility"></a></p>
<h5>Object verification</h5>
<dl>
<dt><strong> virtual int valid()</strong></dt>
<dd>Checks input datastream validity. Returns 1 on valid stream and 0 if
datastream was created on non-valid input parameters (wrong filename for
file stream and so on).</dd>
</dl>
<p><a name="datastream_methods_read"></a></p>
<h5>Stream read and positioning</h5>
<p>This group of methods implements file object (FILE*) semantics.</p>
<dl>
<dt><strong>virtual int read(void * ptr,size_t size, size_t nmemb)</strong></dt>
<dd>Similar to fread(ptr,size,nmemb,file).</dd>
<dt><strong>virtual int seek(off_t o, int whence)</strong></dt>
<dd>Similar to fseek(file,o,whence).</dd>
<dt><strong>virtual int tell(</strong></dt>
<dd>Similar to ftell(file).</dd>
<dt><strong>virtual int get_char()</strong></dt>
<dd>Similar to getc(file)/fgetc(file).</dd>
<dt><strong>virtual char* gets(char *s, int n)</strong></dt>
<dd>Similar to fgets(s,n,file).</dd>
<dt><strong>virtual int eof()</strong></dt>
<dd>Similar to feof(file).</dd>
<dt><strong>virtual int scanf_one(const char *fmt, void *val)</strong></dt>
<dd>Simplified variant of fscanf(file,fmt,val): format string is always
contains one argument to read. So, variable args call is not needed and
only one pointer to data passed.</dd>
<dt><strong> virtual int jpeg_src(void * p);</strong></dt>
<dd>Initializes read structures in j_decompress_ptr object passed as *p.
This object is used by libjpeg for JPEG data reading from datastream.
<p>Returns -1 on error and 0 on success.</p>
</dd>
<dt><strong> virtual void * make_jas_stream();</strong></dt>
<dd>Creates LibJasper input stream (for JPEG2000 decoding).
<p>returns NULL on error or data pointer on success.</p>
</dd>
</dl>
<p><a name="datastream_methods_other"></a></p>
<h5>Other methods</h5>
<p>This group of methods includes several supplementary calls. These calls
are used to temporary switch to another data stream (file and/or memory
buffer).</p>
<dl>
<dt><strong>virtual const char* fname()</strong></dt>
<dd>Returns name of opened file if datastream object knows it (for
example, <strong>LibRaw_file_datastream</strong> used). Filename used
in:
<ul>
<li>error notification callbacks;</li>
<li>generation of filename of JPEG-file with metadata when needed
(i.e. cameras with 'Diag RAW hack').</li>
</ul>
</dd>
<dt><strong>virtual int subfile_open(const char *fn)</strong></dt>
<dd>This call temporary switches input to file <strong>fn</strong>.
Returns 0 on success and error code on error.<br>
The function used to read metadata from external JPEG file (on cameras
with "Diag RAW hack"). <br>
This call is not implemented for <a href="#buffer_datastream">LibRaw_buffer_datastream</a>,
so external JPEG processing is not possible when buffer datastream used.
<br>
This function should be implemented in real input class, base class call
always return error. <br>
Working implementation sample can be found in <a href="#file_datastream">LibRaw_file_datastream</a>
implementation in <strong>libraw/libraw_datastream.h</strong> file.</dd>
<dt><strong> virtual void subfile_close()</strong></dt>
<dd>This call switches input stream from temporary open file back to main
data stream.</dd>
<dt><strong> virtual int tempbuffer_open(void *buf, size_t size)</strong></dt>
<dd>This call temporary switches input to <a href="#buffer_datastream">LibRaw_buffer_datastream</a>
object, created from <strong>buf</strong>.<br>
This method is needed for Sony encrypted metadata parser.
<p>This call implemented in base class (<strong>LibRaw_abstract_datastream</strong>),
there is no need to reimplement in in derived classes.<br>
Possible activity of temporary datastream requires very accurate
programming when implementing datastreams derived from base <strong>LibRaw_abstract_datastream</strong>.
See <a href="#substream">below</a> for more details.</p>
</dd>
<dt><strong> virtual void tempbuffer_close()</strong></dt>
<dd>This call switch input back from temporary datastream to main stream.
This call implemented in base <strong>LibRaw_abstract_datastream</strong>
class.</dd>
</dl>
<p><a name="datastream_derived"></a></p>
<h3>Derived input classes included in LibRaw</h3>
<p>There is three "standard" input classes in LibRaw distribution:</p>
<ul>
<li><a href="#file_datastream">LibRaw_file_datastream</a> implements input
from file (in filesystem).</li>
<li><a href="#bigfile_datastream">LibRaw_bigfile_datastream</a> slower
I/O, but files larger than 2Gb are supported.</li>
<li><a href="#buffer_datastream">LibRaw_buffer_datastream</a> implements
input from memory buffer.</li>
</ul>
<p>LibRaw C++ interface users can implement their own input classes and use
them via <a href="#open_datastream">LibRaw::open_datastream</a> call.
Requirements and implementation specifics are described below.</p>
<p><a name="file_datastream"></a></p>
<h4>class LibRaw_file_datastream - file input interface</h4>
<p>This class implements input from file.</p>
<p><strong>Class methods:</strong></p>
<dl>
<dt><strong> LibRaw_file_datastream(const char *fname) </strong></dt>
<dd>This constructor creates <strong>LibRaw_file_datastream</strong>
object from file <strong>fname</strong>.<br>
Unfortunately, C++ constructor cannot return an error. So if bad
filename passed (e.g. nonexistent file) object is created as non-valid
(valid() call returns zero).</dd>
</dl>
<p>All other class methods are <a href="#datastream_methods">described
above</a>.<br>
This class implements all possible methods, including fname() and
subfile_open().</p>
<p><a name="bigfile_datastream"></a></p>
<h4>class LibRaw_bigfile_datastream - file input interface</h4>
<p>This class implements input from file.</p>
<p><strong>Class methods:</strong></p>
<dl>
<dt><strong> LibRaw_bigfile_datastream(const char *fname) </strong></dt>
<dd>This constructor creates <strong>LibRaw_bigfile_datastream</strong>
object from file <strong>fname</strong>.<br>
Unfortunately, C++ constructor cannot return an error. So if bad
filename passed (e.g. nonexistent file) object is created as non-valid
(valid() call returns zero).</dd>
</dl>
<p>The difference between <strong>file</strong> and <strong>bigfile</strong>
datastreams are obvious from class name: bigfile one supports large files
(more than 2Gb) on all supported systems. File one uses streambuf
interface which is limited to 2Gb on many systems.</p>
<p>All other class methods are <a href="#datastream_methods">described
above</a>.<br>
This class implements all possible methods, including fname() and
subfile_open().</p>
<p><a name="buffer_datastream"></a></p>
<h4>class LibRaw_buffer_datastream - memory buffer input interface</h4>
<p>This class implements input from memory buffer.</p>
<p><strong>Class methods:</strong></p>
<dl>
<dt><strong> LibRaw_buffer_datastream(void *buffer, size_t bsize)</strong></dt>
<dd>This constructor creates datastream object from <strong>buffer</strong>
with size <strong>bsize</strong>.<br>
It is not possibly to verify the pointer passed, so buffer address is
checked against 0 and -1 only.</dd>
</dl>
<p>All other class methods are <a href="#datastream_methods">described
above</a>.<br>
This class does not implement fname() and subfile_open() calls, so
external JPEG metadata parsing is not possible.</p>
<p><a name="own_datastreams"></a></p>
<h3>Own datastream derived classes</h3>
<p>To create own read interface LibRaw user should implement C++ class
derived from <strong>LibRaw_abstract_datastream</strong> with all read
methods.<br>
LibRaw standard implementations may be used as reference. See <strong>libraw/libraw_datastream.h</strong>
file for details (all standard LibRaw input classes are implemented using
inline functions only).</p>
<p><a name="substream"></a></p>
<p><a href="index.html">[back to Index]</a></p>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,305 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
</head>
<body>
<p>LibRaw: General Notes on API<a href="index.html">[back to Index]</a></p>
<h1>LibRaw: General Notes on API</h1>
<h2>Contents</h2>
<ol>
<li><a href="#versions">LibRaw editions</a></li>
<li><a href="#errors">Error Code Conventions and Error Handling</a></li>
<li><a href="#warnings">Nonstandard Situations That Are Not Errors</a></li>
<li><a href="#io">Input Layer Abstraction</a></li>
<li><a href="threads">Thread Safety</a></li>
<li><a href="#CXX">The Use of C++</a></li>
<li><a href="#imgdata_params">Parameters of the LibRaw::imgdata.params
Structure Affecting the Behavior of open_file/unpack/unpack_thumb</a></li>
<li><a href="#memory">Memory Usage</a>
<ol>
<li><a href="#stack">Stack Usage</a></li>
<li><a href="#memmgr">Dynamic Memory Management</a></li>
<li><a href="#memuse">Dynamic Memory Usage</a>
<ol>
<li><a href="#memraw">Memory Buffer for the RAW Image</a></li>
<li><a href="#memimage">Memory for the Postprocessed Image</a></li>
<li><a href="#memthumb">Memory for the Decoded Thumbnail</a></li>
<li><a href="#memraw">Memory for RAW Unpacking</a></li>
<li><a href="#mempostproces">Memory for Postprocessing</a></li>
<li><a href="#memwrite">Memory for File Writing</a></li>
<li><a href="#memunpack">Unpacking into memory buffer</a></li>
</ol>
</li>
</ol>
</li>
<li><a href="#incompat">Incompatibilities with dcraw</a>
<ol>
<li><a href="#incompat_max">Automatic maximum search/brightness
adjustment</a></li>
<li><a href="#incompat_kodak">Processing of Thumbnails from Kodak
cameras</a></li>
</ol>
</li>
</ol>
<p><a name="versions"></a></p>
<h2>LibRaw Versions</h2>
<p>Since version 0.9, there is only one LibRaw variants. Older versions have
three separate editions (normal, -Lite and -Commercial versions).</p>
<p><a name="errors"></a></p>
<h2>Error Code Conventions and Error Handling</h2>
<p>The following conventions concern the returned errors:</p>
<ol>
<li>All functions that can return an error code have integer type of
return data.</li>
<li>If there is no error, the return value is 0 (LIBRAW_SUCCESS).</li>
<li>If an error has happened in a system call, the return value is errno
(a positive number), which can be analyzed using strerror() or similar
means.</li>
<li>All LibRaw's own error codes are negative; each of these errors
belongs to one of two types:
<dl>
<dt><strong>Non-fatal errors</strong></dt>
<dd>Non-fatal errors do not forbid execution of other functions in the
processing succession (e.g., <a href="API-CXX.html#unpack_thumb">unpack_thumb()</a>
can easily return the code corresponding to "preview is absent" but
this does not prevent further call of <a href="API-CXX.html#unpack">unpack()</a>.</dd>
<dt><strong>Fatal errors</strong></dt>
<dd>In the case of fatal errors (memory shortage, input data error,
data unpacking failure), the current stage of processing is
terminated and all allocated resources are freed.<br>
If an attempt to continue processing is made, all subsequent API
calls will return the LIBRAW_OUT_OF_ORDER_CALL error.<br>
At the same time, the LibRaw instance in which a fatal error has
occurred can process the next RAW files in the usual way (by calling
<a href="API-CXX.html#open_file">open_file()</a> (or other input
methods), then <a href="API-CXX.html#unpack">unpack()</a>, etc.).</dd>
</dl>
</li>
<li>The macro LIBRAW_FATAL_ERROR(error code) checks if an error is fatal
or not.</li>
<li>The error codes are <a href="API-datastruct.html#errors">listed and
deciphered here</a>.</li>
</ol>
<p><a name="warnings"></a></p>
<h2>Nonstandard Situations That Are Not Errors</h2>
<p>If the program has encountered a nonstandard situation that does not
prevent retrieval of some data from a file, it sends a signal by setting
the corresponding bit in <a href="API-datastruct.html#libraw_data_t">imgdata.process_warnings</a>.
The possible types of warnings are <a href="API-datastruct.html#warnings">listed
and deciphered here</a>.</p>
<p><a name="io"></a></p>
<h2>Input Layer Abstraction</h2>
<p>LibRaw uses objects derived from <a href="API-CXX.html#datastream">LibRaw_abstract_datastream</a>
for data input. Semantics of these objects is similar to 'file with
arbitrary seek' object: both read and seek operations are used.</p>
<p>Some RAW formats requires temporary switch to another data stream created
on top on memory buffer for metadata read. Methods for doing so are
implemented in base class <a href="API-CXX.html#datastream">LibRaw_abstract_datastream</a>
by internal data field <strong>substream</strong>. Look into source code
of <a href="API-CXX.html#file_datastream">LibRaw_file_datastream</a>
class in <strong>libraw/libraw_datastream.h</strong> file for more
details. <br>
When implementing own datastream classes, you need to take <strong>substream</strong>
into account and pass control to methods of this field if it is active
(not NULL).</p>
<p>If datastream implementation knows name of input file, it should provide
fname() call. This name will be used in <a href="API-CXX.html#callbacks">error
callbacks</a> and in guessing name of JPEG file with metadata (for RAW
files with external metadata).</p>
<p>For external metadata support input class should implement <strong>subfile_open()/subfile_close()</strong>
methods. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <br>
Sample of these methods implementation may be found in <a href="API-CXX.html#file_datastream">LibRaw_file_datastream</a>
class (look into <strong>libraw/libraw_datastream.h</strong> file for
details).</p>
<p><a name="threads"></a></p>
<h2>Thread safety</h2>
<p>Thread safety is ensured if a LibRaw object is created and used within
one thread. At the same time, the number of threads (each with its own
LibRaw object) is not limited in any way (except by memory requirements).</p>
<p>If a LibRaw object is created in one execution thread and used in
another, external synchronization is necessary.</p>
<p>There is two libraries under Unix environment (Linux/FreeBSD/MacOS):
libraw_r.a (thread-safe) and libraw.a (single-threaded, slightly faster).</p>
<p>Thread-safe library version stores intermediate unpacker data into LibRaw
class data. So, several copies of LibRaw, working in parallel, is
possible.</p>
<p>Not thread-safe library uses global variable for intermediate data store
which is faster but not reenterant. This non-thread-safe library still may
be used in multi-threaded apps, but only if exactly one LibRaw class copy
exists in program.</p>
<p>Windows version is similar to multi-threaded Unix one.</p>
<p><a name="CXX"></a></p>
<h2>The Use of C++</h2>
<p>Exception situations within LibRaw are handled using the C++ exception
mechanism. All exceptions are caught inside the library functions and
should not penetrate outside.</p>
<p>Memory is allocated/freed using functions malloc(calloc)/free rather than
new/delete.</p>
<p>If C API is used, references to C++ calls new/delete still remain, and so
linking with libstdc++(Unix)/....(Windows) is necessary.</p>
<p><a name="imgdata_params"></a></p>
<h2>Parameters of the LibRaw::imgdata.params Structure Affecting the
Behavior of open_file/unpack/unpack_thumb</h2>
<p>Most data fields of structure LibRaw::imgdata.params affect only <a href="API-CXX.html#dcrawemu">data
postprocessing</a>, but there are some exceptions, which have been
inherited by the current version of LibRaw from/ dcraw source texts (these
dependences will be gradually removed).</p>
<dl>
<dt><strong>imgdata.params.use_camera_matrix and
imgdata.params.use_camera_wb</strong></dt>
<dd>These fields affect loading of RAW data for cameras with a color
matrix.<br>
<strong>Attention!</strong> If parameter <strong>imgdata.params.use_camera_matrix</strong>
is not set by the user, it is copied from <strong>imgdata.params.use_camera_wb</strong>
at the stage of file opening.</dd>
<dt><strong>imgdata.params.user_flip</strong></dt>
<dd>If this parameter is greater than or equal to zero, assignment <code>imgdata.sizes.flip
= imgdata.params.user_flip</code> is performed at the <a href="API-CXX.html#open_file">open_file()</a>
stage.</dd>
<dt><strong>imgdata.params.shot_select</strong></dt>
<dd>This parameter makes it possible to select the number of the extracted
image for data formats in which storage of several RAW images in one
data file is possible.</dd>
<dt><strong>imgdata.params.half_size</strong></dt>
<dd>Affects RAW data loading for Phase One and Sinar backs. Also, it this
parameter is set then image bitmap will be reduced by half in each
dimension. In later case, all 4 components of bitmap will be filled
during data extraction phase.</dd>
<dt><strong>imgdata.params.threshold, imgdata.params.aber</strong></dt>
<dd>If these parameters used, then half-sized bitmap will be used for data
unpacking. See above for details.</dd>
<dt><strong>imgdata.params.use_camera_wb</strong></dt>
<dd>Affects loading of white balance matrix for Leaf backs.</dd>
</dl>
<p><a name="memory"></a></p>
<h2>Memory Usage</h2>
<p><a name="stack"></a></p>
<h3>Stack Usage</h3>
<p>An instance of the LibRaw class has its own size about <strong>800 Kb</strong>;
if constructions like <code>LibRaw imageProcessor;</code> are used, this
memory is stack-allocated.</p>
<p>Methods of class LibRaw (and C API calls) may allocate up to 130-140 Kb
of data on the stack (to place auto variables) during their work.</p>
<p>Thus, the work of one LibRaw instance may require about <strong>1MB</strong>
of stack memory. This is not a problem for most contemporary
architectures. However, when working in a multithreaded environment, one
should not forget to allocate a sufficient amount of memory for the thread
stack.</p>
<p>In the case of dynamic allocation (<code>LibRaw *iProcessor = new LibRaw;</code>),
the requirements to stack memory will decrease by ~800 Kb, which is the
size of a class instance). If <a href="API-C.html">C API</a> is used, the
LibRaw instance is allocated dynamically.</p>
<p><a name="memmgr"></a></p>
<h3>Dynamic Memory Management</h3>
<p>LibRaw keeps record of all allocated dynamic memory blocks; in the case
of an exceptional situation (fatal error), they are all freed. The code
for keeping this record is fairly primitive and not designed to consider
allocation of many blocks (in the normal situation, allocation takes place
from 2 to 6 times during file processing); this fact should be taken into
account by developers trying to add new methods to LibRaw.</p>
<p><a name="memuse"></a></p>
<h3>Dynamic Memory Usage</h3>
<p>LibRaw uses dynamic memory</p>
<ul>
<li>for the decoded image;</li>
<li>for the decoded thumbnail;</li>
<li>for the postprocessed image;</li>
<li>for the ICC profile retrieved from the RAW file (if available);</li>
<li>for temporary data at the stage of RAW file unpacking;</li>
<li>for temporary data at the stage of postprocessing and result output;</li>
<li>for reading of the RAW source file (only under Win32).</li>
</ul>
<p><a name="memraw"></a></p>
<h4>Memory buffer for the RAW image</h4>
<p>Decoded RAW data are stored:</p>
<ul>
<li>one 16-bit value per pixel for "bayer" images. The masked pixels
(black or dark or masked frame) are stored with image data.</li>
<li>Free or four 16-bit values for full-color images (Foveon, Linear DNG,
Canon sRAW etc.).</li>
<li>one,three, or four 32-bit floating point values per pixel for
floating-point data.</li>
</ul>
<p>The buffer for RAW data is allocated by <a href="API-CXX.html#unpack">unpack()</a>
call and freed upon calling <a href="API-CXX.html#recycle">recycle()</a>.</p>
<p><a name="memimage"></a></p>
<h4>Memory for the Postprocessed Image</h4>
<p>On postprocessing stage each pixel contains four 16-bit values, one for
each possible color channel (some sensors are actually 4-color).</p>
<p>The buffer for the decoded image is allocated upon calling <a href="API-CXX.html#raw2image">raw2image()</a>
or <a href="API-CXX.html#dcraw_process">dcraw_process()</a></p>
<p>The buffer freed upon calling <a href="API-CXX.html#recycle">recycle()</a>
or <a href="API-CXX.html#free_image">free_image()</a> calls.</p>
<p><a name="memthumb"></a></p>
<h4>Memory for the Decoded Thumbnail</h4>
<p>Memory for the thumbmail is allocated upon calling <a href="API-CXX.html#unpack_thumb">unpack_thumb()</a>
and freed upon calling <a href="API-CXX.html#recycle">recycle()</a>. The
size of the allocated buffer is precisely adjusted to the thumbnail size,
i.e., up to several Mb.</p>
<p><a name="memprofile"></a></p>
<p><a name="memraw"></a></p>
<h4>Memory for RAW Unpacking</h4>
<p>Memory for temporary buffer needed during RAW data unpacking may be
allocated during the work of <a href="API-CXX.html#unpack">unpack()</a>
and freed before completion of this function. The sizes of the allocated
buffers are small, up to tens of Kb.</p>
<p><a name="mempostproces"></a></p>
<h4>Memory for Postprocessing</h4>
<p>During image postprocessing (inherited from dcraw), memory for the
histogram (128 Kb) is allocated. This memory is allocated upon calling <a
href="API-CXX.html#dcraw_process">dcraw_process()</a> and freed upon
calling <a href="API-CXX.html#recycle">recycle()</a>.</p>
<p>In addition, during the work of <a href="API-CXX.html#dcraw_process">dcraw_process()</a>
and during the usage of some available possibilities, like</p>
<ul>
<li>rotation of images from FUJI cameras;</li>
<li>correction of chromatic aberrations;</li>
<li>image size changes (including correction of non-square pixels);</li>
<li>highlight recovery;</li>
</ul>
<p>a temporary buffer with the size equal to the size of the resultant image
(6-8 bytes per pixel for various processing stages) will be allocated. As
soon as the intermediate substage of processing is completed, the buffer
with the previous copy of the image will be freed.<br>
If postprocessing is not used, then temporary buffers are not allocated.</p>
<p><a name="memwrite"></a></p>
<h4>Memory for File Writing</h4>
<p>Upon calling <a href="API-CXX.html#dcraw_ppm_tiff_writer">dcraw_ppm_tiff_writer()</a>,
memory for a single row of the output image is allocated. The allocated
memory is freed before the end of this call.</p>
<p><a name="memunpack"></a></p>
<h4>Unpacking into memory buffer</h4>
<p>Functions <a href="API-CXX.html#dcraw_make_mem_image">dcraw_make_mem_image()</a>
<a href="API-CXX.html#dcraw_make_mem_thumb">dcraw_make_mem_thumb()</a>
(and complementary calls in C-API) allocates memory for entire output
datasets (full RGB bitmap and thumbnail, respectively).To free allocated
memory use <a href="API-CXX.html#dcraw_clear_mem">dcraw_clear_mem()</a>
function.</p>
<p><a name="incompat"></a></p>
<h2>Incompatibilities with dcraw</h2>
<p><a name="incompat_max"></a></p>
<h3>Automatic maximum search/brightness adjustment</h3>
<p>Many camera formats really use less data range, than possible by format
nature (bit count). If data maximum estimated incorrectly (too low) this
may resuls in colored highlights ('pink clouds') because of data cut at
wrong level.</p>
<p>To prevent this, LibRaw uses real data maximum from current file if this
maximum is larger than format maximum multiplied by
imdata.params.adjust_maximum_thr value (default is 0.75).</p>
<p>To turn off this feature (and repeat dcraw.c pink clouds) set
imdata.params.adjust_maximum_thr to 0.0</p>
<p><a name="incompat_kodak"></a></p>
<h3>Processing of Thumbnails from Kodak cameras</h3>
<p>In some Kodak cameras, the preview (thumbnail) is stored in the form of
uncorrected image. During its extraction using <strong>dcraw -e</strong>,
the white balance, color conversion, and other settings are the same as
those used for extraction of the main RAW data (including defect removal
and dark frame subtraction, which is erroneous, since the image size is
different). <br>
In LibRaw::unpack_thumb() calls, the white balance taken from the camera
("as shot") is used and no settings from imgdata.params are considered.</p>
<p>For all other cameras, thumbnails are extracted "as is," without any
color conversions, both in dcraw and in LibRaw.</p>
<p><a href="index.html">[back to Index]</a></p>
</body>

View File

@@ -0,0 +1,66 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Overview of LibRaw API (C++)</title>
</head>
<body>
<a href=index.html>[back to Index]</a>
<h1>Overview of LibRaw API (C++)</h1>
<h2>General Remarks</h2>
<ol>
<li>The entire processing is carried out by an instance of the LibRaw class, which is an image processor.</li>
<li>One image processor can simultaneously process only one data source file, but consecutive processing of any number of files
is possible.</li>
<li>There may be several simultaneously working image processors in a software program (e.g., in different threads), although one
should remember that each image processor may require much memory.</li>
<li>Reading of source data from the RAW file requires virtually no customization (see <a
href="API-notes.html">API Notes</a> for exceptions to this rule).</li>
<li>All data extracted from the RAW file are accessible through data fields of the image processor (LibRaw class instance).</li>
<li>Although LibRaw <b>is not intended for RAW data postprocessing</b>, the library includes calls that enable complete
emulation of the <b>dcraw</b> utility.
<li>All customization for the processing is performed via data fields of the LibRaw class.</li>
</ol>
<h2>Brief Demonstration</h2>
<p>
The example below contains no error processing for the sake of brevity.
</p>
<pre>
#include "libraw/libraw.h"
int process_image(char *file)
{
// Let us create an image processor
LibRaw iProcessor;
// Open the file and read the metadata
iProcessor.open_file(file);
// The metadata are accessible through <a href="API-datastruct.html">data fields of the class</a>
printf("Image size: %d x %d\n",iProcessor.imgdata.sizes.width,iProcessor.imgdata.sizes.height);
// Let us unpack the image
iProcessor.unpack();
// Convert from imgdata.rawdata to imgdata.image:
iProcessor.raw2image();
// And let us print its dump; the data are accessible through <a href="API-datastruct.html">data fields of the class</a>
for(i = 0;i lt; iProcessor.imgdata.sizes.iwidth * iProcessor.imgdata.sizes.iheight; i++)
printf("i=%d R=%d G=%d B=%d G2=%d\n",
i,
iProcessor.imgdata.image[i][0],
iProcessor.imgdata.image[i][1],
iProcessor.imgdata.image[i][2],
iProcessor.imgdata.image[i][3]
);
// Finally, let us free the image processor for work with the next image
iProcessor.recycle();
}
</pre>
<a href=index.html>[back to Index]</a>
</body>
</html>

View File

@@ -0,0 +1,124 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>LibRaw Compilation and Installation</title>
</head>
<body> <a href="index.html">[back to Index]</a>
<h1>LibRaw Compilation and Installation</h1>
<p>LibRaw is distributed in the form of source codes. For further use, they
should be compiled (and, if desired, placed into system folders with
libraries and include-files).</p>
<a name="unix"></a>
<h2>Unix Systems (FreeBSD, Linux, Mac OS X)</h2>
<p> To build the library, you will need a working C++ compiler (gcc 3+ and
clang 2+ are OK) and the make utility. </p>
<p>Additional libraries (optional):</p>
<ul>
<li>zlib (used to decode deflated DNGs)</li>
<li>libjasper (used to decode RED files)</li>
<li>libjpeg8 (used to decode lossy DNGs and several old Kodak cameras)</li>
</ul>
<p> LibRaw has been tested on 32- and 64-bit Unix systems working on x86-
(and AMD64-) compatible processors. Building and work on other
architectures have not been tested. </p>
<h3>Compilation of Library and Examples</h3>
<p> Unpack the downloaded distribution package.</p>
<pre> tar xzvf LibRaw-X.YY.tar.gz
</pre>
<p>For GitHub downloads (clones), perform ./configure script generation via</p>
<pre> autoreconf --install</pre>
<p>Go to LibRaw directory and run <b>./configure</b> and <b>make</b>: </p>
<pre>cd LibRaw-X.YY
./configure # with optional args
make
</pre>
<p>As a result, you will compile</p>
<ul>
<li>Library libraw.a in the lib/ folder</li>
<li><a href="Samples-LibRaw.html">Examples</a> in the bin/ folder (source
codes of examples are in the samples/ folder).</li>
</ul>
<p>In the current version, only static libraries are built:</p>
<ul>
<li>libraw.a: non-thread-safe version</li>
<li>libraw_r.a: thread-safe</li>
</ul>
<h3>Build parameters</h3>
<p> ./configure script have some non-standard parameters: </p>
<dl>
<dt> --enable-openmp<br>
--disable-openmp </dt>
<dd> Enable/disable OpenMP support if compiler supports it. OpenMP is
enabled by default. </dd>
<dt> --enable-lcms<br>
--disable-lcms </dt>
<dd> Enable/disable LCMS color engine support. If enabled, ./configure
will try to find lcms library. Both LCMS-1.x and LCMS-2.x are supported
LCMS support is enabled by default </dd>
<dt> --enable-examples<br>
--disable-examples </dt>
<dd> Enables/disables examples compilation and installation. Enabled by
default </dd>
</dl>
<h3>Installation and Usage</h3>
<p>To install the library, run</p>
<pre> sudo make install
</pre>
<p> It will place the libraries in <b>/usr/local/lib</b>, the include-files
in <b>/usr/local/include</b> (subfolder of libraw) and LibRaw samples to
<b>/usr/local/bin</b>. You can override installation path by using
./configure script. <br>
To use LibRaw, add the following parameters to the compiler call (when
building your own projects): </p>
<ul>
<li>Path to include-files: -I/usr/local/include</li>
<li>Path to libraries: -L/usr/local/lib</li>
<li>Library: -lraw (ordinary version) or -lraw_r (thread-safe version).</li>
</ul>
<h2>Windows: Building under Cygwin</h2>
<p> Building and installation are completely similar to <a href="#unix">building
and installation under Unix systems</a>. </p>
<h2>Windows: Native Building</h2>
<p> Building under Windows has three steps: </p>
<ul>
<li>Unpack the distribution package (if you have got no tar+gzip, take the
LibRaw distribution package in the .ZIP format) and go to folder
LibRaw-X.YYY. </li>
<li>Set the environment parameters so that the compiler/linker would find
the libraries and include-files. For Visual C++, this is done by running
<b>vcvars32.bat</b>. </li>
<li> Run<br>
<b>nmake -f Makefile.msvc</b><br>
</li>
</ul>
<p>You may need to edit Makefile.msvc to provide libjpeg/zlib/libjasper
paths to INCLUDE/LIB.</p>
<p> If all paths are set correctly and the include-files/libraries have been
found, then the following will be compiled:</p>
<ul>
<li>Library libraw_static.lib in folder lib</li>
<li>Dynamic library bin/libraw.dll and linking library for it
lib/libraw.lib</li>
<li>Examples in folder bin/.</li>
</ul>
<p>Only the thread-safe library is built under Win32, but it can be used
with non-threaded applications as well. All examples are linked with the
dynamic library (DLL); if static linking is necessary, one should link
applications with library libraw_static.lib and set the preprocessor
option /DLIBRAW_NODLL during compilation. </p>
<p> Windows-version compiles without LCMS support for now. </p>
<p> During building of DLL, all public functions are exported; further, the
exported subset may be reduced. </p>
<p> Unfortunately, paths to include/ libraries depend on the way Visual C
(or other compiler) is installed; therefore, it is impossible to specify
some standard paths in Makefile.msvc. </p>
<h2>Windows Installation</h2>
<p> No installation under Windows is supported. It is assumed that all DLLs
will be supplied together with the software using them (and this software
will perform the installation). Accordingly, in building of programs using
LibRaw, the paths to libraries, DLLs, and include-files should be
specified manually. </p>
<a href="index.html">[back to Index]</a>
</body>
</html>

View File

@@ -0,0 +1,213 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
</head>
<body>
<p>LibRaw: Usage Examples<a href="index.html">[back to Index]</a></p>
<h1>LibRaw: Usage Examples</h1>
<h2>Overview of Examples in the Distribution Package (samples/*)</h2>
<p>The LibRaw package contains several examples illustrating the use of this
library. Their source codes are located in the samples/ folder, and after
library build they will be in the bin/ folder:</p>
<ul>
<li><strong>raw-identify</strong> The only LibRaw call it uses is <a href="API-CXX.html#open_file">open_file()</a>;
further code prints the values of the fields of the imgdata structure. <strong><br>
</strong><strong>raw-identify -v</strong> provides extensive dump of
metadata/<br>
Command line key <strong>-u</strong> shows unpacking function name,
while <strong>-u -f</strong> prints function name and masked are sizes.<br>
<strong>raw-identify -w </strong>will print white balance tables stored
in RAW file.</li>
<li><strong>simple_dcraw</strong> A simple "emulation" of dcraw
reproducing the behavior of <strong>dcraw [-e] [-v] [-T]</strong>.&nbsp;
A simplified version of this example is <a href="#code">considered
below</a>. <br>
<strong>-B</strong> command-line switch turns on use of <a href="API-CXX.html#open_buffer">open_buffer()
API call</a> used via mmap() of input file (Unix only).</li>
<li><strong>dcraw_half</strong> Demonstrates the use of <a href="API-C.html">C
API</a>. The example emulates the behavior of <strong>dcraw -h</strong>
(no other control parameters can be specified in this example). </li>
<li><strong>dcraw_emu</strong> Almost complete emulation of dcraw (except for
keys -D -d -E -i -v -e, which are considered in other usage examples).
Of most interest is processing of command line keys (copied from dcraw).
<br>
<p>This sample supports additional command-line parameters absent in
original dcraw:</p>
<dl>
<dt><strong>-mmap</strong></dt>
<dd>Use <a href="API-CXX.html#open_buffer">open_buffer()</a>
interface. Buffer prepared by mmap() call. This option not supported
under Win32.</dd>
<dt><strong>-meme</strong></dt>
<dd>Use <a href="API-CXX.html#open_buffer">open_buffer()</a>
interface. Buffer prepared by malloc()+read() calls.</dd>
<dt><strong>-c float-value</strong></dt>
<dd>This key sets <strong>params.adjust_maximum_thr</strong>
parameter.<br>
Use -c 0 to completely disable automatic maximum calculation. <br>
Default value: 0.75</dd>
<dt><strong>-timing</strong></dt>
<dd>Turns on detailed timing print.</dd>
<dt><strong>-G</strong></dt>
<dd>Turns on "green_matching" mode to suppress color mazes on cameras
with different green channels.</dd>
<dt><strong>-B x y w h</strong></dt>
<dd>Crops output to rectangle with width w, height h and x,y
coordinates of left upper corner. All coordinates applied before any
image rotation.</dd>
<dt><strong>-F</strong></dt>
<dd>Will use FILE I/O (bigfile_datastream) instead on standard
LibRaw_file_datastream.</dd>
<dt><strong>-dcbi N</strong></dt>
<dd>Sets number of additional DCB-demosaic iterations (option valid
only for -q 4, i.e. for DCB demosaic).</dd>
<dt><strong>-dcbe</strong></dt>
<dd>Turns on DCB color enhance mode (only for DCB demosaic, -q 4).</dd>
<dt><strong>-aexpo e p</strong></dt>
<dd>Turns on exposure correction. e is exposure shift in linear scale
from 0.25 (darken 2 stops) to 8.0 (lighten 3 stops). p is highlights
preservation amount from 0.0 (no preservation, full clipping) to 1.0
(full preservation, S-like curve in highlights).</dd>
<dt><strong>-apentax4shot</strong></dt>
<dd>Will merge 4 frames from Pentax 4-shot RAWs</dd>
<dt><strong>-apentax4shotorder abce</strong></dt>
<dd>Order of frames in pentax 4-shot files (default is 3102)</dd>
<dt><strong>-mmap</strong></dt>
<dd>Use mmap + memory IO instead of file IO (unix only)</dd>
<dt><strong>-disars</strong></dt>
<dd>Disable RawSpeed library (if compiled with this library)</dd>
<dt><strong>-doutputflags N</strong></dt>
<dd>set imgdata.params.output_flags to N</dd>
<dt><strong>-disinterp</strong></dt>
<dd>Do not run interpolation step</dd>
<dt><strong>-dsrawrgb1</strong></dt>
<dd>Disable YCbCr to RGB conversion for sRAW (Cb/Cr interpolation
enabled)</dd>
<dt><strong>-dsrawrgb2</strong></dt>
<dd>Disable YCbCr to RGB conversion for sRAW (Cb/Cr interpolation
disabled)</dd>
</dl>
</li>
<li><strong>half_mt</strong> Emulation of <strong>dcraw -h</strong>. It
"understands" the following keys: -a (automatic white balance over the
entire image), -w (white balance of the camera), -T (output in the tiff
format), and -J n (number of parallel threads launched for image
processing).<br>
On multiprocessor/multicore computers, the speed gain is notable in the
case of mass processing. On a Win32 machine, the example is assembled
from the initial file half_mt_win32.c, since work with threads under
Windows is fundamentally different and it it easier to copy simple
source codes than write one complex code.</li>
<li><strong>mem_image</strong> This sample uses <a href="API-CXX.html#dcraw_make_mem_image">dcraw_make_mem_image</a>
and <a href="API-CXX.html#dcraw_make_mem_thumb">dcraw_make_mem_thumb</a>
calls, than writes data in PPM format. </li>
<li><strong>unprocessed_raw</strong> This sample extracts (mostly)
unaltered RAW data including masked pixels data (on supported cameras).
If black frame exists and black frame extraction is supported for given
format, masked pixels data is added to resulting .TIFF file. Command
line options: <strong>-q</strong> - be quiet, <strong>-A</strong> -
autoscale data (integer multiplier), <strong>-g</strong>
gamma-correction (gamma 2.2) for data (instead of precise linear one), <strong>-B</strong>
turns on black level subtraction</li>
<li><strong>4channnels</strong> - splits RAW-file into four separate
16-bit grayscale TIFFs (per RAW channel).<br>
Command line switches:
<ul>
<li><strong>-s N</strong> selects N-th image from RAW with multiple
images</li>
<li><strong>-g</strong> gamma correction (gamma 2.2)</li>
<li><strong>-A</strong> values autoscale by auto-calculated integer
factor</li>
<li><strong>-B</strong> turn off black subtraction</li>
<li><strong>-N</strong> no RAW curve</li>
</ul>
</li>
<li><strong>multirender_test</strong> - very simple example of multiple
rendering on one file without reopen.</li>
<li><strong>postprocessing_benchmark</strong> - will print timings of RAW
processing steps</li>
</ul>
<h2>Example of docmode</h2>
<p>Below we consider the samples/simple_dcraw.cpp example, which emulates
the behavior of <strong>dcraw [-e][-v][-t]</strong>. To save space, let
us assume that keys -t -v are always specified (to avoid comments on
command line parsing) and there is always one parameter (name of file),
which is the only one and always passed to the program.</p>
<pre>int main(int ac, char *av[])
{
int i, ret, verbose=0, output_thumbs=0;
char outfn[1024],thumbfn[1024];
// Creation of image processing object
LibRaw RawProcessor;
// The date in TIFF is written in the local format; let us specify the timezone for compatibility with dcraw
putenv ((char*)"TZ=UTC");
// Let us define variables for convenient access to fields of RawProcessor
#define P1 RawProcessor.imgdata.idata
#define S RawProcessor.imgdata.sizes
#define C RawProcessor.imgdata.color
#define T RawProcessor.imgdata.thumbnail
#define P2 RawProcessor.imgdata.other
#define OUT RawProcessor.imgdata.params
OUT.output_tiff = 1; // Let us output TIFF
// Let us open the file
if( (ret = RawProcessor.open_file(av[1])) != LIBRAW_SUCCESS)
{
fprintf(stderr,"Cannot open %s: %s\n",av[i],libraw_strerror(ret));
// recycle() is needed only if we want to free the resources right now.
// If we process files in a cycle, the next open_file()
// will also call recycle(). If a fatal error has happened, it means that recycle()
// has already been called (repeated call will not cause any harm either).
RawProcessor.recycle();
goto end;
}
// Let us unpack the image
if( (ret = RawProcessor.unpack() ) != LIBRAW_SUCCESS)
{
fprintf(stderr,"Cannot unpack_thumb %s: %s\n",av[i],libraw_strerror(ret));
if(LIBRAW_FATAL_ERROR(ret))
goto end;
// if there has been a non-fatal error, we will try to continue
}
// Let us unpack the thumbnail
if( (ret = RawProcessor.unpack_thumb() ) != LIBRAW_SUCCESS)
{
// error processing is completely similar to the previous case
fprintf(stderr,"Cannot unpack_thumb %s: %s\n",av[i],libraw_strerror(ret));
if(LIBRAW_FATAL_ERROR(ret))
goto end;
}
else // We have successfully unpacked the thumbnail, now let us write it to a file
{
snprintf(thumbfn,sizeof(thumbfn),"%s.%s",av[i],T.tformat == LIBRAW_THUMBNAIL_JPEG ? "thumb.jpg" : "thumb.ppm");
if( LIBRAW_SUCCESS != (ret = RawProcessor.dcraw_thumb_writer(thumbfn)))
{
fprintf(stderr,"Cannot write %s: %s\n",thumbfn,libraw_strerror(ret));
// in the case of fatal error, we should terminate processing of the current file
if(LIBRAW_FATAL_ERROR(ret))
goto end;
}
}
// Data unpacking
ret = RawProcessor.dcraw_process();
if(LIBRAW_SUCCESS != ret ) // error at the previous step
{
fprintf(stderr,"Cannot do postprocessing on %s: %s\n",av[i],libraw_strerror(ret));
if(LIBRAW_FATAL_ERROR(ret))
goto end;
}
else // Successful document processing
{
snprintf(outfn,sizeof(outfn),"%s.%s", av[i], "tiff");
if( LIBRAW_SUCCESS != (ret = RawProcessor.dcraw_ppm_tiff_writer(outfn)))
fprintf(stderr,"Cannot write %s: error %d\n",outfn,ret);
}
// we don't evoke recycle() or call the destructor; C++ will do everything for us
return 0;
end:
// got here after an error
return 1;
}
</pre>
<p><a href="index.html">[back to Index]</a></p>
</body>
</html>

View File

@@ -0,0 +1,65 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
</head>
<body>
<p>Purpose and Objectives<a href="index.html">[back to Index]</a></p>
<h1>LibRaw Project Goals and Objectives</h1>
<h2>Who May Be Interested in This Project</h2>
<p>The proposed project and the software products generated within this project are intended for:</p>
<ul>
<li>Developers of RAW converters, including current and new developments</li>
<li>Developers of applications that need access to decoded RAW data (for pre-processing, stitching, stacking, color profiling, etc.)</li>
<li>Those willing to write their own graphic interface for RAW file processing</li>
<li>Developers and enthusiasts creating their own primary and auxiliary data processing algorithms, including
<ul>
<li>Interpolation (demosaic),</li>
<li>Noise reduction</li>
<li>White balance</li>
<li>Correction of aberrations and distortions</li>
<li>RAW data analysis</li>
<li>Comparison of cameras and lenses</li>
<li>and so on...</li>
</ul>
</li>
</ul>
<h2>Some History</h2>
<p>The LibRaw project started in 2008. At that time <a href="https://www.cybercom.net/%7Edcoffin/dcraw/">dcraw</a> was very popular as a method of accessing RAW data. It was hard to find a more or less popular camera that was not supported by this utility; while the implementation of RAW data extraction in <strong>dcraw</strong> was of a very high quality.</p>
<p>However, developers and enthusiasts were experiencing a number of difficulties when using <strong>dcraw</strong>. First, the author of <strong>dcraw</strong> refused to turn his product into a handy library. Besides, <strong>dcraw</strong> contains a number of questionable features that may hinder its use without modifications, as well as instances of distortions in the photographic sense of it. As a result, once every several months, with each new release of <strong>dcraw</strong>, virtually all developers, part of them listed on the <a
href="https://www.cybercom.net/%7Edcoffin/dcraw/">dcraw Web site</a>, were to check the differences, figure out the patches, and apply those patches to their dcraw-based code and libraries.</p>
<p>As for enthusiasts, the "entry cost" of verifying their own ideas and implementing their own algorithms in such an environment is often unreasonably high: they have to either use the dcraw command line, thus being forced to use the unavoidable early processing stages, or understand the source code and maintain their own library based on it.</p>
<p>Thus, the inconveniences of <strong>dcraw</strong> make the developers' community quite small and halt further evolution and improvement of RAW format converters.</p>
<p>Our project started with the idea to <em>get a library based on dcraw, only better</em>. Today we are well past that initial goal, not in the least because <strong>dcraw</strong> is not actively supported since 2015, and the latest release was published nearly 2 years ago, in May 2016. Since then several distinctly different RAW formats (introduced by Fujifilm, Nikon, Pentax, Samsung, Sigma, Sony) emerged, none of which is supported by <strong>dcraw</strong>. Additionally, we see it necessary to extract more metadata to help better interpretation of RAW data and to add flexibility to the RAW conversion process.</p>
<h2>Goals and Objectives</h2>
<p>We are maintaining LibRaw as a library providing access to decoded raw data and metadata useful for correct interpretation of the said data. Thus:</p>
<ol>
<li>To keep on adding RAW decoding for new and previously unsupported cameras</li>
<li>To continue the development of a stable and consistent API suitable for other applications (RAW converters, data analyzers, panorama stitchers, etc.)</li>
<li>To have RAW processing as separate independent parts (groups of API calls)
<ul>
<li>Reading, decoding, and unpacking of RAW data: <em><strong>this is the main functionality of LibRaw</strong></em></li>
<li>Data conversions: interpolation, white balance, etc.: <em><strong>this part of LibRaw is frozen: we ported dcraw functionality, but expect that library users will create own postprocessing code.</strong></em></li>
<li>File output of the processing results. <em><strong>This part is very primitive, only tiff and ppm output is supported.</strong></em></li>
</ul>
</li>
</ol>
<p style="margin-left:.5in;">The latter two groups of functions are maintained to provide some postprocessing/saving ability from scratch, without writing own code. We do not have any plans to extend/improve this code.</p>
<ol>
<li value="4">To improve the procedures of RAW data retrieval and decoding.</li>
<li>To supply other developers with a "framework" (freeware and open-source), e.g., for experimenting with their own methods of RAW data processing (interpolation, noise reduction, white balance, etc.; some directions of the possible efforts are <a>listed above</a>), so that they could create their own GUI programs and interfaces without developing the entire RAW converter.</li>
</ol>
<h2>LibRaw Release Schedule</h2>
<ol>
<li><strong>Production releases</strong> will be published at intervals of 1-1.5 years. Production releases will be maintained through bugfixes. New cameras will not be added to production releases, but only to snapshots and non-stable/beta releases.<em> Patch </em>(bugfix) releases of production releases should provide API/ABI consistency (so, version 0.21.5 should be binary compatible with 0.21.0).</li>
<li><strong>Snapshots</strong> are planned to be released every 2-3 quarters. Snapshots will include support for new cameras, stable and tested in our own applications. API calls and internal routines may be changed. No binary compatibility maintained, to upgrade to newer snapshot one need to recompile application that uses it.</li>
<li><strong>Non-stable/beta releases</strong> with new features, like initial support for some new RAW format that needs extensive testing by the community.&nbsp; No exact schedule, to be published as needed.</li>
</ol>
<h2>How You Can Help/Participate</h2>
<p><strong>We welcome any help</strong>, however:</p>
<ol>
<li>If you are submitting any core functionality extensions/improvements, that is, something that has to do with the decoding of RAW and/or metadata, that would be highly valuable and we will maintain your submission on our own, if necessary; you don<6F>t need to be committed.</li>
<li>If your contribution adds to post-processing, please be committed to supporting and maintaining such a contribution. Our previous experience with such contributions has been less than positive, exactly because of the lack of maintenance on the part of the contributors. We are unable to maintain such contributions on our own, because our primary goal is to maintain RAW and metadata decoding.</li>
</ol>
<p><a href="index.html">[back to Index]</a></p>
</body>

View File

@@ -0,0 +1,38 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>LibRaw: better dcraw (library)</title>
</head>
<body>
<h1>LibRaw: RAW image decoding/processing library</h1>
<p>LibRaw is a library for reading RAW files from digital photo cameras (CRW/CR2, NEF, RAF, DNG, MOS, KDC, DCR, etc.; virtually all RAW formats are supported). It pays special attention to correct retrieval of data required for subsequent RAW conversion.</p>
<p>The library is intended for embedding in RAW converters, data analyzers, and other programs using RAW files as the initial data.</p>
<p> Contents </p>
<ol>
<li><a href="#copyright">Copyright</a></li>
<li><a href="Why-LibRaw.html">Purpose and Objectives</a></li>
<li><a href="API-overview.html">Overview of LibRaw API (C++)</a></li>
<li><a href="Install-LibRaw.html">Compilation and Installation</a></li>
<li><a href="API-datastruct.html">Data Structures, Error Codes, and Constants</a> </li>
<li><a href="API-CXX.html">C++ API</a> </li>
<li><a href="API-C.html">C API</a></li>
<li><a href="API-notes.html">Notes on API (error code conventions, memory usage)</a></li>
<li><a href="Samples-LibRaw.html">Examples</a> </li>
</ol>
<a name="copyright"></a>
<h2>Copyright</h2>
<p> LibRaw library, Copyright (C) 2008-2021 LibRaw LLC (info@libraw.org)<br>
The library includes source code from<br>
<i>dcraw.c, Dave Coffin's raw photo decoder<br>
Copyright 1997-2016 by Dave Coffin, dcoffin a cybercom o net<br>
</i> </p>
<p> LibRaw is distributed for free under two different licenses: </p>
<ul>
<li><a href="http://www.gnu.org/licenses/lgpl-2.1.html">GNU Lesser General Public License, version 2.1</a></li>
<li><a href="http://www.opensource.org/licenses/cddl1.txt">COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0</a></li>
</ul>
You may use one of these licensing modes and switch between them.
<p></p>
</body>
</html>

28
rtengine/libraw/export-dist.sh Executable file
View File

@@ -0,0 +1,28 @@
#!/bin/sh
DEST=$1
VERSION=$2
if test x$VERSION = x ; then
VERSION=`./version.sh`
echo VERSION set to $VERSION
fi
if test -d $DEST ; then
echo Using $DEST/$VERSION
else
echo Usage: $0 destination-dir
exit 1
fi
cd ..
for dir in LibRaw
do
cd $dir
git pull origin
cd ..
done
for dir in LibRaw
do
cd $dir
git archive --prefix=$dir-$VERSION/ $VERSION | (cd $DEST; tar xvf - )
cd ..
done

View File

@@ -0,0 +1,66 @@
/* -*- C++ -*-
* Copyright 2019-2021 LibRaw LLC (info@libraw.org)
*
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).
*/
#ifndef DCRAW_DEFS_H
#define DCRAW_DEFS_H
#include <math.h>
#define LIBRAW_LIBRARY_BUILD
#define LIBRAW_IO_REDEFINED
#include "libraw/libraw.h"
#include "libraw/libraw_types.h"
#include "internal/defines.h"
#include "internal/var_defines.h"
#define stmread(buf, maxlen, fp) stread(buf, MIN(maxlen, sizeof(buf)), fp)
#define strbuflen(buf) strnlen(buf, sizeof(buf) - 1)
#define makeIs(idx) (maker_index == idx)
#define strnXcat(buf, string) \
strncat(buf, string, LIM(sizeof(buf) - strbuflen(buf) - 1, 0, sizeof(buf)))
// DNG was written by:
#define nonDNG 0
#define CameraDNG 1
#define AdobeDNG 2
// Makernote tag type:
#define is_0x927c 0 /* most cameras */
#define is_0xc634 2 /* Adobe DNG, Sony SR2, Pentax */
// abbreviations
#define ilm imgdata.lens.makernotes
#define icWBC imgdata.color.WB_Coeffs
#define icWBCCTC imgdata.color.WBCT_Coeffs
#define imCanon imgdata.makernotes.canon
#define imFuji imgdata.makernotes.fuji
#define imHassy imgdata.makernotes.hasselblad
#define imKodak imgdata.makernotes.kodak
#define imNikon imgdata.makernotes.nikon
#define imOly imgdata.makernotes.olympus
#define imPana imgdata.makernotes.panasonic
#define imPentax imgdata.makernotes.pentax
#define imPhaseOne imgdata.makernotes.phaseone
#define imRicoh imgdata.makernotes.ricoh
#define imSamsung imgdata.makernotes.samsung
#define imSony imgdata.makernotes.sony
#define imCommon imgdata.makernotes.common
#define ph1_bits(n) ph1_bithuff(n, 0)
#define ph1_huff(h) ph1_bithuff(*h, h + 1)
#define getbits(n) getbithuff(n, 0)
#define gethuff(h) getbithuff(*h, h + 1)
#endif

View File

@@ -0,0 +1,25 @@
/* -*- C++ -*-
* Copyright 2019-2021 LibRaw LLC (info@libraw.org)
*
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).
*/
#ifndef DCRAW_FILEIO_DEFS_H
#define DCRAW_FILEIO_DEFS_H
#include <math.h>
#define LIBRAW_LIBRARY_BUILD
#include "libraw/libraw.h"
#include "internal/defines.h"
#include "internal/var_defines.h"
#endif

View File

@@ -0,0 +1,193 @@
/*
Copyright 2008-2021 LibRaw LLC (info@libraw.org)
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).
This file is generated from Dave Coffin's dcraw.c
dcraw.c -- Dave Coffin's raw photo decoder
Copyright 1997-2010 by Dave Coffin, dcoffin a cybercom o net
Look into dcraw homepage (probably http://cybercom.net/~dcoffin/dcraw/)
for more information
*/
#ifndef LIBRAW_INT_DEFINES_H
#define LIBRAW_INT_DEFINES_H
#ifndef USE_JPEG
#define NO_JPEG
#endif
#ifndef USE_JASPER
#define NO_JASPER
#endif
#define DCRAW_VERSION "9.26"
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#define _USE_MATH_DEFINES
#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
#include <float.h>
#include <limits.h>
#include <math.h>
#include <setjmp.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/types.h>
#ifdef __CYGWIN__
#include <io.h>
#endif
#if defined LIBRAW_WIN32_CALLS
#include <sys/utime.h>
#ifndef LIBRAW_NO_WINSOCK2
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#endif
#define snprintf _snprintf
#define strcasecmp stricmp
#define strncasecmp strnicmp
#else
#include <unistd.h>
#include <utime.h>
#include <netinet/in.h>
typedef long long INT64;
typedef unsigned long long UINT64;
#endif
#ifdef NODEPS
#define NO_JASPER
#define NO_JPEG
#define NO_LCMS
#endif
#ifndef NO_JASPER
#include <jasper/jasper.h> /* Decode Red camera movies */
#endif
#ifndef NO_JPEG
#include <jpeglib.h> /* Decode compressed Kodak DC120 photos */
#endif /* and Adobe Lossy DNGs */
#ifndef NO_LCMS
#ifdef USE_LCMS
#include <lcms.h> /* Support color profiles */
#else
#include <lcms2.h> /* Support color profiles */
#endif
#endif
#ifdef LOCALEDIR
#include <libintl.h>
#define _(String) gettext(String)
#else
#define _(String) (String)
#endif
#ifdef LJPEG_DECODE
#error Please compile dcraw.c by itself.
#error Do not link it with ljpeg_decode.
#endif
#ifndef LONG_BIT
#define LONG_BIT (8 * sizeof(long))
#endif
#define FORC(cnt) for (c = 0; c < cnt; c++)
#define FORC3 FORC(3)
#define FORC4 FORC(4)
#define FORCC for (c = 0; c < colors && c < 4; c++)
#define SQR(x) ((x) * (x))
#define ABS(x) (((int)(x) ^ ((int)(x) >> 31)) - ((int)(x) >> 31))
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define LIM(x, min, max) MAX(min, MIN(x, max))
#define ULIM(x, y, z) ((y) < (z) ? LIM(x, y, z) : LIM(x, z, y))
#define CLIP(x) LIM((int)(x), 0, 65535)
#define CLIP15(x) LIM((int)(x), 0, 32767)
#define SWAP(a, b) \
{ \
a = a + b; \
b = a - b; \
a = a - b; \
}
#define my_swap(type, i, j) \
{ \
type t = i; \
i = j; \
j = t; \
}
#ifdef __GNUC__
inline
#elif defined(_MSC_VER)
__forceinline
#else
static
#endif
float fMAX(float a, float b) { return MAX(a, b); }
/*
In order to inline this calculation, I make the risky
assumption that all filter patterns can be described
by a repeating pattern of eight rows and two columns
Do not use the FC or BAYER macros with the Leaf CatchLight,
because its pattern is 16x16, not 2x8.
Return values are either 0/1/2/3 = G/M/C/Y or 0/1/2/3 = R/G1/B/G2
PowerShot 600 PowerShot A50 PowerShot Pro70 Pro90 & G1
0xe1e4e1e4: 0x1b4e4b1e: 0x1e4b4e1b: 0xb4b4b4b4:
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
0 G M G M G M 0 C Y C Y C Y 0 Y C Y C Y C 0 G M G M G M
1 C Y C Y C Y 1 M G M G M G 1 M G M G M G 1 Y C Y C Y C
2 M G M G M G 2 Y C Y C Y C 2 C Y C Y C Y
3 C Y C Y C Y 3 G M G M G M 3 G M G M G M
4 C Y C Y C Y 4 Y C Y C Y C
PowerShot A5 5 G M G M G M 5 G M G M G M
0x1e4e1e4e: 6 Y C Y C Y C 6 C Y C Y C Y
7 M G M G M G 7 M G M G M G
0 1 2 3 4 5
0 C Y C Y C Y
1 G M G M G M
2 C Y C Y C Y
3 M G M G M G
All RGB cameras use one of these Bayer grids:
0x16161616: 0x61616161: 0x49494949: 0x94949494:
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
0 B G B G B G 0 G R G R G R 0 G B G B G B 0 R G R G R G
1 G R G R G R 1 B G B G B G 1 R G R G R G 1 G B G B G B
2 B G B G B G 2 G R G R G R 2 G B G B G B 2 R G R G R G
3 G R G R G R 3 B G B G B G 3 R G R G R G 3 G B G B G B
*/
// _RGBG means R, G1, B, G2 sequence
#define GRBG_2_RGBG(q) (q ^ (q >> 1) ^ 1)
#define RGGB_2_RGBG(q) (q ^ (q >> 1))
#define BG2RG1_2_RGBG(q) (q ^ 2)
#define G2BRG1_2_RGBG(q) (q ^ (q >> 1) ^ 3)
#define GRGB_2_RGBG(q) (q ^ 1)
#define RBGG_2_RGBG(q) ((q >> 1) | ((q & 1) << 1))
#define RAWINDEX(row, col) ((row)*raw_width + (col))
#define RAW(row, col) raw_image[(row)*raw_width + (col)]
#define BAYER(row, col) \
image[((row) >> shrink) * iwidth + ((col) >> shrink)][FC(row, col)]
#define BAYER2(row, col) \
image[((row) >> shrink) * iwidth + ((col) >> shrink)][fcol(row, col)]
#define BAYERC(row, col, c) \
imgdata.image[((row) >> IO.shrink) * S.iwidth + ((col) >> IO.shrink)][c]
#endif

View File

@@ -0,0 +1,27 @@
/* -*- C++ -*-
* Copyright 2019-2021 LibRaw LLC (info@libraw.org)
*
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).
*/
#ifndef DMP_INCLUDE_H
#define DMP_INCLUDE_H
#define LIBRAW_LIBRARY_BUILD
#define LIBRAW_IO_REDEFINED
#include "libraw/libraw.h"
#include "internal/defines.h"
#define SRC_USES_SHRINK
#define SRC_USES_BLACK
#define SRC_USES_CURVE
#endif

View File

@@ -0,0 +1,320 @@
/* -*- C++ -*-
* File: internal/libraw_cameraids.h
* Copyright 2008-2021 LibRaw LLC (info@libraw.org)
* Created: Sat Aug 17, 2020
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).
*/
#ifndef LIBRAW_CONST_H
#define LIBRAW_CONST_H
#define CanonID_EOS_M50 0x00000412ULL
#define CanonID_EOS_M6_Mark_II 0x00000811ULL
#define CanonID_EOS_M200 0x00000812ULL
#define CanonID_EOS_D30 0x01140000ULL
#define CanonID_EOS_D60 0x01668000ULL
#define CanonID_EOS_M3 0x03740000ULL
#define CanonID_EOS_M10 0x03840000ULL
#define CanonID_EOS_M5 0x03940000ULL
#define CanonID_EOS_M100 0x03980000ULL
#define CanonID_EOS_M6 0x04070000ULL
#define CanonID_EOS_1D (0x80000000ULL + 0x001ULL)
#define CanonID_EOS_1Ds (0x80000000ULL + 0x167ULL)
#define CanonID_EOS_10D (0x80000000ULL + 0x168ULL)
#define CanonID_EOS_1D_Mark_III (0x80000000ULL + 0x169ULL)
#define CanonID_EOS_300D (0x80000000ULL + 0x170ULL)
#define CanonID_EOS_1D_Mark_II (0x80000000ULL + 0x174ULL)
#define CanonID_EOS_20D (0x80000000ULL + 0x175ULL)
#define CanonID_EOS_450D (0x80000000ULL + 0x176ULL)
#define CanonID_EOS_1Ds_Mark_II (0x80000000ULL + 0x188ULL)
#define CanonID_EOS_350D (0x80000000ULL + 0x189ULL)
#define CanonID_EOS_40D (0x80000000ULL + 0x190ULL)
#define CanonID_EOS_5D (0x80000000ULL + 0x213ULL)
#define CanonID_EOS_1Ds_Mark_III (0x80000000ULL + 0x215ULL)
#define CanonID_EOS_5D_Mark_II (0x80000000ULL + 0x218ULL)
#define CanonID_EOS_1D_Mark_II_N (0x80000000ULL + 0x232ULL)
#define CanonID_EOS_30D (0x80000000ULL + 0x234ULL)
#define CanonID_EOS_400D (0x80000000ULL + 0x236ULL)
#define CanonID_EOS_7D (0x80000000ULL + 0x250ULL)
#define CanonID_EOS_500D (0x80000000ULL + 0x252ULL)
#define CanonID_EOS_1000D (0x80000000ULL + 0x254ULL)
#define CanonID_EOS_50D (0x80000000ULL + 0x261ULL)
#define CanonID_EOS_1D_X (0x80000000ULL + 0x269ULL)
#define CanonID_EOS_550D (0x80000000ULL + 0x270ULL)
#define CanonID_EOS_1D_Mark_IV (0x80000000ULL + 0x281ULL)
#define CanonID_EOS_5D_Mark_III (0x80000000ULL + 0x285ULL)
#define CanonID_EOS_600D (0x80000000ULL + 0x286ULL)
#define CanonID_EOS_60D (0x80000000ULL + 0x287ULL)
#define CanonID_EOS_1100D (0x80000000ULL + 0x288ULL)
#define CanonID_EOS_7D_Mark_II (0x80000000ULL + 0x289ULL)
#define CanonID_EOS_650D (0x80000000ULL + 0x301ULL)
#define CanonID_EOS_6D (0x80000000ULL + 0x302ULL)
#define CanonID_EOS_1D_C (0x80000000ULL + 0x324ULL)
#define CanonID_EOS_70D (0x80000000ULL + 0x325ULL)
#define CanonID_EOS_700D (0x80000000ULL + 0x326ULL)
#define CanonID_EOS_1200D (0x80000000ULL + 0x327ULL)
#define CanonID_EOS_1D_X_Mark_II (0x80000000ULL + 0x328ULL)
#define CanonID_EOS_M (0x80000000ULL + 0x331ULL)
#define CanonID_EOS_100D (0x80000000ULL + 0x346ULL)
#define CanonID_EOS_760D (0x80000000ULL + 0x347ULL)
#define CanonID_EOS_5D_Mark_IV (0x80000000ULL + 0x349ULL)
#define CanonID_EOS_80D (0x80000000ULL + 0x350ULL)
#define CanonID_EOS_M2 (0x80000000ULL + 0x355ULL)
#define CanonID_EOS_5DS (0x80000000ULL + 0x382ULL)
#define CanonID_EOS_750D (0x80000000ULL + 0x393ULL)
#define CanonID_EOS_5DS_R (0x80000000ULL + 0x401ULL)
#define CanonID_EOS_1300D (0x80000000ULL + 0x404ULL)
#define CanonID_EOS_800D (0x80000000ULL + 0x405ULL)
#define CanonID_EOS_6D_Mark_II (0x80000000ULL + 0x406ULL)
#define CanonID_EOS_77D (0x80000000ULL + 0x408ULL)
#define CanonID_EOS_200D (0x80000000ULL + 0x417ULL)
#define CanonID_EOS_R5 (0x80000000ULL + 0x421ULL)
#define CanonID_EOS_3000D (0x80000000ULL + 0x422ULL)
#define CanonID_EOS_R (0x80000000ULL + 0x424ULL)
#define CanonID_EOS_1D_X_Mark_III (0x80000000ULL + 0x428ULL)
#define CanonID_EOS_1500D (0x80000000ULL + 0x432ULL)
#define CanonID_EOS_RP (0x80000000ULL + 0x433ULL)
#define CanonID_EOS_850D (0x80000000ULL + 0x435ULL)
#define CanonID_EOS_250D (0x80000000ULL + 0x436ULL)
#define CanonID_EOS_90D (0x80000000ULL + 0x437ULL)
#define CanonID_EOS_R3 (0x80000000ULL + 0x450ULL)
#define CanonID_EOS_R6 (0x80000000ULL + 0x453ULL)
#define CanonID_EOS_R7 (0x80000000ULL + 0x464ULL)
#define CanonID_EOS_R10 (0x80000000ULL + 0x465ULL)
#define CanonID_EOS_M50_Mark_II (0x80000000ULL + 0x468ULL)
// CanonID_EOS_D2000C after Canon's TIFF2CR2 convertor:
#define CanonID_EOS_D2000C (0x80000000ULL + 0x520ULL)
// CanonID_EOS_D6000C id after Canon's TIFF2CR2 convertor:
#define CanonID_EOS_D6000C (0x80000000ULL + 0x560ULL)
#define OlyID_str2hex(str) ((unsigned long long)str[0]<<32 | str[1]<<24 | str[2]<<16 | str[3]<<8 | str[4])
#define OlyID_E_20 OlyID_str2hex("D4029")
#define OlyID_E_1 OlyID_str2hex("D4040")
#define OlyID_E_300 OlyID_str2hex("D4041")
#define OlyID_SP_550UZ OlyID_str2hex("D4321")
#define OlyID_SP_510UZ OlyID_str2hex("D4322")
#define OlyID_SP_560UZ OlyID_str2hex("D4355")
#define OlyID_SP_570UZ OlyID_str2hex("D4364")
#define OlyID_SP_565UZ OlyID_str2hex("D4374")
#define OlyID_XZ_1 OlyID_str2hex("D4401")
#define OlyID_XZ_2 OlyID_str2hex("D4531")
#define OlyID_XZ_10 OlyID_str2hex("D4546")
#define OlyID_STYLUS_1 OlyID_str2hex("D4572")
#define OlyID_SH_2 OlyID_str2hex("D4585")
#define OlyID_TG_4 OlyID_str2hex("D4586")
#define OlyID_TG_5 OlyID_str2hex("D4593")
#define OlyID_TG_6 OlyID_str2hex("D4603")
#define OlyID_E_10 OlyID_str2hex("D4842")
#define OlyID_AIR_A01 OlyID_str2hex("K0055")
#define OlyID_NORMA OlyID_str2hex("NORMA")
#define OlyID_E_330 OlyID_str2hex("S0003")
#define OlyID_E_500 OlyID_str2hex("S0004")
#define OlyID_E_400 OlyID_str2hex("S0009")
#define OlyID_E_510 OlyID_str2hex("S0010")
#define OlyID_E_3 OlyID_str2hex("S0011")
#define OlyID_E_410 OlyID_str2hex("S0013")
#define OlyID_E_420 OlyID_str2hex("S0016")
#define OlyID_E_30 OlyID_str2hex("S0017")
#define OlyID_E_520 OlyID_str2hex("S0018")
#define OlyID_E_P1 OlyID_str2hex("S0019")
#define OlyID_E_620 OlyID_str2hex("S0023")
#define OlyID_E_P2 OlyID_str2hex("S0026")
#define OlyID_E_PL1 OlyID_str2hex("S0027")
#define OlyID_E_450 OlyID_str2hex("S0029")
#define OlyID_E_600 OlyID_str2hex("S0030")
#define OlyID_E_P3 OlyID_str2hex("S0032")
#define OlyID_E_5 OlyID_str2hex("S0033")
#define OlyID_E_PL2 OlyID_str2hex("S0034")
#define OlyID_E_M5 OlyID_str2hex("S0036")
#define OlyID_E_PL3 OlyID_str2hex("S0038")
#define OlyID_E_PM1 OlyID_str2hex("S0039")
#define OlyID_E_PL1s OlyID_str2hex("S0040")
#define OlyID_E_PL5 OlyID_str2hex("S0042")
#define OlyID_E_PM2 OlyID_str2hex("S0043")
#define OlyID_E_P5 OlyID_str2hex("S0044")
#define OlyID_E_PL6 OlyID_str2hex("S0045")
#define OlyID_E_PL7 OlyID_str2hex("S0046")
#define OlyID_E_M1 OlyID_str2hex("S0047")
#define OlyID_E_M10 OlyID_str2hex("S0051")
#define OlyID_E_M5_Mark_II OlyID_str2hex("S0052")
#define OlyID_E_M10_Mark_II OlyID_str2hex("S0059")
#define OlyID_PEN_F OlyID_str2hex("S0061")
#define OlyID_E_PL8 OlyID_str2hex("S0065")
#define OlyID_E_M1_Mark_II OlyID_str2hex("S0067")
#define OlyID_E_M10_Mark_III OlyID_str2hex("S0068")
#define OlyID_E_PL9 OlyID_str2hex("S0076")
#define OlyID_E_M1X OlyID_str2hex("S0080")
#define OlyID_E_PL10 OlyID_str2hex("S0085")
#define OlyID_E_M10_Mark_IV OlyID_str2hex("S0088")
#define OlyID_E_M5_Mark_III OlyID_str2hex("S0089")
#define OlyID_E_M1_Mark_III OlyID_str2hex("S0092")
#define OlyID_E_P7 OlyID_str2hex("S0093")
#define OlyID_OM_1 OlyID_str2hex("S0095")
#define OlyID_C_3030Z OlyID_str2hex("SX351")
#define OlyID_C_5050Z OlyID_str2hex("SX558")
#define OlyID_C_350Z OlyID_str2hex("SX751")
#define OlyID_C_740UZ OlyID_str2hex("SX754")
#define OlyID_C_5060WZ OlyID_str2hex("SX756")
#define OlyID_C_8080WZ OlyID_str2hex("SX757")
#define OlyID_C_770UZ OlyID_str2hex("SX772")
#define OlyID_C_7070WZ OlyID_str2hex("SX851")
#define OlyID_C_7000Z OlyID_str2hex("SX852")
#define OlyID_SP_500UZ OlyID_str2hex("SX853")
#define OlyID_SP_310 OlyID_str2hex("SX854")
#define OlyID_SP_350 OlyID_str2hex("SX855")
#define OlyID_SP_320 OlyID_str2hex("SX873")
#define PentaxID_Optio_S 0x1296cULL
#define PentaxID_Optio_S_V101 0x12971ULL
#define PentaxID_staristD 0x12994ULL
#define PentaxID_Optio_33WR 0x129c6ULL
#define PentaxID_Optio_S4 0x129d5ULL
#define PentaxID_Optio_750Z 0x12a66ULL
#define PentaxID_staristDS 0x12aa2ULL
#define PentaxID_staristDL 0x12b1aULL
#define PentaxID_staristDS2 0x12b60ULL
#define PentaxID_GX_1S 0x12b62ULL
#define PentaxID_staristDL2 0x12b7eULL
#define PentaxID_GX_1L 0x12b80ULL
#define PentaxID_K100D 0x12b9cULL
#define PentaxID_K110D 0x12b9dULL
#define PentaxID_K100D_Super 0x12ba2ULL
#define PentaxID_K10D 0x12c1eULL
#define PentaxID_GX10 0x12c20ULL
#define PentaxID_K20D 0x12cd2ULL
#define PentaxID_GX20 0x12cd4ULL
#define PentaxID_K200D 0x12cfaULL
#define PentaxID_K2000 0x12d72ULL
#define PentaxID_K_m 0x12d73ULL
#define PentaxID_K_7 0x12db8ULL
#define PentaxID_K_x 0x12dfeULL
#define PentaxID_645D 0x12e08ULL
#define PentaxID_K_r 0x12e6cULL
#define PentaxID_K_5 0x12e76ULL
#define PentaxID_Q 0x12ee4ULL
#define PentaxID_K_01 0x12ef8ULL
#define PentaxID_K_30 0x12f52ULL
#define PentaxID_Q10 0x12f66ULL
#define PentaxID_K_5_II 0x12f70ULL
#define PentaxID_K_5_II_s 0x12f71ULL
#define PentaxID_Q7 0x12f7aULL
#define PentaxID_MX_1 0x12f84ULL
#define PentaxID_K_50 0x12fb6ULL
#define PentaxID_K_3 0x12fc0ULL
#define PentaxID_K_500 0x12fcaULL
#define PentaxID_645Z 0x13010ULL
#define PentaxID_K_S1 0x1301aULL
#define PentaxID_K_S2 0x13024ULL
#define PentaxID_Q_S1 0x1302eULL
#define PentaxID_K_1 0x13092ULL
#define PentaxID_K_3_II 0x1309cULL
#define PentaxID_GR_III 0x1320eULL
#define PentaxID_K_70 0x13222ULL
#define PentaxID_KP 0x1322cULL
#define PentaxID_K_1_Mark_II 0x13240ULL
#define PentaxID_K_3_III 0x13254ULL
#define PentaxID_GR_IIIx 0x1329aULL
#define SonyID_DSC_R1 0x002ULL
#define SonyID_DSLR_A100 0x100ULL
#define SonyID_DSLR_A900 0x101ULL
#define SonyID_DSLR_A700 0x102ULL
#define SonyID_DSLR_A200 0x103ULL
#define SonyID_DSLR_A350 0x104ULL
#define SonyID_DSLR_A300 0x105ULL
#define SonyID_DSLR_A900_APSC 0x106ULL
#define SonyID_DSLR_A380 0x107ULL
#define SonyID_DSLR_A330 0x108ULL
#define SonyID_DSLR_A230 0x109ULL
#define SonyID_DSLR_A290 0x10aULL
#define SonyID_DSLR_A850 0x10dULL
#define SonyID_DSLR_A850_APSC 0x10eULL
#define SonyID_DSLR_A550 0x111ULL
#define SonyID_DSLR_A500 0x112ULL
#define SonyID_DSLR_A450 0x113ULL
#define SonyID_NEX_5 0x116ULL
#define SonyID_NEX_3 0x117ULL
#define SonyID_SLT_A33 0x118ULL
#define SonyID_SLT_A55 0x119ULL
#define SonyID_DSLR_A560 0x11aULL
#define SonyID_DSLR_A580 0x11bULL
#define SonyID_NEX_C3 0x11cULL
#define SonyID_SLT_A35 0x11dULL
#define SonyID_SLT_A65 0x11eULL
#define SonyID_SLT_A77 0x11fULL
#define SonyID_NEX_5N 0x120ULL
#define SonyID_NEX_7 0x121ULL
#define SonyID_NEX_VG20 0x122ULL
#define SonyID_SLT_A37 0x123ULL
#define SonyID_SLT_A57 0x124ULL
#define SonyID_NEX_F3 0x125ULL
#define SonyID_SLT_A99 0x126ULL
#define SonyID_NEX_6 0x127ULL
#define SonyID_NEX_5R 0x128ULL
#define SonyID_DSC_RX100 0x129ULL
#define SonyID_DSC_RX1 0x12aULL
#define SonyID_NEX_VG900 0x12bULL
#define SonyID_NEX_VG30 0x12cULL
#define SonyID_ILCE_3000 0x12eULL
#define SonyID_SLT_A58 0x12fULL
#define SonyID_NEX_3N 0x131ULL
#define SonyID_ILCE_7 0x132ULL
#define SonyID_NEX_5T 0x133ULL
#define SonyID_DSC_RX100M2 0x134ULL
#define SonyID_DSC_RX10 0x135ULL
#define SonyID_DSC_RX1R 0x136ULL
#define SonyID_ILCE_7R 0x137ULL
#define SonyID_ILCE_6000 0x138ULL
#define SonyID_ILCE_5000 0x139ULL
#define SonyID_DSC_RX100M3 0x13dULL
#define SonyID_ILCE_7S 0x13eULL
#define SonyID_ILCA_77M2 0x13fULL
#define SonyID_ILCE_5100 0x153ULL
#define SonyID_ILCE_7M2 0x154ULL
#define SonyID_DSC_RX100M4 0x155ULL
#define SonyID_DSC_RX10M2 0x156ULL
#define SonyID_DSC_RX1RM2 0x158ULL
#define SonyID_ILCE_QX1 0x15aULL
#define SonyID_ILCE_7RM2 0x15bULL
#define SonyID_ILCE_7SM2 0x15eULL
#define SonyID_ILCA_68 0x161ULL
#define SonyID_ILCA_99M2 0x162ULL
#define SonyID_DSC_RX10M3 0x163ULL
#define SonyID_DSC_RX100M5 0x164ULL
#define SonyID_ILCE_6300 0x165ULL
#define SonyID_ILCE_9 0x166ULL
#define SonyID_ILCE_6500 0x168ULL
#define SonyID_ILCE_7RM3 0x16aULL
#define SonyID_ILCE_7M3 0x16bULL
#define SonyID_DSC_RX0 0x16cULL
#define SonyID_DSC_RX10M4 0x16dULL
#define SonyID_DSC_RX100M6 0x16eULL
#define SonyID_DSC_HX99 0x16fULL
#define SonyID_DSC_RX100M5A 0x171ULL
#define SonyID_ILCE_6400 0x173ULL
#define SonyID_DSC_RX0M2 0x174ULL
#define SonyID_DSC_RX100M7 0x176ULL
#define SonyID_ILCE_7RM4 0x177ULL
#define SonyID_ILCE_9M2 0x178ULL
#define SonyID_ILCE_6600 0x17aULL
#define SonyID_ILCE_6100 0x17bULL
#define SonyID_ZV_1 0x17cULL
#define SonyID_ILCE_7C 0x17dULL
#define SonyID_ZV_E10 0x17eULL
#define SonyID_ILCE_7SM3 0x17fULL
#define SonyID_ILCE_1 0x180ULL
#define SonyID_ILME_FX3 0x181ULL
#define SonyID_ILCE_7RM3A 0x182ULL
#define SonyID_ILCE_7RM4A 0x183ULL
#define SonyID_ILCE_7M4 0x184ULL
#endif

Some files were not shown because too many files have changed in this diff Show More