Skip to content
Commits on Source (4)
......@@ -7,7 +7,7 @@ set(ROOT_DIR "${PROJECT_SOURCE_DIR}")
# the next line is the ONLY place in the entire laszip system where
# the version info is hard-coded
set(LASZIP_API_VERSION_STRING "3.2.8" CACHE STRING "LASzip version" FORCE)
set(LASZIP_API_VERSION_STRING "3.2.9" CACHE STRING "LASzip version" FORCE)
include (CheckIncludeFileCXX)
include(${ROOT_DIR}/cmake/common.cmake NO_POLICY_SCOPE)
......@@ -41,7 +41,7 @@ set(LASZIP_API_VERSION ${LASZIP_API_VERSION_MAJOR}.${LASZIP_API_VERSION_MINOR}.$
# libtool SO version naming
# 8.0.0 for 3.2.1
# 9.0.0 for 4.0+
set(LASZIP_SO_VERSION "8.0.1")
set(LASZIP_SO_VERSION "8.0.2")
set(LASZIP_COMPATIBILITY_VERSION 8)
check_include_file_cxx ("unordered_map" HAVE_UNORDERED_MAP)
......
......@@ -2,6 +2,12 @@
LASzip
================================================================================
3.2.9 27-DEC-18
--------------------------------------------------------------------------------
* Decompression bug for PRDF 8 or 10 when the scanner channel and the NIR field are populated.
3.2.8 19-NOV-18
--------------------------------------------------------------------------------
......
LASzip
--------------------------------------------------------
https://www.laszip.org/
https://laszip.org/
Testing
........................................................
......
laszip (3.2.8-1) UNRELEASED; urgency=medium
laszip (3.2.9-1) UNRELEASED; urgency=medium
TODO: FastAC license issue needs to be resolved, see:
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=750731#16
......@@ -7,4 +7,4 @@ laszip (3.2.8-1) UNRELEASED; urgency=medium
* Initial release. (Closes: #750731)
-- Bas Couwenberg <sebastic@debian.org> Tue, 20 Nov 2018 15:49:51 +0100
-- Bas Couwenberg <sebastic@debian.org> Mon, 11 Feb 2019 16:04:34 +0100
# symbols are problematic for C++ libraries.
liblaszip-api8: no-symbols-control-file *
no-symbols-control-file *
# symbols are problematic for C++ libraries.
liblaszip8: no-symbols-control-file *
no-symbols-control-file *
# False positive, string not included in source.
liblaszip8: spelling-error-in-binary * wiH with
spelling-error-in-binary * wiH with
# Build uses -D_FORTIFY_SOURCE=2, but hardening-check reports:
# Fortify Source functions: no, only unprotected functions found!
liblaszip8: hardening-no-fortify-functions *
hardening-no-fortify-functions *
......@@ -48,9 +48,9 @@ copyright = u'2018, Martin Isenburg'
# built documents.
#
# The short X.Y version.
version = '3.2.3'
version = '3.2.8'
# The full version, including alpha/beta/rc tags.
release = '3.2.3'
release = '3.2.8'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
......
......@@ -455,11 +455,11 @@ BOOL LASindex::append(const char* file_name) const
lax_evlr.record_id = 30;
sprintf(lax_evlr.description, "LAX spatial indexing (LASindex)");
bytestreamout->put16bitsLE((U8*)&(lax_evlr.reserved));
bytestreamout->putBytes((U8*)lax_evlr.user_id, 16);
bytestreamout->put16bitsLE((U8*)&(lax_evlr.record_id));
bytestreamout->put64bitsLE((U8*)&(lax_evlr.record_length_after_header));
bytestreamout->putBytes((U8*)lax_evlr.description, 32);
bytestreamout->put16bitsLE((const U8*)&(lax_evlr.reserved));
bytestreamout->putBytes((const U8*)lax_evlr.user_id, 16);
bytestreamout->put16bitsLE((const U8*)&(lax_evlr.record_id));
bytestreamout->put64bitsLE((const U8*)&(lax_evlr.record_length_after_header));
bytestreamout->putBytes((const U8*)lax_evlr.description, 32);
if (!write(bytestreamout))
{
......@@ -474,15 +474,15 @@ BOOL LASindex::append(const char* file_name) const
lax_evlr.record_length_after_header = bytestreamout->tell() - offset_to_special_evlrs - 60;
bytestreamout->seek(offset_to_special_evlrs + 20);
bytestreamout->put64bitsLE((U8*)&(lax_evlr.record_length_after_header));
bytestreamout->put64bitsLE((const U8*)&(lax_evlr.record_length_after_header));
// maybe update LASzip VLR
if (number_of_special_evlrs != -1)
{
bytestreamout->seek(offset_laz_vlr + 54 + 16);
bytestreamout->put64bitsLE((U8*)&number_of_special_evlrs);
bytestreamout->put64bitsLE((U8*)&offset_to_special_evlrs);
bytestreamout->put64bitsLE((const U8*)&number_of_special_evlrs);
bytestreamout->put64bitsLE((const U8*)&offset_to_special_evlrs);
}
// close writer
......@@ -590,13 +590,13 @@ BOOL LASindex::read(ByteStreamIn* stream)
BOOL LASindex::write(ByteStreamOut* stream) const
{
if (!stream->putBytes((U8*)"LASX", 4))
if (!stream->putBytes((const U8*)"LASX", 4))
{
fprintf(stderr,"ERROR (LASindex): writing signature\n");
return FALSE;
}
U32 version = 0;
if (!stream->put32bitsLE((U8*)&version))
if (!stream->put32bitsLE((const U8*)&version))
{
fprintf(stderr,"ERROR (LASindex): writing version\n");
return FALSE;
......
......@@ -659,20 +659,20 @@ BOOL LASinterval::read(ByteStreamIn* stream)
BOOL LASinterval::write(ByteStreamOut* stream) const
{
if (!stream->putBytes((U8*)"LASV", 4))
if (!stream->putBytes((const U8*)"LASV", 4))
{
fprintf(stderr,"ERROR (LASinterval): writing signature\n");
return FALSE;
}
U32 version = 0;
if (!stream->put32bitsLE((U8*)&version))
if (!stream->put32bitsLE((const U8*)&version))
{
fprintf(stderr,"ERROR (LASinterval): writing version\n");
return FALSE;
}
// write number of cells
U32 number_cells = (U32)((my_cell_hash*)cells)->size();
if (!stream->put32bitsLE((U8*)&number_cells))
if (!stream->put32bitsLE((const U8*)&number_cells))
{
fprintf(stderr,"ERROR (LASinterval): writing number of cells %d\n", number_cells);
return FALSE;
......@@ -692,19 +692,19 @@ BOOL LASinterval::write(ByteStreamOut* stream) const
}
// write index of cell
I32 cell_index = (*hash_element).first;
if (!stream->put32bitsLE((U8*)&cell_index))
if (!stream->put32bitsLE((const U8*)&cell_index))
{
fprintf(stderr,"ERROR (LASinterval): writing cell index %d\n", cell_index);
return FALSE;
}
// write number of intervals in cell
if (!stream->put32bitsLE((U8*)&number_intervals))
if (!stream->put32bitsLE((const U8*)&number_intervals))
{
fprintf(stderr,"ERROR (LASinterval): writing number of intervals %d in cell\n", number_intervals);
return FALSE;
}
// write number of points in cell
if (!stream->put32bitsLE((U8*)&number_points))
if (!stream->put32bitsLE((const U8*)&number_points))
{
fprintf(stderr,"ERROR (LASinterval): writing number of points %d in cell\n", number_points);
return FALSE;
......@@ -714,13 +714,13 @@ BOOL LASinterval::write(ByteStreamOut* stream) const
while (cell)
{
// write start of interval
if (!stream->put32bitsLE((U8*)&(cell->start)))
if (!stream->put32bitsLE((const U8*)&(cell->start)))
{
fprintf(stderr,"ERROR (LASinterval): writing start %d of interval\n", cell->start);
return FALSE;
}
// write end of interval
if (!stream->put32bitsLE((U8*)&(cell->end)))
if (!stream->put32bitsLE((const U8*)&(cell->end)))
{
fprintf(stderr,"ERROR (LASinterval): writing end %d of interval\n", cell->end);
return FALSE;
......
......@@ -405,7 +405,7 @@ U32 LASquadtree::get_cell_index(const F64 x, const F64 y) const
}
// returns the indices of parent and siblings for the specified cell index
BOOL LASquadtree::coarsen(const I32 cell_index, I32* coarser_cell_index, U32* num_cell_indices, I32** cell_indices) const
BOOL LASquadtree::coarsen(const I32 cell_index, I32* coarser_cell_index, U32* num_cell_indices, I32** cell_indices)
{
if (cell_index < 0) return FALSE;
U32 level = get_level((U32)cell_index);
......@@ -680,7 +680,7 @@ BOOL LASquadtree::write(ByteStreamOut* stream) const
// F32 max_y 4 bytes
// which totals 28 bytes
if (!stream->putBytes((U8*)"LASS", 4))
if (!stream->putBytes((const U8*)"LASS", 4))
{
fprintf(stderr,"ERROR (LASquadtree): writing LASspatial signature\n");
return FALSE;
......@@ -693,52 +693,52 @@ BOOL LASquadtree::write(ByteStreamOut* stream) const
return FALSE;
}
if (!stream->putBytes((U8*)"LASQ", 4))
if (!stream->putBytes((const U8*)"LASQ", 4))
{
fprintf(stderr,"ERROR (LASquadtree): writing signature\n");
return FALSE;
}
U32 version = 0;
if (!stream->put32bitsLE((U8*)&version))
if (!stream->put32bitsLE((const U8*)&version))
{
fprintf(stderr,"ERROR (LASquadtree): writing version\n");
return FALSE;
}
if (!stream->put32bitsLE((U8*)&levels))
if (!stream->put32bitsLE((const U8*)&levels))
{
fprintf(stderr,"ERROR (LASquadtree): writing levels %u\n", levels);
return FALSE;
}
U32 level_index = 0;
if (!stream->put32bitsLE((U8*)&level_index))
if (!stream->put32bitsLE((const U8*)&level_index))
{
fprintf(stderr,"ERROR (LASquadtree): writing level_index %u\n", level_index);
return FALSE;
}
U32 implicit_levels = 0;
if (!stream->put32bitsLE((U8*)&implicit_levels))
if (!stream->put32bitsLE((const U8*)&implicit_levels))
{
fprintf(stderr,"ERROR (LASquadtree): writing implicit_levels %u\n", implicit_levels);
return FALSE;
}
if (!stream->put32bitsLE((U8*)&min_x))
if (!stream->put32bitsLE((const U8*)&min_x))
{
fprintf(stderr,"ERROR (LASquadtree): writing min_x %g\n", min_x);
return FALSE;
}
if (!stream->put32bitsLE((U8*)&max_x))
if (!stream->put32bitsLE((const U8*)&max_x))
{
fprintf(stderr,"ERROR (LASquadtree): writing max_x %g\n", max_x);
return FALSE;
}
if (!stream->put32bitsLE((U8*)&min_y))
if (!stream->put32bitsLE((const U8*)&min_y))
{
fprintf(stderr,"ERROR (LASquadtree): writing min_y %g\n", min_y);
return FALSE;
}
if (!stream->put32bitsLE((U8*)&max_y))
if (!stream->put32bitsLE((const U8*)&max_y))
{
fprintf(stderr,"ERROR (LASquadtree): writing max_y %g\n", max_y);
return FALSE;
......
......@@ -60,7 +60,7 @@ public:
U32 get_cell_index(const F64 x, const F64 y) const;
// map cells to coarser cells
BOOL coarsen(const I32 cell_index, I32* coarser_cell_index, U32* num_cell_indices, I32** cell_indices) const;
BOOL coarsen(const I32 cell_index, I32* coarser_cell_index, U32* num_cell_indices, I32** cell_indices);
// describe cells
void get_cell_bounding_box(const I32 cell_index, F32* min, F32* max) const;
......
......@@ -1697,7 +1697,7 @@ inline void LASreadItemCompressed_RGBNIR14_v3::read(U8* item, U32& context)
}
}
// dempress
// decompress
////////////////////////////////////////
// decompress RGB layer
......@@ -1807,11 +1807,11 @@ inline void LASreadItemCompressed_RGBNIR14_v3::read(U8* item, U32& context)
{
((U16*)item)[3] |= (last_item[3]&0xFF00);
}
contexts[current_context].last_item[3] = ((U16*)item)[3];
last_item[3] = ((U16*)item)[3];
}
else
{
((U16*)item)[3] = contexts[current_context].last_item[3];
((U16*)item)[3] = last_item[3];
}
}
......
......@@ -25,6 +25,7 @@
CHANGE HISTORY:
27 December 2018 -- upped to 3.2 r9 for bug fix in multi-channel NIR decompression
7 November 2018 -- upped to 3.2 r8 for identical legacy and extended flags check
20 October 2018 -- upped to 3.2 r7 for rare bug in LASinterval::merge_intervals()
5 October 2018 -- upped to 3.2 r6 for corrected 'is_empty' return value
......@@ -70,8 +71,8 @@ typedef long long SIGNED_INT64;
#define LASZIP_VERSION_MAJOR 3
#define LASZIP_VERSION_MINOR 2
#define LASZIP_VERSION_REVISION 8
#define LASZIP_VERSION_BUILD_DATE 181107
#define LASZIP_VERSION_REVISION 9
#define LASZIP_VERSION_BUILD_DATE 181227
#define LASZIP_COMPRESSOR_NONE 0
#define LASZIP_COMPRESSOR_POINTWISE 1
......
......@@ -172,7 +172,7 @@ typedef union I64U32I32F32 { I64 i64; U32 u32[2]; I32 i32[2]; F32 f32[2]; } I64U
inline BOOL IS_LITTLE_ENDIAN()
{
const U32 i = 1;
return (*((U8*)&i) == 1);
return (*((const U8*)&i) == 1);
}
#define ENDIANSWAP16(n) \
......