Mercurial > hg > orthanc
diff OrthancServer/ServerJobs/ArchiveJob.cpp @ 3945:0b3256c3ee14 transcoding
simplified IDicomTranscoder
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 19 May 2020 11:24:00 +0200 |
parents | b99acc213937 |
children | 5fe8c6d3212e |
line wrap: on
line diff
--- a/OrthancServer/ServerJobs/ArchiveJob.cpp Tue May 19 10:17:06 2020 +0200 +++ b/OrthancServer/ServerJobs/ArchiveJob.cpp Tue May 19 11:24:00 2020 +0200 @@ -442,27 +442,19 @@ // New in Orthanc 1.7.0 std::set<DicomTransferSyntax> syntaxes; syntaxes.insert(transferSyntax); - - parsed.reset(new ParsedDicomFile(content)); - const char* data = content.empty() ? NULL : content.c_str(); - - std::unique_ptr<IDicomTranscoder::TranscodedDicom> transcodedDicom( - context.TranscodeToParsed(parsed->GetDcmtkObject(), data, content.size(), - syntaxes, true /* allow new SOP instance UID */)); + + IDicomTranscoder::DicomImage source, transcoded; + source.SetExternalBuffer(content); - if (transcodedDicom.get() != NULL && - transcodedDicom->GetDicom().getDataset() != NULL) + bool hasSopInstanceChanged; + if (context.Transcode(transcoded, hasSopInstanceChanged, source, + syntaxes, true /* allow new SOP instance UID */)) { - std::string transcoded; - FromDcmtkBridge::SaveToMemoryBuffer( - transcoded, *transcodedDicom->GetDicom().getDataset()); - - writer.Write(transcoded); + writer.Write(transcoded.GetBufferData(), transcoded.GetBufferSize()); if (dicomDir != NULL) { - std::unique_ptr<ParsedDicomFile> tmp( - ParsedDicomFile::AcquireDcmtkObject(transcodedDicom->ReleaseDicom())); + std::unique_ptr<ParsedDicomFile> tmp(transcoded.ReleaseAsParsedDicomFile()); dicomDir->Add(dicomDirFolder, filename_, *tmp); }