Skip to content

Commit d3cc9cf

Browse files
committed
Added initial support for new transfer syntax.
Added initial support for the Deflated Image Frame Compression Transfer Syntax that was introduced with Supplement 244. The current support includes reading and writing of DICOM files and data sets that are encoded with this new transfer syntax as well as basic network support (including some of the command line tools). What is still missing is the compression and decompression of this transfer syntax, i.e. the lossless transcoding to/from the various uncompressed transfer syntaxes. This closes DCMTK Conformance #1149.
1 parent 8a8e43e commit d3cc9cf

File tree

14 files changed

+143
-105
lines changed

14 files changed

+143
-105
lines changed

dcmdata/include/dcmtk/dcmdata/dcuid.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
*
3-
* Copyright (C) 1994-2024, OFFIS e.V.
3+
* Copyright (C) 1994-2025, OFFIS e.V.
44
* All rights reserved. See COPYRIGHT file for details.
55
*
66
* This software and supporting documentation were developed by
@@ -436,6 +436,8 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
436436
#define UID_EncapsulatedUncompressedExplicitVRLittleEndianTransferSyntax "1.2.840.10008.1.2.1.98"
437437
/// Deflated Explicit VR Little Endian
438438
#define UID_DeflatedExplicitVRLittleEndianTransferSyntax "1.2.840.10008.1.2.1.99"
439+
/// Deflated Image Frame Compression
440+
#define UID_DeflatedImageFrameCompressionTransferSyntax "1.2.840.10008.1.2.8.1"
439441
/** JPEG Baseline (Process 1): Default Transfer Syntax
440442
* for Lossy JPEG 8 Bit Image Compression
441443
*/

dcmdata/include/dcmtk/dcmdata/dcxfer.h

