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;