change: change code style to Linux style except indent.
This commit is contained in:
+140
-147
@@ -34,124 +34,120 @@
|
||||
#include "render/renderticket.h"
|
||||
#include "rendercache.h"
|
||||
|
||||
namespace olive {
|
||||
|
||||
class RenderThread : public QThread
|
||||
namespace olive
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
class RenderThread : public QThread {
|
||||
Q_OBJECT
|
||||
public:
|
||||
RenderThread(Renderer *renderer, DecoderCache *decoder_cache, ShaderCache *shader_cache, QObject *parent = nullptr);
|
||||
RenderThread(Renderer *renderer, DecoderCache *decoder_cache,
|
||||
ShaderCache *shader_cache, QObject *parent = nullptr);
|
||||
|
||||
void AddTicket(RenderTicketPtr ticket);
|
||||
void AddTicket(RenderTicketPtr ticket);
|
||||
|
||||
bool RemoveTicket(RenderTicketPtr ticket);
|
||||
bool RemoveTicket(RenderTicketPtr ticket);
|
||||
|
||||
void quit();
|
||||
void quit();
|
||||
|
||||
protected:
|
||||
virtual void run() override;
|
||||
virtual void run() override;
|
||||
|
||||
private:
|
||||
QMutex mutex_;
|
||||
QMutex mutex_;
|
||||
|
||||
QWaitCondition wait_;
|
||||
QWaitCondition wait_;
|
||||
|
||||
std::list<RenderTicketPtr> queue_;
|
||||
std::list<RenderTicketPtr> queue_;
|
||||
|
||||
bool cancelled_;
|
||||
bool cancelled_;
|
||||
|
||||
Renderer *context_;
|
||||
Renderer *context_;
|
||||
|
||||
DecoderCache *decoder_cache_;
|
||||
|
||||
ShaderCache *shader_cache_;
|
||||
DecoderCache *decoder_cache_;
|
||||
|
||||
ShaderCache *shader_cache_;
|
||||
};
|
||||
|
||||
class RenderManager : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
class RenderManager : public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum Backend {
|
||||
/// Graphics acceleration provided by OpenGL
|
||||
kOpenGL,
|
||||
enum Backend {
|
||||
/// Graphics acceleration provided by OpenGL
|
||||
kOpenGL,
|
||||
|
||||
/// No graphics rendering - used to test core threading logic
|
||||
kDummy
|
||||
};
|
||||
/// No graphics rendering - used to test core threading logic
|
||||
kDummy
|
||||
};
|
||||
|
||||
static void CreateInstance()
|
||||
{
|
||||
instance_ = new RenderManager();
|
||||
}
|
||||
static void CreateInstance()
|
||||
{
|
||||
instance_ = new RenderManager();
|
||||
}
|
||||
|
||||
static void DestroyInstance()
|
||||
{
|
||||
delete instance_;
|
||||
instance_ = nullptr;
|
||||
}
|
||||
static void DestroyInstance()
|
||||
{
|
||||
delete instance_;
|
||||
instance_ = nullptr;
|
||||
}
|
||||
|
||||
static RenderManager* instance()
|
||||
{
|
||||
return instance_;
|
||||
}
|
||||
static RenderManager *instance()
|
||||
{
|
||||
return instance_;
|
||||
}
|
||||
|
||||
enum ReturnType {
|
||||
kTexture,
|
||||
kFrame,
|
||||
kNull
|
||||
};
|
||||
enum ReturnType { kTexture, kFrame, kNull };
|
||||
|
||||
struct RenderVideoParams {
|
||||
RenderVideoParams(Node *n, const VideoParams &vparam, const AudioParams &aparam, const rational &t,
|
||||
ColorManager *colorman, RenderMode::Mode m)
|
||||
{
|
||||
node = n;
|
||||
video_params = vparam;
|
||||
audio_params = aparam;
|
||||
time = t;
|
||||
color_manager = colorman;
|
||||
use_cache = false;
|
||||
return_type = kFrame;
|
||||
force_format = PixelFormat::INVALID;
|
||||
force_color_output = nullptr;
|
||||
force_size = QSize(0, 0);
|
||||
force_channel_count = 0;
|
||||
mode = m;
|
||||
multicam = nullptr;
|
||||
}
|
||||
struct RenderVideoParams {
|
||||
RenderVideoParams(Node *n, const VideoParams &vparam,
|
||||
const AudioParams &aparam, const rational &t,
|
||||
ColorManager *colorman, RenderMode::Mode m)
|
||||
{
|
||||
node = n;
|
||||
video_params = vparam;
|
||||
audio_params = aparam;
|
||||
time = t;
|
||||
color_manager = colorman;
|
||||
use_cache = false;
|
||||
return_type = kFrame;
|
||||
force_format = PixelFormat::INVALID;
|
||||
force_color_output = nullptr;
|
||||
force_size = QSize(0, 0);
|
||||
force_channel_count = 0;
|
||||
mode = m;
|
||||
multicam = nullptr;
|
||||
}
|
||||
|
||||
void AddCache(FrameHashCache *cache)
|
||||
{
|
||||
cache_dir = cache->GetCacheDirectory();
|
||||
cache_timebase = cache->GetTimebase();
|
||||
cache_id = cache->GetUuid().toString();
|
||||
}
|
||||
void AddCache(FrameHashCache *cache)
|
||||
{
|
||||
cache_dir = cache->GetCacheDirectory();
|
||||
cache_timebase = cache->GetTimebase();
|
||||
cache_id = cache->GetUuid().toString();
|
||||
}
|
||||
|
||||
Node *node;
|
||||
VideoParams video_params;
|
||||
AudioParams audio_params;
|
||||
rational time;
|
||||
ColorManager *color_manager;
|
||||
bool use_cache;
|
||||
ReturnType return_type;
|
||||
RenderMode::Mode mode;
|
||||
MultiCamNode *multicam;
|
||||
Node *node;
|
||||
VideoParams video_params;
|
||||
AudioParams audio_params;
|
||||
rational time;
|
||||
ColorManager *color_manager;
|
||||
bool use_cache;
|
||||
ReturnType return_type;
|
||||
RenderMode::Mode mode;
|
||||
MultiCamNode *multicam;
|
||||
|
||||
QString cache_dir;
|
||||
rational cache_timebase;
|
||||
QString cache_id;
|
||||
QString cache_dir;
|
||||
rational cache_timebase;
|
||||
QString cache_id;
|
||||
|
||||
QSize force_size;
|
||||
int force_channel_count;
|
||||
QMatrix4x4 force_matrix;
|
||||
PixelFormat force_format;
|
||||
ColorProcessorPtr force_color_output;
|
||||
};
|
||||
QSize force_size;
|
||||
int force_channel_count;
|
||||
QMatrix4x4 force_matrix;
|
||||
PixelFormat force_format;
|
||||
ColorProcessorPtr force_color_output;
|
||||
};
|
||||
|
||||
static const rational kDryRunInterval;
|
||||
static const rational kDryRunInterval;
|
||||
|
||||
/**
|
||||
/**
|
||||
* @brief Asynchronously generate a frame at a given time
|
||||
*
|
||||
* The ticket from this function will return a FramePtr - the rendered frame in reference color
|
||||
@@ -159,101 +155,98 @@ public:
|
||||
*
|
||||
* This function is thread-safe.
|
||||
*/
|
||||
RenderTicketPtr RenderFrame(const RenderVideoParams ¶ms);
|
||||
RenderTicketPtr RenderFrame(const RenderVideoParams ¶ms);
|
||||
|
||||
struct RenderAudioParams {
|
||||
RenderAudioParams(Node *n, const TimeRange &time, const AudioParams &aparam, RenderMode::Mode m)
|
||||
{
|
||||
node = n;
|
||||
range = time;
|
||||
audio_params = aparam;
|
||||
generate_waveforms = false;
|
||||
clamp = true;
|
||||
mode = m;
|
||||
}
|
||||
struct RenderAudioParams {
|
||||
RenderAudioParams(Node *n, const TimeRange &time,
|
||||
const AudioParams &aparam, RenderMode::Mode m)
|
||||
{
|
||||
node = n;
|
||||
range = time;
|
||||
audio_params = aparam;
|
||||
generate_waveforms = false;
|
||||
clamp = true;
|
||||
mode = m;
|
||||
}
|
||||
|
||||
Node *node;
|
||||
TimeRange range;
|
||||
AudioParams audio_params;
|
||||
bool generate_waveforms;
|
||||
bool clamp;
|
||||
RenderMode::Mode mode;
|
||||
};
|
||||
Node *node;
|
||||
TimeRange range;
|
||||
AudioParams audio_params;
|
||||
bool generate_waveforms;
|
||||
bool clamp;
|
||||
RenderMode::Mode mode;
|
||||
};
|
||||
|
||||
/**
|
||||
/**
|
||||
* @brief Asynchronously generate a chunk of audio
|
||||
*
|
||||
* The ticket from this function will return a SampleBufferPtr - the rendered audio.
|
||||
*
|
||||
* This function is thread-safe.
|
||||
*/
|
||||
RenderTicketPtr RenderAudio(const RenderAudioParams ¶ms);
|
||||
RenderTicketPtr RenderAudio(const RenderAudioParams ¶ms);
|
||||
|
||||
bool RemoveTicket(RenderTicketPtr ticket);
|
||||
bool RemoveTicket(RenderTicketPtr ticket);
|
||||
|
||||
enum TicketType {
|
||||
kTypeVideo,
|
||||
kTypeAudio
|
||||
};
|
||||
enum TicketType { kTypeVideo, kTypeAudio };
|
||||
|
||||
Backend backend() const
|
||||
{
|
||||
return backend_;
|
||||
}
|
||||
Backend backend() const
|
||||
{
|
||||
return backend_;
|
||||
}
|
||||
|
||||
PreviewAutoCacher *GetCacher() const
|
||||
{
|
||||
return auto_cacher_;
|
||||
}
|
||||
PreviewAutoCacher *GetCacher() const
|
||||
{
|
||||
return auto_cacher_;
|
||||
}
|
||||
|
||||
void SetProject(Project *p)
|
||||
{
|
||||
auto_cacher_->SetProject(p);
|
||||
}
|
||||
void SetProject(Project *p)
|
||||
{
|
||||
auto_cacher_->SetProject(p);
|
||||
}
|
||||
|
||||
public slots:
|
||||
void SetAggressiveGarbageCollection(bool enabled);
|
||||
void SetAggressiveGarbageCollection(bool enabled);
|
||||
|
||||
signals:
|
||||
|
||||
private:
|
||||
RenderManager(QObject* parent = nullptr);
|
||||
RenderManager(QObject *parent = nullptr);
|
||||
|
||||
virtual ~RenderManager() override;
|
||||
virtual ~RenderManager() override;
|
||||
|
||||
RenderThread *CreateThread(Renderer *renderer = nullptr);
|
||||
RenderThread *CreateThread(Renderer *renderer = nullptr);
|
||||
|
||||
static RenderManager* instance_;
|
||||
static RenderManager *instance_;
|
||||
|
||||
Renderer* context_;
|
||||
Renderer *context_;
|
||||
|
||||
Backend backend_;
|
||||
Backend backend_;
|
||||
|
||||
DecoderCache* decoder_cache_;
|
||||
DecoderCache *decoder_cache_;
|
||||
|
||||
ShaderCache* shader_cache_;
|
||||
ShaderCache *shader_cache_;
|
||||
|
||||
static constexpr auto kDecoderMaximumInactivityAggressive = 1000;
|
||||
static constexpr auto kDecoderMaximumInactivity = 5000;
|
||||
static constexpr auto kDecoderMaximumInactivityAggressive = 1000;
|
||||
static constexpr auto kDecoderMaximumInactivity = 5000;
|
||||
|
||||
int aggressive_gc_;
|
||||
int aggressive_gc_;
|
||||
|
||||
QTimer *decoder_clear_timer_;
|
||||
QTimer *decoder_clear_timer_;
|
||||
|
||||
RenderThread *video_thread_;
|
||||
RenderThread *dry_run_thread_;
|
||||
RenderThread *audio_thread_;
|
||||
RenderThread *video_thread_;
|
||||
RenderThread *dry_run_thread_;
|
||||
RenderThread *audio_thread_;
|
||||
|
||||
std::vector<RenderThread *> waveform_threads_;
|
||||
size_t last_waveform_thread_;
|
||||
std::vector<RenderThread *> waveform_threads_;
|
||||
size_t last_waveform_thread_;
|
||||
|
||||
std::list<RenderThread *> render_threads_;
|
||||
std::list<RenderThread *> render_threads_;
|
||||
|
||||
PreviewAutoCacher *auto_cacher_;
|
||||
PreviewAutoCacher *auto_cacher_;
|
||||
|
||||
private slots:
|
||||
void ClearOldDecoders();
|
||||
|
||||
void ClearOldDecoders();
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user