35 #include <QtConcurrentRun>
36 #include "boost/bind.hpp"
62 std::list<QFutureWatcher<QString>*>::iterator iter;
63 for (iter=mSaveThreads.begin(); iter!=mSaveThreads.end(); ++iter)
65 (*iter)->waitForFinished();
83 mRecordingTool = tool;
84 mReference = reference;
90 for (
unsigned i=0; i<video.size(); ++i)
96 QString(
"%1_%2").arg(session->getDescription()).arg(video[i]->getUid()),
99 videoRecorder->startRecord();
100 mVideoRecorder.push_back(videoRecorder);
108 for (
unsigned i=0; i<mVideoRecorder.size(); ++i)
112 for (
unsigned i=0; i<mVideoRecorder.size(); ++i)
115 mVideoRecorder[i]->completeSave();
122 report(
"Ultrasound acquisition cancelled.");
127 for (
unsigned i=0; i<mVideoRecorder.size(); ++i)
129 if (mVideoRecorder[i]->getSource()->getUid() == streamUid)
139 if (videoRecorderIndex>=mVideoRecorder.size())
143 videoRecorder->completeSave();
147 std::cout <<
"----------- "
148 "trackerMetadata : " << trackerMetadata.size() << std::endl;
151 std::vector<TimeInfo> imageTimestamps = videoRecorder->getTimestamps();
152 QString streamSessionName = mSession->getDescription()+
"_"+videoRecorder->getSource()->getUid();
160 referenceTrackerMetadata,
162 videoRecorder->getSource()->getUid(),
165 return reconstructData;
173 for (
unsigned i=0; i<mVideoRecorder.size(); ++i)
177 QString streamSessionName = mSession->getDescription()+
"_"+mVideoRecorder[i]->getSource()->getUid();
180 this->saveStreamSession(data, saveFolder, streamSessionName, compressImages);
186 mVideoRecorder.clear();
188 mRecordingTool.reset();
194 return mSaveThreads.size();
197 void USSavingRecorder::saveStreamSession(
USReconstructInputData reconstructData, QString saveFolder, QString streamSessionName,
bool compress)
201 fileMaker->setReconstructData(reconstructData);
204 QFuture<QString> fileMakerFuture =
205 QtConcurrent::run(boost::bind(
211 QFutureWatcher<QString>* fileMakerFutureWatcher =
new QFutureWatcher<QString>();
212 connect(fileMakerFutureWatcher, SIGNAL(finished()),
this, SLOT(fileMakerWriteFinished()));
213 fileMakerFutureWatcher->setFuture(fileMakerFuture);
214 mSaveThreads.push_back(fileMakerFutureWatcher);
218 void USSavingRecorder::fileMakerWriteFinished()
220 std::list<QFutureWatcher<QString>*>::iterator iter;
221 for (iter=mSaveThreads.begin(); iter!=mSaveThreads.end();)
223 if (!(*iter)->isFinished())
228 QString result = (*iter)->future().result();
231 iter = mSaveThreads.erase(iter);
void startSaveData(QString baseFolder, bool compressImages)
static std::map< double, ToolPositionMetadata > getToolHistory_metadata(ToolPtr tool, RecordSessionPtr session, bool verbose)
Transform3D Transform3D
Transform3D is a representation of an affine 3D transform.
Handles writing files in the format the us reconstruction algorithm wants them.
QString writeToNewFolder(QString path, bool compression)
void startRecord(RecordSessionPtr session, ToolPtr tool, ToolPtr reference, std::vector< VideoSourcePtr > video)
boost::shared_ptr< class SavingVideoRecorder > SavingVideoRecorderPtr
QString timestampSecondsFormat()
static TimedTransformMap getToolHistory_prMt(ToolPtr tool, RecordSessionPtr session, bool verbose)
void set_rMpr(Transform3D rMpr)
boost::shared_ptr< class RecordSession > RecordSessionPtr
static QString getCachePath()
return path to a folder that is used during execution, will be cleared at start and stop...
void setWriteColor(bool on)
size_t getNumberOfSavingThreads() const
static QString createFolder(QString patientFolder, QString sessionDescription)
void reportSuccess(QString msg)
virtual ~USSavingRecorder()
void saveDataCompleted(QString mhdFilename)
emitted when data has been saved to file
Recorder for a VideoSource.
boost::shared_ptr< class UsReconstructionFileMaker > UsReconstructionFileMakerPtr
USReconstructInputData getDataForStream(QString streamUid)
boost::shared_ptr< class CachedImageDataContainer > CachedImageDataContainerPtr
static QString createUniqueFolder(QString patientFolder, QString sessionDescription)
std::map< double, Transform3D > TimedTransformMap
boost::shared_ptr< class Tool > ToolPtr