comparison OrthancServer/ServerJobs/ArchiveJob.cpp @ 3945:0b3256c3ee14 transcoding

simplified IDicomTranscoder
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 19 May 2020 11:24:00 +0200
parents b99acc213937
children 5fe8c6d3212e
comparison
equal deleted inserted replaced
3944:aae045f802f4 3945:0b3256c3ee14
440 if (transcode) 440 if (transcode)
441 { 441 {
442 // New in Orthanc 1.7.0 442 // New in Orthanc 1.7.0
443 std::set<DicomTransferSyntax> syntaxes; 443 std::set<DicomTransferSyntax> syntaxes;
444 syntaxes.insert(transferSyntax); 444 syntaxes.insert(transferSyntax);
445 445
446 parsed.reset(new ParsedDicomFile(content)); 446 IDicomTranscoder::DicomImage source, transcoded;
447 const char* data = content.empty() ? NULL : content.c_str(); 447 source.SetExternalBuffer(content);
448 448
449 std::unique_ptr<IDicomTranscoder::TranscodedDicom> transcodedDicom( 449 bool hasSopInstanceChanged;
450 context.TranscodeToParsed(parsed->GetDcmtkObject(), data, content.size(), 450 if (context.Transcode(transcoded, hasSopInstanceChanged, source,
451 syntaxes, true /* allow new SOP instance UID */)); 451 syntaxes, true /* allow new SOP instance UID */))
452
453 if (transcodedDicom.get() != NULL &&
454 transcodedDicom->GetDicom().getDataset() != NULL)
455 { 452 {
456 std::string transcoded; 453 writer.Write(transcoded.GetBufferData(), transcoded.GetBufferSize());
457 FromDcmtkBridge::SaveToMemoryBuffer(
458 transcoded, *transcodedDicom->GetDicom().getDataset());
459
460 writer.Write(transcoded);
461 454
462 if (dicomDir != NULL) 455 if (dicomDir != NULL)
463 { 456 {
464 std::unique_ptr<ParsedDicomFile> tmp( 457 std::unique_ptr<ParsedDicomFile> tmp(transcoded.ReleaseAsParsedDicomFile());
465 ParsedDicomFile::AcquireDcmtkObject(transcodedDicom->ReleaseDicom()));
466 dicomDir->Add(dicomDirFolder, filename_, *tmp); 458 dicomDir->Add(dicomDirFolder, filename_, *tmp);
467 } 459 }
468 460
469 transcodeSuccess = true; 461 transcodeSuccess = true;
470 } 462 }