Highlights of changes:
- Support for much larger range of sample rates. Outside of the range 32767 to 1/32767 integer sample rates are approximated whenever possible.
- Rewrite of all decoding and encoding routines to replace those used from qlib2, now the entire project is LGPL licensed.
ChangeLog since 2.17:
- Remove limitation on sample rate before calling ms_genfactmult()
in the normal path of packing records. Previously generating the
factor and multiplier was not attempted for rates higher than
32,767.
- ms_genfactmult() now support a much larger range of integer
sample rates and periods.
- ms_genfactmult() now sets the factor and multiplier using the
SECONDS/SAMPLE notation for sample rates less than 1.0 to retain
precision for low rates.
- ms_genfactmult() now assumes the specified rate is a sample
period in seconds if the samprate value is negative.
- Add ms_rsqrt64() as a general use reciprocal sqrt for doubles.
- Use memcpy() instead of assignment when unpacking float32 and
float64 samples to avoid problems with NaN's. Thanks Lion Krischer.
- Add test for reading records without Blockette 1000.
- Reformat all source code using included clang-format profile.
- A more elegant sanity check for output length in packing by mbyt.
- Improvements for test suite, more consistency.
- Remove msr_decode_steim? from libmseed.def, they are internal.
- Add sanity to length check before memset calls in packing functions.
- Check for environment variables ENCODE_DEBUG and DECODE_DEBUG
and set debugging output, at this point it is Steim frame details
and differences being encoded/decoded.
- Fix padding in steim[12] encoding routines.
- Remove unneeded output buffer checks in steim[12] decoding routines.
- Replace data sample packing and unpacking routines from qlib2 with
new routines developed from scratch. All code is now LGPL licensed.
- Add test suite with tests for encoding, decoding, parsing, etc.
- Update licensing to GNU-LGPL version 3 and include (L)GPL licenses
in LICENSE.txt.
- Define needed C99 int types for MSVC 2012 or earlier. Previously
this was only done for versions earlier than MSVC 2010.
Download: https://seiscode.iris.washington.edu/projects/libmseed/files
Change since 2.16m:
- Round Fixed Section Data Header start time values to the nearest
tenth of millisecond and restrict the microsecond offset value
to a range between -50 and +49 as recommended in SEED. Previously
start times were truncated at tenths of millisecond resolution
and the microsecond offset value was between 0 and +99. This also
addresses a bug where microsecond offsets were off by 100ms for times
before Jan 1 1970. Thanks to Lion Krischer for reporting.
Download: https://seiscode.iris.washington.edu/projects/libmseed/files
No functional changes since 2.16, some defines for older MSVC build systems and minor additions:
- Add defines for needed integer types and macros from inttypes.h
missing in older MSVC versions. MSVC 2010 and later appear to have
enough C99 support.
- Add define tests for _WIN32 and _WIN64 to cover all WINs.
- ms_fread(): Add cast to quiet warning for conversion from size_t
to int. In this case the read will always be <= MAXRECLEN, much
smaller than int, making the conversion safe.
Download: https://seiscode.iris.washington.edu/projects/libmseed/files
Changes since 2.15:
2015.113: 2.16
- Update minor release version in Makefile.
2015.108:
- Cleanup of lmplatform.h removing unneeded headers and using C99
standard headers except for a few platform specific cases.
- Convert all printf() and scanf() usage of %lld for 64-bit integers
to use the C99 PRId64 and SCNd64 macros for portability (MingGW).
- Change detection of Linux/Cygwin to set global define LMP_LINUX
instead of LMP_GLIB2 (now marked as deprecated).
- Change detection of Windows to set global define LMP_WIN instead
of LMP_WIN32 (now marked as deprecated).
- Add detection of __MINGW64__ define.
- Tested building on Win7 with: Open Watcom 1.9, MinGW gcc 4.8.1 and
Cygwin 1.7.35 (gcc 2.9.2).
2015.074:
- Define NTP-Posix time epoch conversion constant specifically as
a long long integer to avoid warnings on some compilers.
Download: https://seiscode.iris.washington.edu/projects/libmseed/files
Changes since 2.13:
2015.062: 2.14
- Fix memory leak when msr_pack() returns after an error. Patch
contributed by Larry Baker and Eric Thomas.
- Change casting of values passed to isdigit() to int intead of
unsigned character. Apparently this was consufing on ARM archs.
2015.061:
- Add ms_readleapseconds() and ms_readleapsecondfile() routines to
read a leap seconds file into an internal list.
- Modify msr_endtime() to check for an internal leap second list,
check for overlap with the record and adjust the end time as needed
when leap seconds are present. When a leap second list is present
any indication of positive leap seconds in the fixed section data
header are ignored.
2014.248:
- Add casting to size_t and int to avoid build warnings on certain
build systems (e.g. older MS Visual Studio).
The effective maximum sample buffer and record buffer size is ~2GB.
Download: https://seiscode.iris.washington.edu/projects/libmseed/files
All changes are documented in the ChangeLog included with the source code.
Changes since 2.12:
2014.234: 2.13
- Clean up Makefile and example/Makefile, remove all GCC-specific and
debug targets. Makefiles are compatible with both GNU and BSD make.
As before, the shared target works only for GCC-compatible compilers.
Thanks to Elliott Sales de Andrade for pointing out that shared library
targets did not work with parallel builds, prompting this clean up.
2014.197: 2.13rc
- Support 128-byte record length by changing MINRECLEN to 128 (was 256).
The current SEED specification is a minimum record length of 256-bytes,
but there are cases (e.g. low latency data flow) using 128-byte records.
- Add declarations, casting and string truncation to clear warnings
uncovered in ObsPy testing (thanks to Elliott Sales de Andrade).
2014.074:
- Add __CYGWIN__ defined test to Linux section of lmplatform.h.