in src/dcmtkUtils.cpp [444:486]
OFCondition DcmtkUtils::startConversion(
int64_t imageHeight, int64_t imageWidth, uint32_t rowSize,
absl::string_view studyId, absl::string_view seriesId,
absl::string_view imageName, std::unique_ptr<DcmPixelData> pixelData,
const DcmtkImgDataInfo& imgInfo, uint32_t numberOfFrames, uint32_t row,
uint32_t column, const int32_t instanceNumber, const int32_t downsample,
int batchNumber, unsigned int offset, uint32_t totalNumberOfFrames,
bool tiled, DcmTags* additionalTags, double firstLevelWidthMm,
double firstLevelHeightMm, DcmOutputStream* outStream) {
E_GrpLenEncoding grpLenEncoding = EGL_recalcGL;
E_EncodingType encodingType = EET_ExplicitLength;
E_PaddingEncoding paddingEncoding = EPD_noChange;
uint8_t filepad = 0;
uint8_t itempad = 0;
E_FileWriteMode writeMode = EWM_fileformat;
std::unique_ptr<DcmDataset> resultObject = std::make_unique<DcmDataset>();
OFCondition cond = populateDataSet(
imageHeight, imageWidth, rowSize, studyId, seriesId, imageName,
std::move(pixelData), imgInfo, numberOfFrames, row, column,
instanceNumber, downsample, batchNumber, offset, totalNumberOfFrames,
tiled, additionalTags, firstLevelWidthMm, firstLevelHeightMm,
resultObject.get());
DcmFileFormat dcmFileFormat(resultObject.get());
DcmWriteCache wcache;
cond = outStream->status();
if (cond.good()) {
dcmFileFormat.transferInit();
cond = dcmFileFormat.write(*outStream, imgInfo.transSyn, encodingType,
&wcache, grpLenEncoding, paddingEncoding,
OFstatic_cast(Uint32, filepad),
OFstatic_cast(Uint32, itempad), 0, writeMode);
dcmFileFormat.transferEnd();
}
if (cond.bad()) {
BOOST_LOG_TRIVIAL(error) << "error"
<< ": " << cond.text();
}
return cond;
}