|
PACS System 0.1.0
PACS DICOM system library
|
JPEG XL codec implementation (Supplement 232). More...
#include <jpegxl_codec.h>


Public Member Functions | |
| jpegxl_codec (bool lossless=true, bool jpeg_recompression=false, float quality_distance=kDefaultQualityDistance) | |
| Constructs a JPEG XL codec instance. | |
| ~jpegxl_codec () override | |
| jpegxl_codec (const jpegxl_codec &)=delete | |
| jpegxl_codec & | operator= (const jpegxl_codec &)=delete |
| jpegxl_codec (jpegxl_codec &&) noexcept | |
| jpegxl_codec & | operator= (jpegxl_codec &&) noexcept |
Codec Information | |
| std::string_view | transfer_syntax_uid () const noexcept override |
| Returns the Transfer Syntax UID supported by this codec. | |
| std::string_view | name () const noexcept override |
| Returns a human-readable name for the codec. | |
| bool | is_lossy () const noexcept override |
| Checks if this codec produces lossy compression. | |
| bool | can_encode (const image_params ¶ms) const noexcept override |
| Checks if this codec supports the given image parameters. | |
| bool | can_decode (const image_params ¶ms) const noexcept override |
| Checks if this codec can decode data with given parameters. | |
Configuration | |
| bool | is_lossless_mode () const noexcept |
| bool | is_jpeg_recompression_mode () const noexcept |
| float | quality_distance () const noexcept |
Compression Operations | |
| codec_result | encode (std::span< const uint8_t > pixel_data, const image_params ¶ms, const compression_options &options={}) const override |
| Compresses uncompressed pixel data. | |
| codec_result | decode (std::span< const uint8_t > compressed_data, const image_params ¶ms) const override |
| Decompresses compressed pixel data. | |
Public Member Functions inherited from kcenon::pacs::encoding::compression::compression_codec | |
| virtual | ~compression_codec ()=default |
Static Public Attributes | |
| static constexpr std::string_view | kTransferSyntaxUIDLossless |
| DICOM Transfer Syntax UID for JPEG XL Lossless. | |
| static constexpr std::string_view | kTransferSyntaxUIDJPEGRecompression |
| DICOM Transfer Syntax UID for JPEG XL JPEG Recompression. | |
| static constexpr std::string_view | kTransferSyntaxUIDLossy |
| DICOM Transfer Syntax UID for JPEG XL (any mode) | |
| static constexpr float | kDefaultQualityDistance = 1.0f |
| Default quality distance for lossy mode (1.0 = visually lossless) | |
Private Attributes | |
| bool | lossless_ |
| bool | jpeg_recompression_ |
| float | quality_distance_ |
Additional Inherited Members | |
Protected Member Functions inherited from kcenon::pacs::encoding::compression::compression_codec | |
| compression_codec ()=default | |
| compression_codec (const compression_codec &)=default | |
| compression_codec & | operator= (const compression_codec &)=default |
| compression_codec (compression_codec &&)=default | |
| compression_codec & | operator= (compression_codec &&)=default |
JPEG XL codec implementation (Supplement 232).
Implements DICOM Transfer Syntaxes for JPEG XL:
JPEG XL provides superior compression compared to JPEG 2000 and PNG, with a unique ability to losslessly recompress existing JPEG data without any generation loss – critical for legacy archive migration.
Supported Features:
Thread Safety:
Definition at line 47 of file jpegxl_codec.h.
|
explicit |
Constructs a JPEG XL codec instance.
| lossless | If true, use lossless mode (UID .110). |
| jpeg_recompression | If true, use JPEG recompression mode (UID .111). Only meaningful when lossless is true. |
| quality_distance | Butteraugli distance for lossy mode (0.0 = lossless, 1.0 = visually lossless). Ignored in lossless mode. |
Definition at line 10 of file jpegxl_codec.cpp.
|
overridedefault |
|
delete |
|
defaultnoexcept |
|
nodiscardoverridevirtualnoexcept |
Checks if this codec can decode data with given parameters.
| params | The image parameters |
Implements kcenon::pacs::encoding::compression::compression_codec.
Definition at line 60 of file jpegxl_codec.cpp.
|
nodiscardoverridevirtualnoexcept |
Checks if this codec supports the given image parameters.
| params | The image parameters to check |
Implements kcenon::pacs::encoding::compression::compression_codec.
Definition at line 44 of file jpegxl_codec.cpp.
|
nodiscardoverridevirtual |
Decompresses compressed pixel data.
| compressed_data | The compressed pixel data (single frame) |
| params | Image parameters (width, height, samples_per_pixel) |
The output pixel data is always in interleaved format (planar_configuration=0).
Implements kcenon::pacs::encoding::compression::compression_codec.
Definition at line 88 of file jpegxl_codec.cpp.
References kcenon::pacs::error_codes::decompression_error, and kcenon::pacs::pacs_error().

|
nodiscardoverridevirtual |
Compresses uncompressed pixel data.
| pixel_data | The raw, uncompressed pixel data |
| params | Image parameters describing the pixel data |
| options | Compression settings |
The input pixel_data must match the format specified by params:
Implements kcenon::pacs::encoding::compression::compression_codec.
Definition at line 78 of file jpegxl_codec.cpp.
References kcenon::pacs::error_codes::compression_error, and kcenon::pacs::pacs_error().

|
nodiscardnoexcept |
Definition at line 68 of file jpegxl_codec.cpp.
References jpeg_recompression_.
|
nodiscardnoexcept |
|
nodiscardoverridevirtualnoexcept |
Checks if this codec produces lossy compression.
Implements kcenon::pacs::encoding::compression::compression_codec.
Definition at line 40 of file jpegxl_codec.cpp.
References lossless_.
|
nodiscardoverridevirtualnoexcept |
Returns a human-readable name for the codec.
Implements kcenon::pacs::encoding::compression::compression_codec.
Definition at line 31 of file jpegxl_codec.cpp.
References jpeg_recompression_, and lossless_.
|
delete |
|
defaultnoexcept |
|
nodiscardnoexcept |
Definition at line 72 of file jpegxl_codec.cpp.
References quality_distance_.
|
nodiscardoverridevirtualnoexcept |
Returns the Transfer Syntax UID supported by this codec.
Implements kcenon::pacs::encoding::compression::compression_codec.
Definition at line 22 of file jpegxl_codec.cpp.
|
private |
Definition at line 121 of file jpegxl_codec.h.
Referenced by is_jpeg_recompression_mode(), and name().
|
staticconstexpr |
Default quality distance for lossy mode (1.0 = visually lossless)
Definition at line 62 of file jpegxl_codec.h.
|
staticconstexpr |
DICOM Transfer Syntax UID for JPEG XL JPEG Recompression.
Definition at line 54 of file jpegxl_codec.h.
Referenced by kcenon::pacs::encoding::compression::codec_factory::create().
|
staticconstexpr |
DICOM Transfer Syntax UID for JPEG XL Lossless.
Definition at line 50 of file jpegxl_codec.h.
Referenced by kcenon::pacs::encoding::compression::codec_factory::create().
|
staticconstexpr |
DICOM Transfer Syntax UID for JPEG XL (any mode)
Definition at line 58 of file jpegxl_codec.h.
Referenced by kcenon::pacs::encoding::compression::codec_factory::create().
|
private |
Definition at line 120 of file jpegxl_codec.h.
Referenced by is_lossless_mode(), is_lossy(), and name().
|
private |
Definition at line 122 of file jpegxl_codec.h.
Referenced by quality_distance().