MISR Toolkit  1.5.1
hcomp.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2  * Copyright by The HDF Group. *
3  * Copyright by the Board of Trustees of the University of Illinois. *
4  * All rights reserved. *
5  * *
6  * This file is part of HDF. The full HDF copyright notice, including *
7  * terms governing use, modification, and redistribution, is contained in *
8  * the COPYING file, which can be found at the root of the source code *
9  * distribution tree, or in https://support.hdfgroup.org/ftp/HDF/releases/. *
10  * If you do not have access to either file, you may request a copy from *
11  * help@hdfgroup.org. *
12  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
13 
14 /* $Id$ */
15 
16 /*-----------------------------------------------------------------------------
17  * File: hcomp.h
18  * Purpose: header file for compression information & structures
19  * Dependencies: should be included after hdf.h
20  * Invokes:
21  * Contents:
22  * Structure definitions: comp_info
23  * Constant definitions: lots...
24  *---------------------------------------------------------------------------*/
25 
26 /* avoid re-inclusion */
27 #ifndef __HCOMP_H
28 #define __HCOMP_H
29 
30 /* For determining which type of modeling is being done */
31 typedef enum
32  {
33  COMP_MODEL_STDIO = 0 /* for Standard C I/O model */
34  }
36 
37 /* For determining which type of encoding is being done */
38 typedef enum
39  {
40  COMP_CODE_NONE = 0, /* don't encode at all, just store */
41  COMP_CODE_RLE, /* for simple RLE encoding */
42  COMP_CODE_NBIT, /* for N-bit encoding */
43  COMP_CODE_SKPHUFF, /* for Skipping huffman encoding */
44  COMP_CODE_DEFLATE, /* for gzip 'deflate' encoding */
45  COMP_CODE_SZIP, /* for szip encoding */
46  COMP_CODE_INVALID, /* invalid last code, for range checking */
47  COMP_CODE_JPEG, /* _Ugly_ hack to allow JPEG images to be created with GRsetcompress */
48  COMP_CODE_IMCOMP = 12 /* another _Ugly_ hack to allow IMCOMP images to
49  be inquired, 12 to be the same as COMP_IMCOMP writing
50  will not be allowed, however. -BMR, Jul 2012 */
51  }
53 
54 /* Compression types available */
55 #define COMP_NONE 0
56 #define COMP_JPEG 2
57 #define COMP_RLE 11
58 #define COMP_IMCOMP 12
59 
60 /* Compression encoder/decoder configuration */
61 #define COMP_DECODER_ENABLED 1
62 #define COMP_ENCODER_ENABLED 2
63 
64 #ifndef COMPRESS_MASTER
65 extern uint16 compress_map[];
66 #else
67 uint16 compress_map[COMP_MAX_COMP + 1] =
68 { /* Mapping from compression types to tags */
69  0, /* No corresponding tag for un-compressed data */
70  0, /* (1) */
71  DFTAG_JPEG5, /* COMP_JPEG -> DFTAG_JPEG5 (for JPEG compression) */
72  0, /* (3) */
73  0, /* (4) */
74  0, /* (5) */
75  0, /* (6) */
76  0, /* (7) */
77  0, /* (8) */
78  0, /* (9) */
79  0, /* (10) */
80  DFTAG_RLE, /* COMP_RLE -> DFTAG_RLE (for Run-length compression) */
81  DFTAG_IMC /* COMP_IMCOMP -> DFTAG_IMC (for IMCOMP compression) */
82 };
83 #endif
84 
85 typedef union tag_model_info
86  { /* Union to contain modeling information */
87  struct
88  {
89  int32 nt; /* number type */
90  intn ndim; /* number of dimensions */
91  int32 *dims; /* array of dimensions */
92  }
93  dim;
94  }
96 
97 typedef union tag_comp_info
98  { /* Union to contain compression information */
99  struct
100  { /* Struct to contain information about how to compress */
101  /* or decompress a JPEG encoded 24-bit image */
102  intn quality; /* Quality factor for JPEG compression, should be from */
103  /* 0 (terrible) to 100 (very good) */
104  intn force_baseline; /* If force_baseline is set to TRUE then */
105  /* quantization tables are limited to */
106  /* 0..255 for JPEG baseline compability */
107  /* This is only an issue for quality */
108  /* settings below 24 */
109  }
110  jpeg;
111  struct
112  { /* struct to contain information about how to compress */
113  /* or decompress a N-bit encoded dataset */
114  int32 nt; /* number type of the data to encode */
115  intn sign_ext; /* whether to sign extend or not */
116  intn fill_one; /* whether to fill with 1's or 0's */
117  intn start_bit; /* offset of the start bit in the data */
118  intn bit_len; /* number of bits to store */
119  }
120  nbit;
121  struct
122  { /* struct to contain info about how to compress */
123  /* or decompress a "skipping" huffman encoded dataset */
124  intn skp_size; /* size of the individual elements when skipping */
125  }
126  skphuff;
127  struct
128  { /* struct to contain info about how to compress */
129  /* or decompress a gzip encoded dataset */
130  intn level; /* how hard to work when compressing the data */
131  }
132  deflate;
133  struct
134  {
135  int32 options_mask; /* IN */
136  int32 pixels_per_block; /* IN */
137  int32 pixels_per_scanline; /* OUT: computed */
138  int32 bits_per_pixel; /* OUT: size of NT */
139  int32 pixels; /* OUT: size of dataset or chunk */
140  }
141  szip; /* for szip encoding */
142 
143  }
144 comp_info;
145 
146 #endif /* __HCOMP_H */
147 
comp_model_t
Definition: hcomp.h:31
char int boolean force_baseline
Definition: cdjpeg.h:133
union tag_model_info model_info
union tag_comp_info comp_info
int32 * dims
Definition: hcomp.h:88
uint16 compress_map[]
struct tag_model_info::@6 dim
int32 nt
Definition: hcomp.h:86
intn ndim
Definition: hcomp.h:87
#define COMP_MAX_COMP
Definition: hlimits.h:148
comp_coder_t
Definition: hcomp.h:38
#define DFTAG_RLE
Definition: htags.h:114
int quality
Definition: jpeglib.h:919
#define DFTAG_JPEG5
Definition: htags.h:119
#define DFTAG_IMC
Definition: htags.h:115

MISR Toolkit - Copyright © 2005 - 2020 Jet Propulsion Laboratory
Generated on Fri Jun 19 2020 22:49:52