moved things around and started rewriting render backend

This commit is contained in:
itsmattkc
2020-10-29 01:36:26 +11:00
parent 94321c0a86
commit b582843d27
46 changed files with 1650 additions and 2199 deletions
+2 -8
View File
@@ -33,9 +33,6 @@ ExportTask::ExportTask(ViewerOutput* viewer_node,
params_(params)
{
SetTitle(tr("Exporting \"%1\"").arg(viewer_node->media_name()));
// Render highest quality
backend()->SetRenderMode(RenderMode::kOnline);
}
bool ExportTask::Run()
@@ -66,9 +63,6 @@ bool ExportTask::Run()
if (params_.video_enabled()) {
// Ensure renderer always provides the same resolution
backend()->SetForceDownloadResolution(true);
// If a transformation matrix is applied to this video, create it here
if (params_.video_scaling_method() != ExportParams::kStretch) {
QMatrix4x4 mat = ExportParams::GenerateMatrix(params_.video_scaling_method(),
@@ -77,7 +71,7 @@ bool ExportTask::Run()
params_.video_params().width(),
params_.video_params().height());
backend()->SetVideoDownloadMatrix(mat);
// FIXME: Re-implement this
}
// Create color processor
@@ -102,7 +96,7 @@ bool ExportTask::Run()
audio_data_.SetLength(range.length());
}
Render(video_range, audio_range, false);
Render(video_range, audio_range, RenderMode::kOnline, false);
bool success = true;
+2 -7
View File
@@ -29,9 +29,6 @@ PreCacheTask::PreCacheTask(VideoStreamPtr footage, Sequence* sequence) :
viewer()->set_video_params(sequence->video_params());
viewer()->set_audio_params(sequence->audio_params());
// Render fastest quality
backend()->SetRenderMode(RenderMode::kOffline);
video_node_ = new VideoInput();
video_node_->SetStream(footage);
@@ -39,13 +36,11 @@ PreCacheTask::PreCacheTask(VideoStreamPtr footage, Sequence* sequence) :
SetTitle(tr("Pre-caching %1:%2").arg(footage->footage()->filename(),
QString::number(footage->index())));
backend()->NodeGraphChanged(viewer()->texture_input());
backend()->ProcessUpdateQueue();
}
PreCacheTask::~PreCacheTask()
{
// We created this viewer node ourselves, so now we should delete it
delete viewer();
delete video_node_;
}
@@ -66,7 +61,7 @@ bool PreCacheTask::Run()
}
*/
Render(video_range, TimeRangeList(), true);
Render(video_range, TimeRangeList(), RenderMode::kOnline, true);
download_threads_.waitForDone();
+13 -13
View File
@@ -21,20 +21,20 @@
#include "render.h"
#include "common/timecodefunctions.h"
#include "render/rendermanager.h"
#include "threading/threadticket.h"
OLIVE_NAMESPACE_ENTER
RenderTask::RenderTask(ViewerOutput* viewer, const VideoParams &vparams, const AudioParams &aparams)
RenderTask::RenderTask(ViewerOutput* viewer, const VideoParams &vparams, const AudioParams &aparams) :
viewer_(viewer),
video_params_(vparams),
audio_params_(aparams)
{
backend_ = new OpenGLBackend();
backend_->SetViewerNode(viewer);
backend_->SetVideoParams(vparams);
backend_->SetAudioParams(aparams);
}
RenderTask::~RenderTask()
{
delete backend_;
}
struct TimeHashFuturePair {
@@ -65,8 +65,10 @@ struct HashDownloadFuturePair {
void RenderTask::Render(const TimeRangeList& video_range,
const TimeRangeList &audio_range,
RenderMode::Mode mode,
bool use_disk_cache)
{
/*
double progress_counter = 0;
double total_length = 0;
double video_frame_sz = video_params().time_base().toDouble();
@@ -77,7 +79,7 @@ void RenderTask::Render(const TimeRangeList& video_range,
foreach (const TimeRange& r, audio_range) {
total_length += r.length().toDouble();
std::list<TimeRange> ranges = RenderBackend::SplitRangeIntoChunks(r);
std::list<TimeRange> ranges = r.Split(2);
audio_queue.insert(audio_queue.end(), ranges.begin(), ranges.end());
}
}
@@ -93,7 +95,7 @@ void RenderTask::Render(const TimeRangeList& video_range,
total_length += video_frame_sz * times.size();
RenderTicketPtr hash_future = backend_->Hash(times);
RenderTicketPtr hash_future = RenderManager::instance()->Hash(viewer(), times);
hashes = hash_future->Get().value<QVector<QByteArray> >();
hash_job_time = hash_future->GetJobTime();
@@ -159,7 +161,7 @@ void RenderTask::Render(const TimeRangeList& video_range,
// If no existing disk cache was found, queue it now
if (!hash_exists) {
render_lookup_table.push_back({p.hash, backend_->RenderFrame(p.time)});
render_lookup_table.push_back({p.hash, RenderManager::instance()->RenderFrame(viewer(), p.time, mode)});
running_hashes.push_back(p.hash);
}
}
@@ -169,7 +171,7 @@ void RenderTask::Render(const TimeRangeList& video_range,
}
while (!IsCancelled() && !audio_queue.empty()) {
audio_lookup_table.push_back({audio_queue.front(), backend_->RenderAudio(audio_queue.front())});
audio_lookup_table.push_back({audio_queue.front(), RenderManager::instance()->RenderAudio(viewer(), audio_queue.front())});
audio_queue.pop_front();
}
@@ -235,9 +237,7 @@ void RenderTask::Render(const TimeRangeList& video_range,
}
}
}
// `Close` will block until all jobs are done making a safe deletion
backend_->Close();
*/
}
OLIVE_NAMESPACE_EXIT
+11 -13
View File
@@ -24,7 +24,6 @@
#include <QtConcurrent/QtConcurrent>
#include "node/output/viewer/viewer.h"
#include "render/backend/opengl/openglbackend.h"
#include "task/task.h"
OLIVE_NAMESPACE_ENTER
@@ -38,7 +37,7 @@ public:
protected:
void Render(const TimeRangeList &video_range,
const TimeRangeList &audio_range,
const TimeRangeList &audio_range, RenderMode::Mode mode,
bool use_disk_cache);
virtual QFuture<void> DownloadFrame(FramePtr frame, const QByteArray &hash) = 0;
@@ -49,26 +48,25 @@ protected:
ViewerOutput* viewer() const
{
return backend_->GetViewerNode();
return viewer_;
}
VideoParams video_params() const
const VideoParams& video_params() const
{
return backend_->GetVideoParams();
return video_params_;
}
AudioParams audio_params() const
const AudioParams& audio_params() const
{
return backend_->GetAudioParams();
}
RenderBackend* backend()
{
return backend_;
return audio_params_;
}
private:
RenderBackend* backend_;
ViewerOutput* viewer_;
VideoParams video_params_;
AudioParams audio_params_;
};