- Follow the best practices of https://reuse.software/ to ensure BSD-3 licence is correctly applied.
- Add a badge to README.md
- Note: remove arm build as the CI pipeline is broken for this architecture
The release of C++17 has been 5 years ago. The supported period of C++14 has ended and the minimum required C++ version will be increased to C++17 for building the library and using it.
* Add an initial benchmark project to research optimizations.
* Use memchr to search for 0xFF during decoding.
* Rename function to make intent more clear.
* Use const pointers (decoding only need to read).
The typical use case is to encode and decode to and from a memory buffer. For almost all practical cases this is the most efficient encoding/decoding mechanisme.
Decoding from a byte stream or encoding to a byte stream with help of a callback function has been considered. There are however no significant advantages for the typical image sizes.
The current C API prevents adding new features and the introduction of an object oriented C++ interface. Every change results directly in a ABI break. To prevent this a new C API is introduced that is easier to extend and to maintain. On top of this API are 2 C++ classes: jpeg_encoder and jpeg_decoder to encode and decode JPEG-LS files.
This commit comes also with the following changes:
- Updated .clang-format
- Switch to Visual Studio 2019 for the CI build pipeline
- Support for reading and writing SPIFF header
- Incomplete support for JFIF header has been removed
- Extended unit test coverage
To ensure that the correct DLL is loaded, encode the ABI version (currently 2) and the CPU architecture in the DLL file name.
The architecture was already encoded (but only for x64), the ABI was missing, but requested as there are projects that use open source modules link with v1 and others with v2.
Since C++11, it is possible to return rich error information. Replace the custom way of returning error values and strings with the C++ standard way.
The only limitation is that the strings need to fixed and cannot use parameters. This should be no limitation in practice.