POCKET+ is a lossless compression algorithm for fixed length time series data.
This repository contains a C++17 based implementation of a variety of the POCKET+ compression algorithm, described in the CCSDS 124.0-W-6 standard (version June 2021). The implementation was done to validate the compression performance and properties of the algorithm. Since the standard was not yet released, some changes might happen before the final release.
This project uses Google Test (GTest) with CMake for testing and building.
sudo apt-get install cmake git libgtest-dev lcov gcovr
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make
cd lib
sudo cp *.a /usr/lib
cd ~
git clone https://github.com/visionspacetec/PocketPlus.git
cd PocketPlus
mkdir build
cd build
cmake ..
make
make test
To install the library in /usr/local/lib run:
sudo make install
sudo ldconfig
If you forget to run ldconfig, the programm links but does not run.
sudo apt install doxygen graphviz
Build documentation:
doxygen Doxyfile
Open ./docs/index.html with your favorite web browser.
When using the installed PocketPlus library in another C++ project, include it with CMake:
find_library( PocketPlus REQUIRED )
In you code, import the compressor, decompressor and the utility functions as needed:
#include "pocketpluscompressor.h"
#include "pocketplusdecompressor.h"
#include "pocketplusutils.h"
A simple example can be found in the provided main function, which is only ment to showcase and test the algorithm.
valgrind --tool=callgrind ./PocketPlus.exe
gprof2dot --format=callgrind --output=out.dot ./callgrind.out.[xxx]
dot -Tpng out.dot -o graph.png
# Or, open with KCachegrind/QCachegrind
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
make PocketPlus_tests_coverage
This work was created following a standard defined by the Consultative Committee for Space Data Systems (CCSDS): https://public.ccsds.org
If you would like help implementing a new feature or fix a bug, check out our Contributing page and the Code of Conduct!
Please open an issue for bug reporting, enhancement or feature requests.