+36-34
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
*
3-
* Copyright (C) 1994-2024, OFFIS e.V.
3+
* Copyright (C) 1994-2025, OFFIS e.V.
44
* All rights reserved. See COPYRIGHT file for details.
55
*
66
* This software and supporting documentation were developed by
@@ -88,72 +88,74 @@ typedef enum {
8888
EXS_RLELossless = 23,
8989
/// Deflated Explicit VR Little Endian
9090
EXS_DeflatedLittleEndianExplicit = 24,
91+
/// Deflated Image Frame Compression
92+
EXS_DeflatedImageFrameCompression = 25,
9193
/// JPEG-LS (lossless)
92-
EXS_JPEGLSLossless = 25,
94+
EXS_JPEGLSLossless = 26,
9395
/// JPEG-LS (lossless or near-lossless mode)
94-
EXS_JPEGLSLossy = 26,
96+
EXS_JPEGLSLossy = 27,
9597
/// JPEG 2000 (lossless)
96-
EXS_JPEG2000LosslessOnly = 27,
98+
EXS_JPEG2000LosslessOnly = 28,
9799
/// JPEG 2000 (lossless or lossy)
98-
EXS_JPEG2000 = 28,
100+
EXS_JPEG2000 = 29,
99101
/// JPEG 2000 part 2 multi-component extensions (lossless)
100-
EXS_JPEG2000MulticomponentLosslessOnly = 29,
102+
EXS_JPEG2000MulticomponentLosslessOnly = 30,
101103
/// JPEG 2000 part 2 multi-component extensions (lossless or lossy)
102-
EXS_JPEG2000Multicomponent = 30,
104+
EXS_JPEG2000Multicomponent = 31,
103105
/// JPIP Referenced
104-
EXS_JPIPReferenced = 31,
106+
EXS_JPIPReferenced = 32,
105107
/// JPIP Referenced Deflate
106-
EXS_JPIPReferencedDeflate = 32,
108+
EXS_JPIPReferencedDeflate = 33,
107109
/// MPEG2 Main Profile at Main Level
108-
EXS_MPEG2MainProfileAtMainLevel = 33,
110+
EXS_MPEG2MainProfileAtMainLevel = 34,
109111
/// Fragmentable MPEG2 Main Profile / Main Level
110-
EXS_FragmentableMPEG2MainProfileMainLevel = 34,
112+
EXS_FragmentableMPEG2MainProfileMainLevel = 35,
111113
/// MPEG2 Main Profile at High Level
112-
EXS_MPEG2MainProfileAtHighLevel = 35,
114+
EXS_MPEG2MainProfileAtHighLevel = 36,
113115
/// Fragmentable MPEG2 Main Profile / High Level
114-
EXS_FragmentableMPEG2MainProfileHighLevel = 36,
116+
EXS_FragmentableMPEG2MainProfileHighLevel = 37,
115117
/// MPEG4 High Profile / Level 4.1
116-
EXS_MPEG4HighProfileLevel4_1 = 37,
118+
EXS_MPEG4HighProfileLevel4_1 = 38,
117119
/// Fragmentable MPEG4 High Profile / Level 4.1
118-
EXS_FragmentableMPEG4HighProfileLevel4_1 = 38,
120+
EXS_FragmentableMPEG4HighProfileLevel4_1 = 39,
119121
/// MPEG4 BD-compatible High Profile / Level 4.1
120-
EXS_MPEG4BDcompatibleHighProfileLevel4_1 = 39,
122+
EXS_MPEG4BDcompatibleHighProfileLevel4_1 = 40,
121123
/// Fragmentable MPEG4 BD-compatible High Profile / Level 4.1
122-
EXS_FragmentableMPEG4BDcompatibleHighProfileLevel4_1 = 40,
124+
EXS_FragmentableMPEG4BDcompatibleHighProfileLevel4_1 = 41,
123125
/// MPEG4 High Profile / Level 4.2 For 2D Video
124-
EXS_MPEG4HighProfileLevel4_2_For2DVideo = 41,
126+
EXS_MPEG4HighProfileLevel4_2_For2DVideo = 42,
125127
/// Fragmentable MPEG4 High Profile / Level 4.2 For 2D Video
126-
EXS_FragmentableMPEG4HighProfileLevel4_2_For2DVideo = 42,
128+
EXS_FragmentableMPEG4HighProfileLevel4_2_For2DVideo = 43,
127129
/// MPEG4 High Profile / Level 4.2 For 3D Video
128-
EXS_MPEG4HighProfileLevel4_2_For3DVideo = 43,
130+
EXS_MPEG4HighProfileLevel4_2_For3DVideo = 44,
129131
/// Fragmentable MPEG4 Stereo High Profile / Level 4.2
130-
EXS_FragmentableMPEG4HighProfileLevel4_2_For3DVideo = 44,
132+
EXS_FragmentableMPEG4HighProfileLevel4_2_For3DVideo = 45,
131133
/// MPEG4 Stereo High Profile / Level 4.2
132-
EXS_MPEG4StereoHighProfileLevel4_2 = 45,
134+
EXS_MPEG4StereoHighProfileLevel4_2 = 46,
133135
/// Fragmentable HEVC/H.265 Main Profile / Level 5.1
134-
EXS_FragmentableMPEG4StereoHighProfileLevel4_2 = 46,
136+
EXS_FragmentableMPEG4StereoHighProfileLevel4_2 = 47,
135137
/// HEVC/H.265 Main Profile / Level 5.1
136-
EXS_HEVCMainProfileLevel5_1 = 47,
138+
EXS_HEVCMainProfileLevel5_1 = 48,
137139
/// HEVC/H.265 Main 10 Profile / Level 5.1
138-
EXS_HEVCMain10ProfileLevel5_1 = 48,
140+
EXS_HEVCMain10ProfileLevel5_1 = 49,
139141
/// JPEG XL Lossless
140-
EXS_JPEGXLLossless = 49,
142+
EXS_JPEGXLLossless = 50,
141143
/// JPEG XL JPEG Recompression
142-
EXS_JPEGXLJPEGRecompression = 50,
144+
EXS_JPEGXLJPEGRecompression = 51,
143145
/// JPEG XL
144-
EXS_JPEGXL = 51,
146+
EXS_JPEGXL = 52,
145147
/// High-Throughput JPEG 2000 Image Compression (Lossless Only)
146-
EXS_HighThroughputJPEG2000LosslessOnly = 52,
148+
EXS_HighThroughputJPEG2000LosslessOnly = 53,
147149
/// High-Throughput JPEG 2000 with RPCL Options Image Compression (Lossless Only)
148-
EXS_HighThroughputJPEG2000withRPCLOptionsLosslessOnly = 53,
150+
EXS_HighThroughputJPEG2000withRPCLOptionsLosslessOnly = 54,
149151
/// High-Throughput JPEG 2000 Image Compression
150-
EXS_HighThroughputJPEG2000 = 54,
152+
EXS_HighThroughputJPEG2000 = 55,
151153
/// JPIP HTJ2K Referenced
152-
EXS_JPIPHTJ2KReferenced = 55,
154+
EXS_JPIPHTJ2KReferenced = 56,
153155
/// JPIP HTJ2K Referenced Deflate
154-
EXS_JPIPHTJ2KReferencedDeflate = 56,
156+
EXS_JPIPHTJ2KReferencedDeflate = 57,
155157
/// Private GE Little Endian Implicit with big endian pixel data
156-
EXS_PrivateGE_LEI_WithBigEndianPixelData = 57
158+
EXS_PrivateGE_LEI_WithBigEndianPixelData = 58
157159
} E_TransferSyntax;
158160

159161

dcmdata/libsrc/dcuid.cc

+1
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ static const UIDNameMap uidNameMap[] = {
124124
{ UID_JPEGLSLossyTransferSyntax, "JPEGLSNearLossless", "JPEGLSLossy", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
125125
{ UID_RLELosslessTransferSyntax, "RLELossless", "RLELossless", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
126126
{ UID_DeflatedExplicitVRLittleEndianTransferSyntax, "DeflatedExplicitVRLittleEndian", "DeflatedLittleEndianExplicit", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
127+
{ UID_DeflatedImageFrameCompressionTransferSyntax, "DeflatedImageFrameCompression", "DeflatedImageFrameCompression", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
127128
{ UID_JPEG2000LosslessOnlyTransferSyntax, "JPEG2000Lossless", "JPEG2000LosslessOnly", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
128129
{ UID_JPEG2000TransferSyntax, "JPEG2000", "JPEG2000", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
129130
{ UID_JPEG2000Part2MulticomponentImageCompressionLosslessOnlyTransferSyntax, "JPEG2000MCLossless", "JPEG2000MulticomponentLosslessOnly", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },

0 commit comments

Comments
 (0)