Mercurial > hg > orthanc
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, ¶meters)) | 147 if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGProcess1, ¶meters)) |
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, ¶meters)) | 162 if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGProcess2_4, ¶meters)) |
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, ¶meters)) | 229 if (FromDcmtkBridge::Transcode(dicom, DicomTransferSyntax_JPEGLSLossy, ¶meters)) |
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 } |