Mercurial > hg > orthanc
changeset 6539:e94178d6b6a2
add support for JPEG XL transfer syntaxes
| author | Sebastien Jodogne <s.jodogne@gmail.com> |
|---|---|
| date | Tue, 09 Dec 2025 12:09:50 +0100 |
| parents | 5c2536220ae4 |
| children | 59888c43f6b4 |
| files | OrthancFramework/Resources/CodeGeneration/DicomTransferSyntaxes.json OrthancFramework/Sources/DicomParsing/FromDcmtkBridge_TransferSyntaxes.impl.h OrthancFramework/Sources/Enumerations.h OrthancFramework/Sources/Enumerations_TransferSyntaxes.impl.h OrthancServer/Resources/DicomConformanceStatement.txt |
| diffstat | 5 files changed, 106 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/OrthancFramework/Resources/CodeGeneration/DicomTransferSyntaxes.json Tue Dec 09 11:49:01 2025 +0100 +++ b/OrthancFramework/Resources/CodeGeneration/DicomTransferSyntaxes.json Tue Dec 09 12:09:50 2025 +0100 @@ -372,5 +372,29 @@ "Name" : "XML Encoding", "Value" : "XML", "Retired" : true + }, + + { + "UID" : "1.2.840.10008.1.2.4.110", + "Name" : "JPEG XL Lossless", + "Value" : "JPEGXLLossless", + "DCMTK" : "EXS_JPEGXLLossless", + "SinceDCMTK" : "369" + }, + + { + "UID" : "1.2.840.10008.1.2.4.111", + "Name" : "JPEG XL JPEG Recompression", + "Value" : "JPEGXLJPEGRecompression", + "DCMTK" : "EXS_JPEGXLJPEGRecompression", + "SinceDCMTK" : "369" + }, + + { + "UID" : "1.2.840.10008.1.2.4.112", + "Name" : "JPEG XL", + "Value" : "JPEGXL", + "DCMTK" : "EXS_JPEGXL", + "SinceDCMTK" : "369" } ]
--- a/OrthancFramework/Sources/DicomParsing/FromDcmtkBridge_TransferSyntaxes.impl.h Tue Dec 09 11:49:01 2025 +0100 +++ b/OrthancFramework/Sources/DicomParsing/FromDcmtkBridge_TransferSyntaxes.impl.h Tue Dec 09 12:09:50 2025 +0100 @@ -276,6 +276,24 @@ target = EXS_RLELossless; return true; +#if DCMTK_VERSION_NUMBER >= 369 + case DicomTransferSyntax_JPEGXLLossless: + target = EXS_JPEGXLLossless; + return true; +#endif + +#if DCMTK_VERSION_NUMBER >= 369 + case DicomTransferSyntax_JPEGXLJPEGRecompression: + target = EXS_JPEGXLJPEGRecompression; + return true; +#endif + +#if DCMTK_VERSION_NUMBER >= 369 + case DicomTransferSyntax_JPEGXL: + target = EXS_JPEGXL; + return true; +#endif + default: return false; } @@ -533,6 +551,24 @@ target = DicomTransferSyntax_RLELossless; return true; +#if DCMTK_VERSION_NUMBER >= 369 + case EXS_JPEGXLLossless: + target = DicomTransferSyntax_JPEGXLLossless; + return true; +#endif + +#if DCMTK_VERSION_NUMBER >= 369 + case EXS_JPEGXLJPEGRecompression: + target = DicomTransferSyntax_JPEGXLJPEGRecompression; + return true; +#endif + +#if DCMTK_VERSION_NUMBER >= 369 + case EXS_JPEGXL: + target = DicomTransferSyntax_JPEGXL; + return true; +#endif + default: return false; }
--- a/OrthancFramework/Sources/Enumerations.h Tue Dec 09 11:49:01 2025 +0100 +++ b/OrthancFramework/Sources/Enumerations.h Tue Dec 09 12:09:50 2025 +0100 @@ -284,7 +284,10 @@ DicomTransferSyntax_HEVCMain10ProfileLevel5_1 /*!< HEVC/H.265 Main 10 Profile / Level 5.1 */, DicomTransferSyntax_RLELossless /*!< RLE - Run Length Encoding (lossless) */, DicomTransferSyntax_RFC2557MimeEncapsulation /*!< RFC 2557 MIME Encapsulation */, - DicomTransferSyntax_XML /*!< XML Encoding */ + DicomTransferSyntax_XML /*!< XML Encoding */, + DicomTransferSyntax_JPEGXLLossless /*!< JPEG XL Lossless */, + DicomTransferSyntax_JPEGXLJPEGRecompression /*!< JPEG XL JPEG Recompression */, + DicomTransferSyntax_JPEGXL /*!< JPEG XL */ };
--- a/OrthancFramework/Sources/Enumerations_TransferSyntaxes.impl.h Tue Dec 09 11:49:01 2025 +0100 +++ b/OrthancFramework/Sources/Enumerations_TransferSyntaxes.impl.h Tue Dec 09 12:09:50 2025 +0100 @@ -155,6 +155,15 @@ case DicomTransferSyntax_XML: return "1.2.840.10008.1.2.6.2"; + case DicomTransferSyntax_JPEGXLLossless: + return "1.2.840.10008.1.2.4.110"; + + case DicomTransferSyntax_JPEGXLJPEGRecompression: + return "1.2.840.10008.1.2.4.111"; + + case DicomTransferSyntax_JPEGXL: + return "1.2.840.10008.1.2.4.112"; + default: throw OrthancException(ErrorCode_ParameterOutOfRange); } @@ -291,6 +300,15 @@ case DicomTransferSyntax_XML: return true; + case DicomTransferSyntax_JPEGXLLossless: + return false; + + case DicomTransferSyntax_JPEGXLJPEGRecompression: + return false; + + case DicomTransferSyntax_JPEGXL: + return false; + default: throw OrthancException(ErrorCode_ParameterOutOfRange); } @@ -552,6 +570,24 @@ return true; } + if (uid == "1.2.840.10008.1.2.4.110") + { + target = DicomTransferSyntax_JPEGXLLossless; + return true; + } + + if (uid == "1.2.840.10008.1.2.4.111") + { + target = DicomTransferSyntax_JPEGXLJPEGRecompression; + return true; + } + + if (uid == "1.2.840.10008.1.2.4.112") + { + target = DicomTransferSyntax_JPEGXL; + return true; + } + return false; } @@ -601,5 +637,8 @@ target.insert(DicomTransferSyntax_RLELossless); target.insert(DicomTransferSyntax_RFC2557MimeEncapsulation); target.insert(DicomTransferSyntax_XML); + target.insert(DicomTransferSyntax_JPEGXLLossless); + target.insert(DicomTransferSyntax_JPEGXLJPEGRecompression); + target.insert(DicomTransferSyntax_JPEGXL); } }
--- a/OrthancServer/Resources/DicomConformanceStatement.txt Tue Dec 09 11:49:01 2025 +0100 +++ b/OrthancServer/Resources/DicomConformanceStatement.txt Tue Dec 09 12:09:50 2025 +0100 @@ -318,6 +318,9 @@ MPEG4StereoHighProfileLevel4_2TransferSyntax | 1.2.840.10008.1.2.4.106 HEVCMainProfileLevel5_1TransferSyntax | 1.2.840.10008.1.2.4.107 HEVCMain10ProfileLevel5_1TransferSyntax | 1.2.840.10008.1.2.4.108 + JPEGXLLosslessTransferSyntax | 1.2.840.10008.1.2.4.110 + JPEGXLJPEGRecompressionTransferSyntax | 1.2.840.10008.1.2.4.111 + JPEGXLTransferSyntax | 1.2.840.10008.1.2.4.112 JPEGProcess1TransferSyntax | 1.2.840.10008.1.2.4.50 JPEGProcess2_4TransferSyntax | 1.2.840.10008.1.2.4.51 JPEGProcess3_5TransferSyntax | 1.2.840.10008.1.2.4.52
