Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openjph for openSUSE:Factory checked in at 2026-06-09 14:13:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openjph (Old) and /work/SRC/openSUSE:Factory/.openjph.new.2375 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openjph" Tue Jun 9 14:13:45 2026 rev:22 rq:1357807 version:0.27.4 Changes: -------- --- /work/SRC/openSUSE:Factory/openjph/openjph.changes 2026-06-02 16:01:20.055501939 +0200 +++ /work/SRC/openSUSE:Factory/.openjph.new.2375/openjph.changes 2026-06-09 14:14:03.589068047 +0200 @@ -1,0 +2,7 @@ +Sun Jun 7 20:30:46 UTC 2026 - Michael Vetter <[email protected]> + +- Update to 0.27.4: + * Add documentation for ASAN build type #274 + * Bug fix #277 + +------------------------------------------------------------------- Old: ---- 0.27.3.tar.gz New: ---- 0.27.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openjph.spec ++++++ --- /var/tmp/diff_new_pack.FZmKLB/_old 2026-06-09 14:14:04.625110965 +0200 +++ /var/tmp/diff_new_pack.FZmKLB/_new 2026-06-09 14:14:04.625110965 +0200 @@ -17,7 +17,7 @@ Name: openjph -Version: 0.27.3 +Version: 0.27.4 Release: 0 Summary: An implementation of JPEG2000 Part-15 License: BSD-2-Clause ++++++ 0.27.3.tar.gz -> 0.27.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/OpenJPH-0.27.3/CMakeLists.txt new/OpenJPH-0.27.4/CMakeLists.txt --- old/OpenJPH-0.27.3/CMakeLists.txt 2026-05-14 05:25:23.000000000 +0200 +++ new/OpenJPH-0.27.4/CMakeLists.txt 2026-06-04 14:34:52.000000000 +0200 @@ -105,7 +105,9 @@ endif() endif() -## Added by Michael Smith +## Set build flags for AddressSanitizer (ASAN) +# these are used when the user sets -DCMAKE_BUILD_TYPE=asan i.e ("cmake .. -DCMAKE_BUILD_TYPE=asan") +# setting flags for specific build types is documented here: https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_FLAGS_CONFIG.html set(CMAKE_CXX_FLAGS_ASAN "-fsanitize=address -fno-optimize-sibling-calls -fsanitize-address-use-after-scope -fno-omit-frame-pointer -g -O1" CACHE STRING "Flags used by the C++ compiler during AddressSanitizer builds." diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/OpenJPH-0.27.3/src/core/codestream/ojph_codeblock.cpp new/OpenJPH-0.27.4/src/core/codestream/ojph_codeblock.cpp --- old/OpenJPH-0.27.3/src/core/codestream/ojph_codeblock.cpp 2026-05-14 05:25:23.000000000 +0200 +++ new/OpenJPH-0.27.4/src/core/codestream/ojph_codeblock.cpp 2026-06-04 14:34:52.000000000 +0200 @@ -3,21 +3,21 @@ // This software is released under the 2-Clause BSD license, included // below. // -// Copyright (c) 2019, Aous Naman +// Copyright (c) 2019, Aous Naman // Copyright (c) 2019, Kakadu Software Pty Ltd, Australia // Copyright (c) 2019, The University of New South Wales, Australia -// +// // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: -// +// // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. -// +// // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. -// +// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS // IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED // TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A @@ -53,7 +53,7 @@ { ////////////////////////////////////////////////////////////////////////// - void codeblock::pre_alloc(codestream *codestream, const size& nominal, + void codeblock::pre_alloc(codestream *codestream, const size& nominal, ui32 precision) { mem_fixed_allocator* allocator = codestream->get_allocator(); @@ -61,7 +61,7 @@ assert(byte_alignment / sizeof(ui32) > 1); const ui32 f = byte_alignment / sizeof(ui32) - 1; ui32 stride = (nominal.w + f) & ~f; // a multiple of 8 - + if (precision <= 32) allocator->pre_alloc_data<ui32>(nominal.h * (size_t)stride, 0); else @@ -114,23 +114,23 @@ ////////////////////////////////////////////////////////////////////////// void codeblock::push(line_buf *line) { - // convert to sign and magnitude and keep max_val + // convert to sign and magnitude and keep max_val if (precision == BUF32) { assert(line->flags & line_buf::LFT_32BIT); const si32 *sp = line->i32 + line_offset; ui32 *dp = buf32 + cur_line * stride; - this->codeblock_functions.tx_to_cb32(sp, dp, K_max, delta_inv, + this->codeblock_functions.tx_to_cb32(sp, dp, K_max, delta_inv, cb_size.w, max_val32); ++cur_line; } - else + else { assert(precision == BUF64); assert(line->flags & line_buf::LFT_64BIT); const si64 *sp = line->i64 + line_offset; ui64 *dp = buf64 + cur_line * stride; - this->codeblock_functions.tx_to_cb64(sp, dp, K_max, delta_inv, + this->codeblock_functions.tx_to_cb64(sp, dp, K_max, delta_inv, cb_size.w, max_val64); ++cur_line; } @@ -148,7 +148,7 @@ assert(coded_cb->missing_msbs > 0); assert(coded_cb->missing_msbs < K_max); coded_cb->num_passes = 1; - + this->codeblock_functions.encode_cb32(buf32, K_max-1, 1, cb_size.w, cb_size.h, stride, coded_cb->pass_length, elastic, coded_cb->next_coded); @@ -164,7 +164,7 @@ assert(coded_cb->missing_msbs > 0); assert(coded_cb->missing_msbs < K_max); coded_cb->num_passes = 1; - + this->codeblock_functions.encode_cb64(buf64, K_max-1, 1, cb_size.w, cb_size.h, stride, coded_cb->pass_length, elastic, coded_cb->next_coded); @@ -199,7 +199,7 @@ coded_cb->pass_length[0], coded_cb->pass_length[1], cb_size.w, cb_size.h, stride, stripe_causal); } - else + else { assert(precision == BUF64); result = this->codeblock_functions.decode_cb64( @@ -235,7 +235,7 @@ if (!zero_block) { const ui32 *sp = buf32 + cur_line * stride; - this->codeblock_functions.tx_from_cb32(sp, dp, K_max, delta, + this->codeblock_functions.tx_from_cb32(sp, dp, K_max, delta, cb_size.w); } else @@ -244,12 +244,13 @@ else { assert(precision == BUF64); - assert(line->flags & line_buf::LFT_64BIT); + assert((reversible && (line->flags & line_buf::LFT_64BIT)) + || (!reversible && (line->flags & line_buf::LFT_32BIT))); si64 *dp = line->i64 + line_offset; if (!zero_block) { const ui64 *sp = buf64 + cur_line * stride; - this->codeblock_functions.tx_from_cb64(sp, dp, K_max, delta, + this->codeblock_functions.tx_from_cb64(sp, dp, K_max, delta, cb_size.w); } else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/OpenJPH-0.27.3/src/core/codestream/ojph_codeblock_fun.cpp new/OpenJPH-0.27.4/src/core/codestream/ojph_codeblock_fun.cpp --- old/OpenJPH-0.27.3/src/core/codestream/ojph_codeblock_fun.cpp 2026-05-14 05:25:23.000000000 +0200 +++ new/OpenJPH-0.27.4/src/core/codestream/ojph_codeblock_fun.cpp 2026-06-04 14:34:52.000000000 +0200 @@ -2,21 +2,21 @@ // This software is released under the 2-Clause BSD license, included // below. // -// Copyright (c) 2019, Aous Naman +// Copyright (c) 2019, Aous Naman // Copyright (c) 2019, Kakadu Software Pty Ltd, Australia // Copyright (c) 2019, The University of New South Wales, Australia -// +// // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: -// +// // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. -// +// // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. -// +// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS // IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED // TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A @@ -124,8 +124,10 @@ float delta, ui32 count); void avx2_rev_tx_from_cb64(const ui64 *sp, void *dp, ui32 K_max, float delta, ui32 count); + void gen_irv_tx_from_cb64(const ui64 *sp, void *dp, ui32 K_max, + float delta, ui32 count); void wasm_rev_tx_from_cb64(const ui64 *sp, void *dp, ui32 K_max, - float delta, ui32 count); + float delta, ui32 count); void codeblock_fun::init(bool reversible) { @@ -155,11 +157,11 @@ else { tx_to_cb64 = NULL; - tx_from_cb64 = NULL; + tx_from_cb64 = gen_irv_tx_from_cb64; } encode_cb64 = ojph_encode_codeblock64; bool result = initialize_block_encoder_tables(); - assert(result); ojph_unused(result); + assert(result); ojph_unused(result); #ifndef OJPH_DISABLE_SIMD @@ -190,7 +192,7 @@ else { tx_to_cb64 = NULL; - tx_from_cb64 = NULL; + tx_from_cb64 = gen_irv_tx_from_cb64; } } #endif // !OJPH_DISABLE_SSE2 @@ -229,7 +231,7 @@ else { tx_to_cb64 = NULL; - tx_from_cb64 = NULL; + tx_from_cb64 = gen_irv_tx_from_cb64; } } #endif // !OJPH_DISABLE_AVX2 @@ -243,7 +245,7 @@ #endif // !OJPH_DISABLE_AVX512 #elif defined(OJPH_ARCH_ARM) - + #endif // !(defined(OJPH_ARCH_X86_64) || defined(OJPH_ARCH_I386)) #endif // !OJPH_DISABLE_SIMD @@ -273,11 +275,11 @@ else { tx_to_cb64 = NULL; - tx_from_cb64 = NULL; + tx_from_cb64 = gen_irv_tx_from_cb64; } encode_cb64 = ojph_encode_codeblock64; bool result = initialize_block_encoder_tables(); - assert(result); ojph_unused(result); + assert(result); ojph_unused(result); #endif // !OJPH_ENABLE_WASM_SIMD diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/OpenJPH-0.27.3/src/core/codestream/ojph_codestream_gen.cpp new/OpenJPH-0.27.4/src/core/codestream/ojph_codestream_gen.cpp --- old/OpenJPH-0.27.3/src/core/codestream/ojph_codestream_gen.cpp 2026-05-14 05:25:23.000000000 +0200 +++ new/OpenJPH-0.27.4/src/core/codestream/ojph_codestream_gen.cpp 2026-06-04 14:34:52.000000000 +0200 @@ -2,21 +2,21 @@ // This software is released under the 2-Clause BSD license, included // below. // -// Copyright (c) 2022, Aous Naman +// Copyright (c) 2022, Aous Naman // Copyright (c) 2022, Kakadu Software Pty Ltd, Australia // Copyright (c) 2022, The University of New South Wales, Australia -// +// // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: -// +// // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. -// +// // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. -// +// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS // IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED // TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A @@ -35,6 +35,8 @@ // Date: 15 May 2022 //***************************************************************************/ +#include <climits> + #include "ojph_defs.h" #include "ojph_arch.h" @@ -56,8 +58,8 @@ ui64 gen_find_max_val64(ui64* addr) { return addr[0]; } ////////////////////////////////////////////////////////////////////////// - void gen_rev_tx_to_cb32(const void *sp, ui32 *dp, ui32 K_max, - float delta_inv, ui32 count, + void gen_rev_tx_to_cb32(const void *sp, ui32 *dp, ui32 K_max, + float delta_inv, ui32 count, ui32* max_val) { ojph_unused(delta_inv); @@ -78,8 +80,8 @@ } ////////////////////////////////////////////////////////////////////////// - void gen_rev_tx_to_cb64(const void *sp, ui64 *dp, ui32 K_max, - float delta_inv, ui32 count, + void gen_rev_tx_to_cb64(const void *sp, ui64 *dp, ui32 K_max, + float delta_inv, ui32 count, ui64* max_val) { ojph_unused(delta_inv); @@ -101,7 +103,7 @@ ////////////////////////////////////////////////////////////////////////// void gen_irv_tx_to_cb32(const void *sp, ui32 *dp, ui32 K_max, - float delta_inv, ui32 count, + float delta_inv, ui32 count, ui32* max_val) { ojph_unused(K_max); @@ -166,6 +168,21 @@ *p++ = (v & 0x80000000U) ? -val : val; } } - + + ////////////////////////////////////////////////////////////////////////// + void gen_irv_tx_from_cb64(const ui64 *sp, void *dp, ui32 K_max, + float delta, ui32 count) + { + ojph_unused(K_max); + //convert to sign and magnitude + float *p = (float*)dp; + for (ui32 i = count; i > 0; --i) + { + ui64 v = *sp++; + float val = (float)(v & LLONG_MAX) * delta; + *p++ = (v & (ui64)LLONG_MIN) ? -val : val; + } + } + } } \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/OpenJPH-0.27.3/src/core/codestream/ojph_params.cpp new/OpenJPH-0.27.4/src/core/codestream/ojph_params.cpp --- old/OpenJPH-0.27.3/src/core/codestream/ojph_params.cpp 2026-05-14 05:25:23.000000000 +0200 +++ new/OpenJPH-0.27.4/src/core/codestream/ojph_params.cpp 2026-06-04 14:34:52.000000000 +0200 @@ -2649,7 +2649,7 @@ ////////////////////////////////////////////////////////////////////////// param_atk* param_atk::add_object() { - assert(top_atk = NULL); + assert(top_atk == NULL); param_atk *p = this; while (p->next != NULL) p = p->next; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/OpenJPH-0.27.3/src/core/openjph/ojph_version.h new/OpenJPH-0.27.4/src/core/openjph/ojph_version.h --- old/OpenJPH-0.27.3/src/core/openjph/ojph_version.h 2026-05-14 05:25:23.000000000 +0200 +++ new/OpenJPH-0.27.4/src/core/openjph/ojph_version.h 2026-06-04 14:34:52.000000000 +0200 @@ -35,4 +35,4 @@ #define OPENJPH_VERSION_MAJOR 0 #define OPENJPH_VERSION_MINOR 27 -#define OPENJPH_VERSION_PATCH 3 +#define OPENJPH_VERSION_PATCH 4
