Hi Alois,

thank you for your bug report with patch.  Unfortunately we can only
fix RC bugs in Debian stable.  I wonder whether you would consider it
a sensible solution to backport biosig 2.3.3 to debian-backports?

Kind regards

     Andreas.

Am Fri, Apr 22, 2022 at 08:44:08AM +0200 schrieb Alois Schlögl:
> Package: libbiosig3
> Version: 2.1.2-4
> Severity: normal
> Tags: patch
> X-Debbugs-Cc: alois.schlo...@gmail.com
> 
> Dear Maintainer,
> 
>    libbiosig supports reading many different data formats, including the 
> IgorBinaryWaveform (IBW) format. 
>    When reading this data, an incorrect sampling rate (e.g. 25 Hz instead of 
> 25 kHz)  
>    is returned, because the scaling of the scaling of physical units for the 
> sampling interval 
>    milli-seconds is not correctly considered. This affacts all tools using 
> libbiosig,
>    including biosig-tools, mexSLOAD and mexSOPEN in octave-biosig, sigviewer, 
> stimfit,
>    and all other language bindings. 
> 
>    The attached patch fixes this bug, and fixes als uninitialized data in the 
> event table. 
>    I suggest to backport this to the current stable release.  
> 
> 
> -- System Information:
> Debian Release: 11.3
>   APT prefers stable-security
>   APT policy: (500, 'stable-security'), (500, 'stable')
> Architecture: amd64 (x86_64)
> Foreign Architectures: i386
> 
> Kernel: Linux 5.10.0-13-amd64 (SMP w/8 CPU threads)
> Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
> LANGUAGE=en_US:en
> Shell: /bin/sh linked to /bin/dash
> Init: systemd (via /run/systemd/system)
> LSM: AppArmor: enabled
> 
> Versions of packages libbiosig3 depends on:
> ii  libc6              2.31-13+deb11u3
> ii  libdcmtk15         3.6.5-1
> ii  libgcc-s1          10.2.1-6
> ii  libstdc++6         10.2.1-6
> ii  libtinyxml2.6.2v5  2.6.2-4
> 
> libbiosig3 recommends no packages.
> 
> libbiosig3 suggests no packages.
> 
> -- no debconf information

> diff --git a/biosig4c++/t210/sopen_igor.c b/biosig4c++/t210/sopen_igor.c
> index deb82631..c4d1ced6 100644
> --- a/biosig4c++/t210/sopen_igor.c
> +++ b/biosig4c++/t210/sopen_igor.c
> @@ -383,7 +383,7 @@ void sopen_ibw_read (HDRTYPE* hdr) {
>       int16_t type = 0;                       // See types (e.g. NT_FP64) 
> above. Zero for text waves.
>  
>       hdr->NS = 1;
> -     hdr->SampleRate = 1;
> +     hdr->SampleRate = 1.0;
>       hdr->CHANNEL = (CHANNEL_TYPE*) realloc(hdr->CHANNEL, hdr->NS * 
> sizeof(CHANNEL_TYPE));
>  
>       // Read some of the WaveHeader fields.
> @@ -407,7 +407,7 @@ void sopen_ibw_read (HDRTYPE* hdr) {
>                               hdr->CHANNEL[0].DigMin = 
> (w2->botFullScale-w2->hsB) / w2->hsA;
>  */
>  #else
> -                             hdr->SampleRate = 1.0 / w2->hsA;
> +                             hdr->SampleRate /= w2->hsA * 
> PhysDimScale(PhysDimCode(w2->xUnits));
>                               hdr->CHANNEL[0].PhysMax = w2->topFullScale;
>                               hdr->CHANNEL[0].PhysMin = w2->botFullScale;
>  #endif
> @@ -446,6 +446,8 @@ void sopen_ibw_read (HDRTYPE* hdr) {
>                                       for (n = 0; n < hdr->EVENT.N; n++) {
>                                               hdr->EVENT.TYP[n] = 0x7ffe;
>                                               hdr->EVENT.POS[n] = 
> (n+1)*w5->nDim[0];
> +                                             hdr->EVENT.DUR[n] = 0;
> +                                             hdr->EVENT.CHN[n] = 0;
>                                       }
>                               }
>  
> @@ -458,7 +460,10 @@ void sopen_ibw_read (HDRTYPE* hdr) {
>                               hdr->CHANNEL[0].PhysDimCode = 
> PhysDimCode(w5->dataUnits);
>                               hdr->CHANNEL[0].SPR = hdr->SPR = 1;
>                               hdr->NRec        = w5->npnts;
> -                             hdr->SampleRate /= w5->sfA[0];
> +                             hdr->SampleRate /= w5->sfA[0] * 
> PhysDimScale(PhysDimCode(w5->dimUnits[0]));
> +
> +                             if (VERBOSE_LEVEL>7) fprintf(stdout,"%s (line 
> %i): %g.x+%g \n",__FILE__,__LINE__,w5->sfA[0],w5->sfB[0]);
> +                             if (VERBOSE_LEVEL>7) fprintf(stdout,"%s (line 
> %i): 
> |%s|%s|%s|%s|\n",__FILE__,__LINE__,w5->dimUnits[0],w5->dimUnits[1],w5->dimUnits[2],w5->dimUnits[3]);
>  
>  #ifdef IGOROLD
>                               hdr->CHANNEL[0].Cal = 1.0;
> @@ -916,6 +921,8 @@ void sopen_itx_read (HDRTYPE* hdr) {
>               hdr->EVENT.SampleRate = hdr->SampleRate;
>               hdr->EVENT.POS = (uint32_t*) realloc(hdr->EVENT.POS, 
> hdr->EVENT.N * sizeof(*hdr->EVENT.POS));
>               hdr->EVENT.TYP = (uint16_t*) realloc(hdr->EVENT.TYP, 
> hdr->EVENT.N * sizeof(*hdr->EVENT.TYP));
> +             hdr->EVENT.CHN = (uint16_t*) realloc(hdr->EVENT.TYP, 
> hdr->EVENT.N * sizeof(*hdr->EVENT.TYP));
> +             hdr->EVENT.DUR = (uint32_t*) realloc(hdr->EVENT.POS, 
> hdr->EVENT.N * sizeof(*hdr->EVENT.POS));
>  #if (BIOSIG_VERSION >= 10500)
>               hdr->EVENT.TimeStamp = (gdf_time*)realloc(hdr->EVENT.TimeStamp, 
> hdr->EVENT.N*sizeof(gdf_time));
>  #endif
> @@ -979,6 +986,8 @@ void sopen_itx_read (HDRTYPE* hdr) {
>                               if (sweepNo > 0 && chanNo==0) {
>                                       hdr->EVENT.POS[sweepNo-1] = SPR;
>                                       hdr->EVENT.TYP[sweepNo-1] = 0x7ffe;
> +                                     hdr->EVENT.DUR[sweepNo-1] = 0;
> +                                     hdr->EVENT.CHN[sweepNo-1] = 0;
>  #if (BIOSIG_VERSION >= 10500)
>                                       hdr->EVENT.TimeStamp[sweepNo-1] = 0;
>  #endif

> _______________________________________________
> Debian-med-packaging mailing list
> debian-med-packag...@alioth-lists.debian.net
> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/debian-med-packaging


-- 
http://fam-tille.de

Reply via email to