10 #ifndef hifi_Recording_Clip_h
11 #define hifi_Recording_Clip_h
17 #include <QtCore/QObject>
27 using Pointer = std::shared_ptr<Clip>;
28 using ConstPointer = std::shared_ptr<const Clip>;
32 virtual Pointer duplicate()
const = 0;
34 virtual QString getName()
const = 0;
36 virtual float duration()
const = 0;
37 virtual size_t frameCount()
const = 0;
39 virtual void seek(
float offset)
final;
40 virtual float position() const final;
42 virtual
void seekFrameTime(Frame::Time offset) = 0;
43 virtual Frame::Time positionFrameTime() const = 0;
45 virtual FrameConstPointer peekFrame() const = 0;
46 virtual FrameConstPointer nextFrame() = 0;
47 virtual
void skipFrame() = 0;
48 virtual
void addFrame(FrameConstPointer) = 0;
50 bool write(QIODevice& output);
52 static Pointer fromFile(const QString& filePath);
53 static
void toFile(const QString& filePath, const ConstPointer& clip);
54 static QByteArray toBuffer(const ConstPointer& clip);
55 static Pointer newClip();
57 static const QString FRAME_TYPE_MAP;
58 static const QString FRAME_COMREPSSION_FLAG;
61 friend class WrapperClip;
62 using Mutex = std::recursive_mutex;
63 using Locker = std::unique_lock<Mutex>;
65 virtual
void reset() = 0;