Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
record.h 907 B
#pragma once

#include "iprinter.h"
#include "typeDefinitions.h"

#include <QDir>
#include <chrono>

class QTimer;

class Record : public IPrinter
{
	Q_OBJECT

public:
	Record();
	// Record(const Record&);
	// ~Record();
	void init(CamPtr);

	void start(); //can use literals "1s, 1min"
	void setDur(seconds);
	seconds dur();


	bool checkDir(QString dirPath="");
	void checkDiskSpace(const QString &, seconds);
	qint64 calcDirSize(const QDir &);

	operator bool() const {	return _cam != nullptr;	}

	QString dir() const { return _dir; }

public slots:
	void stop();
	QStringList stats();
	void showProgressBar();
	QString progressBar(int percentage=-1);

private:
	bool write(QStringList, QString);

	CamPtr _cam;
	QTimer* _timer;
	QTimer* _updateTimer;
	seconds _dur;

	QString _dir;
	VmbInt64_t _payloadSize;
	std::string _pixelFormat;
	FramePtrVector _frames;

	const seconds updateInterval = 2s;


};