comparison Core/DicomParsing/DcmtkTranscoder.cpp @ 3951:5fe8c6d3212e transcoding

removed useless information "hasSopInstanceUidChanged"
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 19 May 2020 21:06:53 +0200
parents 1f33ed7f82e6
children 31252a887f0b
comparison
equal deleted inserted replaced
3950:5797ca4f3b8d 3951:5fe8c6d3212e
78 lossyQuality_ = quality; 78 lossyQuality_ = quality;
79 } 79 }
80 } 80 }
81 81
82 82
83 bool DcmtkTranscoder::InplaceTranscode(bool& hasSopInstanceUidChanged /* out */, 83 bool DcmtkTranscoder::InplaceTranscode(DicomTransferSyntax& selectedSyntax /* out */,
84 DicomTransferSyntax& selectedSyntax /* out */,
85 DcmFileFormat& dicom, 84 DcmFileFormat& dicom,
86 const std::set<DicomTransferSyntax>& allowedSyntaxes, 85 const std::set<DicomTransferSyntax>& allowedSyntaxes,
87 bool allowNewSopInstanceUid) 86 bool allowNewSopInstanceUid)
88 { 87 {
89 if (dicom.getDataset() == NULL) 88 if (dicom.getDataset() == NULL)
90 { 89 {
91 throw OrthancException(ErrorCode_InternalError); 90 throw OrthancException(ErrorCode_InternalError);
92 } 91 }
93
94 hasSopInstanceUidChanged = false;
95 92
96 DicomTransferSyntax syntax; 93 DicomTransferSyntax syntax;
97 if (!FromDcmtkBridge::LookupOrthancTransferSyntax(syntax, dicom)) 94 if (!FromDcmtkBridge::LookupOrthancTransferSyntax(syntax, dicom))
98 { 95 {
99 throw OrthancException(ErrorCode_BadFileFormat, 96 throw OrthancException(ErrorCode_BadFileFormat,
148 DJ_RPLossy parameters(lossyQuality_); 145 DJ_RPLossy parameters(lossyQuality_);
149 146
150 if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGProcess1, &parameters)) 147 if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGProcess1, &parameters))
151 { 148 {
152 selectedSyntax = DicomTransferSyntax_JPEGProcess1; 149 selectedSyntax = DicomTransferSyntax_JPEGProcess1;
153 hasSopInstanceUidChanged = true;
154 return true; 150 return true;
155 } 151 }
156 } 152 }
157 #endif 153 #endif
158 154
164 // Check out "dcmjpeg/apps/dcmcjpeg.cc" 160 // Check out "dcmjpeg/apps/dcmcjpeg.cc"
165 DJ_RPLossy parameters(lossyQuality_); 161 DJ_RPLossy parameters(lossyQuality_);
166 if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGProcess2_4, &parameters)) 162 if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGProcess2_4, &parameters))
167 { 163 {
168 selectedSyntax = DicomTransferSyntax_JPEGProcess2_4; 164 selectedSyntax = DicomTransferSyntax_JPEGProcess2_4;
169 hasSopInstanceUidChanged = true;
170 return true; 165 return true;
171 } 166 }
172 } 167 }
173 #endif 168 #endif
174 169
232 * the DCMTK package 3.6.2 from Ubuntu 18.04. 227 * the DCMTK package 3.6.2 from Ubuntu 18.04.
233 **/ 228 **/
234 if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGLSLossy, &parameters)) 229 if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGLSLossy, &parameters))
235 { 230 {
236 selectedSyntax = DicomTransferSyntax_JPEGLSLossy; 231 selectedSyntax = DicomTransferSyntax_JPEGLSLossy;
237 hasSopInstanceUidChanged = true;
238 return true; 232 return true;
239 } 233 }
240 } 234 }
241 #endif 235 #endif
242 236
275 return false; 269 return false;
276 } 270 }
277 271
278 272
279 bool DcmtkTranscoder::Transcode(DicomImage& target, 273 bool DcmtkTranscoder::Transcode(DicomImage& target,
280 bool& hasSopInstanceUidChanged /* out */,
281 DicomImage& source /* in, "GetParsed()" possibly modified */, 274 DicomImage& source /* in, "GetParsed()" possibly modified */,
282 const std::set<DicomTransferSyntax>& allowedSyntaxes, 275 const std::set<DicomTransferSyntax>& allowedSyntaxes,
283 bool allowNewSopInstanceUid) 276 bool allowNewSopInstanceUid)
284 { 277 {
285 target.Clear(); 278 target.Clear();
301 // No transcoding is needed 294 // No transcoding is needed
302 target.AcquireParsed(source); 295 target.AcquireParsed(source);
303 target.AcquireBuffer(source); 296 target.AcquireBuffer(source);
304 return true; 297 return true;
305 } 298 }
306 else if (InplaceTranscode(hasSopInstanceUidChanged, targetSyntax, source.GetParsed(), 299 else if (InplaceTranscode(targetSyntax, source.GetParsed(),
307 allowedSyntaxes, allowNewSopInstanceUid)) 300 allowedSyntaxes, allowNewSopInstanceUid))
308 { 301 {
309 // Sanity check 302 // Sanity check
310 DicomTransferSyntax targetSyntax2; 303 DicomTransferSyntax targetSyntax2;
311 if (FromDcmtkBridge::LookupOrthancTransferSyntax(targetSyntax2, source.GetParsed()) && 304 if (FromDcmtkBridge::LookupOrthancTransferSyntax(targetSyntax2, source.GetParsed()) &&
315 target.AcquireParsed(source); 308 target.AcquireParsed(source);
316 source.Clear(); 309 source.Clear();
317 310
318 #if !defined(NDEBUG) 311 #if !defined(NDEBUG)
319 // Only run the sanity check in debug mode 312 // Only run the sanity check in debug mode
320 CheckTranscoding(target, hasSopInstanceUidChanged, sourceSyntax, sourceSopInstanceUid, 313 CheckTranscoding(target, sourceSyntax, sourceSopInstanceUid,
321 allowedSyntaxes, allowNewSopInstanceUid); 314 allowedSyntaxes, allowNewSopInstanceUid);
322 #endif 315 #endif
323 316
324 return true; 317 return true;
325 } 318 }