Mercurial > hg > orthanc
diff OrthancServer/Sources/ServerContext.cpp @ 4508:8f9090b137f1
Optimization in C-STORE SCP by avoiding an unnecessary DICOM parsing
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 11 Feb 2021 11:00:05 +0100 |
parents | b4c58795f3a8 |
children | 98b7b9d21d83 |
line wrap: on
line diff
--- a/OrthancServer/Sources/ServerContext.cpp Thu Feb 11 09:33:48 2021 +0100 +++ b/OrthancServer/Sources/ServerContext.cpp Thu Feb 11 11:00:05 2021 +0100 @@ -728,11 +728,10 @@ { std::unique_ptr<ParsedDicomFile> tmp(transcoded.ReleaseAsParsedDicomFile()); - DicomInstanceToStore toStore; - toStore.SetParsedDicomFile(*tmp); - toStore.SetOrigin(dicom.GetOrigin()); + std::unique_ptr<DicomInstanceToStore> toStore(DicomInstanceToStore::CreateFromParsedDicomFile(*tmp)); + toStore->SetOrigin(dicom.GetOrigin()); - StoreStatus ok = StoreAfterTranscoding(resultPublicId, toStore, mode); + StoreStatus ok = StoreAfterTranscoding(resultPublicId, *toStore, mode); assert(resultPublicId == tmp->GetHasher().HashInstance()); return ok; @@ -1736,9 +1735,8 @@ size_t size, unsigned int frameIndex) { - DicomInstanceToStore instance; - instance.SetBuffer(dicom, size); - return DecodeDicomFrame(instance, frameIndex); + std::unique_ptr<DicomInstanceToStore> instance(DicomInstanceToStore::CreateFromBuffer(dicom, size)); + return DecodeDicomFrame(*instance, frameIndex); }