:: commit e26c259fd26622555f3cacede25948dfae07e0ef

Kamila Szewczyk <kspalaiologos@gmail.com> — 2022-05-01 19:27

parents: 1ca893bf67

remove rle after mtf

diff --git a/main.c b/main.c
index c2e006a..c34b19e 100644
--- a/main.c
+++ b/main.c
@@ -88,12 +88,11 @@ int main(int argc, char *argv[]) {
             int32_t bwt_index =
                 libsais_bwt(output, output, sais_array, new_size, 16, NULL);
             mtf_encode(&mtf_state, output, buffer, new_size);
-            int32_t new_size2 = mrlec(buffer, new_size, output);
 
             begin(&s);
-            s.out_queue = buffer;
+            s.out_queue = output;
             s.output_ptr = 0;
-            for (int32_t i = 0; i < new_size2; i++) encode_bit(&s, output[i]);
+            for (int32_t i = 0; i < new_size; i++) encode_bit(&s, buffer[i]);
             flush(&s);
             int32_t new_size3 = s.output_ptr;
 
@@ -101,9 +100,8 @@ int main(int argc, char *argv[]) {
             write(output_des, &bytes_read, sizeof(int32_t));
             write(output_des, &bwt_index, sizeof(int32_t));
             write(output_des, &new_size, sizeof(int32_t));
-            write(output_des, &new_size2, sizeof(int32_t));
             write(output_des, &new_size3, sizeof(int32_t));
-            write(output_des, buffer, new_size3);
+            write(output_des, output, new_size3);
         }
 
         free(buffer);
@@ -129,13 +127,12 @@ int main(int argc, char *argv[]) {
                 if (read(fd, buf, size) != size) break;
 
             uint32_t crc32;
-            int32_t bytes_read, bwt_index, new_size, new_size2, new_size3;
+            int32_t bytes_read, bwt_index, new_size, new_size3;
 
             safe_read(input_des, &crc32, sizeof(uint32_t));
             safe_read(input_des, &bytes_read, sizeof(int32_t));
             safe_read(input_des, &bwt_index, sizeof(int32_t));
             safe_read(input_des, &new_size, sizeof(int32_t));
-            safe_read(input_des, &new_size2, sizeof(int32_t));
             safe_read(input_des, &new_size3, sizeof(int32_t));
             safe_read(input_des, buffer, new_size3);
 
@@ -144,17 +141,16 @@ int main(int argc, char *argv[]) {
             s.input_ptr = 0;
             s.input_max = new_size3;
             init(&s);
-            for (int32_t i = 0; i < new_size2; i++) output[i] = decode_bit(&s);
-            mrled(output, buffer, new_size);
-            mtf_decode(&mtf_state, buffer, output, new_size);
-            libsais_unbwt(output, buffer, sais_array, new_size, NULL,
+            for (int32_t i = 0; i < new_size; i++) output[i] = decode_bit(&s);
+            mtf_decode(&mtf_state, output, buffer, new_size);
+            libsais_unbwt(buffer, output, sais_array, new_size, NULL,
                           bwt_index);
-            mrled(buffer, output, bytes_read);
-            if (crc32sum(1, output, bytes_read) != crc32) {
+            mrled(output, buffer, bytes_read);
+            if (crc32sum(1, buffer, bytes_read) != crc32) {
                 fprintf(stderr, "CRC32 checksum mismatch.\n");
                 return 1;
             }
-            write(output_des, output, bytes_read);
+            write(output_des, buffer, bytes_read);
         }
 
         free(buffer);
tab: 248 wrap: offon