# HG changeset patch # User Sebastien Jodogne # Date 1590476640 -7200 # Node ID e42f5445d20dad2150b3a83d227bb67af4de394a # Parent 464d40d572bd35f7ebe33081d9b5c94f1fbb1cb0 Fix decoding of DICOM images for plugins diff -r 464d40d572bd -r e42f5445d20d NEWS --- a/NEWS Mon May 25 21:25:23 2020 +0200 +++ b/NEWS Tue May 26 09:04:00 2020 +0200 @@ -2,6 +2,11 @@ =============================== +Maintenance +----------- + +* Fix decoding of DICOM images for plugins + Version 1.7.0 (2020-05-22) ========================== diff -r 464d40d572bd -r e42f5445d20d OrthancServer/ServerContext.cpp --- a/OrthancServer/ServerContext.cpp Mon May 25 21:25:23 2020 +0200 +++ b/OrthancServer/ServerContext.cpp Tue May 26 09:04:00 2020 +0200 @@ -1296,6 +1296,16 @@ } + ImageAccessor* ServerContext::DecodeDicomFrame(const void* dicom, + size_t size, + unsigned int frameIndex) + { + DicomInstanceToStore instance; + instance.SetBuffer(dicom, size); + return DecodeDicomFrame(instance, frameIndex); + } + + void ServerContext::StoreWithTranscoding(std::string& sopClassUid, std::string& sopInstanceUid, DicomStoreUserConnection& connection, diff -r 464d40d572bd -r e42f5445d20d OrthancServer/ServerContext.h --- a/OrthancServer/ServerContext.h Mon May 25 21:25:23 2020 +0200 +++ b/OrthancServer/ServerContext.h Tue May 26 09:04:00 2020 +0200 @@ -469,6 +469,10 @@ ImageAccessor* DecodeDicomFrame(const DicomInstanceToStore& dicom, unsigned int frameIndex); + ImageAccessor* DecodeDicomFrame(const void* dicom, + size_t size, + unsigned int frameIndex); + void StoreWithTranscoding(std::string& sopClassUid, std::string& sopInstanceUid, DicomStoreUserConnection& connection, diff -r 464d40d572bd -r e42f5445d20d Plugins/Engine/OrthancPlugins.cpp --- a/Plugins/Engine/OrthancPlugins.cpp Mon May 25 21:25:23 2020 +0200 +++ b/Plugins/Engine/OrthancPlugins.cpp Tue May 26 09:04:00 2020 +0200 @@ -2922,7 +2922,8 @@ case OrthancPluginImageFormat_Dicom: { - image.reset(Decode(p.data, p.size, 0)); + PImpl::ServerContextLock lock(*pimpl_); + image.reset(lock.GetContext().DecodeDicomFrame(p.data, p.size, 0)); break; } @@ -3485,7 +3486,8 @@ case _OrthancPluginService_DecodeDicomImage: { - result.reset(Decode(p.constBuffer, p.bufferSize, p.frameIndex)); + PImpl::ServerContextLock lock(*pimpl_); + result.reset(lock.GetContext().DecodeDicomFrame(p.constBuffer, p.bufferSize, p.frameIndex)); break; }