[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

WFDB 10.6

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

Changes in version 10.6.0 (26 January 2018)

The new functions getiafreq() and setiafreq() allow the application to change the time scale for input annotations, as setifreq() does for input signals. The new function getiaorigfreq() returns the “native” time resolution of the input file.

New macros, defined in ‘wfdb.h’, can be used to determine the limits of the numeric types used by the WFDB library. For example, WFDB_SAMPLE_MAX is the maximum value of a WFDB_Sample variable.

wfdb.h’ now includes prototypes for the internal functions wfdb_me_fatal() and wfdb_error(), which are used by the MEMERR macro.

Support for using libwww to read remote files has been removed. libwww support was introduced with version 10.0.1 in 2000, and was still supported as an alternative after libcurl support was added in version 10.3.16. However, libwww has not been actively developed for many years; we don’t recommend its use anymore, and removing support is necessary in order to simplify and add new features to WFDB in the future.

The WFDB library now supports reading variable-layout, multi-frequency records, provided that each signal’s sampling frequency is constant across the entire record. Although previous versions of the library were able to read such records in some cases, the behavior of getvec() and isigsettime() was buggy and inconsistent.

When reading a variable-layout multi-segment record, values returned by getvec(), getframe(), or sample() are rounded to the nearest integer. If that value is outside the range of a WFDB_Sample variable, the value WFDB_SAMPLE_MIN or WFDB_SAMPLE_MAX is returned.

When reading a signal from an EDF file in which the minimum representable value is greater than zero (corresponding to a negative baseline), the baseline returned by isigopen() is correctly rounded to the nearest integer. In previous versions, the baseline was off by 1, causing applications to calculate an incorrect physical value.

When reading a signal file in format 311, the file may end with two samples encoded as three bytes (so the total number of samples is 3n+2, and the total number of bytes is 4n+3.) Files created by the WFDB library itself do not use this format (an extra zero sample will be added in this case, for backwards compatibility), but such files may be created by other applications.

isigsettime() works correctly when reading a multi-segment record with multiple signal files per segment.

setifreq() works correctly if there are no input signals open.

tnextvec() returns -1 if it reaches the end of the record without finding a valid sample. Previously, in the case of a fixed-layout record, it would return zero in this case.

getann() correctly handles annotation files with huge time values (where the unscaled value exceeds the range of a WFDB_Time variable.) If the scaled value exceeds that range, it is replaced with WFDB_TIME_MIN or WFDB_TIME_MAX. getann() will also correctly round the time value if it is negative, and will correctly handle non-NOTE annotations at time zero.

If an input annotation file has no explicit time resolution, but the application calls setifreq() before annopen(), the input annotations will be rescaled accordingly. (In previous versions of the library, this would only work for annotation files with an explicit time resolution.)

When writing signals in format 212, 310, or 311, if the total number of samples is not a multiple of 2 or 3, wfdbquit() will correctly write out the remaining samples, adding padding if necessary. wfdbflush() will do likewise, provided that the output is a regular file and there is no mandatory block size.

When writing an annotation file, the time resolution and annotation type definitions will not be written until the first time putann() is called for that annotator. As a result, it is possible to call setafreq(), setannstr(), or setanndesc(), after calling annopen() and before the first putann().

putann() correctly handles consecutive annotations that are more than 2,147,483,647 samples apart.

The Fortran wrapper functions have been updated for compatibility with modern Fortran compilers on 64-bit systems.

Password-protected remote files can now be accessed when WFDB_PAGESIZE is set to zero.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]

George B. Moody (george@mit.edu)