25 save_huffman(
"/Compression/Lossless/FADC/Huffman/Run", &fadc_run_huffman);
26 save_huffman(
"/Compression/Lossless/FADC/Huffman/Small", &fadc_small_huffman);
34 load_huffman(
"/Compression/Lossless/FADC/Huffman/Run", &fadc_run_huffman);
35 load_huffman(
"/Compression/Lossless/FADC/Huffman/Small", &fadc_small_huffman);
37 int size =
sizeof(BOOL);
39 &size, TID_BOOL,
TRUE);
50 int num_fadc_samples = input_size;
57 for (
int i = 0;
i < num_fadc_samples;
i++) {
58 diffs[
i] = ((int) input[
i].
channel[chan]) - prev_sample;
59 prev_sample = input[
i].
channel[chan];
62 for (
int i = 0;
i < num_fadc_samples;
i++) {
67 while (
i + run_length < num_fadc_samples && run_length < 31) {
68 if (diffs[
i + run_length] == 0) {
79 }
else if (diffs[
i] <= 4 && diffs[
i] >= -4) {
101 int *uncompressed_size_p = (
int *) output;
102 *uncompressed_size_p = input_size;
103 output +=
sizeof(int);
106 int *compressed_time_size_p = (
int *) output;
107 output +=
sizeof(int);
111 int compressed_size =
encode_fadc(input, input_size, &output_buffer);
112 output += compressed_size;
115 *compressed_time_size_p = compressed_size;
117 return compressed_size + 2 *
sizeof(int);
122 int num_fadc_samples = input_size;
128 for (
int i = 0;
i < num_fadc_samples;
i++) {
130 if (type_code_1 == 0) {
133 for (
int j = 0; j < run_length; j++) {
139 if (i < 0 || i >= num_fadc_samples) {
146 if (type_code_2 == 0) {
156 for (
int i = 0;
i < num_fadc_samples;
i++) {
157 output[
i].
channel[chan] = prev_sample + diffs[
i];
158 prev_sample = output[
i].
channel[chan];
162 return num_fadc_samples;
174 int *uncompressed_size_p = (
int *) input;
175 int uncompressed_size = *uncompressed_size_p;
176 input +=
sizeof(int);
177 input_size -=
sizeof(int);
180 int *compressed_size_p = (
int *) input;
181 int compressed_size = *compressed_size_p;
182 input +=
sizeof(int);
183 input_size -=
sizeof(int);
188 decode_fadc(&input_buffer, output, uncompressed_size);
189 input += compressed_size;
190 input_size -= compressed_size;
192 return uncompressed_size *
sizeof(
fadc_word);