38 #include <QTextStream>
40 #include <vtkImageChangeInformation.h>
41 #include <vtkImageLuminance.h>
42 #include <vtkImageData.h>
43 #include "vtkImageAppend.h"
44 #include "vtkMetaImageWriter.h"
58 mSaveFolder(saveFolder),
61 mMutex(QMutex::Recursive),
64 mTimestampsFile(saveFolder+
"/"+prefix+
".fts"),
65 mCompressed(compressed),
66 mWriteColor(writeColor)
68 this->setObjectName(
"org.custusx.resource.videorecordersave");
82 data.
mImage = vtkImageDataPtr::New();
83 data.
mImage->DeepCopy(image);
87 QMutexLocker sentry(&
mMutex);
140 vtkSmartPointer<vtkImageLuminance> luminance = vtkSmartPointer<vtkImageLuminance>::New();
141 luminance->SetInputData(data.
mImage);
143 data.
mImage = luminance->GetOutput();
149 writer->SetInputData(data.
mImage);
168 QMutexLocker sentry(&
mMutex);
173 this->
write(current);
200 mImages->setDeleteFilesOnRelease(
true);
203 mSaveFolder = saveFolder;
205 mSaveThread->start();
210 mSaveThread->cancel();
224 void SavingVideoRecorder::newFrameSlot()
226 if (!mSource->validData())
231 double timestamp = mSource->getTimestamp();
232 QString filename = mSaveThread->addData(timestamp, image);
234 mImages->append(filename);
235 mTimestamps.push_back(timestamp);
252 mSaveThread->cancel();
255 this->deleteFolder(mSaveFolder);
260 void SavingVideoRecorder::deleteFolder(QString folder)
263 filters <<
"*.fts" <<
"*.mhd" <<
"*.raw" <<
"*.zraw";
264 for (
int i=0; i<filters.size(); ++i)
265 filters[i] = mPrefix + filters[i];
268 QStringList files = dir.entryList(filters);
270 for (
int i=0; i<files.size(); ++i)
271 dir.remove(files[i]);
QString qstring_cast(const T &val)
virtual ~SavingVideoRecorder()
bool closeTimestampsFile()
void reportError(QString msg)
cstring_cast_Placeholder cstring_cast(const T &val)
virtual ~VideoRecorderSaveThread()
VideoRecorderSaveThread(QObject *parent, QString saveFolder, QString prefix, bool compressed, bool writeColor)
virtual void stopRecord()
boost::shared_ptr< class VideoSource > VideoSourcePtr
vtkSmartPointer< class vtkMetaImageWriter > vtkMetaImageWriterPtr
SavingVideoRecorder(VideoSourcePtr source, QString saveFolder, QString prefix, bool compressed, bool writeColor)
void write(DataType data)
bool openTimestampsFile()
std::list< DataType > mPendingData
CachedImageDataContainerPtr getImageData()
std::vector< double > getTimestamps()
QString addData(double timestamp, vtkImageDataPtr data)
boost::shared_ptr< class CachedImageDataContainer > CachedImageDataContainerPtr
void newFrame()
emitted when a new frame has arrived (getVtkImageData() returns something new). info/status/name/vali...
virtual void startRecord()
QMutex mMutex
protects the mPendingData