# HG changeset patch # User Benjamin Golinvaux # Date 1584469261 -3600 # Node ID 7702ad9b7011435ff47bdc0c3ce15bb683d4e2c7 # Parent 0290b7060167ae06dcdfa82c5345efb35c2b1f2e OrthancSeriesVolumeProgressiveLoader : PNG quality only! diff -r 0290b7060167 -r 7702ad9b7011 Framework/Deprecated/Loaders/OrthancSeriesVolumeProgressiveLoader.cpp --- a/Framework/Deprecated/Loaders/OrthancSeriesVolumeProgressiveLoader.cpp Tue Mar 17 08:57:45 2020 +0100 +++ b/Framework/Deprecated/Loaders/OrthancSeriesVolumeProgressiveLoader.cpp Tue Mar 17 19:21:01 2020 +0100 @@ -192,7 +192,7 @@ if (slices.ComputeSpacingBetweenSlices(spacingZ)) { - LOG(INFO) << "Computed spacing between slices: " << spacingZ << "mm"; + LOG(TRACE) << "Computed spacing between slices: " << spacingZ << "mm"; const OrthancStone::DicomInstanceParameters& parameters = *slices_[0]; @@ -264,7 +264,12 @@ if (strategy_->GetNext(sliceIndex, quality)) { + +#if USE_SINGLE_QUALITY + assert(quality == SINGLE_QUALITY); +#else assert(quality <= BEST_QUALITY); +#endif const OrthancStone::DicomInstanceParameters& slice = seriesGeometry_.GetSliceParameters(sliceIndex); @@ -276,7 +281,10 @@ std::unique_ptr command; +#if USE_SINGLE_QUALITY +#else if (quality == BEST_QUALITY) +#endif { std::unique_ptr tmp(new OrthancStone::GetOrthancImageCommand); // TODO: review the following comment. @@ -290,8 +298,14 @@ tmp->SetHttpHeader("Accept", std::string(Orthanc::EnumerationToString(Orthanc::MimeType_Pam))); tmp->SetInstanceUri(instance, slice.GetExpectedPixelFormat()); tmp->SetExpectedPixelFormat(slice.GetExpectedPixelFormat()); + //LOG(INFO) + // << "OrthancSeriesVolumeProgressiveLoader.ScheduleNextSliceDownload()" + // << " sliceIndex = " << sliceIndex << " slice quality = " << quality + // << " URI = " << tmp->GetUri(); command.reset(tmp.release()); } +#if USE_SINGLE_QUALITY +#else else { std::unique_ptr tmp(new OrthancStone::GetOrthancWebViewerJpegCommand); @@ -301,8 +315,12 @@ tmp->SetInstance(instance); tmp->SetQuality((quality == 0 ? 50 : 90)); tmp->SetExpectedPixelFormat(slice.GetExpectedPixelFormat()); + LOG(TRACE) + << "OrthancSeriesVolumeProgressiveLoader.ScheduleNextSliceDownload()" + << " sliceIndex = " << sliceIndex << " slice quality = " << quality; command.reset(tmp.release()); } +#endif command->AcquirePayload(new Orthanc::SingleValueObject(sliceIndex)); @@ -368,8 +386,16 @@ volume_->SetDicomParameters(parameters); volume_->GetPixelData().Clear(); - strategy_.reset(new OrthancStone::BasicFetchingStrategy(sorter_->CreateSorter(static_cast(slicesCount)), BEST_QUALITY)); - +#if USE_SINGLE_QUALITY + strategy_.reset(new OrthancStone::BasicFetchingStrategy( + sorter_->CreateSorter(static_cast(slicesCount)), + SINGLE_QUALITY)); +#else + strategy_.reset(new OrthancStone::BasicFetchingStrategy( + sorter_->CreateSorter(static_cast(slicesCount)), + BEST_QUALITY)); +#endif + assert(simultaneousDownloads_ != 0); for (unsigned int i = 0; i < simultaneousDownloads_; i++) { @@ -387,7 +413,6 @@ const Orthanc::ImageAccessor& image, unsigned int quality) { - LOG(ERROR) << "SetSliceContent sliceIndex = " << sliceIndex; assert(sliceIndex < slicesQuality_.size() && slicesQuality_.size() == volume_->GetPixelData().GetDepth()); @@ -404,20 +429,25 @@ BroadcastMessage(OrthancStone::DicomVolumeImage::ContentUpdatedMessage(*volume_)); } - + LOG(TRACE) << "SetSliceContent sliceIndex = " << sliceIndex << " -- will " + << " now call ScheduleNextSliceDownload()"; ScheduleNextSliceDownload(); } - void OrthancSeriesVolumeProgressiveLoader::LoadBestQualitySliceContent(const OrthancStone::GetOrthancImageCommand::SuccessMessage& message) { +#if USE_SINGLE_QUALITY + SetSliceContent(GetSliceIndexPayload(message.GetOrigin()), message.GetImage(), SINGLE_QUALITY); +#else SetSliceContent(GetSliceIndexPayload(message.GetOrigin()), message.GetImage(), BEST_QUALITY); +#endif } - +#if USE_SINGLE_QUALITY +#else void OrthancSeriesVolumeProgressiveLoader::LoadJpegSliceContent(const OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage& message) { - LOG(ERROR) << "OrthancSeriesVolumeProgressiveLoader::LoadJpegSliceContent"; + LOG(TRACE) << "OrthancSeriesVolumeProgressiveLoader::LoadJpegSliceContent"; unsigned int quality; switch (dynamic_cast(message.GetOrigin()).GetQuality()) @@ -436,7 +466,7 @@ SetSliceContent(GetSliceIndexPayload(message.GetOrigin()), message.GetImage(), quality); } - +#endif OrthancSeriesVolumeProgressiveLoader::OrthancSeriesVolumeProgressiveLoader( OrthancStone::ILoadersContext& loadersContext, @@ -468,10 +498,12 @@ lock->GetOracleObservable(), &OrthancSeriesVolumeProgressiveLoader::LoadBestQualitySliceContent); +#if USE_SINGLE_QUALITY +#else obj->Register( lock->GetOracleObservable(), &OrthancSeriesVolumeProgressiveLoader::LoadJpegSliceContent); - +#endif return obj; } diff -r 0290b7060167 -r 7702ad9b7011 Framework/Deprecated/Loaders/OrthancSeriesVolumeProgressiveLoader.h --- a/Framework/Deprecated/Loaders/OrthancSeriesVolumeProgressiveLoader.h Tue Mar 17 08:57:45 2020 +0100 +++ b/Framework/Deprecated/Loaders/OrthancSeriesVolumeProgressiveLoader.h Tue Mar 17 19:21:01 2020 +0100 @@ -38,6 +38,9 @@ #include +#define USE_SINGLE_QUALITY 1 + + namespace OrthancStone { class ILoadersContext; @@ -56,9 +59,14 @@ public IGeometryProvider { private: +#if USE_SINGLE_QUALITY + static const unsigned int SINGLE_QUALITY = 0; +#else static const unsigned int LOW_QUALITY = 0; static const unsigned int MIDDLE_QUALITY = 1; static const unsigned int BEST_QUALITY = 2; +#endif + class ExtractedSlice; @@ -111,7 +119,10 @@ void LoadBestQualitySliceContent(const OrthancStone::GetOrthancImageCommand::SuccessMessage& message); +#if USE_SINGLE_QUALITY +#else void LoadJpegSliceContent(const OrthancStone::GetOrthancWebViewerJpegCommand::SuccessMessage& message); +#endif OrthancStone::ILoadersContext& loadersContext_; bool active_;