moved things around and started rewriting render backend
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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_;
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user