diff OrthancServer/Plugins/Engine/OrthancPlugins.cpp @ 5363:3c8286e5d07b multiple-jpeg-decoders

wip: try to add a jpeg decoder without colorspace conversion: not working now
author Alain Mazy <am@osimis.io>
date Tue, 11 Jul 2023 10:25:58 +0200
parents b376abae664a
children
line wrap: on
line diff
--- a/OrthancServer/Plugins/Engine/OrthancPlugins.cpp	Thu Jul 06 21:08:05 2023 +0200
+++ b/OrthancServer/Plugins/Engine/OrthancPlugins.cpp	Tue Jul 11 10:25:58 2023 +0200
@@ -5384,15 +5384,31 @@
         const _OrthancPluginCreateDicomInstance& p =
           *reinterpret_cast<const _OrthancPluginCreateDicomInstance*>(parameters);
 
+        if (p.transferSyntax == NULL)
+        {
+          throw OrthancException(ErrorCode_ParameterOutOfRange, "Unsupported NULL transfer syntax");
+        }
+
+        std::vector<std::string> transferSyntaxArgs;
+        Toolbox::TokenizeString(transferSyntaxArgs, std::string(p.transferSyntax), ';');
+
         DicomTransferSyntax transferSyntax;
-        if (p.transferSyntax == NULL ||
-            !LookupTransferSyntax(transferSyntax, p.transferSyntax))
+        if (transferSyntaxArgs.size() == 0 || !LookupTransferSyntax(transferSyntax, transferSyntaxArgs[0]))
         {
           throw OrthancException(ErrorCode_ParameterOutOfRange, "Unsupported transfer syntax: " +
                                  std::string(p.transferSyntax == NULL ? "(null)" : p.transferSyntax));
         }
         else
         {
+          bool enableColorMapConversion = true;
+          for (size_t i = 1; i < transferSyntaxArgs.size(); ++i)
+          {
+            if (transferSyntaxArgs[i] == "disable-color-map-conversion")
+            {
+              enableColorMapConversion = false;
+            }
+          }
+
           std::set<DicomTransferSyntax> syntaxes;
           syntaxes.insert(transferSyntax);
 
@@ -5405,7 +5421,7 @@
           {
             PImpl::ServerContextLock lock(*pimpl_);
             success = lock.GetContext().Transcode(
-              transcoded, source, syntaxes, true /* allow new sop */);
+              transcoded, source, syntaxes, true /* allow new sop */, enableColorMapConversion);
           }
 
           if (success)