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(