Mercurial > hg > orthanc
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; }