Mercurial > hg > orthanc
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_); |