Mercurial > hg > orthanc
diff Core/DicomParsing/MemoryBufferTranscoder.cpp @ 3944:aae045f802f4 transcoding
preparing simplified interface for IDicomTranscoder
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 19 May 2020 10:17:06 +0200 |
parents | b99acc213937 |
children | 0b3256c3ee14 |
line wrap: on
line diff
--- a/Core/DicomParsing/MemoryBufferTranscoder.cpp Mon May 18 21:37:31 2020 +0200 +++ b/Core/DicomParsing/MemoryBufferTranscoder.cpp Tue May 19 10:17:06 2020 +0200 @@ -86,8 +86,8 @@ std::set<DicomTransferSyntax> allowedSyntaxes; allowedSyntaxes.insert(targetSyntax); - if (Transcode(target, hasSopInstanceUidChanged, - data, source.size(), allowedSyntaxes, allowNewSopInstanceUid)) + if (TranscodeBuffer(target, hasSopInstanceUidChanged, + data, source.size(), allowedSyntaxes, allowNewSopInstanceUid)) { CheckTargetSyntax(target, allowedSyntaxes); return true; @@ -109,8 +109,8 @@ bool hasSopInstanceUidChanged; std::string target; - if (Transcode(target, hasSopInstanceUidChanged, - buffer, size, allowedSyntaxes, allowNewSopInstanceUid)) + if (TranscodeBuffer(target, hasSopInstanceUidChanged, + buffer, size, allowedSyntaxes, allowNewSopInstanceUid)) { CheckTargetSyntax(target, allowedSyntaxes); @@ -123,4 +123,27 @@ return NULL; } } + + + bool MemoryBufferTranscoder::Transcode(DicomImage& target, + bool& hasSopInstanceUidChanged /* out */, + DicomImage& source, + const std::set<DicomTransferSyntax>& allowedSyntaxes, + bool allowNewSopInstanceUid) + { + target.Clear(); + + std::string buffer; + if (TranscodeBuffer(buffer, hasSopInstanceUidChanged, source.GetBufferData(), + source.GetBufferSize(), allowedSyntaxes, allowNewSopInstanceUid)) + { + CheckTargetSyntax(buffer, allowedSyntaxes); // For debug only + target.AcquireBuffer(buffer); + return true; + } + else + { + return false; + } + } }