Mercurial > hg > orthanc
comparison Core/DicomParsing/MemoryBufferTranscoder.cpp @ 3907:1555feda39e2 transcoding
substituting IDicomTranscoder::TranscodeToParsed() by refactored implementation
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 08 May 2020 11:24:34 +0200 |
parents | f0dd5ded8927 |
children | 89ebb37cee6a |
comparison
equal
deleted
inserted
replaced
3906:f0dd5ded8927 | 3907:1555feda39e2 |
---|---|
85 return Transcode(target, sourceSyntax, targetSyntax, hasSopInstanceUidChanged, buffer, size, | 85 return Transcode(target, sourceSyntax, targetSyntax, hasSopInstanceUidChanged, buffer, size, |
86 allowedSyntaxes, allowNewSopInstanceUid); | 86 allowedSyntaxes, allowNewSopInstanceUid); |
87 } | 87 } |
88 | 88 |
89 | 89 |
90 DcmFileFormat* MemoryBufferTranscoder::TranscodeToParsed(bool& hasSopInstanceUidChanged, | |
91 const void* buffer, | |
92 size_t size, | |
93 const std::set<DicomTransferSyntax>& allowedSyntaxes, | |
94 bool allowNewSopInstanceUid) | |
95 { | |
96 #if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1 | |
97 if (useDcmtk_) | |
98 { | |
99 std::unique_ptr<DcmFileFormat> transcoded( | |
100 dcmtk_.TranscodeToParsed(hasSopInstanceUidChanged, buffer, size, | |
101 allowedSyntaxes, allowNewSopInstanceUid)); | |
102 if (transcoded.get() != NULL) | |
103 { | |
104 return transcoded.release(); | |
105 } | |
106 } | |
107 #endif | |
108 | |
109 std::string transcoded; | |
110 DicomTransferSyntax sourceSyntax, targetSyntax; | |
111 if (Transcode(transcoded, sourceSyntax, targetSyntax, hasSopInstanceUidChanged, | |
112 buffer, size, allowedSyntaxes, allowNewSopInstanceUid)) | |
113 { | |
114 return FromDcmtkBridge::LoadFromMemoryBuffer( | |
115 transcoded.empty() ? NULL : transcoded.c_str(), transcoded.size()); | |
116 } | |
117 else | |
118 { | |
119 return NULL; | |
120 } | |
121 } | |
122 | |
123 | |
124 bool MemoryBufferTranscoder::HasInplaceTranscode( | 90 bool MemoryBufferTranscoder::HasInplaceTranscode( |
125 DicomTransferSyntax inputSyntax, | 91 DicomTransferSyntax inputSyntax, |
126 const std::set<DicomTransferSyntax>& outputSyntaxes) const | 92 const std::set<DicomTransferSyntax>& outputSyntaxes) const |
127 { | 93 { |
128 /** | 94 /** |
217 | 183 |
218 return success; | 184 return success; |
219 } | 185 } |
220 | 186 |
221 | 187 |
222 IDicomTranscoder::TranscodedDicom* MemoryBufferTranscoder::TranscodeToParsed2( | 188 IDicomTranscoder::TranscodedDicom* MemoryBufferTranscoder::TranscodeToParsed( |
223 DcmFileFormat& dicom /* in, possibly modified */, | 189 DcmFileFormat& dicom /* in, possibly modified */, |
224 const void* buffer /* in, same DICOM file as "dicom" */, | 190 const void* buffer /* in, same DICOM file as "dicom" */, |
225 size_t size, | 191 size_t size, |
226 const std::set<DicomTransferSyntax>& allowedSyntaxes, | 192 const std::set<DicomTransferSyntax>& allowedSyntaxes, |
227 bool allowNewSopInstanceUid) | 193 bool allowNewSopInstanceUid) |
238 FromDcmtkBridge::LoadFromMemoryBuffer(data, target.size()), hasSopInstanceUidChanged); | 204 FromDcmtkBridge::LoadFromMemoryBuffer(data, target.size()), hasSopInstanceUidChanged); |
239 } | 205 } |
240 #if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1 | 206 #if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1 |
241 else if (useDcmtk_) | 207 else if (useDcmtk_) |
242 { | 208 { |
243 return dcmtk_.TranscodeToParsed2(dicom, buffer, size, allowedSyntaxes, allowNewSopInstanceUid); | 209 return dcmtk_.TranscodeToParsed(dicom, buffer, size, allowedSyntaxes, allowNewSopInstanceUid); |
244 } | 210 } |
245 #endif | 211 #endif |
246 else | 212 else |
247 { | 213 { |
248 return NULL; | 214 return NULL; |