decode_acquirefile_samples.cpp.html mathcode2html   
 Source file:   decode_acquirefile_samples.cpp
 Converted:   Sun Aug 7 2016 at 13:45:52
 This documentation file will not reflect any later changes in the source file.

$$\phantom{******** If you see this on the webpage then the browser could not locate *********}$$
$$\phantom{******** jsMath/easy/load.js or the variable root is set wrong in this file *********}$$
$$\newcommand{\vector}[1]{\left[\begin{array}{c} #1 \end{array}\right]}$$ $$\newenvironment{matrix}{\left[\begin{array}{cccccccccc}} {\end{array}\right]}$$ $$\newcommand{\A}{{\cal A}}$$ $$\newcommand{\W}{{\cal W}}$$

/* Copyright 2008-2014 Research Foundation State University of New York   */

/* This file is part of QUB Express.                                      */

/* QUB Express is free software; you can redistribute it and/or modify    */
/* it under the terms of the GNU General Public License as published by   */
/* the Free Software Foundation, either version 3 of the License, or      */
/* (at your option) any later version.                                    */

/* QUB Express is distributed in the hope that it will be useful,         */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of         */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          */
/* GNU General Public License for more details.                           */

/* You should have received a copy of the GNU General Public License,     */
/* named LICENSE.txt, in the QUB Express program directory.  If not, see  */
/* <http://www.gnu.org/licenses/>.                                        */

#include "decode_acquirefile_samples.h"

 
// *.acquire files store sampled data in a special compressed format. // This decodes it into 16-bit shorts. Assumes little-endian architecture (flips big-endian literals). //

decode_acquirefile_samples.h //

Up: Index

extern "C" QUBFAST_API void decode_acquirefile_samples(char *src, short *dest, int size, int count)
{
  short val = 0;
  char *val_bytes = (char *) &val;
  char *src_end = src + size;
  short *dest_end = dest + count;
  while ( (src != src_end) && (dest != dest_end) ) {
    char c = *src;
    if ( c == -128 ) {
      ++src;
      val_bytes[1] = *src;
      ++src;
      val_bytes[0] = *src;
      ++src;
    } else {
      val = (short) (val + c);
      ++src;
    }
    *dest = val;
    ++dest;
  }
}