|
PACS System 0.1.0
PACS DICOM system library
|
HEVC/H.265 codec implementation for video-encoded multi-frame DICOM. More...
#include <hevc_codec.h>


Public Member Functions | |
| hevc_codec (bool main10=false, int quality=kDefaultQuality) | |
| Constructs an HEVC codec instance. | |
| ~hevc_codec () override | |
| hevc_codec (const hevc_codec &)=delete | |
| hevc_codec & | operator= (const hevc_codec &)=delete |
| hevc_codec (hevc_codec &&) noexcept | |
| hevc_codec & | operator= (hevc_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_main10_profile () const noexcept |
| Checks if this codec is configured for Main 10 Profile. | |
| int | quality () const noexcept |
| Gets the current quality setting (CRF). | |
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 | kTransferSyntaxUIDMain |
| DICOM Transfer Syntax UID for HEVC/H.265 Main Profile / Level 5.1. | |
| static constexpr std::string_view | kTransferSyntaxUIDMain10 |
| DICOM Transfer Syntax UID for HEVC/H.265 Main 10 Profile / Level 5.1. | |
| static constexpr int | kDefaultQuality = 23 |
| Default quality for lossy encoding (CRF value, 0-51, lower = better) | |
Private Attributes | |
| bool | main10_ |
| int | quality_ |
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 |
HEVC/H.265 codec implementation for video-encoded multi-frame DICOM.
Implements DICOM Transfer Syntaxes for HEVC:
HEVC provides approximately 50% bitrate reduction compared to H.264/AVC for equivalent video quality. Intended for video-encoded multi-frame DICOM objects such as cine MRI, ultrasound clips, and XA sequences.
Supported Features:
Thread Safety:
Definition at line 45 of file hevc_codec.h.
|
explicit |
Constructs an HEVC codec instance.
| main10 | If true, use Main 10 Profile (10-bit, UID .108). If false, use Main Profile (8-bit, UID .107). |
| quality | Constant Rate Factor for encoding (0-51, lower = better). |
Definition at line 10 of file hevc_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 55 of file hevc_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 31 of file hevc_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 79 of file hevc_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 69 of file hevc_codec.cpp.
References kcenon::pacs::error_codes::compression_error, and kcenon::pacs::pacs_error().

|
nodiscardoverridevirtualnoexcept |
Checks if this codec produces lossy compression.
Implements kcenon::pacs::encoding::compression::compression_codec.
Definition at line 27 of file hevc_codec.cpp.
|
nodiscardnoexcept |
Checks if this codec is configured for Main 10 Profile.
Definition at line 59 of file hevc_codec.cpp.
References main10_.
|
nodiscardoverridevirtualnoexcept |
Returns a human-readable name for the codec.
Implements kcenon::pacs::encoding::compression::compression_codec.
Definition at line 23 of file hevc_codec.cpp.
References main10_.
|
delete |
|
defaultnoexcept |
|
nodiscardnoexcept |
Gets the current quality setting (CRF).
Definition at line 63 of file hevc_codec.cpp.
References quality_.
|
nodiscardoverridevirtualnoexcept |
Returns the Transfer Syntax UID supported by this codec.
Implements kcenon::pacs::encoding::compression::compression_codec.
Definition at line 19 of file hevc_codec.cpp.
|
staticconstexpr |
Default quality for lossy encoding (CRF value, 0-51, lower = better)
Definition at line 56 of file hevc_codec.h.
|
staticconstexpr |
DICOM Transfer Syntax UID for HEVC/H.265 Main Profile / Level 5.1.
Definition at line 48 of file hevc_codec.h.
Referenced by kcenon::pacs::encoding::compression::codec_factory::create().
|
staticconstexpr |
DICOM Transfer Syntax UID for HEVC/H.265 Main 10 Profile / Level 5.1.
Definition at line 52 of file hevc_codec.h.
Referenced by kcenon::pacs::encoding::compression::codec_factory::create().
|
private |
Definition at line 119 of file hevc_codec.h.
Referenced by is_main10_profile(), and name().
|
private |
Definition at line 120 of file hevc_codec.h.
Referenced by quality().