diff Core/DicomParsing/FromDcmtkBridge.cpp @ 3727:090022f1b5e1

auto-generation of primitives to handle transfer syntaxes
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 06 Mar 2020 17:10:03 +0100
parents 2a170a8f1faf
children ae31ba2b09a6
line wrap: on
line diff
--- a/Core/DicomParsing/FromDcmtkBridge.cpp	Fri Mar 06 11:52:44 2020 +0100
+++ b/Core/DicomParsing/FromDcmtkBridge.cpp	Fri Mar 06 17:10:03 2020 +0100
@@ -107,10 +107,16 @@
 
 #if ORTHANC_ENABLE_DCMTK_JPEG == 1
 #  include <dcmtk/dcmjpeg/djdecode.h>
+#  if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1
+#    include <dcmtk/dcmjpeg/djencode.h>
+#  endif
 #endif
 
 #if ORTHANC_ENABLE_DCMTK_JPEG_LOSSLESS == 1
 #  include <dcmtk/dcmjpls/djdecode.h>
+#  if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1
+#    include <dcmtk/dcmjpls/djencode.h>
+#  endif
 #endif
 
 
@@ -2045,12 +2051,18 @@
   {
 #if ORTHANC_ENABLE_DCMTK_JPEG_LOSSLESS == 1
     LOG(INFO) << "Registering JPEG Lossless codecs in DCMTK";
-    DJLSDecoderRegistration::registerCodecs();    
+    DJLSDecoderRegistration::registerCodecs();
+# if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1
+    DJLSEncoderRegistration::registerCodecs();
+# endif
 #endif
 
 #if ORTHANC_ENABLE_DCMTK_JPEG == 1
     LOG(INFO) << "Registering JPEG codecs in DCMTK";
     DJDecoderRegistration::registerCodecs(); 
+# if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1
+    DJEncoderRegistration::registerCodecs();
+# endif
 #endif
   }
 
@@ -2060,11 +2072,17 @@
 #if ORTHANC_ENABLE_DCMTK_JPEG_LOSSLESS == 1
     // Unregister JPEG-LS codecs
     DJLSDecoderRegistration::cleanup();
+# if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1
+    DJLSEncoderRegistration::cleanup();
+# endif
 #endif
 
 #if ORTHANC_ENABLE_DCMTK_JPEG == 1
     // Unregister JPEG codecs
     DJDecoderRegistration::cleanup();
+# if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1
+    DJDecoderRegistration::cleanup();
+# endif
 #endif
   }
 
@@ -2551,4 +2569,181 @@
     Encoding encoding = DetectEncoding(hasCodeExtensions, dataset, defaultEncoding);
     ApplyVisitorToDataset(dataset, visitor, parentTags, parentIndexes, encoding, hasCodeExtensions);
   }
