diff --git a/dcmdata/include/dcmtk/dcmdata/dcuid.h b/dcmdata/include/dcmtk/dcmdata/dcuid.h index df1b3572a1..27e79031f4 100644 --- a/dcmdata/include/dcmtk/dcmdata/dcuid.h +++ b/dcmdata/include/dcmtk/dcmdata/dcuid.h @@ -427,124 +427,134 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID */ /// Implicit VR Little Endian: Default Transfer Syntax for DICOM -#define UID_LittleEndianImplicitTransferSyntax "1.2.840.10008.1.2" +#define UID_LittleEndianImplicitTransferSyntax "1.2.840.10008.1.2" /// Explicit VR Little Endian -#define UID_LittleEndianExplicitTransferSyntax "1.2.840.10008.1.2.1" +#define UID_LittleEndianExplicitTransferSyntax "1.2.840.10008.1.2.1" /// Explicit VR Big Endian - RETIRED -#define UID_BigEndianExplicitTransferSyntax "1.2.840.10008.1.2.2" +#define UID_BigEndianExplicitTransferSyntax "1.2.840.10008.1.2.2" /// Deflated Explicit VR Little Endian #define UID_DeflatedExplicitVRLittleEndianTransferSyntax "1.2.840.10008.1.2.1.99" /** JPEG Baseline (Process 1): Default Transfer Syntax * for Lossy JPEG 8 Bit Image Compression */ -#define UID_JPEGProcess1TransferSyntax "1.2.840.10008.1.2.4.50" +#define UID_JPEGProcess1TransferSyntax "1.2.840.10008.1.2.4.50" /** JPEG Extended (Process 2 & 4): Default Transfer Syntax * for Lossy JPEG 12 Bit Image Compression (Process 4 only) */ -#define UID_JPEGProcess2_4TransferSyntax "1.2.840.10008.1.2.4.51" +#define UID_JPEGProcess2_4TransferSyntax "1.2.840.10008.1.2.4.51" /// JPEG Extended (Process 3 & 5) - RETIRED -#define UID_JPEGProcess3_5TransferSyntax "1.2.840.10008.1.2.4.52" +#define UID_JPEGProcess3_5TransferSyntax "1.2.840.10008.1.2.4.52" /// JPEG Spectral Selection, Non-Hierarchical (Process 6 & 8) - RETIRED -#define UID_JPEGProcess6_8TransferSyntax "1.2.840.10008.1.2.4.53" +#define UID_JPEGProcess6_8TransferSyntax "1.2.840.10008.1.2.4.53" /// JPEG Spectral Selection, Non-Hierarchical (Process 7 & 9) - RETIRED -#define UID_JPEGProcess7_9TransferSyntax "1.2.840.10008.1.2.4.54" +#define UID_JPEGProcess7_9TransferSyntax "1.2.840.10008.1.2.4.54" /// JPEG Full Progression, Non-Hierarchical (Process 10 & 12) - RETIRED -#define UID_JPEGProcess10_12TransferSyntax "1.2.840.10008.1.2.4.55" +#define UID_JPEGProcess10_12TransferSyntax "1.2.840.10008.1.2.4.55" /// JPEG Full Progression, Non-Hierarchical (Process 11 & 13) - RETIRED -#define UID_JPEGProcess11_13TransferSyntax "1.2.840.10008.1.2.4.56" +#define UID_JPEGProcess11_13TransferSyntax "1.2.840.10008.1.2.4.56" /// JPEG Lossless, Non-Hierarchical (Process 14) -#define UID_JPEGProcess14TransferSyntax "1.2.840.10008.1.2.4.57" +#define UID_JPEGProcess14TransferSyntax "1.2.840.10008.1.2.4.57" /// JPEG Lossless, Non-Hierarchical (Process 15) - RETIRED -#define UID_JPEGProcess15TransferSyntax "1.2.840.10008.1.2.4.58" +#define UID_JPEGProcess15TransferSyntax "1.2.840.10008.1.2.4.58" /// JPEG Extended, Hierarchical (Process 16 & 18) - RETIRED -#define UID_JPEGProcess16_18TransferSyntax "1.2.840.10008.1.2.4.59" +#define UID_JPEGProcess16_18TransferSyntax "1.2.840.10008.1.2.4.59" /// JPEG Extended, Hierarchical (Process 17 & 19) - RETIRED -#define UID_JPEGProcess17_19TransferSyntax "1.2.840.10008.1.2.4.60" +#define UID_JPEGProcess17_19TransferSyntax "1.2.840.10008.1.2.4.60" /// JPEG Spectral Selection, Hierarchical (Process 20 & 22) - RETIRED -#define UID_JPEGProcess20_22TransferSyntax "1.2.840.10008.1.2.4.61" +#define UID_JPEGProcess20_22TransferSyntax "1.2.840.10008.1.2.4.61" /// JPEG Spectral Selection, Hierarchical (Process 21 & 23) - RETIRED -#define UID_JPEGProcess21_23TransferSyntax "1.2.840.10008.1.2.4.62" +#define UID_JPEGProcess21_23TransferSyntax "1.2.840.10008.1.2.4.62" /// JPEG Full Progression, Hierarchical (Process 24 & 26) - RETIRED -#define UID_JPEGProcess24_26TransferSyntax "1.2.840.10008.1.2.4.63" +#define UID_JPEGProcess24_26TransferSyntax "1.2.840.10008.1.2.4.63" /// JPEG Full Progression, Hierarchical (Process 25 & 27) - RETIRED -#define UID_JPEGProcess25_27TransferSyntax "1.2.840.10008.1.2.4.64" +#define UID_JPEGProcess25_27TransferSyntax "1.2.840.10008.1.2.4.64" /// JPEG Lossless, Hierarchical (Process 28) - RETIRED -#define UID_JPEGProcess28TransferSyntax "1.2.840.10008.1.2.4.65" +#define UID_JPEGProcess28TransferSyntax "1.2.840.10008.1.2.4.65" /// JPEG Lossless, Hierarchical (Process 29) - RETIRED -#define UID_JPEGProcess29TransferSyntax "1.2.840.10008.1.2.4.66" +#define UID_JPEGProcess29TransferSyntax "1.2.840.10008.1.2.4.66" /** JPEG Lossless, Non-Hierarchical, First-Order Prediction (Process 14 * [Selection Value 1]): Default Transfer Syntax for Lossless JPEG Image Compression */ -#define UID_JPEGProcess14SV1TransferSyntax "1.2.840.10008.1.2.4.70" +#define UID_JPEGProcess14SV1TransferSyntax "1.2.840.10008.1.2.4.70" /// JPEG-LS Lossless Image Compression -#define UID_JPEGLSLosslessTransferSyntax "1.2.840.10008.1.2.4.80" +#define UID_JPEGLSLosslessTransferSyntax "1.2.840.10008.1.2.4.80" /// JPEG-LS Lossy (Near-Lossless) Image Compression -#define UID_JPEGLSLossyTransferSyntax "1.2.840.10008.1.2.4.81" +#define UID_JPEGLSLossyTransferSyntax "1.2.840.10008.1.2.4.81" /// JPEG 2000 Image Compression (Lossless Only) -#define UID_JPEG2000LosslessOnlyTransferSyntax "1.2.840.10008.1.2.4.90" +#define UID_JPEG2000LosslessOnlyTransferSyntax "1.2.840.10008.1.2.4.90" /// JPEG 2000 Image Compression (Lossless or Lossy) -#define UID_JPEG2000TransferSyntax "1.2.840.10008.1.2.4.91" +#define UID_JPEG2000TransferSyntax "1.2.840.10008.1.2.4.91" /// JPEG 2000 Part 2 Multi-component Image Compression (Lossless Only) #define UID_JPEG2000Part2MulticomponentImageCompressionLosslessOnlyTransferSyntax "1.2.840.10008.1.2.4.92" /// JPEG 2000 Part 2 Multi-component Image Compression (Lossless or Lossy) -#define UID_JPEG2000Part2MulticomponentImageCompressionTransferSyntax "1.2.840.10008.1.2.4.93" +#define UID_JPEG2000Part2MulticomponentImageCompressionTransferSyntax "1.2.840.10008.1.2.4.93" /// JPIP Referenced -#define UID_JPIPReferencedTransferSyntax "1.2.840.10008.1.2.4.94" +#define UID_JPIPReferencedTransferSyntax "1.2.840.10008.1.2.4.94" /// JPIP Referenced Deflate -#define UID_JPIPReferencedDeflateTransferSyntax "1.2.840.10008.1.2.4.95" +#define UID_JPIPReferencedDeflateTransferSyntax "1.2.840.10008.1.2.4.95" /// MPEG2 Main Profile @ Main Level (changed with DICOM 2016e to: MPEG2 Main Profile / Main Level) -#define UID_MPEG2MainProfileAtMainLevelTransferSyntax "1.2.840.10008.1.2.4.100" +#define UID_MPEG2MainProfileAtMainLevelTransferSyntax "1.2.840.10008.1.2.4.100" /// Fragmentable MPEG2 Main Profile / Main Level -#define UID_FragmentableMPEG2MainProfileMainLevelTransferSyntax "1.2.840.10008.1.2.4.100.1" +#define UID_FragmentableMPEG2MainProfileMainLevelTransferSyntax "1.2.840.10008.1.2.4.100.1" /// MPEG2 Main Profile @ High Level (changed with DICOM 2016e to: MPEG2 Main Profile / High Level) -#define UID_MPEG2MainProfileAtHighLevelTransferSyntax "1.2.840.10008.1.2.4.101" +#define UID_MPEG2MainProfileAtHighLevelTransferSyntax "1.2.840.10008.1.2.4.101" /// Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.1 -#define UID_FragmentableMPEG2MainProfileHighLevelTransferSyntax "1.2.840.10008.1.2.4.101.1" +#define UID_FragmentableMPEG2MainProfileHighLevelTransferSyntax "1.2.840.10008.1.2.4.101.1" /// MPEG-4 AVC/H.264 High Profile / Level 4.1 -#define UID_MPEG4HighProfileLevel4_1TransferSyntax "1.2.840.10008.1.2.4.102" +#define UID_MPEG4HighProfileLevel4_1TransferSyntax "1.2.840.10008.1.2.4.102" /// Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.1 -#define UID_FragmentableMPEG4HighProfileLevel4_1TransferSyntax "1.2.840.10008.1.2.4.102.1" +#define UID_FragmentableMPEG4HighProfileLevel4_1TransferSyntax "1.2.840.10008.1.2.4.102.1" /// MPEG-4 AVC/H.264 BD-compatible High Profile / Level 4.1 -#define UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax "1.2.840.10008.1.2.4.103" +#define UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax "1.2.840.10008.1.2.4.103" /// Fragmentable MPEG-4 AVC/H.264 BD-compatible High Profile / Level 4.1 -#define UID_FragmentableMPEG4BDcompatibleHighProfileLevel4_1TransferSyntax "1.2.840.10008.1.2.4.103.1" +#define UID_FragmentableMPEG4BDcompatibleHighProfileLevel4_1TransferSyntax "1.2.840.10008.1.2.4.103.1" /// MPEG-4 AVC/H.264 High Profile / Level 4.2 For 2D Video -#define UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax "1.2.840.10008.1.2.4.104" +#define UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax "1.2.840.10008.1.2.4.104" /// Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.2 For 2D Video -#define UID_FragmentableMPEG4HighProfileLevel4_2_For2DVideoTransferSyntax "1.2.840.10008.1.2.4.104.1" +#define UID_FragmentableMPEG4HighProfileLevel4_2_For2DVideoTransferSyntax "1.2.840.10008.1.2.4.104.1" /// MPEG-4 AVC/H.264 High Profile / Level 4.2 For 3D Video -#define UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax "1.2.840.10008.1.2.4.105" +#define UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax "1.2.840.10008.1.2.4.105" /// Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.2 For 3D Video -#define UID_FragmentableMPEG4HighProfileLevel4_2_For3DVideoTransferSyntax "1.2.840.10008.1.2.4.105.1" +#define UID_FragmentableMPEG4HighProfileLevel4_2_For3DVideoTransferSyntax "1.2.840.10008.1.2.4.105.1" /// MPEG-4 AVC/H.264 Stereo High Profile / Level 4.2 -#define UID_MPEG4StereoHighProfileLevel4_2TransferSyntax "1.2.840.10008.1.2.4.106" +#define UID_MPEG4StereoHighProfileLevel4_2TransferSyntax "1.2.840.10008.1.2.4.106" /// Fragmentable MPEG-4 AVC/H.264 Stereo High Profile / Level 4.2 -#define UID_FragmentableMPEG4StereoHighProfileLevel4_2TransferSyntax "1.2.840.10008.1.2.4.106.1" +#define UID_FragmentableMPEG4StereoHighProfileLevel4_2TransferSyntax "1.2.840.10008.1.2.4.106.1" /// HEVC/H.265 Main Profile / Level 5.1 -#define UID_HEVCMainProfileLevel5_1TransferSyntax "1.2.840.10008.1.2.4.107" +#define UID_HEVCMainProfileLevel5_1TransferSyntax "1.2.840.10008.1.2.4.107" /// HEVC/H.265 Main 10 Profile / Level 5.1 -#define UID_HEVCMain10ProfileLevel5_1TransferSyntax "1.2.840.10008.1.2.4.108" +#define UID_HEVCMain10ProfileLevel5_1TransferSyntax "1.2.840.10008.1.2.4.108" +/// High-Throughput JPEG 2000 Image Compression (Lossless Only) +#define UID_HighThroughputJPEG2000ImageCompressionLosslessOnlyTransferSyntax "1.2.840.10008.1.2.4.201" +/// High-Throughput JPEG 2000 with RPCL Options Image Compression (Lossless Only) +#define UID_HighThroughputJPEG2000RPCLImageCompressionLosslessOnlyTransferSyntax "1.2.840.10008.1.2.4.202" +/// High-Throughput JPEG 2000 Image Compression +#define UID_HighThroughputJPEG2000ImageCompressionTransferSyntax "1.2.840.10008.1.2.4.203" +/// JPIP HTJ2K Referenced +#define UID_JPIPHTJ2KReferencedTransferSyntax "1.2.840.10008.1.2.4.204" +/// JPIP HTJ2K Referenced Deflate +#define UID_JPIPHTJ2KReferencedDeflateTransferSyntax "1.2.840.10008.1.2.4.205" /// RLE Lossless -#define UID_RLELosslessTransferSyntax "1.2.840.10008.1.2.5" +#define UID_RLELosslessTransferSyntax "1.2.840.10008.1.2.5" /// SMPTE ST 2110-20 Uncompressed Progressive Active Video -#define UID_SMPTEST2110_20_UncompressedProgressiveActiveVideoTransferSyntax "1.2.840.10008.1.2.7.1" +#define UID_SMPTEST2110_20_UncompressedProgressiveActiveVideoTransferSyntax "1.2.840.10008.1.2.7.1" /// SMPTE ST 2110-20 Uncompressed Interlaced Active Video -#define UID_SMPTEST2110_20_UncompressedInterlacedActiveVideoTransferSyntax "1.2.840.10008.1.2.7.2" +#define UID_SMPTEST2110_20_UncompressedInterlacedActiveVideoTransferSyntax "1.2.840.10008.1.2.7.2" /// SMPTE ST 2110-30 PCM Digital Audio -#define UID_SMPTEST2110_30_PCMDigitalAudioTransferSyntax "1.2.840.10008.1.2.7.3" +#define UID_SMPTEST2110_30_PCMDigitalAudioTransferSyntax "1.2.840.10008.1.2.7.3" /** RFC 2557 MIME Encapsulation (RETIRED) was only a pseudo transfer syntax used * to refer to MIME encapsulated HL7 CDA documents from a DICOMDIR when stored * on a DICOM storage medium. It was never used for network communication * or encoding of DICOM objects. */ -#define UID_RETIRED_RFC2557MIMEEncapsulationTransferSyntax "1.2.840.10008.1.2.6.1" +#define UID_RETIRED_RFC2557MIMEEncapsulationTransferSyntax "1.2.840.10008.1.2.6.1" /** XML Encoding (RETIRED) was only a pseudo transfer syntax used to refer to * encapsulated HL7 CDA documents from a DICOMDIR when stored on a DICOM storage * medium. It was never used for network communication or encoding of DICOM objects. */ -#define UID_RETIRED_XMLEncodingTransferSyntax "1.2.840.10008.1.2.6.2" +#define UID_RETIRED_XMLEncodingTransferSyntax "1.2.840.10008.1.2.6.2" /** Private transfer syntax defined by GE. This transfer syntax is identical to * Implicit VR Little Endian, except that Pixel Data are encoded in big endian. diff --git a/dcmdata/include/dcmtk/dcmdata/dcxfer.h b/dcmdata/include/dcmtk/dcmdata/dcxfer.h index 7a561199e8..0598d09c5b 100644 --- a/dcmdata/include/dcmtk/dcmdata/dcxfer.h +++ b/dcmdata/include/dcmtk/dcmdata/dcxfer.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2023, OFFIS e.V. + * Copyright (C) 1994-2024, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -133,8 +133,18 @@ typedef enum { EXS_HEVCMainProfileLevel5_1 = 46, /// HEVC/H.265 Main 10 Profile / Level 5.1 EXS_HEVCMain10ProfileLevel5_1 = 47, + /// High-Throughput JPEG 2000 Image Compression (Lossless Only) + EXS_HighThroughputJPEG2000LosslessOnly = 48, + /// High-Throughput JPEG 2000 with RPCL Options Image Compression (Lossless Only) + EXS_HighThroughputJPEG2000withRPCLOptionsLosslessOnly = 49, + /// High-Throughput JPEG 2000 Image Compression + EXS_HighThroughputJPEG2000 = 50, + /// JPIP HTJ2K Referenced + EXS_JPIPHTJ2KReferenced = 51, + /// JPIP HTJ2K Referenced Deflate + EXS_JPIPHTJ2KReferencedDeflate = 52, /// Private GE Little Endian Implicit with big endian pixel data - EXS_PrivateGE_LEI_WithBigEndianPixelData = 48 + EXS_PrivateGE_LEI_WithBigEndianPixelData = 53 } E_TransferSyntax; /** enumeration of byte orders diff --git a/dcmdata/libsrc/dcuid.cc b/dcmdata/libsrc/dcuid.cc index 85e2a1d202..335b57b47e 100644 --- a/dcmdata/libsrc/dcuid.cc +++ b/dcmdata/libsrc/dcuid.cc @@ -147,6 +147,11 @@ static const UIDNameMap uidNameMap[] = { { UID_FragmentableMPEG4StereoHighProfileLevel4_2TransferSyntax, "MPEG4HP42STEREOF", "FragmentableMPEG4StereoHighProfile/Level4.2", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } }, { UID_HEVCMainProfileLevel5_1TransferSyntax, "HEVCMP51", "HEVCMainProfile/Level5.1", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } }, { UID_HEVCMain10ProfileLevel5_1TransferSyntax, "HEVCM10P51", "HEVCMain10Profile/Level5.1", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } }, + { UID_HighThroughputJPEG2000ImageCompressionLosslessOnlyTransferSyntax, "HTJ2KLossless", "HighThroughputJPEG2000ImageCompressionLosslessOnly", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } }, + { UID_HighThroughputJPEG2000RPCLImageCompressionLosslessOnlyTransferSyntax, "HTJ2KLosslessRPCL", "HighThroughputJPEG2000withRPCLOptionsImageCompressionLosslessOnly", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } }, + { UID_HighThroughputJPEG2000ImageCompressionTransferSyntax, "HTJ2K", "HighThroughputJPEG2000ImageCompression", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } }, + { UID_JPIPHTJ2KReferencedTransferSyntax, "JPIPHTJ2KReferenced", "JPIPHTJ2KReferenced", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } }, + { UID_JPIPHTJ2KReferencedDeflateTransferSyntax, "JPIPHTJ2KReferencedDeflate", "JPIPHTJ2KReferencedDeflate", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } }, { UID_SMPTEST2110_20_UncompressedProgressiveActiveVideoTransferSyntax, "SMPTEST211020UncompressedProgressiveActiveVideo", "SMPTEST2110-20:UncompressedProgressiveActiveVideo", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } }, { UID_SMPTEST2110_20_UncompressedInterlacedActiveVideoTransferSyntax, "SMPTEST211020UncompressedInterlacedActiveVideo", "SMPTEST2110-20:UncompressedInterlacedActiveVideo", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } }, { UID_SMPTEST2110_30_PCMDigitalAudioTransferSyntax, "SMPTEST211030PCMDigitalAudio", "SMPTEST2110-30:PCMDigitalAudio", { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } }, diff --git a/dcmdata/libsrc/dcxfer.cc b/dcmdata/libsrc/dcxfer.cc index 5fdc9d7271..1c8cb13c75 100644 --- a/dcmdata/libsrc/dcxfer.cc +++ b/dcmdata/libsrc/dcxfer.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2022, OFFIS e.V. + * Copyright (C) 1994-2024, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -776,6 +776,85 @@ const S_XferNames XferNames[] = OFTrue }, // entry #48 + { UID_HighThroughputJPEG2000ImageCompressionLosslessOnlyTransferSyntax, + "High-Throughput JPEG 2000 Image Compression (Lossless Only)", + EXS_HighThroughputJPEG2000LosslessOnly, + EBO_LittleEndian, + EBO_LittleEndian, + EVT_Explicit, + EJE_Encapsulated, + 0L, 0L, + OFFalse, + OFFalse, + ESC_none, + OFFalse, + OFTrue + }, + // entry #49 + { UID_HighThroughputJPEG2000RPCLImageCompressionLosslessOnlyTransferSyntax, + "High-Throughput JPEG 2000 with RPCL Options Image Compression (Lossless Only)", + EXS_HighThroughputJPEG2000withRPCLOptionsLosslessOnly, + EBO_LittleEndian, + EBO_LittleEndian, + EVT_Explicit, + EJE_Encapsulated, + 0L, 0L, + OFFalse, + OFFalse, + ESC_none, + OFFalse, + OFTrue + }, + // entry #50 + { UID_HighThroughputJPEG2000ImageCompressionTransferSyntax, + "High-Throughput JPEG 2000 Image Compression", + EXS_HighThroughputJPEG2000, + EBO_LittleEndian, + EBO_LittleEndian, + EVT_Explicit, + EJE_Encapsulated, + 0L, 0L, + OFTrue, + OFFalse, + ESC_none, + OFFalse, + OFTrue + }, + // entry #51 + { UID_JPIPHTJ2KReferencedTransferSyntax, + "JPIP HTJ2K Referenced", + EXS_JPIPHTJ2KReferenced, + EBO_LittleEndian, + EBO_LittleEndian, + EVT_Explicit, + EJE_NotEncapsulated, // in fact, pixel data shall be referenced via (0028,7FE0) Pixel Data Provider URL + 0L, 0L, + OFTrue, // really lossy? + OFFalse, + ESC_none, + OFTrue, + OFFalse + }, + // entry #52 + { UID_JPIPHTJ2KReferencedDeflateTransferSyntax, + "JPIP HTJ2K Referenced Deflate", + EXS_JPIPHTJ2KReferencedDeflate, + EBO_LittleEndian, + EBO_LittleEndian, + EVT_Explicit, + EJE_NotEncapsulated, // in fact, pixel data shall be referenced via (0028,7FE0) Pixel Data Provider URL + 0L, 0L, + OFTrue, // really lossy? + OFFalse, +#ifdef WITH_ZLIB + ESC_zlib, +#else + ESC_unsupported, +#endif + OFTrue, + OFFalse + }, + // entry #53 { UID_PrivateGE_LEI_WithBigEndianPixelDataTransferSyntax, "Private GE Little Endian Implicit with big endian pixel data", EXS_PrivateGE_LEI_WithBigEndianPixelData, diff --git a/dcmnet/apps/echoscu.cc b/dcmnet/apps/echoscu.cc index d988ac3cf2..f00a871dd2 100644 --- a/dcmnet/apps/echoscu.cc +++ b/dcmnet/apps/echoscu.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2022, OFFIS e.V. + * Copyright (C) 1994-2024, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -108,7 +108,10 @@ static const char* transferSyntaxes[] = { UID_FragmentableMPEG4BDcompatibleHighProfileLevel4_1TransferSyntax, UID_FragmentableMPEG4HighProfileLevel4_2_For2DVideoTransferSyntax, UID_FragmentableMPEG4HighProfileLevel4_2_For3DVideoTransferSyntax, - UID_FragmentableMPEG4StereoHighProfileLevel4_2TransferSyntax + UID_FragmentableMPEG4StereoHighProfileLevel4_2TransferSyntax, + UID_HighThroughputJPEG2000ImageCompressionLosslessOnlyTransferSyntax, + UID_HighThroughputJPEG2000RPCLImageCompressionLosslessOnlyTransferSyntax, + UID_HighThroughputJPEG2000ImageCompressionTransferSyntax }; // ******************************************** diff --git a/dcmnet/apps/storescp.cc b/dcmnet/apps/storescp.cc index 01833cf406..1a38016d46 100644 --- a/dcmnet/apps/storescp.cc +++ b/dcmnet/apps/storescp.cc @@ -1009,9 +1009,10 @@ static OFCondition acceptAssociation(T_ASC_Network *net, DcmAssociationConfigura UID_VerificationSOPClass }; - const char* transferSyntaxes[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, // 10 - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, // 20 - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; // +8 + const char* transferSyntaxes[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, // 10 + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, // 20 + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, // 30 + NULL }; // +1 int numTransferSyntaxes = 0; // try to receive an association. Here we either want to use blocking or @@ -1303,17 +1304,20 @@ static OFCondition acceptAssociation(T_ASC_Network *net, DcmAssociationConfigura transferSyntaxes[21] = UID_FragmentableMPEG4StereoHighProfileLevel4_2TransferSyntax; transferSyntaxes[22] = UID_HEVCMainProfileLevel5_1TransferSyntax; transferSyntaxes[23] = UID_HEVCMain10ProfileLevel5_1TransferSyntax; - transferSyntaxes[24] = UID_DeflatedExplicitVRLittleEndianTransferSyntax; + transferSyntaxes[24] = UID_HighThroughputJPEG2000ImageCompressionLosslessOnlyTransferSyntax; + transferSyntaxes[25] = UID_HighThroughputJPEG2000RPCLImageCompressionLosslessOnlyTransferSyntax; + transferSyntaxes[26] = UID_HighThroughputJPEG2000ImageCompressionTransferSyntax; + transferSyntaxes[27] = UID_DeflatedExplicitVRLittleEndianTransferSyntax; if (gLocalByteOrder == EBO_LittleEndian) { - transferSyntaxes[25] = UID_LittleEndianExplicitTransferSyntax; - transferSyntaxes[26] = UID_BigEndianExplicitTransferSyntax; + transferSyntaxes[28] = UID_LittleEndianExplicitTransferSyntax; + transferSyntaxes[29] = UID_BigEndianExplicitTransferSyntax; } else { - transferSyntaxes[25] = UID_BigEndianExplicitTransferSyntax; - transferSyntaxes[26] = UID_LittleEndianExplicitTransferSyntax; + transferSyntaxes[28] = UID_BigEndianExplicitTransferSyntax; + transferSyntaxes[29] = UID_LittleEndianExplicitTransferSyntax; } - transferSyntaxes[27] = UID_LittleEndianImplicitTransferSyntax; - numTransferSyntaxes = 28; + transferSyntaxes[30] = UID_LittleEndianImplicitTransferSyntax; + numTransferSyntaxes = 31; } else { /* We prefer explicit transfer syntaxes. * If we are running on a Little Endian machine we prefer diff --git a/dcmnet/docs/echoscu.man b/dcmnet/docs/echoscu.man index 60eadefef6..87890c5c09 100644 --- a/dcmnet/docs/echoscu.man +++ b/dcmnet/docs/echoscu.man @@ -69,7 +69,7 @@ application entity titles: association negotiation debugging: - -pts --propose-ts [n]umber: integer (1..45) + -pts --propose-ts [n]umber: integer (1..48) propose n transfer syntaxes -ppc --propose-pc [n]umber: integer (1..128) @@ -296,6 +296,9 @@ FragmentableMPEG4BDcompatibleHighProfileLevel4_1Tr. 1.2.840.10008.1.2.4.103.1 FragmentableMPEG4HighProfileLevel4_2_For2DVideoTr.S 1.2.840.10008.1.2.4.104.1 FragmentableMPEG4HighProfileLevel4_2_For3DVideoTr.S 1.2.840.10008.1.2.4.105.1 FragmentableMPEG4StereoHighProfileLevel4_2TransferS 1.2.840.10008.1.2.4.106.1 +HighThroughputJPEG2000ImageCompressionLossless.Tr.S 1.2.840.10008.1.2.4.201 +HighThroughputJPEG2000RPCLImageCompressionLoss.Tr.S 1.2.840.10008.1.2.4.202 +HighThroughputJPEG2000ImageCompressionTransferSynt. 1.2.840.10008.1.2.4.203 \endverbatim \section echoscu_logging LOGGING diff --git a/dcmnet/docs/storescp.man b/dcmnet/docs/storescp.man index dced4b0b8c..d60aaccc8b 100644 --- a/dcmnet/docs/storescp.man +++ b/dcmnet/docs/storescp.man @@ -874,6 +874,9 @@ MPEG4StereoHighProfileLevel4_2TransferSyntax 1.2.840.10008.1.2.4.106 FragmentableMPEG4StereoHighProfileLevel4_2TransferS. 1.2.840.10008.1.2.4.106.1 HEVCMainProfileLevel5_1TransferSyntax 1.2.840.10008.1.2.4.107 HEVCMain10ProfileLevel5_1TransferSyntax 1.2.840.10008.1.2.4.108 +HighThroughputJPEG2000ImageCompressionLossless.Tr.S. 1.2.840.10008.1.2.4.201 +HighThroughputJPEG2000RPCLImageCompressionLoss.Tr.S. 1.2.840.10008.1.2.4.202 +HighThroughputJPEG2000ImageCompressionTransferSynta. 1.2.840.10008.1.2.4.203 RLELosslessTransferSyntax 1.2.840.10008.1.2.5 \endverbatim diff --git a/dcmnet/etc/storescp.cfg b/dcmnet/etc/storescp.cfg index 72c68f466d..cbd7b54546 100644 --- a/dcmnet/etc/storescp.cfg +++ b/dcmnet/etc/storescp.cfg @@ -79,10 +79,13 @@ TransferSyntax38 = FragmentableMPEG4HighProfile/Level4.2For3DVideo TransferSyntax39 = FragmentableMPEG4StereoHighProfile/Level4.2 TransferSyntax40 = HEVCMainProfile/Level5.1 TransferSyntax41 = HEVCMain10Profile/Level5.1 -TransferSyntax42 = DeflatedLittleEndianExplicit -TransferSyntax43 = LocalEndianExplicit -TransferSyntax44 = OppositeEndianExplicit -TransferSyntax45 = LittleEndianImplicit +TransferSyntax42 = HighThroughputJPEG2000ImageCompressionLosslessOnly +TransferSyntax43 = HighThroughputJPEG2000withRPCLOptionsImageCompressionLosslessOnly +TransferSyntax44 = HighThroughputJPEG2000ImageCompression +TransferSyntax45 = DeflatedLittleEndianExplicit +TransferSyntax46 = LocalEndianExplicit +TransferSyntax47 = OppositeEndianExplicit +TransferSyntax48 = LittleEndianImplicit # ============================================================================ [[PresentationContexts]] diff --git a/dcmnet/libsrc/dimse.cc b/dcmnet/libsrc/dimse.cc index b366afc3a9..224b34b242 100644 --- a/dcmnet/libsrc/dimse.cc +++ b/dcmnet/libsrc/dimse.cc @@ -364,6 +364,9 @@ getTransferSyntax( case EXS_FragmentableMPEG4HighProfileLevel4_2_For2DVideo: case EXS_FragmentableMPEG4HighProfileLevel4_2_For3DVideo: case EXS_FragmentableMPEG4StereoHighProfileLevel4_2: + case EXS_HighThroughputJPEG2000LosslessOnly: + case EXS_HighThroughputJPEG2000withRPCLOptionsLosslessOnly: + case EXS_HighThroughputJPEG2000: #ifdef WITH_ZLIB case EXS_DeflatedLittleEndianExplicit: #endif diff --git a/dcmqrdb/etc/dcmqrprf.cfg b/dcmqrdb/etc/dcmqrprf.cfg index 19c8e06c9e..4507571398 100644 --- a/dcmqrdb/etc/dcmqrprf.cfg +++ b/dcmqrdb/etc/dcmqrprf.cfg @@ -113,10 +113,13 @@ TransferSyntax38 = FragmentableMPEG4HighProfile/Level4.2For3DVideo TransferSyntax39 = FragmentableMPEG4StereoHighProfile/Level4.2 TransferSyntax40 = HEVCMainProfile/Level5.1 TransferSyntax41 = HEVCMain10Profile/Level5.1 -TransferSyntax42 = DeflatedLittleEndianExplicit -TransferSyntax43 = LocalEndianExplicit -TransferSyntax44 = OppositeEndianExplicit -TransferSyntax45 = LittleEndianImplicit +TransferSyntax42 = HighThroughputJPEG2000ImageCompressionLosslessOnly +TransferSyntax43 = HighThroughputJPEG2000withRPCLOptionsImageCompressionLosslessOnly +TransferSyntax44 = HighThroughputJPEG2000ImageCompression +TransferSyntax45 = DeflatedLittleEndianExplicit +TransferSyntax46 = LocalEndianExplicit +TransferSyntax47 = OppositeEndianExplicit +TransferSyntax48 = LittleEndianImplicit # ============================================================================ [[PresentationContexts]]