You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.4 KiB
C
52 lines
1.4 KiB
C
/***************************************************************************
|
|
* steimdata.h:
|
|
*
|
|
* Declarations for Steim compression routines.
|
|
*
|
|
* modified: 2004.278
|
|
***************************************************************************/
|
|
|
|
#ifndef STEIMDATA_H
|
|
#define STEIMDATA_H 1
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define STEIM1_FRAME_MAX_SAMPLES 60
|
|
#define STEIM2_FRAME_MAX_SAMPLES 105
|
|
|
|
#define VALS_PER_FRAME 15 /* # of ints for data per frame.*/
|
|
|
|
#define STEIM1_SPECIAL_MASK 0
|
|
#define STEIM1_BYTE_MASK 1
|
|
#define STEIM1_HALFWORD_MASK 2
|
|
#define STEIM1_FULLWORD_MASK 3
|
|
|
|
#define STEIM2_SPECIAL_MASK 0
|
|
#define STEIM2_BYTE_MASK 1
|
|
#define STEIM2_123_MASK 2
|
|
#define STEIM2_567_MASK 3
|
|
|
|
typedef union u_diff { /* union for Steim objects. */
|
|
int8_t byte[4]; /* 4 1-byte differences. */
|
|
int16_t hw[2]; /* 2 halfword differences. */
|
|
int32_t fw; /* 1 fullword difference. */
|
|
} U_DIFF;
|
|
|
|
typedef struct frame { /* frame in a seed data record. */
|
|
uint32_t ctrl; /* control word for frame. */
|
|
U_DIFF w[15]; /* compressed data. */
|
|
} FRAME;
|
|
|
|
typedef struct dframes { /* seed data frames. */
|
|
FRAME f[1]; /* data record header frames. */
|
|
} DFRAMES;
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* STEIMDATA_H */
|