OFCondition DcmtkUtils::startConversion()

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;
}