Mercurial > hg > orthanc
diff OrthancFramework/Sources/DicomParsing/DcmtkTranscoder.cpp @ 5363:3c8286e5d07b multiple-jpeg-decoders
wip: try to add a jpeg decoder without colorspace conversion: not working now
author | Alain Mazy <am@osimis.io> |
---|---|
date | Tue, 11 Jul 2023 10:25:58 +0200 |
parents | 0ea402b4d901 |
children |
line wrap: on
line diff
--- a/OrthancFramework/Sources/DicomParsing/DcmtkTranscoder.cpp Thu Jul 06 21:08:05 2023 +0200 +++ b/OrthancFramework/Sources/DicomParsing/DcmtkTranscoder.cpp Tue Jul 11 10:25:58 2023 +0200 @@ -87,7 +87,8 @@ bool DcmtkTranscoder::InplaceTranscode(DicomTransferSyntax& selectedSyntax /* out */, DcmFileFormat& dicom, const std::set<DicomTransferSyntax>& allowedSyntaxes, - bool allowNewSopInstanceUid) + bool allowNewSopInstanceUid, + bool enableColorMapConversion) { if (dicom.getDataset() == NULL) { @@ -111,28 +112,28 @@ } if (allowedSyntaxes.find(DicomTransferSyntax_LittleEndianImplicit) != allowedSyntaxes.end() && - FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_LittleEndianImplicit, NULL)) + FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_LittleEndianImplicit, NULL, enableColorMapConversion)) { selectedSyntax = DicomTransferSyntax_LittleEndianImplicit; return true; } if (allowedSyntaxes.find(DicomTransferSyntax_LittleEndianExplicit) != allowedSyntaxes.end() && - FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_LittleEndianExplicit, NULL)) + FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_LittleEndianExplicit, NULL, enableColorMapConversion)) { selectedSyntax = DicomTransferSyntax_LittleEndianExplicit; return true; } if (allowedSyntaxes.find(DicomTransferSyntax_BigEndianExplicit) != allowedSyntaxes.end() && - FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_BigEndianExplicit, NULL)) + FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_BigEndianExplicit, NULL, enableColorMapConversion)) { selectedSyntax = DicomTransferSyntax_BigEndianExplicit; return true; } if (allowedSyntaxes.find(DicomTransferSyntax_DeflatedLittleEndianExplicit) != allowedSyntaxes.end() && - FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_DeflatedLittleEndianExplicit, NULL)) + FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_DeflatedLittleEndianExplicit, NULL, enableColorMapConversion)) { selectedSyntax = DicomTransferSyntax_DeflatedLittleEndianExplicit; return true; @@ -146,7 +147,7 @@ // Check out "dcmjpeg/apps/dcmcjpeg.cc" DJ_RPLossy parameters(lossyQuality_); - if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGProcess1, ¶meters)) + if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGProcess1, ¶meters, enableColorMapConversion)) { selectedSyntax = DicomTransferSyntax_JPEGProcess1; return true; @@ -161,7 +162,7 @@ { // Check out "dcmjpeg/apps/dcmcjpeg.cc" DJ_RPLossy parameters(lossyQuality_); - if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGProcess2_4, ¶meters)) + if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGProcess2_4, ¶meters, enableColorMapConversion)) { selectedSyntax = DicomTransferSyntax_JPEGProcess2_4; return true; @@ -175,7 +176,7 @@ // Check out "dcmjpeg/apps/dcmcjpeg.cc" DJ_RPLossless parameters(6 /* opt_selection_value */, 0 /* opt_point_transform */); - if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGProcess14, ¶meters)) + if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGProcess14, ¶meters, enableColorMapConversion)) { selectedSyntax = DicomTransferSyntax_JPEGProcess14; return true; @@ -189,7 +190,7 @@ // Check out "dcmjpeg/apps/dcmcjpeg.cc" DJ_RPLossless parameters(6 /* opt_selection_value */, 0 /* opt_point_transform */); - if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGProcess14SV1, ¶meters)) + if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGProcess14SV1, ¶meters, enableColorMapConversion)) { selectedSyntax = DicomTransferSyntax_JPEGProcess14SV1; return true; @@ -208,7 +209,7 @@ * WARNING: This call results in a segmentation fault if using * the DCMTK package 3.6.2 from Ubuntu 18.04. **/ - if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGLSLossless, ¶meters)) + if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGLSLossless, ¶meters, enableColorMapConversion)) { selectedSyntax = DicomTransferSyntax_JPEGLSLossless; return true; @@ -228,7 +229,7 @@ * WARNING: This call results in a segmentation fault if using * the DCMTK package 3.6.2 from Ubuntu 18.04. **/ - if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGLSLossy, ¶meters)) + if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGLSLossy, ¶meters, enableColorMapConversion)) { selectedSyntax = DicomTransferSyntax_JPEGLSLossy; return true; @@ -274,7 +275,8 @@ bool DcmtkTranscoder::Transcode(DicomImage& target, DicomImage& source /* in, "GetParsed()" possibly modified */, const std::set<DicomTransferSyntax>& allowedSyntaxes, - bool allowNewSopInstanceUid) + bool allowNewSopInstanceUid, + bool enableColorMapConversion) { target.Clear(); @@ -320,7 +322,7 @@ return true; } else if (InplaceTranscode(targetSyntax, source.GetParsed(), - allowedSyntaxes, allowNewSopInstanceUid)) + allowedSyntaxes, allowNewSopInstanceUid, enableColorMapConversion)) { // Sanity check DicomTransferSyntax targetSyntax2;