Mercurial > hg > orthanc
diff 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 |
line wrap: on
line diff
--- a/OrthancServer/ServerJobs/ResourceModificationJob.cpp Tue May 19 10:17:06 2020 +0200 +++ b/OrthancServer/ServerJobs/ResourceModificationJob.cpp Tue May 19 11:24:00 2020 +0200 @@ -177,19 +177,20 @@ { std::set<DicomTransferSyntax> syntaxes; syntaxes.insert(transferSyntax_); + + IDicomTranscoder::DicomImage source; + source.AcquireParsed(*modified); // "modified" is invalid below this point - std::string s; - modified->SaveToMemoryBuffer(s); // TODO - AVOID THIS SERIALIZATION IF NO PLUGIN - - std::unique_ptr<IDicomTranscoder::TranscodedDicom> transcoded; - transcoded.reset(GetContext().TranscodeToParsed(modified->GetDcmtkObject(), s.empty() ? NULL : s.c_str(), s.size(), syntaxes, true)); - if (transcoded.get() == NULL) + IDicomTranscoder::DicomImage transcoded; + bool hasSopInstanceUidChanged; + if (GetContext().Transcode(transcoded, hasSopInstanceUidChanged, source, syntaxes, true)) { - LOG(WARNING) << "Cannot transcode instance, keeping original transfer syntax: " << instance; + modified.reset(transcoded.ReleaseAsParsedDicomFile()); } else { - modified.reset(ParsedDicomFile::AcquireDcmtkObject(transcoded->ReleaseDicom())); + LOG(WARNING) << "Cannot transcode instance, keeping original transfer syntax: " << instance; + modified.reset(source.ReleaseAsParsedDicomFile()); } }