GLAST / LAT > DAQ and FSW > FSW > Doxygen Index> QSEC / V3-1-1 > qsec / linux-gcc
#include "decompress_p.h"
#include "LDT/APM.h"
#include <string.h>
#include <math.h>
Functions | |
| static const unsigned * | getwrd (const unsigned *buffer, unsigned *bcnt, unsigned *word, unsigned nbits) |
| Get bits from a buffer. | |
| double | calc_nbits (const int *f, int cnt, int tot) |
| Calculate the number of bits need to encode a sample with the specified frequency distribution. | |
| size_t | QSEC_sizeofDecompression (unsigned int nbits) |
| Calculate the total size required to accomodate a decompression structure. | |
| QSEC_decompression * | QSEC_constructDecompression (void *buffer, unsigned int nbits, const char *name) |
| Initialise the buffer as a decompression structure. | |
| QSEC_decompression * | QSEC_newDecompression (unsigned int nbits, const char *name) |
| Allocate and initialise a new decompression structure. | |
| void | QSEC_deleteDecompression (QSEC_decompression *dcm) |
| Free the memory associated with the decompression structure. | |
| void | QSEC_clearDecompression (QSEC_decompression *dcm) |
| Clear the decompression structrure of any data from a previous cycle. | |
| unsigned int | QSEC_getCount (QSEC_decompression *dcm) |
| Return the number of non-zero bins in the histogram. | |
| const unsigned int * | QSEC_unpack (QSEC_decompression *dcm, const unsigned int *buffer) |
| Build the lookup and freqency tables by retrieving and unpacking data from the consignment. | |
| unsigned | QSEC_decompress (QSEC_decompression *dcm, APD_dtx *dtx) |
| Decode the next symbol. | |
| void | QSEC_reportDecompression (QSEC_decompression *dcm, FILE *fp) |
| Describe the contents of the decompression structure in formatted ASCII send to the file fp. | |
| double calc_nbits | ( | const int * | f, | |
| int | cnt, | |||
| int | tot | |||
| ) |
Calculate the number of bits need to encode a sample with the specified frequency distribution.
This is based on the following formula
nbits = - TOT * SUM [ f[i] / TOT * ln (f[i] / TOT) ] = - TOT/TOT * SUM [ f[i] * (ln (f[i]) - ln (TOT)) ] = - SUM [ f[i] * ln (f[i] ] + SUM [ f[i] * ln (TOT) ] = - SUM [ f[i] * ln (f[i] ] + TOT * ln (TOT) ]
| f | The frequency distribution | |
| cnt | The count of entries in the frequency distribution | |
| tot | The total number of entries in the frequency distribution |
| const unsigned * getwrd | ( | const unsigned * | buffer, | |
| unsigned * | bcnt, | |||
| unsigned * | word, | |||
| unsigned | nbits | |||
| ) | [inline, static] |
Get bits from a buffer.
| buffer | Pointer to the current word in the buffer | |
| bcnt | Number of bits already used in the current word | |
| word | Word to add to the buffer | |
| nbits | Number of bits from the word to add to the buffer |
| void QSEC_clearDecompression | ( | QSEC_decompression * | dcm | ) |
Clear the decompression structrure of any data from a previous cycle.
| dcm | Pointer to an allocated, initialised, decompression structure |
| QSEC_decompression* QSEC_constructDecompression | ( | void * | buffer, | |
| unsigned int | nbits, | |||
| const char * | name | |||
| ) |
Initialise the buffer as a decompression structure.
| buffer | Pointer to the uninitialised memory to use for this decompression structure | |
| nbits | Number of bits in the symbols to be handled by this decompression strcuture | |
| name | String identifying this structure |
| unsigned QSEC_decompress | ( | QSEC_decompression * | dcm, | |
| APD_dtx * | dtx | |||
| ) |
Decode the next symbol.
| dcm | Pointer to an initialsed, populated and processed decompression structure | |
| dtx | Pointer to the arithmetic encoder context |
| void QSEC_deleteDecompression | ( | QSEC_decompression * | dcm | ) |
Free the memory associated with the decompression structure.
| dcm | Pointer to an allocated decompression structure |
| unsigned int QSEC_getCount | ( | QSEC_decompression * | dcm | ) |
Return the number of non-zero bins in the histogram.
| dcm | Pointer to a decompression structure |
| QSEC_decompression* QSEC_newDecompression | ( | unsigned int | nbits, | |
| const char * | name | |||
| ) |
Allocate and initialise a new decompression structure.
| name | String used in the reporting of error to identify a decompression structure | |
| nbits | Number of symbols in the complete range of possible symbols (including excluded internal sub-ranges), hence the number of bins in the histogram and frequency tables |
| void QSEC_reportDecompression | ( | QSEC_decompression * | dcm, | |
| FILE * | fp | |||
| ) |
Describe the contents of the decompression structure in formatted ASCII send to the file fp.
| dcm | Pointer to the decompression structure | |
| fp | Pointer to the file used as the destination |
| size_t QSEC_sizeofDecompression | ( | unsigned int | nbits | ) |
Calculate the total size required to accomodate a decompression structure.
| nbits | Number of symbols in the complete range of possible symbols (including excluded internal sub-ranges), hence the number of bins in the histogram and frequency tables |
| const unsigned int* QSEC_unpack | ( | QSEC_decompression * | dcm, | |
| const unsigned int * | buffer | |||
| ) |
Build the lookup and freqency tables by retrieving and unpacking data from the consignment.
| dcm | Pointer to an initialsed decompression structure | |
| buffer | Pointer to the start of the buffer holding the packed structure |
1.5.3