Accepting request 706610 from home:iznogood:branches:multimedia:libs
Bump to latest upstream release, fixes build for factory, but due to changed .pc file name might cause some fallout in dependant packages OBS-URL: https://build.opensuse.org/request/show/706610 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/libopenraw?expand=0&rev=32
This commit is contained in:
parent
37bb7c3aa3
commit
5d893de3d2
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:49fd1adf0a0228c7a17a79bf98d8d03664195feae1e50f4ddd1b20162626e18f
|
||||
size 478687
|
@ -1,7 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v1.4.11 (GNU/Linux)
|
||||
|
||||
iEYEABECAAYFAk7AMywACgkQX+4F5qVuFaMwtgCghLAh0PRKj0OlNdgJLjTdyVzY
|
||||
DhIAnj/pwEuM8cunKA0twmaBD+FqN60R
|
||||
=dtsO
|
||||
-----END PGP SIGNATURE-----
|
3
libopenraw-0.1.3.tar.bz2
Normal file
3
libopenraw-0.1.3.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6405634f555849eb01cb028e2a63936e7b841151ea2a1571ac5b5b10431cfab9
|
||||
size 565458
|
6
libopenraw-0.1.3.tar.bz2.asc
Normal file
6
libopenraw-0.1.3.tar.bz2.asc
Normal file
@ -0,0 +1,6 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iEYEABECAAYFAlrryRQACgkQX+4F5qVuFaOmCgCfQVKNcR19gYzU5y5H+6ms1nNL
|
||||
dhEAniHMwI17sNn5a3HJJ5mJguhC4Mp4
|
||||
=6GSi
|
||||
-----END PGP SIGNATURE-----
|
@ -1,582 +0,0 @@
|
||||
From 9be26e10ecbf89ce99b294906be1208d5a484c7e Mon Sep 17 00:00:00 2001
|
||||
From: Hubert Figuiere <hub@figuiere.net>
|
||||
Date: Fri, 18 Mar 2011 23:41:38 -0700
|
||||
Subject: [PATCH 1/2] Better support for compression ID
|
||||
Implement Olympus decompression (with decompressor borrowed from RawSpeed)
|
||||
|
||||
---
|
||||
AUTHORS | 3 +
|
||||
lib/Makefile.am | 2 +
|
||||
lib/bititerator.cpp | 30 +++++--
|
||||
lib/bititerator.h | 4 +-
|
||||
lib/dngfile.cpp | 2 +-
|
||||
lib/ifd.h | 4 +-
|
||||
lib/ifdfile.cpp | 14 +++-
|
||||
lib/ifdfile.h | 7 ++
|
||||
lib/olympusdecompressor.cpp | 205 +++++++++++++++++++++++++++++++++++++++++++
|
||||
lib/olympusdecompressor.h | 51 +++++++++++
|
||||
lib/orffile.cpp | 28 +++++-
|
||||
lib/orffile.h | 5 +
|
||||
lib/peffile.cpp | 2 +-
|
||||
13 files changed, 338 insertions(+), 19 deletions(-)
|
||||
create mode 100644 lib/olympusdecompressor.cpp
|
||||
create mode 100644 lib/olympusdecompressor.h
|
||||
|
||||
Index: libopenraw-0.0.8/AUTHORS
|
||||
===================================================================
|
||||
--- libopenraw-0.0.8.orig/AUTHORS
|
||||
+++ libopenraw-0.0.8/AUTHORS
|
||||
@@ -4,6 +4,9 @@ MRW support: Bradley Broom
|
||||
NEF decompression: Rafael Espíndola
|
||||
Python bindings: Brian Quinlan
|
||||
|
||||
+Indirect contributors:
|
||||
+Klaus Post for code from RawSpeed.
|
||||
+
|
||||
Sponsors:
|
||||
Novell sponsored time to work on libopenraw as part of their ITO programme
|
||||
(and HackWeek in February 2008)
|
||||
Index: libopenraw-0.0.8/lib/Makefile.am
|
||||
===================================================================
|
||||
--- libopenraw-0.0.8.orig/lib/Makefile.am
|
||||
+++ libopenraw-0.0.8/lib/Makefile.am
|
||||
@@ -32,6 +32,7 @@ noinst_HEADERS = or_debug.h \
|
||||
ljpegdecompressor.h \
|
||||
ljpegdecompressor_priv.h \
|
||||
crwdecompressor.h \
|
||||
+ olympusdecompressor.h \
|
||||
exception.h \
|
||||
endianutils.h \
|
||||
metavalue.h \
|
||||
@@ -83,6 +84,7 @@ libopenraw_la_SOURCES = \
|
||||
decompressor.cpp \
|
||||
ljpegdecompressor.cpp \
|
||||
crwdecompressor.cpp \
|
||||
+ olympusdecompressor.cpp \
|
||||
metavalue.cpp \
|
||||
unpack.cpp \
|
||||
bimedian_demosaic.cpp demosaic.h \
|
||||
Index: libopenraw-0.0.8/lib/bititerator.cpp
|
||||
===================================================================
|
||||
--- libopenraw-0.0.8.orig/lib/bititerator.cpp
|
||||
+++ libopenraw-0.0.8/lib/bititerator.cpp
|
||||
@@ -20,6 +20,7 @@
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
+#include <algorithm>
|
||||
#include "bititerator.h"
|
||||
|
||||
namespace OpenRaw {
|
||||
@@ -53,22 +54,35 @@ void BitIterator::load(size_t numBits)
|
||||
|
||||
uint32_t BitIterator::get(size_t n)
|
||||
{
|
||||
- assert(n <= 25);
|
||||
+ uint32_t ret = peek(n);
|
||||
+
|
||||
+ skip(n);
|
||||
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+uint32_t BitIterator::peek(size_t n)
|
||||
+{
|
||||
+ assert(n <= 25);
|
||||
+
|
||||
if (n == 0)
|
||||
return 0;
|
||||
-
|
||||
+
|
||||
if (n > m_bitsOnBuffer)
|
||||
load(n - m_bitsOnBuffer);
|
||||
-
|
||||
+
|
||||
assert(n <= m_bitsOnBuffer);
|
||||
+
|
||||
+ return m_bitBuffer >> (32 - n);
|
||||
+}
|
||||
|
||||
- uint32_t ret = m_bitBuffer >> (32 - n);
|
||||
- m_bitsOnBuffer -= n;
|
||||
- m_bitBuffer <<= n;
|
||||
-
|
||||
- return ret;
|
||||
+void BitIterator::skip(size_t n)
|
||||
+{
|
||||
+ size_t num_bits = std::min(n, m_bitsOnBuffer);
|
||||
+ m_bitsOnBuffer -= num_bits;
|
||||
+ m_bitBuffer <<= num_bits;
|
||||
}
|
||||
|
||||
+
|
||||
}
|
||||
}
|
||||
Index: libopenraw-0.0.8/lib/bititerator.h
|
||||
===================================================================
|
||||
--- libopenraw-0.0.8.orig/lib/bititerator.h
|
||||
+++ libopenraw-0.0.8/lib/bititerator.h
|
||||
@@ -31,12 +31,14 @@ namespace Internals {
|
||||
class BitIterator {
|
||||
const uint8_t* m_p;
|
||||
uint32_t m_bitBuffer;
|
||||
- uint8_t m_bitsOnBuffer;
|
||||
+ size_t m_bitsOnBuffer;
|
||||
void load(size_t numBits);
|
||||
|
||||
public:
|
||||
BitIterator(const void *);
|
||||
uint32_t get(size_t);
|
||||
+ uint32_t peek(size_t);
|
||||
+ void skip(size_t);
|
||||
};
|
||||
|
||||
}
|
||||
Index: libopenraw-0.0.8/lib/dngfile.cpp
|
||||
===================================================================
|
||||
--- libopenraw-0.0.8.orig/lib/dngfile.cpp
|
||||
+++ libopenraw-0.0.8/lib/dngfile.cpp
|
||||
@@ -89,7 +89,7 @@ namespace OpenRaw {
|
||||
if(ret == OR_ERROR_NONE) {
|
||||
uint16_t compression = 0;
|
||||
if (m_cfaIfd->getValue(IFD::EXIF_TAG_COMPRESSION, compression) &&
|
||||
- compression == 7) {
|
||||
+ compression == IFD::COMPRESS_LJPEG) {
|
||||
// if the option is not set, decompress
|
||||
if ((options & OR_OPTIONS_DONT_DECOMPRESS) == 0) {
|
||||
boost::scoped_ptr<IO::Stream> s(new IO::MemStream(data.data(),
|
||||
Index: libopenraw-0.0.8/lib/ifd.h
|
||||
===================================================================
|
||||
--- libopenraw-0.0.8.orig/lib/ifd.h
|
||||
+++ libopenraw-0.0.8/lib/ifd.h
|
||||
@@ -69,8 +69,10 @@ namespace OpenRaw {
|
||||
typedef enum {
|
||||
COMPRESS_NONE = 1,
|
||||
COMPRESS_JPEG = 6,
|
||||
+ COMPRESS_LJPEG = 7, /**< Lossless JPEG, see DNG */
|
||||
COMPRESS_NIKON_PACK = 32769,
|
||||
- COMPRESS_NIKON_QUANTIZED = 34713
|
||||
+ COMPRESS_NIKON_QUANTIZED = 34713,
|
||||
+ COMPRESS_CUSTOM = 65535 /**< The value everybody seems to use */
|
||||
} TiffCompress;
|
||||
}
|
||||
}
|
||||
Index: libopenraw-0.0.8/lib/ifdfile.cpp
|
||||
===================================================================
|
||||
--- libopenraw-0.0.8.orig/lib/ifdfile.cpp
|
||||
+++ libopenraw-0.0.8/lib/ifdfile.cpp
|
||||
@@ -339,6 +339,15 @@ MetaValue *IFDFile::_getMetaValue(int32_
|
||||
}
|
||||
return val;
|
||||
}
|
||||
+
|
||||
+/** by default we don't translate the compression
|
||||
+ */
|
||||
+uint32_t IFDFile::_translateCompressionType(IFD::TiffCompress tiffCompression)
|
||||
+{
|
||||
+ return (uint32_t)tiffCompression;
|
||||
+}
|
||||
+
|
||||
+
|
||||
|
||||
|
||||
namespace {
|
||||
@@ -541,14 +550,15 @@ static RawData::CfaPattern _getCfaPatter
|
||||
return OR_ERROR_NOT_FOUND;
|
||||
}
|
||||
|
||||
- uint32_t compression = 0;
|
||||
- got_it = dir->getIntegerValue(IFD::EXIF_TAG_COMPRESSION, compression);
|
||||
+ uint16_t tiffCompression = 0;
|
||||
+ got_it = dir->getValue(IFD::EXIF_TAG_COMPRESSION, tiffCompression);
|
||||
if(!got_it)
|
||||
{
|
||||
Trace(DEBUG1) << "Compression type not found\n";
|
||||
}
|
||||
BitmapData::DataType data_type = OR_DATA_TYPE_NONE;
|
||||
|
||||
+ uint32_t compression = _translateCompressionType((IFD::TiffCompress)tiffCompression);
|
||||
switch(compression)
|
||||
{
|
||||
case IFD::COMPRESS_NONE:
|
||||
Index: libopenraw-0.0.8/lib/ifdfile.h
|
||||
===================================================================
|
||||
--- libopenraw-0.0.8.orig/lib/ifdfile.h
|
||||
+++ libopenraw-0.0.8/lib/ifdfile.h
|
||||
@@ -102,6 +102,13 @@ namespace OpenRaw {
|
||||
|
||||
virtual MetaValue *_getMetaValue(int32_t meta_index);
|
||||
|
||||
+ /** Translate the compression type from the tiff type (16MSB)
|
||||
+ * to the RAW specific type if needed (16MSB)
|
||||
+ * @param tiffCompression the 16 bits value from TIFF
|
||||
+ * @return the actually value. Anything >= 2^16 is specific the RAW type
|
||||
+ */
|
||||
+ virtual uint32_t _translateCompressionType(IFD::TiffCompress tiffCompression);
|
||||
+
|
||||
IFDDir::Ref m_cfaIfd; /**< the IFD for the CFA */
|
||||
IFDDir::Ref m_mainIfd; /**< the IFD for the main image
|
||||
* does not necessarily reference
|
||||
Index: libopenraw-0.0.8/lib/olympusdecompressor.cpp
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libopenraw-0.0.8/lib/olympusdecompressor.cpp
|
||||
@@ -0,0 +1,207 @@
|
||||
+/*
|
||||
+ * libopenraw - olympusdecompressor.cpp
|
||||
+ *
|
||||
+ * Copyright (C) 2011 Hubert Figuiere
|
||||
+ * Olympus Decompression copied from RawSpeed
|
||||
+ * 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 3 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, see
|
||||
+ * <http://www.gnu.org/licenses/>.
|
||||
+ */
|
||||
+
|
||||
+#include <stdlib.h>
|
||||
+
|
||||
+#include <libopenraw++/rawdata.h>
|
||||
+
|
||||
+#include "io/stream.h"
|
||||
+#include "olympusdecompressor.h"
|
||||
+#include "bititerator.h"
|
||||
+
|
||||
+
|
||||
+namespace OpenRaw {
|
||||
+namespace Internals {
|
||||
+
|
||||
+static void decompressOlympus(const uint8_t* buffer, uint8_t* data, uint32_t w, uint32_t h);
|
||||
+
|
||||
+// decompression ported from RawSpeed.
|
||||
+static void decompressOlympus(const uint8_t* buffer, uint8_t* data, uint32_t w, uint32_t h)
|
||||
+{
|
||||
+ int nbits, sign, low, high, i, wo0, n, nw0, wo1, nw1;
|
||||
+ int acarry0[3], acarry1[3], pred, diff;
|
||||
+
|
||||
+ int pitch = w * 2; //(((w * 2/*bpp*/) + 15) / 16) * 16; // TODO make that part of the outer datas
|
||||
+
|
||||
+ /* Build a table to quickly look up "high" value */
|
||||
+ char bittable[4096];
|
||||
+ for (i = 0; i < 4096; i++) {
|
||||
+ int b = i;
|
||||
+ for (high = 0; high < 12; high++) {
|
||||
+ if ((b>>(11-high))&1) {
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ bittable[i] = high;
|
||||
+ }
|
||||
+ wo0 = nw0 = wo1 = nw1 = 0;
|
||||
+ buffer += 7;
|
||||
+
|
||||
+ BitIterator bits(buffer);
|
||||
+
|
||||
+ for (uint32_t y = 0; y < h; y++) {
|
||||
+ memset(acarry0, 0, sizeof acarry0);
|
||||
+ memset(acarry1, 0, sizeof acarry1);
|
||||
+ uint16_t* dest = (uint16_t*) & data[y*pitch];
|
||||
+ for (uint32_t x = 0; x < w; x++) {
|
||||
+// bits.checkPos();
|
||||
+// bits.fill();
|
||||
+ i = 2 * (acarry0[2] < 3);
|
||||
+ for (nbits = 2 + i; (uint16_t) acarry0[0] >> (nbits + i); nbits++) {
|
||||
+
|
||||
+ }
|
||||
+
|
||||
+ uint32_t b = bits.peek(15);
|
||||
+ sign = (b >> 14) * -1;
|
||||
+ low = (b >> 12) & 3;
|
||||
+ high = bittable[b&4095];
|
||||
+ // Skip bits used above.
|
||||
+ bits.skip(std::min(12+3, high + 1 + 3));
|
||||
+
|
||||
+ if (high == 12) {
|
||||
+ high = bits.get(16 - nbits) >> 1;
|
||||
+ }
|
||||
+
|
||||
+ acarry0[0] = (high << nbits) | bits.get(nbits);
|
||||
+ diff = (acarry0[0] ^ sign) + acarry0[1];
|
||||
+ acarry0[1] = (diff * 3 + acarry0[1]) >> 5;
|
||||
+ acarry0[2] = acarry0[0] > 16 ? 0 : acarry0[2] + 1;
|
||||
+
|
||||
+ if (y < 2 || x < 2) {
|
||||
+ if (y < 2 && x < 2) {
|
||||
+ pred = 0;
|
||||
+ }
|
||||
+ else if (y < 2) {
|
||||
+ pred = wo0;
|
||||
+ }
|
||||
+ else {
|
||||
+ pred = dest[-pitch+((int)x)];
|
||||
+ nw0 = pred;
|
||||
+ }
|
||||
+ dest[x] = pred + ((diff << 2) | low);
|
||||
+ // Set predictor
|
||||
+ wo0 = dest[x];
|
||||
+ }
|
||||
+ else {
|
||||
+ n = dest[-pitch+((int)x)];
|
||||
+ if (((wo0 < nw0) & (nw0 < n)) | ((n < nw0) & (nw0 < wo0))) {
|
||||
+ if (abs(wo0 - nw0) > 32 || abs(n - nw0) > 32) {
|
||||
+ pred = wo0 + n - nw0;
|
||||
+ }
|
||||
+ else {
|
||||
+ pred = (wo0 + n) >> 1;
|
||||
+ }
|
||||
+ }
|
||||
+ else {
|
||||
+ pred = abs(wo0 - nw0) > abs(n - nw0) ? wo0 : n;
|
||||
+ }
|
||||
+
|
||||
+ dest[x] = pred + ((diff << 2) | low);
|
||||
+ // Set predictors
|
||||
+ wo0 = dest[x];
|
||||
+ nw0 = n;
|
||||
+ }
|
||||
+ // _ASSERTE(0 == dest[x] >> 12) ;
|
||||
+
|
||||
+ // ODD PIXELS
|
||||
+ x += 1;
|
||||
+// bits.checkPos();
|
||||
+// bits.fill();
|
||||
+ i = 2 * (acarry1[2] < 3);
|
||||
+ for (nbits = 2 + i; (uint16_t) acarry1[0] >> (nbits + i); nbits++) {
|
||||
+
|
||||
+ }
|
||||
+ b = bits.peek(15);
|
||||
+ sign = (b >> 14) * -1;
|
||||
+ low = (b >> 12) & 3;
|
||||
+ high = bittable[b&4095];
|
||||
+ // Skip bits used above.
|
||||
+ bits.skip(std::min(12+3, high + 1 + 3));
|
||||
+
|
||||
+ if (high == 12) {
|
||||
+ high = bits.get(16 - nbits) >> 1;
|
||||
+ }
|
||||
+
|
||||
+ acarry1[0] = (high << nbits) | bits.get(nbits);
|
||||
+ diff = (acarry1[0] ^ sign) + acarry1[1];
|
||||
+ acarry1[1] = (diff * 3 + acarry1[1]) >> 5;
|
||||
+ acarry1[2] = acarry1[0] > 16 ? 0 : acarry1[2] + 1;
|
||||
+
|
||||
+ if (y < 2 || x < 2) {
|
||||
+ if (y < 2 && x < 2) {
|
||||
+ pred = 0;
|
||||
+ }
|
||||
+ else if (y < 2) {
|
||||
+ pred = wo1;
|
||||
+ }
|
||||
+ else {
|
||||
+ pred = dest[-pitch+((int)x)];
|
||||
+ nw1 = pred;
|
||||
+ }
|
||||
+ dest[x] = pred + ((diff << 2) | low);
|
||||
+ // Set predictor
|
||||
+ wo1 = dest[x];
|
||||
+ }
|
||||
+ else {
|
||||
+ n = dest[-pitch+((int)x)];
|
||||
+ if (((wo1 < nw1) & (nw1 < n)) | ((n < nw1) & (nw1 < wo1))) {
|
||||
+ if (abs(wo1 - nw1) > 32 || abs(n - nw1) > 32) {
|
||||
+ pred = wo1 + n - nw1;
|
||||
+ }
|
||||
+ else {
|
||||
+ pred = (wo1 + n) >> 1;
|
||||
+ }
|
||||
+ }
|
||||
+ else {
|
||||
+ pred = abs(wo1 - nw1) > abs(n - nw1) ? wo1 : n;
|
||||
+ }
|
||||
+
|
||||
+ dest[x] = pred + ((diff << 2) | low);
|
||||
+
|
||||
+ // Set predictors
|
||||
+ wo1 = dest[x];
|
||||
+ nw1 = n;
|
||||
+ }
|
||||
+ // _ASSERTE(0 == dest[x] >> 12) ;
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+RawData *OlympusDecompressor::decompress(RawData *in)
|
||||
+{
|
||||
+ RawData *output;
|
||||
+ if(in) {
|
||||
+ output = in;
|
||||
+ }
|
||||
+ else {
|
||||
+ output = new RawData;
|
||||
+ }
|
||||
+
|
||||
+ output->allocData(m_w * m_h * 2);
|
||||
+ decompressOlympus(m_buffer, (uint8_t*)output->data(), m_w, m_h);
|
||||
+
|
||||
+ return output;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+}
|
||||
+}
|
||||
Index: libopenraw-0.0.8/lib/olympusdecompressor.h
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libopenraw-0.0.8/lib/olympusdecompressor.h
|
||||
@@ -0,0 +1,51 @@
|
||||
+/*
|
||||
+ * libopenraw - olympusdecompressor.cpp
|
||||
+ *
|
||||
+ * Copyright (C) 2011 Hubert Figuiere
|
||||
+ *
|
||||
+ * 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 3 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, see
|
||||
+ * <http://www.gnu.org/licenses/>.
|
||||
+ */
|
||||
+
|
||||
+
|
||||
+#ifndef __OPENRAW_OLYMPUSDECOMPRESSOR_H__
|
||||
+#define __OPENRAW_OLYMPUSDECOMPRESSOR_H__
|
||||
+
|
||||
+#include "decompressor.h"
|
||||
+
|
||||
+namespace OpenRaw {
|
||||
+namespace Internals {
|
||||
+
|
||||
+class OlympusDecompressor
|
||||
+ : public Decompressor
|
||||
+{
|
||||
+public:
|
||||
+ OlympusDecompressor(const uint8_t *buffer,
|
||||
+ RawContainer * container, uint32_t w, uint32_t h)
|
||||
+ : Decompressor(NULL, container)
|
||||
+ , m_buffer(buffer)
|
||||
+ , m_h(h)
|
||||
+ , m_w(w)
|
||||
+ {
|
||||
+ }
|
||||
+ virtual RawData *decompress(RawData *in = NULL);
|
||||
+private:
|
||||
+ const uint8_t *m_buffer;
|
||||
+ uint32_t m_h;
|
||||
+ uint32_t m_w;
|
||||
+};
|
||||
+
|
||||
+}
|
||||
+}
|
||||
+#endif
|
||||
Index: libopenraw-0.0.8/lib/orffile.cpp
|
||||
===================================================================
|
||||
--- libopenraw-0.0.8.orig/lib/orffile.cpp
|
||||
+++ libopenraw-0.0.8/lib/orffile.cpp
|
||||
@@ -27,6 +27,7 @@
|
||||
#include "ifddir.h"
|
||||
#include "ifdentry.h"
|
||||
#include "orfcontainer.h"
|
||||
+#include "olympusdecompressor.h"
|
||||
#include "io/file.h"
|
||||
|
||||
using namespace Debug;
|
||||
@@ -103,19 +104,27 @@ namespace OpenRaw {
|
||||
// ORF files seems to be marked as uncompressed even if they are.
|
||||
uint32_t x = data.x();
|
||||
uint32_t y = data.y();
|
||||
- uint16_t compression = 0;
|
||||
+ uint32_t compression = 0;
|
||||
if(data.size() < x * y * 2) {
|
||||
- compression = 65535;
|
||||
- data.setCompression(65535);
|
||||
+ compression = ORF_COMPRESSION;
|
||||
+ data.setCompression(ORF_COMPRESSION);
|
||||
data.setDataType(OR_DATA_TYPE_COMPRESSED_CFA);
|
||||
}
|
||||
else {
|
||||
compression = data.compression();
|
||||
}
|
||||
switch(compression) {
|
||||
- case 65535:
|
||||
+ case ORF_COMPRESSION:
|
||||
if((options & OR_OPTIONS_DONT_DECOMPRESS) == 0) {
|
||||
- // TODO decompress
|
||||
+ OlympusDecompressor decomp((const uint8_t*)data.data(), m_container, x, y);
|
||||
+ RawData *dData = decomp.decompress(NULL);
|
||||
+ if (dData != NULL) {
|
||||
+ dData->setCfaPattern(data.cfaPattern());
|
||||
+ data.swap(*dData);
|
||||
+ data.setDataType(OR_DATA_TYPE_CFA);
|
||||
+ data.setDimensions(x, y);
|
||||
+ delete dData;
|
||||
+ }
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -124,6 +133,15 @@ namespace OpenRaw {
|
||||
}
|
||||
return err;
|
||||
}
|
||||
+
|
||||
+uint32_t OrfFile::_translateCompressionType(IFD::TiffCompress tiffCompression)
|
||||
+{
|
||||
+ if(tiffCompression == IFD::COMPRESS_CUSTOM) {
|
||||
+ return ORF_COMPRESSION;
|
||||
+ }
|
||||
+ return (uint32_t)tiffCompression;
|
||||
+}
|
||||
+
|
||||
|
||||
}
|
||||
}
|
||||
Index: libopenraw-0.0.8/lib/orffile.h
|
||||
===================================================================
|
||||
--- libopenraw-0.0.8.orig/lib/orffile.h
|
||||
+++ libopenraw-0.0.8/lib/orffile.h
|
||||
@@ -43,11 +43,16 @@ namespace OpenRaw {
|
||||
OrfFile(IO::Stream *);
|
||||
virtual ~OrfFile();
|
||||
|
||||
+ enum {
|
||||
+ ORF_COMPRESSION = 0x10000
|
||||
+ };
|
||||
+
|
||||
protected:
|
||||
virtual IFDDir::Ref _locateCfaIfd();
|
||||
virtual IFDDir::Ref _locateMainIfd();
|
||||
|
||||
virtual ::or_error _getRawData(RawData & data, uint32_t options);
|
||||
+ virtual uint32_t _translateCompressionType(IFD::TiffCompress tiffCompression);
|
||||
private:
|
||||
static RawFile::TypeId _typeIdFromModel(const std::string & model);
|
||||
|
||||
Index: libopenraw-0.0.8/lib/peffile.cpp
|
||||
===================================================================
|
||||
--- libopenraw-0.0.8.orig/lib/peffile.cpp
|
||||
+++ libopenraw-0.0.8/lib/peffile.cpp
|
||||
@@ -95,7 +95,7 @@ namespace OpenRaw {
|
||||
if(err == OR_ERROR_NONE) {
|
||||
uint16_t compression = data.compression();
|
||||
switch(compression) {
|
||||
- case 65535:
|
||||
+ case IFD::COMPRESS_CUSTOM:
|
||||
if((options & OR_OPTIONS_DONT_DECOMPRESS) == 0) {
|
||||
// TODO decompress
|
||||
}
|
@ -1,3 +1,16 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri May 31 06:34:05 UTC 2019 - Bjørn Lie <bjorn.lie@gmail.com>
|
||||
|
||||
- Update to version 0.1.3:
|
||||
+ Add support for lots and lots of new cameras.
|
||||
+ Rename .pc to libopenraw-0.1.pc.
|
||||
- Drop patches fixed upstream:
|
||||
+ libopenraw-orf-thumbnail.patch.
|
||||
+ openraw-noansiflag.patch.
|
||||
- Following the above, drop autoconf, automake and libtool
|
||||
BuildRequires and autoreconf usage.
|
||||
- Stop exporting no longer needed CXXFLAGS.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Feb 28 16:35:49 UTC 2018 - dimstar@opensuse.org
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package libopenraw
|
||||
#
|
||||
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -12,12 +12,12 @@
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
Name: libopenraw
|
||||
Version: 0.0.9
|
||||
Version: 0.1.3
|
||||
Release: 0
|
||||
Summary: A library to decode digital camera RAW files
|
||||
License: LGPL-2.1-or-later
|
||||
@ -27,14 +27,9 @@ Source0: http://libopenraw.freedesktop.org/download/%{name}-%{version}.ta
|
||||
Source1: http://libopenraw.freedesktop.org/download/%{name}-%{version}.tar.bz2.asc
|
||||
Source2: %{name}.keyring
|
||||
Source99: baselibs.conf
|
||||
# PATCH-FIX-UPSTREAM libopenraw-orf-thumbnail.patch bnc699678 glin@suse.com - Decompress otf files
|
||||
Patch2: libopenraw-orf-thumbnail.patch
|
||||
Patch3: openraw-noansiflag.patch
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: libjpeg-devel
|
||||
BuildRequires: libtool
|
||||
BuildRequires: pkgconfig
|
||||
BuildRequires: pkgconfig(gdk-pixbuf-2.0) >= 2.21
|
||||
BuildRequires: pkgconfig(glib-2.0)
|
||||
@ -79,12 +74,8 @@ libopenraw is a library that aim at decoding digital camera RAW files.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch2 -p1
|
||||
%patch3
|
||||
|
||||
%build
|
||||
autoreconf -fiv
|
||||
export CXXFLAGS="%{optflags} -fvisibility-inlines-hidden"
|
||||
%configure \
|
||||
--disable-static \
|
||||
--with-pic
|
||||
@ -115,8 +106,8 @@ make %{?_smp_mflags} check
|
||||
|
||||
%files -n libopenraw-devel
|
||||
%{_libdir}/*.so
|
||||
%dir %{_includedir}/libopenraw-1.0
|
||||
%{_includedir}/libopenraw-1.0/*
|
||||
%dir %{_includedir}/libopenraw-0.1
|
||||
%{_includedir}/libopenraw-0.1/*
|
||||
%{_libdir}/pkgconfig/*.pc
|
||||
|
||||
%changelog
|
||||
|
@ -1,146 +0,0 @@
|
||||
--- configure.in.orig
|
||||
+++ configure.in
|
||||
@@ -62,12 +62,13 @@ pkgconfigdir='${libdir}/pkgconfig'
|
||||
AC_SUBST(pkgconfigdir)
|
||||
|
||||
dnl Checks for programs.
|
||||
-AC_PROG_CC
|
||||
+AC_PROG_CC_STDC
|
||||
+AC_USE_SYSTEM_EXTENSIONS
|
||||
+AC_SYS_LARGEFILE
|
||||
AC_PROG_CPP
|
||||
AC_PROG_CXX
|
||||
AC_PROG_INSTALL
|
||||
-AC_PROG_LIBTOOL
|
||||
-
|
||||
+LT_INIT([disable-static pic-only])
|
||||
|
||||
dnl Requirements
|
||||
EXEMPI_REQUIRED=1.99.5
|
||||
@@ -166,16 +167,13 @@ AM_CONDITIONAL(BUILD_GNOME_SUPPORT, test
|
||||
AX_CFLAGS_GCC_OPTION([-Wextra])
|
||||
AX_CXXFLAGS_GCC_OPTION([-Wextra])
|
||||
|
||||
-CXXFLAGS="$CXXFLAGS -ansi -pedantic -g -Wall -Wshadow"
|
||||
-CFLAGS="$CFLAGS -pedantic -g -Wall"
|
||||
+CXXFLAGS="$CXXFLAGS -g -Wall -Wshadow"
|
||||
+CFLAGS="$CFLAGS -g -Wall"
|
||||
|
||||
|
||||
-SHAVE_INIT
|
||||
|
||||
AC_OUTPUT([
|
||||
Makefile
|
||||
-shave
|
||||
-shave-libtool
|
||||
include/Makefile
|
||||
include/libopenraw/Makefile
|
||||
include/libopenraw++/Makefile
|
||||
--- lib/Makefile.am.orig
|
||||
+++ lib/Makefile.am
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
-INCLUDES = -I$(top_srcdir)/include
|
||||
+AM_CPPFLAGS = -include $(top_builddir)/config.h -I$(top_srcdir)/include
|
||||
|
||||
SUBDIRS = io capi
|
||||
|
||||
@@ -40,7 +40,7 @@ noinst_HEADERS = or_debug.h \
|
||||
|
||||
lib_LTLIBRARIES = libopenraw.la
|
||||
|
||||
-libopenraw_la_LDFLAGS = \
|
||||
+libopenraw_la_LDFLAGS = -no-undefined \
|
||||
-version-info @LIBOPENRAW_VERSION_INFO@
|
||||
|
||||
# -export-symbols $(srcdir)/libopenraw.sym
|
||||
--- tools/ordiag.cpp.orig
|
||||
+++ tools/ordiag.cpp
|
||||
@@ -19,6 +19,7 @@
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
+#include "config.h"
|
||||
|
||||
#include <unistd.h>
|
||||
#include <iostream>
|
||||
--- gnome/gdkpixbuf.c.orig
|
||||
+++ gnome/gdkpixbuf.c
|
||||
@@ -20,6 +20,8 @@
|
||||
|
||||
/** @brief gdkpixbuf support */
|
||||
|
||||
+#include "config.h"
|
||||
+
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <glib.h>
|
||||
--- gnome/pixbuf-loader.c.orig
|
||||
+++ gnome/pixbuf-loader.c
|
||||
@@ -21,6 +21,8 @@
|
||||
|
||||
/** @brief gdkpixbuf loader for RAW files */
|
||||
|
||||
+#include "config.h"
|
||||
+
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <libopenraw/libopenraw.h>
|
||||
--- lib/io/Makefile.am.orig
|
||||
+++ lib/io/Makefile.am
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
-INCLUDES = -I$(top_srcdir)/include -I$(srcdir)/..
|
||||
+AM_CPPFLAGS = -include $(top_builddir)/config.h -I$(top_srcdir)/include -I$(srcdir)/..
|
||||
|
||||
TESTS = teststream
|
||||
|
||||
--- lib/capi/Makefile.am.orig
|
||||
+++ lib/capi/Makefile.am
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
|
||||
|
||||
-INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/lib
|
||||
+AM_CPPFLAGS = -include $(top_builddir)/config.h -I$(top_srcdir)/include -I$(top_srcdir)/lib
|
||||
|
||||
noinst_LTLIBRARIES = libopenrawc.la
|
||||
|
||||
--- test/Makefile.am.orig
|
||||
+++ test/Makefile.am
|
||||
@@ -4,7 +4,7 @@ TESTS_ENVIRONMENT =
|
||||
|
||||
OPENRAW_LIB = $(top_builddir)/lib/libopenraw.la
|
||||
|
||||
-INCLUDES = \
|
||||
+AM_CPPFLAGS = -include $(top_builddir)/config.h \
|
||||
-I$(top_srcdir)/include \
|
||||
-I$(top_srcdir)/lib
|
||||
|
||||
--- testsuite/Makefile.am.orig
|
||||
+++ testsuite/Makefile.am
|
||||
@@ -4,10 +4,10 @@ TESTS_ENVIRONMENT =
|
||||
|
||||
OPENRAW_LIB = $(top_builddir)/lib/libopenraw.la
|
||||
|
||||
-INCLUDES = \
|
||||
+AM_CFLAGS = @LIBXML_CFLAGS@ @CURL_CFLAGS@
|
||||
+AM_CPPFLAGS = -include $(top_builddir)/config.h \
|
||||
-I$(top_srcdir)/include \
|
||||
- -I$(top_srcdir)/lib \
|
||||
- @LIBXML_CFLAGS@ @CURL_CFLAGS@
|
||||
+ -I$(top_srcdir)/lib
|
||||
|
||||
noinst_PROGRAMS = testsuite
|
||||
noinst_HEADERS = testsuitetags.h
|
||||
--- gnome/Makefile.am.orig
|
||||
+++ gnome/Makefile.am
|
||||
@@ -29,7 +29,7 @@ libopenrawgnome_la_LIBADD = ../lib/libop
|
||||
libopenrawgnome_la_SOURCES = gdkpixbuf.c
|
||||
|
||||
|
||||
-libopenraw_pixbuf_la_LDFLAGS = -no-undefined -module -avoid-version
|
||||
+libopenraw_pixbuf_la_LDFLAGS = -no-undefined -export-dynamic -shared -module -avoid-version
|
||||
libopenraw_pixbuf_la_LIBADD = ../lib/libopenraw.la \
|
||||
$(LIBGLIB_LIBS) \
|
||||
$(LIBGDKPIXBUF_LIBS)
|
Loading…
Reference in New Issue
Block a user