Author: post
Date: 2010-02-06 16:35:58 +0100 (Sat, 06 Feb 2010)
New Revision: 3164
Added:
trunk/plugins/load-rawspeed/Makefile.am
trunk/plugins/load-rawspeed/rawstudio-plugin-api.cpp
trunk/plugins/load-rawspeed/rawstudio-plugin-api.h
trunk/plugins/load-rawspeed/rawstudio-plugin.c
Modified:
trunk/configure.in
trunk/plugins/Makefile.am
Log:
Add RawSpeed plugin and makefiles
Modified: trunk/configure.in
===================================================================
--- trunk/configure.in 2010-02-06 14:49:44 UTC (rev 3163)
+++ trunk/configure.in 2010-02-06 15:35:58 UTC (rev 3164)
@@ -124,6 +124,7 @@
plugins/lensfun/Makefile
plugins/load-dcraw/Makefile
plugins/load-gdk/Makefile
+plugins/load-rawspeed/Makefile
plugins/meta-ciff/Makefile
plugins/meta-mrw/Makefile
plugins/meta-raf/Makefile
Modified: trunk/plugins/Makefile.am
===================================================================
--- trunk/plugins/Makefile.am 2010-02-06 14:49:44 UTC (rev 3163)
+++ trunk/plugins/Makefile.am 2010-02-06 15:35:58 UTC (rev 3164)
@@ -15,6 +15,7 @@
lensfun \
load-dcraw \
load-gdk \
+ load-rawspeed \
meta-ciff \
meta-mrw \
meta-raf \
Added: trunk/plugins/load-rawspeed/Makefile.am
===================================================================
--- trunk/plugins/load-rawspeed/Makefile.am (rev 0)
+++ trunk/plugins/load-rawspeed/Makefile.am 2010-02-06 15:35:58 UTC (rev
3164)
@@ -0,0 +1,66 @@
+plugindir = $(libdir)/rawstudio/plugins
+
+AM_CFLAGS =\
+ -Wall\
+ -O3
+
+AM_CXXFLAGS = $(AM_CFLAGS)
+
+INCLUDES = \
+ -DPACKAGE_DATA_DIR=\""$(datadir)"\" \
+ -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
+ @PACKAGE_CFLAGS@ \
+ -I$(top_srcdir)/librawstudio/ \
+ -I$(top_srcdir)/ \
+ -I$(top_srcdir)/plugins/load-rawspeed/rawspeed/
+
+lib_LTLIBRARIES = load_rawspeed.la
+
+libdir = $(datadir)/rawstudio/plugins/
+
+load_rawspeed_la_LIBADD = @PACKAGE_LIBS@
+load_rawspeed_la_LDFLAGS = -module -avoid-version
+load_rawspeed_la_SOURCES = rawstudio-plugin-api.cpp \
+ rawstudio-plugin.c \
+ rawspeed/ArwDecoder.cpp \
+ rawspeed/BitPumpJPEG.cpp \
+ rawspeed/BitPumpMSB.cpp \
+ rawspeed/BitPumpPlain.cpp \
+ rawspeed/BlackArea.cpp \
+ rawspeed/ByteStream.cpp \
+ rawspeed/Camera.cpp \
+ rawspeed/CameraMetaData.cpp \
+ rawspeed/CameraMetadataException.cpp \
+ rawspeed/ColorFilterArray.cpp \
+ rawspeed/Common.cpp \
+ rawspeed/Cr2Decoder.cpp \
+ rawspeed/DngDecoder.cpp \
+ rawspeed/DngDecoderSlices.cpp \
+ rawspeed/FileIOException.cpp \
+ rawspeed/FileMap.cpp \
+ rawspeed/FileReader.cpp \
+ rawspeed/IOException.cpp \
+ rawspeed/LJpegDecompressor.cpp \
+ rawspeed/LJpegPlain.cpp \
+ rawspeed/NefDecoder.cpp \
+ rawspeed/NikonDecompressor.cpp \
+ rawspeed/OrfDecoder.cpp \
+ rawspeed/PefDecoder.cpp \
+ rawspeed/PentaxDecompressor.cpp \
+ rawspeed/RawDecoder.cpp \
+ rawspeed/RawDecoderException.cpp \
+ rawspeed/RawImage.cpp \
+ rawspeed/Rw2Decoder.cpp \
+ rawspeed/StdAfx.cpp \
+ rawspeed/TiffEntryBE.cpp \
+ rawspeed/TiffEntry.cpp \
+ rawspeed/TiffIFDBE.cpp \
+ rawspeed/TiffIFD.cpp \
+ rawspeed/TiffParser.cpp \
+ rawspeed/TiffParserException.cpp \
+ rawspeed/TiffParserHeaderless.cpp \
+ rawspeed/TiffParserOlympus.cpp
+
+rawspeeddir = $(datadir)/rawspeed
+rawspeed_DATA = data/cameras.xml
+EXTRA_DIST = $(rawspeed_DATA)
\ No newline at end of file
Added: trunk/plugins/load-rawspeed/rawstudio-plugin-api.cpp
===================================================================
--- trunk/plugins/load-rawspeed/rawstudio-plugin-api.cpp
(rev 0)
+++ trunk/plugins/load-rawspeed/rawstudio-plugin-api.cpp 2010-02-06
15:35:58 UTC (rev 3164)
@@ -0,0 +1,156 @@
+#include <rawstudio.h>
+#include "StdAfx.h"
+#include "FileReader.h"
+#include "TiffParser.h"
+#include "RawDecoder.h"
+#include "CameraMetaData.h"
+#include "rawstudio-plugin-api.h"
+/*
+ RawSpeed - RAW file decoder.
+
+ Copyright (C) 2009 Klaus Post
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
USA
+
+ http://www.klauspost.com
+*/
+
+#define TIME_LOAD 1
+
+using namespace RawSpeed;
+
+extern "C" {
+
+RS_IMAGE16 *
+load_rawspeed(const gchar *filename)
+{
+ static CameraMetaData *c = NULL;
+ if (!c)
+ {
+ gchar *path = g_build_filename(PACKAGE_DATA_DIR,
"rawspeed/cameras.xml", NULL);
+ try {
+ c = new CameraMetaData(path);
+ } catch (CameraMetadataException e) {
+ printf("RawSpeed: Could not open camera metadata
information.\n%s\nRawSpeed will not be used!\n", e.what());
+ return NULL;
+ }
+ g_free(path);
+ }
+
+ RS_IMAGE16 *image = NULL;
+ FileReader f((char *) filename);
+ RawDecoder *d = 0;
+ FileMap* m = 0;
+
+ try
+ {
+#ifdef TIME_LOAD
+ GTimer *gt = g_timer_new();
+#endif
+
+ try
+ {
+ rs_io_lock();
+ m = f.readFile();
+ rs_io_unlock();
+ } catch (FileIOException e) {
+ printf("RawSpeed: IO Error occured:%s\n", e.what());
+ g_timer_destroy(gt);
+ return image;
+ }
+
+#ifdef TIME_LOAD
+ printf("RawSpeed Open %s: %.03fs\n", filename,
g_timer_elapsed(gt, NULL));
+ g_timer_destroy(gt);
+#endif
+
+ TiffParser t(m);
+ t.parseData();
+ d = t.getDecoder();
+
+ try
+ {
+ gint col, row;
+ gint cpp;
+
+#ifdef TIME_LOAD
+ gt = g_timer_new();
+#endif
+ d->checkSupport(c);
+ d->decodeRaw();
+ d->decodeMetaData(c);
+
+ for (guint i = 0; i < d->errors.size(); i++)
+ printf("RawSpeed: Error Encountered:%s\n",
d->errors[i]);
+
+ RawImage r = d->mRaw;
+ r->scaleBlackWhite();
+
+#ifdef TIME_LOAD
+ printf("RawSpeed Decode %s: %.03fs\n", filename, g_timer_elapsed(gt,
NULL));
+ g_timer_destroy(gt);
+#endif
+
+ cpp = r->getCpp();
+ if (cpp == 1)
+ image = rs_image16_new(r->dim.x, r->dim.y, cpp,
cpp);
+ else if (cpp == 3)
+ image = rs_image16_new(r->dim.x, r->dim.y, 3,
4);
+ else {
+ printf("RawSpeed: Unsupported component per
pixel count\n");
+ return NULL;
+ }
+
+ if (r->isCFA)
+ image->filters = r->cfa.getDcrawFilter();
+
+
+ if (cpp == 1)
+ {
+ BitBlt((guchar *)(GET_PIXEL(image,0,0)),image->pitch*2,
+ r->getData(0,0), r->pitch, r->bpp*r->dim.x, r->dim.y);
+ } else
+ {
+ for(row=0;row<image->h;row++)
+ {
+ gushort *inpixel = (gushort*)&r->getData()[row*r->pitch];
+ gushort *outpixel = GET_PIXEL(image, 0, row);
+ for(col=0;col<image->w;col++)
+ {
+ *outpixel++ = *inpixel++;
+ *outpixel++ = *inpixel++;
+ *outpixel++ = *inpixel++;
+ outpixel++;
+ }
+ }
+ }
+ }
+ catch (RawDecoderException e)
+ {
+ printf("RawSpeed: RawDecoderException: %s\n", e.what());
+ }
+ }
+ catch (TiffParserException e)
+ {
+ printf("RawSpeed: TiffParserException: %s\n", e.what());
+ }
+
+ if (d) delete d;
+ if (m) delete m;
+
+ return image;
+}
+
+} /* extern "C" */
Added: trunk/plugins/load-rawspeed/rawstudio-plugin-api.h
===================================================================
--- trunk/plugins/load-rawspeed/rawstudio-plugin-api.h
(rev 0)
+++ trunk/plugins/load-rawspeed/rawstudio-plugin-api.h 2010-02-06 15:35:58 UTC
(rev 3164)
@@ -0,0 +1,30 @@
+#include <rawstudio.h>
+/*
+ RawSpeed - RAW file decoder.
+
+ Copyright (C) 2009 Klaus Post
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
USA
+
+ http://www.klauspost.com
+*/
+
+G_BEGIN_DECLS
+
+RS_IMAGE16 *
+load_rawspeed(const gchar *filename);
+
+G_END_DECLS
+
Added: trunk/plugins/load-rawspeed/rawstudio-plugin.c
===================================================================
--- trunk/plugins/load-rawspeed/rawstudio-plugin.c
(rev 0)
+++ trunk/plugins/load-rawspeed/rawstudio-plugin.c 2010-02-06 15:35:58 UTC
(rev 3164)
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2006-2009 Anders Brander <[email protected]> and
+ * Anders Kvist <[email protected]>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
+ */
+
+#include <rawstudio.h>
+#include "rawstudio-plugin-api.h"
+
+G_MODULE_EXPORT void
+rs_plugin_load(RSPlugin *plugin)
+{
+ rs_filetype_register_loader(".arw", "Sony", load_rawspeed, 5);
+ rs_filetype_register_loader(".cr2", "Canon CR2", load_rawspeed, 5);
+ rs_filetype_register_loader(".dng", "Adobe Digital Negative",
load_rawspeed, 5);
+ rs_filetype_register_loader(".nef", "Nikon NEF", load_rawspeed, 5);
+ rs_filetype_register_loader(".orf", "Olympus", load_rawspeed, 5);
+ rs_filetype_register_loader(".pef", "Pentax raw", load_rawspeed, 5);
+ rs_filetype_register_loader(".rw2", "Panasonic raw", load_rawspeed, 5);
+}
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit