Files
oak-editor/app/render/backend/videorenderworker.h
T
itsmattkc 40b3879440 overhauled render classes to support video AND audio
Major refactoring work to try sharing as much code as possible between the
video renderers and audio renderers, as well as make them as
platform-independent as possible.
2019-11-15 13:50:58 +09:00

61 lines
1.4 KiB
C++

#ifndef VIDEORENDERWORKER_H
#define VIDEORENDERWORKER_H
#include <QCryptographicHash>
#include "node/dependency.h"
#include "render/videoparams.h"
#include "renderworker.h"
#include "videorenderframecache.h"
class VideoRenderWorker : public RenderWorker {
Q_OBJECT
public:
VideoRenderWorker(DecoderCache* decoder_cache, VideoRenderFrameCache* frame_cache, QObject* parent = nullptr);
void SetParameters(const VideoRenderingParams& video_params);
public slots:
virtual void RenderAsSibling(NodeDependency dep) override;
void Download(NodeDependency dep, QByteArray hash, QVariant texture, QString filename);
signals:
void CompletedFrame(NodeDependency path, QByteArray hash);
void CompletedDownload(NodeDependency path, QByteArray hash);
void HashAlreadyBeingCached();
void HashAlreadyExists(NodeDependency path, QByteArray hash);
protected:
virtual bool InitInternal() override;
virtual void CloseInternal() override;
const VideoRenderingParams& video_params();
virtual void ParametersChangedEvent(){}
virtual void TextureToBuffer(const QVariant& texture, QByteArray& buffer) = 0;
virtual void RenderInternal(const NodeDependency& path) override;
private:
void ProcessNode();
void HashNodeRecursively(QCryptographicHash* hash, Node *n, const rational &time);
VideoRenderingParams video_params_;
VideoRenderFrameCache* frame_cache_;
QByteArray download_buffer_;
private slots:
};
#endif // VIDEORENDERWORKER_H