93 lines
2.4 KiB
C++
93 lines
2.4 KiB
C++
#ifndef GTL_HW_PLAYER_FILE_H
|
|
#define GTL_HW_PLAYER_FILE_H
|
|
|
|
#include <QObject>
|
|
#include <QFile>
|
|
#include <QFileInfo>
|
|
#include <QDir>
|
|
#include <QDataStream>
|
|
#include <QMutex>
|
|
#include <QStringList>
|
|
#include <QDomElement>
|
|
#include <QJsonObject>
|
|
|
|
#include "hw_global.h"
|
|
|
|
namespace gtl
|
|
{
|
|
namespace hw
|
|
{
|
|
class HW_EXPORT player_file : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
player_file(QObject *parent, QString path);
|
|
~player_file();
|
|
|
|
bool is_ok() const { return _is_ok; }
|
|
int channels() const { return _channels; }
|
|
qreal rate() const { return _rate; }
|
|
qreal dt() const { return _rate == 0 ? 0 : 1.0/_rate; }
|
|
qreal time() const { return _time; }
|
|
QString info() const { return _info; }
|
|
int samples() const { return qRound(_time*_rate); }
|
|
QString channel(int idx) const;
|
|
QString unit(int idx) const;
|
|
int color(int idx) const;
|
|
QJsonObject channel_info(int idx) const;
|
|
|
|
qreal reference(int idx) const;
|
|
qreal sensitivity(int idx) const;
|
|
qreal gain(int idx) const;
|
|
qreal offset(int idx) const;
|
|
|
|
QString device() const;
|
|
virtual QString comment() const;
|
|
|
|
const QJsonObject& data() const;
|
|
|
|
|
|
virtual bool get_data(qreal *data, int &samples, bool is_cyclic, bool &is_continued) = 0;
|
|
virtual bool get_data(qreal *data, int& idx, int &samples, bool is_cyclic = false) = 0;
|
|
|
|
void seek_to_start();
|
|
QString path() const { return _path; }
|
|
|
|
void get_ranges_indices(std::back_insert_iterator<std::vector<std::pair<int, int>>> ranges) const;
|
|
void set_ranges(std::vector<std::pair<qreal, qreal>>::iterator begin, std::vector<std::pair<qreal, qreal>>::iterator end);
|
|
void get_ranges(std::back_insert_iterator<std::vector<std::pair<qreal, qreal>>> out) const;
|
|
|
|
|
|
protected:
|
|
QString _path;
|
|
QFile* _file;
|
|
QDataStream* _stream;
|
|
|
|
bool _is_ok;
|
|
|
|
qreal _rate;
|
|
qreal _time;
|
|
int _channels;
|
|
|
|
QString _info;
|
|
|
|
quint64 _pos_data;
|
|
QMutex _mutex;
|
|
|
|
QJsonObject _data;
|
|
|
|
private:
|
|
QJsonObject get_root(int idx) const;
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
};
|
|
}
|
|
}
|
|
|
|
#endif // GTL_HW_PLAYER_FILE_H
|