PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
kcenon::pacs::encoding::compression::compression_codec Class Referenceabstract

Abstract base class for image compression codecs. More...

#include <compression_codec.h>

Inheritance diagram for kcenon::pacs::encoding::compression::compression_codec:
Inheritance graph
Collaboration diagram for kcenon::pacs::encoding::compression::compression_codec:
Collaboration graph

Public Member Functions

virtual ~compression_codec ()=default
 
Codec Information
virtual std::string_view transfer_syntax_uid () const noexcept=0
 Returns the Transfer Syntax UID supported by this codec.
 
virtual std::string_view name () const noexcept=0
 Returns a human-readable name for the codec.
 
virtual bool is_lossy () const noexcept=0
 Checks if this codec produces lossy compression.
 
virtual bool can_encode (const image_params &params) const noexcept=0
 Checks if this codec supports the given image parameters.
 
virtual bool can_decode (const image_params &params) const noexcept=0
 Checks if this codec can decode data with given parameters.
 
Compression Operations
virtual codec_result encode (std::span< const uint8_t > pixel_data, const image_params &params, const compression_options &options={}) const =0
 Compresses uncompressed pixel data.
 
virtual codec_result decode (std::span< const uint8_t > compressed_data, const image_params &params) const =0
 Decompresses compressed pixel data.
 

Protected Member Functions

 compression_codec ()=default
 
 compression_codec (const compression_codec &)=default
 
compression_codecoperator= (const compression_codec &)=default
 
 compression_codec (compression_codec &&)=default
 
compression_codecoperator= (compression_codec &&)=default
 

Detailed Description

Abstract base class for image compression codecs.

Provides a unified interface for DICOM image compression and decompression. Implementations wrap external libraries (libjpeg-turbo, OpenJPEG, etc.).

Thread Safety:

  • Codec instances are NOT thread-safe by themselves
  • Use separate instances per thread or external synchronization
  • Factory methods are thread-safe
See also
DICOM PS3.5 Section 8.2 - Native and Encapsulated Pixel Data

Definition at line 82 of file compression_codec.h.

Constructor & Destructor Documentation

◆ ~compression_codec()

virtual kcenon::pacs::encoding::compression::compression_codec::~compression_codec ( )
virtualdefault

◆ compression_codec() [1/3]

kcenon::pacs::encoding::compression::compression_codec::compression_codec ( )
protecteddefault

◆ compression_codec() [2/3]

kcenon::pacs::encoding::compression::compression_codec::compression_codec ( const compression_codec & )
protecteddefault

◆ compression_codec() [3/3]

kcenon::pacs::encoding::compression::compression_codec::compression_codec ( compression_codec && )
protecteddefault

Member Function Documentation

◆ can_decode()

◆ can_encode()

virtual bool kcenon::pacs::encoding::compression::compression_codec::can_encode ( const image_params & params) const
nodiscardpure virtualnoexcept

◆ decode()

virtual codec_result kcenon::pacs::encoding::compression::compression_codec::decode ( std::span< const uint8_t > compressed_data,
const image_params & params ) const
nodiscardpure virtual

Decompresses compressed pixel data.

Parameters
compressed_dataThe compressed pixel data (single frame)
paramsImage parameters (width, height, samples_per_pixel)
Returns
codec_result containing decompressed data or error

The output pixel data is always in interleaved format (planar_configuration=0).

Implemented in kcenon::pacs::encoding::compression::frame_deflate_codec, kcenon::pacs::encoding::compression::hevc_codec, kcenon::pacs::encoding::compression::htj2k_codec, kcenon::pacs::encoding::compression::jpeg2000_codec, kcenon::pacs::encoding::compression::jpeg_baseline_codec, kcenon::pacs::encoding::compression::jpeg_lossless_codec, kcenon::pacs::encoding::compression::jpeg_ls_codec, kcenon::pacs::encoding::compression::jpegxl_codec, and kcenon::pacs::encoding::compression::rle_codec.

◆ encode()

virtual codec_result kcenon::pacs::encoding::compression::compression_codec::encode ( std::span< const uint8_t > pixel_data,
const image_params & params,
const compression_options & options = {} ) const
nodiscardpure virtual

Compresses uncompressed pixel data.

Parameters
pixel_dataThe raw, uncompressed pixel data
paramsImage parameters describing the pixel data
optionsCompression settings
Returns
codec_result containing compressed data or error

The input pixel_data must match the format specified by params:

  • For planar_configuration=0: interleaved (RGBRGB...)
  • For planar_configuration=1: separate planes (RRR...GGG...BBB...)
Note
This is a potentially expensive operation. Consider using thread_pool_adapter for batch processing.

Implemented in kcenon::pacs::encoding::compression::frame_deflate_codec, kcenon::pacs::encoding::compression::hevc_codec, kcenon::pacs::encoding::compression::htj2k_codec, kcenon::pacs::encoding::compression::jpeg2000_codec, kcenon::pacs::encoding::compression::jpeg_baseline_codec, kcenon::pacs::encoding::compression::jpeg_lossless_codec, kcenon::pacs::encoding::compression::jpeg_ls_codec, kcenon::pacs::encoding::compression::jpegxl_codec, and kcenon::pacs::encoding::compression::rle_codec.

◆ is_lossy()

◆ name()

◆ operator=() [1/2]

compression_codec & kcenon::pacs::encoding::compression::compression_codec::operator= ( compression_codec && )
protecteddefault

◆ operator=() [2/2]

compression_codec & kcenon::pacs::encoding::compression::compression_codec::operator= ( const compression_codec & )
protecteddefault

◆ transfer_syntax_uid()


The documentation for this class was generated from the following file: