11#ifndef PACS_ENCODING_COMPRESSION_COMPRESSION_CODEC_HPP
12#define PACS_ENCODING_COMPRESSION_COMPRESSION_CODEC_HPP
99 [[nodiscard]] virtual std::string_view
name() const noexcept = 0;
105 [[nodiscard]] virtual
bool is_lossy() const noexcept = 0;
142 std::span<const uint8_t> pixel_data,
156 std::span<const uint8_t> compressed_data,
Abstract base class for image compression codecs.
virtual std::string_view transfer_syntax_uid() const noexcept=0
Returns the Transfer Syntax UID supported by this codec.
virtual codec_result decode(std::span< const uint8_t > compressed_data, const image_params ¶ms) const =0
Decompresses compressed pixel data.
compression_codec & operator=(compression_codec &&)=default
virtual bool can_decode(const image_params ¶ms) const noexcept=0
Checks if this codec can decode data with given parameters.
virtual codec_result encode(std::span< const uint8_t > pixel_data, const image_params ¶ms, const compression_options &options={}) const =0
Compresses uncompressed pixel data.
virtual std::string_view name() const noexcept=0
Returns a human-readable name for the codec.
compression_codec()=default
compression_codec(const compression_codec &)=default
virtual ~compression_codec()=default
virtual bool is_lossy() const noexcept=0
Checks if this codec produces lossy compression.
virtual bool can_encode(const image_params ¶ms) const noexcept=0
Checks if this codec supports the given image parameters.
compression_codec & operator=(const compression_codec &)=default
compression_codec(compression_codec &&)=default
Result<T> type aliases and helpers for PACS system.
Compression quality settings for lossy codecs.
int chroma_subsampling
Chroma subsampling for color images 0 = 4:4:4 (no subsampling) 1 = 4:2:2 (horizontal subsampling) 2 =...
bool progressive
Enable progressive encoding (JPEG only)
bool lossless
Enable lossless mode if supported by codec.
int quality
Quality setting (1-100 for JPEG)
Successful result of a compression/decompression operation.
image_params output_params
Output image parameters (may differ from input for decompression)
std::vector< uint8_t > data
Processed pixel data.
Parameters describing image pixel data.