Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libXISF for openSUSE:Factory checked 
in at 2023-08-28 17:17:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libXISF (Old)
 and      /work/SRC/openSUSE:Factory/.libXISF.new.1766 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libXISF"

Mon Aug 28 17:17:10 2023 rev:7 rq:1106269 version:0.2.9

Changes:
--------
--- /work/SRC/openSUSE:Factory/libXISF/libXISF.changes  2023-06-14 
16:32:31.047640305 +0200
+++ /work/SRC/openSUSE:Factory/.libXISF.new.1766/libXISF.changes        
2023-08-28 17:17:13.812992273 +0200
@@ -1,0 +2,6 @@
+Mon Aug 28 09:24:58 UTC 2023 - Paolo Stivanin <i...@paolostivanin.com>
+
+- Update to 0.2.9:
+  * Support for ZSTD
+
+-------------------------------------------------------------------

Old:
----
  libXISF-0.2.8.tar.gz

New:
----
  libXISF-0.2.9.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libXISF.spec ++++++
--- /var/tmp/diff_new_pack.UF8AKu/_old  2023-08-28 17:17:14.985034361 +0200
+++ /var/tmp/diff_new_pack.UF8AKu/_new  2023-08-28 17:17:14.989034504 +0200
@@ -18,7 +18,7 @@
 
 %define sover 0
 Name:           libXISF
-Version:        0.2.8
+Version:        0.2.9
 Release:        0
 Summary:        Library to read/write PixInsight XISF files
 License:        GPL-3.0-or-later
@@ -28,6 +28,7 @@
 Patch0:         fix-pkgconfig.patch
 BuildRequires:  cmake
 BuildRequires:  liblz4-devel
+BuildRequires:  libzstd-devel
 BuildRequires:  pkg-config
 BuildRequires:  pugixml-devel
 BuildRequires:  zlib-devel

++++++ libXISF-0.2.8.tar.gz -> libXISF-0.2.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxisf/CMakeLists.txt new/libxisf/CMakeLists.txt
--- old/libxisf/CMakeLists.txt  2023-06-13 12:25:13.000000000 +0200
+++ new/libxisf/CMakeLists.txt  2023-08-13 19:13:39.000000000 +0200
@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 3.14)
 
-project(libXISF VERSION 0.2.8 LANGUAGES CXX C
+project(libXISF VERSION 0.2.9 LANGUAGES CXX C
     HOMEPAGE_URL https://gitea.nouspiro.space/nou/libXISF
     DESCRIPTION "LibXISF is C++ library that can read and write XISF files 
produced by PixInsight.")
 
@@ -94,6 +94,12 @@
 
 set_target_properties(XISF PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION 
${PROJECT_VERSION_MAJOR})
 
+pkg_check_modules(ZSTD libzstd IMPORTED_TARGET)
+if(ZSTD_FOUND)
+    target_compile_definitions(XISF PRIVATE HAVE_ZSTD)
+    target_link_libraries(XISF PUBLIC PkgConfig::ZSTD)
+endif(ZSTD_FOUND)
+
 if(BUILD_SHARED_LIBS)
     target_compile_definitions(XISF PRIVATE LIBXISF_LIBRARY)
 else(BUILD_SHARED_LIBS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxisf/libxisf.cpp new/libxisf/libxisf.cpp
--- old/libxisf/libxisf.cpp     2023-06-13 12:25:13.000000000 +0200
+++ new/libxisf/libxisf.cpp     2023-08-13 19:13:39.000000000 +0200
@@ -27,6 +27,9 @@
 #include <lz4hc.h>
 #include <pugixml.hpp>
 #include <zlib.h>
+#ifdef HAVE_ZSTD
+#include <zstd.h>
+#endif
 #include "streambuffer.h"
 
 namespace LibXISF
@@ -142,6 +145,15 @@
         if(LZ4_decompress_safe(tmp.constData(), data.data(), tmp.size(), 
data.size()) < 0)
             throw Error("LZ4 decompression failed");
         break;
+    case ZSTD:
+#ifdef HAVE_ZSTD
+        data.resize(uncompressedSize);
+        if(ZSTD_isError(ZSTD_decompress(data.data(), data.size(), 
tmp.constData(), tmp.size())))
+            throw Error("ZSTD decompression failed");
+#else
+        throw Error("ZSTD support not compiled");
+#endif
+        break;
     }
 
     byteUnshuffle(data, byteShuffling);
@@ -192,9 +204,34 @@
         data.resize(compSize);
         break;
     }
+    case ZSTD:
+    {
+#ifdef HAVE_ZSTD
+        size_t compSize = 0;
+        data.resize(ZSTD_compressBound(uncompressedSize));
+        compSize = ZSTD_compress(data.data(), data.size(), tmp.data(), 
tmp.size(), compressLevel < 0 ? ZSTD_CLEVEL_DEFAULT : compressLevel);
+        if(ZSTD_isError(compSize))
+            throw Error("ZSTD compression failed");
+
+        data.resize(compSize);
+#else
+        throw Error("ZSTD support not compiled");
+#endif
+        break;
+    }
     }
 }
 
