Mercurial > hg > orthanc
comparison Core/DicomParsing/MemoryBufferTranscoder.cpp @ 3905:061f3d031b5d transcoding
cont
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 08 May 2020 08:27:18 +0200 |
parents | c62f84c7eda9 |
children | f0dd5ded8927 |
comparison
equal
deleted
inserted
replaced
3904:c62f84c7eda9 | 3905:061f3d031b5d |
---|---|
71 bool allowNewSopInstanceUid) | 71 bool allowNewSopInstanceUid) |
72 { | 72 { |
73 #if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1 | 73 #if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1 |
74 if (useDcmtk_) | 74 if (useDcmtk_) |
75 { | 75 { |
76 return dcmtk_.TranscodeToBuffer(target, hasSopInstanceUidChanged, buffer, size, allowedSyntaxes, allowNewSopInstanceUid); | 76 if (dcmtk_.TranscodeToBuffer(target, hasSopInstanceUidChanged, buffer, |
77 size, allowedSyntaxes, allowNewSopInstanceUid)) | |
78 { | |
79 return true; | |
80 } | |
77 } | 81 } |
78 else | |
79 #endif | 82 #endif |
80 { | 83 |
81 return Transcode(target, hasSopInstanceUidChanged, buffer, size, allowedSyntaxes, allowNewSopInstanceUid); | 84 return Transcode(target, hasSopInstanceUidChanged, buffer, size, |
82 } | 85 allowedSyntaxes, allowNewSopInstanceUid); |
83 } | 86 } |
84 | 87 |
85 | 88 |
86 DcmFileFormat* MemoryBufferTranscoder::TranscodeToParsed(bool& hasSopInstanceUidChanged, | 89 DcmFileFormat* MemoryBufferTranscoder::TranscodeToParsed(bool& hasSopInstanceUidChanged, |
87 const void* buffer, | 90 const void* buffer, |
90 bool allowNewSopInstanceUid) | 93 bool allowNewSopInstanceUid) |
91 { | 94 { |
92 #if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1 | 95 #if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1 |
93 if (useDcmtk_) | 96 if (useDcmtk_) |
94 { | 97 { |
95 return dcmtk_.TranscodeToParsed(hasSopInstanceUidChanged, buffer, size, allowedSyntaxes, allowNewSopInstanceUid); | 98 std::unique_ptr<DcmFileFormat> transcoded( |
99 dcmtk_.TranscodeToParsed(hasSopInstanceUidChanged, buffer, size, | |
100 allowedSyntaxes, allowNewSopInstanceUid)); | |
101 if (transcoded.get() != NULL) | |
102 { | |
103 return transcoded.release(); | |
104 } | |
105 } | |
106 #endif | |
107 | |
108 std::string transcoded; | |
109 if (Transcode(transcoded, hasSopInstanceUidChanged, buffer, size, allowedSyntaxes, allowNewSopInstanceUid)) | |
110 { | |
111 return FromDcmtkBridge::LoadFromMemoryBuffer( | |
112 transcoded.empty() ? NULL : transcoded.c_str(), transcoded.size()); | |
96 } | 113 } |
97 else | 114 else |
98 #endif | |
99 { | 115 { |
100 std::string transcoded; | 116 return NULL; |
101 if (Transcode(transcoded, hasSopInstanceUidChanged, buffer, size, allowedSyntaxes, allowNewSopInstanceUid)) | |
102 { | |
103 return FromDcmtkBridge::LoadFromMemoryBuffer( | |
104 transcoded.empty() ? NULL : transcoded.c_str(), transcoded.size()); | |
105 } | |
106 else | |
107 { | |
108 return NULL; | |
109 } | |
110 } | 117 } |
111 } | 118 } |
112 | 119 |
113 | 120 |
114 bool MemoryBufferTranscoder::HasInplaceTranscode( | 121 bool MemoryBufferTranscoder::HasInplaceTranscode( |