diff Core/DicomParsing/MemoryBufferTranscoder.cpp @ 3910:1f71c2f20e16 transcoding

cont
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 08 May 2020 12:03:26 +0200
parents 6762a97deabc
children 7dc5e7e0045d
line wrap: on
line diff
--- a/Core/DicomParsing/MemoryBufferTranscoder.cpp	Fri May 08 11:40:12 2020 +0200
+++ b/Core/DicomParsing/MemoryBufferTranscoder.cpp	Fri May 08 12:03:26 2020 +0200
@@ -66,10 +66,9 @@
   bool MemoryBufferTranscoder::TranscodeParsedToBuffer(
     std::string& target /* out */,
     DicomTransferSyntax& sourceSyntax /* out */,
-    DicomTransferSyntax& targetSyntax /* out */,
     bool& hasSopInstanceUidChanged /* out */,
     DcmFileFormat& dicom /* in, possibly modified */,
-    const std::set<DicomTransferSyntax>& allowedSyntaxes,
+    DicomTransferSyntax targetSyntax,
     bool allowNewSopInstanceUid)
   {
     if (dicom.getDataset() == NULL)
@@ -82,14 +81,25 @@
 
     const void* data = source.empty() ? NULL : source.c_str();
 
-    bool success = Transcode(target, sourceSyntax, targetSyntax, hasSopInstanceUidChanged,
-                             data, source.size(), allowedSyntaxes, allowNewSopInstanceUid);
+    std::set<DicomTransferSyntax> tmp;
+    tmp.insert(targetSyntax);
+
+    DicomTransferSyntax targetSyntax2;
+    bool success = Transcode(target, sourceSyntax, targetSyntax2, hasSopInstanceUidChanged,
+                             data, source.size(), tmp, allowNewSopInstanceUid);
 
+    if (success &&
+        targetSyntax != targetSyntax2)
+    {
+      throw OrthancException(ErrorCode_InternalError);
+    }
+    
 #if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1
-    if (useDcmtk_ &&
+    if (!success &&
+        useDcmtk_ &&
         dcmtk_.TranscodeParsedToBuffer(
-          target, sourceSyntax, targetSyntax,hasSopInstanceUidChanged,
-          dicom, allowedSyntaxes, allowNewSopInstanceUid))
+          target, sourceSyntax, hasSopInstanceUidChanged,
+          dicom, targetSyntax, allowNewSopInstanceUid))
     {
       success = true;
     }