+
+
+  // This function is autogenerated by the script
+  // "Resources/GenerateTransferSyntaxes.py"
+  bool FromDcmtkBridge::GetDcmtkTransferSyntax(E_TransferSyntax& target,
+                                               DicomTransferSyntax syntax)
+  {
+    switch (syntax)
+    {
+      case DicomTransferSyntax_LittleEndianImplicit:
+        target = EXS_LittleEndianImplicit;
+        return true;
+
+      case DicomTransferSyntax_LittleEndianExplicit:
+        target = EXS_LittleEndianExplicit;
+        return true;
+
+      case DicomTransferSyntax_DeflatedLittleEndianExplicit:
+        target = EXS_DeflatedLittleEndianExplicit;
+        return true;
+
+      case DicomTransferSyntax_BigEndianExplicit:
+        target = EXS_BigEndianExplicit;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess1:
+        target = EXS_JPEGProcess1;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess2_4:
+        target = EXS_JPEGProcess2_4;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess3_5:
+        target = EXS_JPEGProcess3_5;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess6_8:
+        target = EXS_JPEGProcess6_8;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess7_9:
+        target = EXS_JPEGProcess7_9;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess10_12:
+        target = EXS_JPEGProcess10_12;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess11_13:
+        target = EXS_JPEGProcess11_13;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess14:
+        target = EXS_JPEGProcess14;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess15:
+        target = EXS_JPEGProcess15;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess16_18:
+        target = EXS_JPEGProcess16_18;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess17_19:
+        target = EXS_JPEGProcess17_19;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess20_22:
+        target = EXS_JPEGProcess20_22;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess21_23:
+        target = EXS_JPEGProcess21_23;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess24_26:
+        target = EXS_JPEGProcess24_26;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess25_27:
+        target = EXS_JPEGProcess25_27;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess28:
+        target = EXS_JPEGProcess28;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess29:
+        target = EXS_JPEGProcess29;
+        return true;
+
+      case DicomTransferSyntax_JPEGProcess14SV1:
+        target = EXS_JPEGProcess14SV1;
+        return true;
+
+      case DicomTransferSyntax_JPEGLSLossless:
+        target = EXS_JPEGLSLossless;
+        return true;
+
+      case DicomTransferSyntax_JPEGLSLossy:
+        target = EXS_JPEGLSLossy;
+        return true;
+
+      case DicomTransferSyntax_JPEG2000LosslessOnly:
+        target = EXS_JPEG2000LosslessOnly;
+        return true;
+
+      case DicomTransferSyntax_JPEG2000:
+        target = EXS_JPEG2000;
+        return true;
+
+      case DicomTransferSyntax_JPEG2000MulticomponentLosslessOnly:
+        target = EXS_JPEG2000MulticomponentLosslessOnly;
+        return true;
+
+      case DicomTransferSyntax_JPEG2000Multicomponent:
+        target = EXS_JPEG2000Multicomponent;
+        return true;
+
+      case DicomTransferSyntax_JPIPReferenced:
+        target = EXS_JPIPReferenced;
+        return true;
+
+      case DicomTransferSyntax_JPIPReferencedDeflate:
+        target = EXS_JPIPReferencedDeflate;
+        return true;
+
+      case DicomTransferSyntax_MPEG2MainProfileAtMainLevel:
+        target = EXS_MPEG2MainProfileAtMainLevel;
+        return true;
+
+      case DicomTransferSyntax_MPEG2MainProfileAtHighLevel:
+        target = EXS_MPEG2MainProfileAtHighLevel;
+        return true;
+
+      case DicomTransferSyntax_MPEG4HighProfileLevel4_1:
+        target = EXS_MPEG4HighProfileLevel4_1;
+        return true;
+
+      case DicomTransferSyntax_MPEG4BDcompatibleHighProfileLevel4_1:
+        target = EXS_MPEG4BDcompatibleHighProfileLevel4_1;
+        return true;
+
+      case DicomTransferSyntax_MPEG4HighProfileLevel4_2_For2DVideo:
+        target = EXS_MPEG4HighProfileLevel4_2_For2DVideo;
+        return true;
+
+      case DicomTransferSyntax_MPEG4HighProfileLevel4_2_For3DVideo:
+        target = EXS_MPEG4HighProfileLevel4_2_For3DVideo;
+        return true;
+
+      case DicomTransferSyntax_MPEG4StereoHighProfileLevel4_2:
+        target = EXS_MPEG4StereoHighProfileLevel4_2;
+        return true;
+
+#if DCMTK_VERSION_NUMBER >= 362
+      case DicomTransferSyntax_HEVCMainProfileLevel5_1:
+        target = EXS_HEVCMainProfileLevel5_1;
+        return true;
+#endif
+
+#if DCMTK_VERSION_NUMBER >= 362
+      case DicomTransferSyntax_HEVCMain10ProfileLevel5_1:
+        target = EXS_HEVCMain10ProfileLevel5_1;
+        return true;
+#endif
+
+      case DicomTransferSyntax_RLELossless:
+        target = EXS_RLELossless;
+        return true;
+        
+      default:
+        return false;
+    }
+  }
 }