comparison OrthancServer/ServerJobs/ResourceModificationJob.cpp @ 3945:0b3256c3ee14 transcoding

simplified IDicomTranscoder
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 19 May 2020 11:24:00 +0200
parents b26d25d3c1c7
children 3d2fc1b5cc8c
comparison
equal deleted inserted replaced
3944:aae045f802f4 3945:0b3256c3ee14
175 175
176 if (transcode_) 176 if (transcode_)
177 { 177 {
178 std::set<DicomTransferSyntax> syntaxes; 178 std::set<DicomTransferSyntax> syntaxes;
179 syntaxes.insert(transferSyntax_); 179 syntaxes.insert(transferSyntax_);
180 180
181 std::string s; 181 IDicomTranscoder::DicomImage source;
182 modified->SaveToMemoryBuffer(s); // TODO - AVOID THIS SERIALIZATION IF NO PLUGIN 182 source.AcquireParsed(*modified); // "modified" is invalid below this point
183 183
184 std::unique_ptr<IDicomTranscoder::TranscodedDicom> transcoded; 184 IDicomTranscoder::DicomImage transcoded;
185 transcoded.reset(GetContext().TranscodeToParsed(modified->GetDcmtkObject(), s.empty() ? NULL : s.c_str(), s.size(), syntaxes, true)); 185 bool hasSopInstanceUidChanged;
186 if (transcoded.get() == NULL) 186 if (GetContext().Transcode(transcoded, hasSopInstanceUidChanged, source, syntaxes, true))
187 {
188 modified.reset(transcoded.ReleaseAsParsedDicomFile());
189 }
190 else
187 { 191 {
188 LOG(WARNING) << "Cannot transcode instance, keeping original transfer syntax: " << instance; 192 LOG(WARNING) << "Cannot transcode instance, keeping original transfer syntax: " << instance;
189 } 193 modified.reset(source.ReleaseAsParsedDicomFile());
190 else
191 {
192 modified.reset(ParsedDicomFile::AcquireDcmtkObject(transcoded->ReleaseDicom()));
193 } 194 }
194 } 195 }
195 196
196 DicomInstanceToStore toStore; 197 DicomInstanceToStore toStore;
197 toStore.SetOrigin(origin_); 198 toStore.SetOrigin(origin_);