+bool DataBlock::CompressionCodecSupported(CompressionCodec codec)
+{
+    (void)codec;
+#ifndef HAVE_ZSTD
+    if(codec == ZSTD)
+        return false;
+#endif
+    return true;
+}
+
 Property::Property(const String &_id, const char *_value) :
     id(_id),
     value(_value)
@@ -663,6 +700,10 @@
             dataBlock.codec = DataBlock::LZ4HC;
         else if(compression[0].find("lz4") == 0)
             dataBlock.codec = DataBlock::LZ4;
+#ifdef HAVE_ZSTD
+        else if(compression[0].find("zstd") == 0)
+            dataBlock.codec = DataBlock::ZSTD;
+#endif
         else
             throw Error("Unknown compression codec");
 
@@ -988,6 +1029,12 @@
         codec = "lz4";
     else if(dataBlock.codec == DataBlock::LZ4HC)
         codec = "lz4hc";
+    else if(dataBlock.codec == DataBlock::ZSTD)
+#ifdef HAVE_ZSTD
+        codec = "zstd";
+#else
+        throw Error("ZSTD support not compiled");
+#endif
 
     if(dataBlock.byteShuffling > 1)
         codec += "+sh";
@@ -1149,6 +1196,10 @@
                 compressionCodecOverride = DataBlock::LZ4HC;
             else if(compression.find("lz4") == 0)
                 compressionCodecOverride = DataBlock::LZ4;
+#ifdef HAVE_ZSTD
+            else if(compression.find("zstd") == 0)
+                compressionCodecOverride = DataBlock::ZSTD;
+#endif
 
             if(compression.find("+sh") != std::string::npos)
                 byteShuffleOverride = true;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxisf/libxisf.h new/libxisf/libxisf.h
--- old/libxisf/libxisf.h       2023-06-13 12:25:13.000000000 +0200
+++ new/libxisf/libxisf.h       2023-08-13 19:13:39.000000000 +0200
@@ -172,7 +172,8 @@
         None,
         Zlib,
         LZ4,
-        LZ4HC
+        LZ4HC,
+        ZSTD
     };
     bool embedded = false;
     uint32_t byteShuffling = 0;
@@ -184,6 +185,8 @@
     ByteArray data;
     void decompress(const ByteArray &input, const std::string &encoding = "");
     void compress(int sampleFormatSize);
+    /// ZSTD compression can be disabled at compile time
+    static bool CompressionCodecSupported(CompressionCodec codec);
 };
 
 struct LIBXISF_EXPORT Property
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxisf/test/benchmark.cpp 
new/libxisf/test/benchmark.cpp
--- old/libxisf/test/benchmark.cpp      2023-06-13 12:25:13.000000000 +0200
+++ new/libxisf/test/benchmark.cpp      2023-08-13 19:13:39.000000000 +0200
@@ -78,6 +78,17 @@
         std::cout << "LZ4HC compression   \tElapsed time: " << timer.elapsed() 
<< " " << "ms\tSpeed: "
                   << size/1024.0/1.024/timer.elapsed() << "MiB/s\tRatio: " << 
baseSize/xisfImage.size() << std::endl;
     }
+    if(DataBlock::CompressionCodecSupported(DataBlock::ZSTD))
+    {
+        image.setCompression(DataBlock::ZSTD);
+        timer.start();
+        XISFWriter writer;
+        writer.writeImage(image);
+        ByteArray xisfImage;
+        writer.save(xisfImage);
+        std::cout << "ZSTD compression   \tElapsed time: " << timer.elapsed() 
<< " " << "ms\tSpeed: "
+                  << size/1024.0/1.024/timer.elapsed() << "MiB/s\tRatio: " << 
baseSize/xisfImage.size() << std::endl;
+    }
     image.setByteshuffling(true);
     {
         image.setCompression(DataBlock::Zlib);
@@ -109,6 +120,17 @@
         std::cout << "LZ4HC compression SH\tElapsed time: " << timer.elapsed() 
<< " " << "ms\tSpeed: "
                   << size/1024.0/1.024/timer.elapsed() << "MiB/s\tRatio: " << 
baseSize/xisfImage.size() << std::endl;
     }
+    if(DataBlock::CompressionCodecSupported(DataBlock::ZSTD))
+    {
+        image.setCompression(DataBlock::ZSTD);
+        timer.start();
+        XISFWriter writer;
+        writer.writeImage(image);
+        ByteArray xisfImage;
+        writer.save(xisfImage);
+        std::cout << "ZSTD compression SH\tElapsed time: " << timer.elapsed() 
<< " " << "ms\tSpeed: "
+                  << size/1024.0/1.024/timer.elapsed() << "MiB/s\tRatio: " << 
baseSize/xisfImage.size() << std::endl;
+    }
 }
 
 void benchmark()

Reply via email to