Files
oak-editor/app/render/backend/audiorenderbackend.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

54 lines
1.3 KiB
C++

#ifndef AUDIORENDERBACKEND_H
#define AUDIORENDERBACKEND_H
#include "common/timerange.h"
#include "renderbackend.h"
class AudioRenderBackend : public RenderBackend
{
Q_OBJECT
public:
AudioRenderBackend(QObject* parent = nullptr);
/**
* @brief Set parameters of the Renderer
*
* The Renderer owns the buffers that are used in the rendering process and this function sets the kind of buffers
* to use. The Renderer must be stopped when calling this function.
*/
void SetParameters(const AudioRenderingParams &params);
virtual QIODevice* GetAudioPullDevice() = 0;
const AudioRenderingParams& params();
public slots:
virtual void InvalidateCache(const rational &start_range, const rational &end_range) override;
protected:
virtual void ViewerNodeChangedEvent(ViewerOutput* node) override;
/**
* @brief Internal function for generating the cache ID
*/
virtual bool GenerateCacheIDInternal(QCryptographicHash& hash) override;
virtual NodeInput* GetDependentInput() override;
QString CachePathName();
QByteArray pcm_data_;
private:
void ValidateRanges();
TimeRange CombineRange(const TimeRange& a, const TimeRange& b);
bool RangesOverlap(const TimeRange& a, const TimeRange& b);
AudioRenderingParams params_;
};
#endif // AUDIORENDERBACKEND_H