From 7897b205493f3dc1e8861a622d8dae3fdb96c71a Mon Sep 17 00:00:00 2001 From: Jannis Achstetter Date: Thu, 10 Jun 2021 20:42:55 +0200 Subject: [PATCH] Add snappy as compression algorithm --- lib/snappy | 2 +- src/CMakeLists.txt | 3 +++ src/algo-snappy.c | 17 +++++++++++++++++ src/algo-snappy.h | 10 ++++++++++ src/main.c | 9 +++++++++ 5 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/algo-snappy.c create mode 100644 src/algo-snappy.h diff --git a/lib/snappy b/lib/snappy index b638ebe..ddfcc95 160000 --- a/lib/snappy +++ b/lib/snappy @@ -1 +1 @@ -Subproject commit b638ebe5d95ec4559921a72f8c2bbc4b1b5a2fd0 +Subproject commit ddfcc955e4c26b0138f647c366443b317d3a8ad9 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6c387ad..deccb13 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -14,6 +14,7 @@ pico_sdk_init() include(../lib/heatshrink/CMakeLists.txt) include(../lib/zlib/interfaceLibForPicoSDK.cmake) include(../lib/zstd/interfaceLibForPicoSDK.cmake) +include(../lib/snappy/interfaceLibForPicoSDK.cmake) ## Add our own C/C++ files here ## Sorted alphabetically @@ -22,6 +23,7 @@ add_executable(${CMAKE_PROJECT_NAME} algo-heatshrink.c algo-zlib.c algo-zstd.c + algo-snappy.c main.c ) @@ -51,6 +53,7 @@ target_link_libraries(${CMAKE_PROJECT_NAME} pico_stdlib zlib zstd + snappy ) ## enable usb output, disable uart output diff --git a/src/algo-snappy.c b/src/algo-snappy.c new file mode 100644 index 0000000..d4e9044 --- /dev/null +++ b/src/algo-snappy.c @@ -0,0 +1,17 @@ +#include "algo-zlib.h" + +#include "../lib/snappy/snappy-c.h" + +void mysnappy_init() +{ +} + +void mysnappy_compress(uint8_t *input, size_t insize, uint8_t *output, size_t *outsize) +{ + snappy_compress(input, insize, output, outsize); +} + +void mysnappy_uncompress(uint8_t *input, size_t insize, uint8_t *output, size_t *outsize) +{ + snappy_uncompress(input, insize, output, outsize); +} diff --git a/src/algo-snappy.h b/src/algo-snappy.h new file mode 100644 index 0000000..0936ec3 --- /dev/null +++ b/src/algo-snappy.h @@ -0,0 +1,10 @@ +#ifndef __ALGO_SNAPPY_H__ +#define __ALGO_SNAPPY_H__ + +#include "pico/stdlib.h" + +void mysnappy_init(); +void mysnappy_compress(uint8_t* input, size_t insize, uint8_t* output, size_t* outsize); +void mysnappy_uncompress(uint8_t* input, size_t insize, uint8_t* output, size_t* outsize); + +#endif // __ALGO_SNAPPY_H__ diff --git a/src/main.c b/src/main.c index 7147d08..61821cd 100644 --- a/src/main.c +++ b/src/main.c @@ -18,6 +18,7 @@ #include "algo-heatshrink.h" #include "algo-zlib.h" #include "algo-zstd.h" +#include "algo-snappy.h" // TEST VECTORS @@ -54,6 +55,7 @@ enum { ALGO_HEATSHRINK, ALGO_ZLIB, ALGO_ZSTD, + ALGO_SNAPPY, // Add more HERE ALGO_NUM_TOTAL }; @@ -198,6 +200,13 @@ int main() { algos[ALGO_ZSTD].uncompress = zstd_uncompress; algos[ALGO_ZSTD].init(); + // Algo 2: snappy + sprintf(algos[ALGO_SNAPPY].name, "SNAPPY"); + algos[ALGO_SNAPPY].init = mysnappy_init; + algos[ALGO_SNAPPY].compress = mysnappy_compress; + algos[ALGO_SNAPPY].uncompress = mysnappy_uncompress; + algos[ALGO_SNAPPY].init(); + finish_time = time_us_32(); elapsed_time = finish_time - start_time; printf("%luµs\n", elapsed_time);