25 save_huffman(
"/Compression/Lossless/TDC400/Huffman/Time", &time_huffman);
26 save_huffman(
"/Compression/Lossless/TDC400/Huffman/Bits 0", &bits_huffman[0]);
27 save_huffman(
"/Compression/Lossless/TDC400/Huffman/Bits 1", &bits_huffman[1]);
36 load_huffman(
"/Compression/Lossless/TDC400/Huffman/Time", &time_huffman);
37 load_huffman(
"/Compression/Lossless/TDC400/Huffman/Bits 0", &bits_huffman[0]);
38 load_huffman(
"/Compression/Lossless/TDC400/Huffman/Bits 1", &bits_huffman[1]);
40 int size =
sizeof(BOOL);
42 &size, TID_BOOL,
TRUE);
47 for (
int i = 0;
i < 8;
i++) {
63 for (
int j = 0; j < 6; j++) {
71 printf(
"------------------------------------------------------------\n");
95 unsigned short prev_time = 0;
96 unsigned short prev_run_time = 0;
98 for (
int i = 0;
i < input_size;
i++) {
99 unsigned short this_time = input[
i].
time;
101 if (this_time == prev_time + 1 &&
i != 0 && run_length < 127) {
106 if (run_length >= 8) {
114 unsigned short this_run_time_diff = this_time - prev_run_time;
115 if (this_run_time_diff < 256) {
122 prev_run_time = this_time;
125 prev_time = this_time;
141 unsigned short prev_run_time = 0;
143 for (
int i = 0;
i < num_words_in;
i++) {
145 unsigned short first_time;
146 if (first_time_length_flag) {
154 for (
int j = 0; j < run_length; j++) {
155 output[output_size++].
time = first_time + prev_run_time + j;
158 prev_run_time += first_time;
179 rle_state s = { 0, 0, {128, 128}, 0, bits_huffman };
181 for (
int i = 0;
i < input_size;
i++) {
182 for (
int j = 0; j < 6; j++) {
193 rle_state s = { 1, 0, {128, 128}, 0, bits_huffman };
195 for (
int i = 0;
i < output_size;
i++) {
196 for (
int j = 0; j < 6; j++) {
208 unsigned char *output,
int userParam)
222 int *uncompressed_size_p = (
int *) output;
223 *uncompressed_size_p = input_size;
224 output +=
sizeof(int);
227 int *compressed_time_size_p = (
int *) output;
228 output +=
sizeof(int);
232 int compressed_time_size =
234 output += compressed_time_size;
237 *compressed_time_size_p = compressed_time_size;
240 int *compressed_bits_size_p = (
int *) output;
241 output +=
sizeof(int);
245 int compressed_bits_size =
247 output += compressed_time_size;
250 *compressed_bits_size_p = compressed_bits_size;
252 return compressed_time_size + compressed_bits_size + 3 *
sizeof(int);
265 int *uncompressed_size_p = (
int *) input;
266 int uncompressed_size = *uncompressed_size_p;
267 input +=
sizeof(int);
268 input_size -=
sizeof(int);
271 int *compressed_time_size_p = (
int *) input;
272 int compressed_time_size = *compressed_time_size_p;
273 input +=
sizeof(int);
274 input_size -=
sizeof(int);
280 input += compressed_time_size;
281 input_size -= compressed_time_size;
284 int *compressed_bits_size_p = (
int *) input;
285 int compressed_bits_size = *compressed_bits_size_p;
286 input +=
sizeof(int);
287 input_size -=
sizeof(int);
291 decode_bits(&input_buffer, output, uncompressed_size);