finished merge of viewer and footage

This commit is contained in:
itsmattkc
2021-04-06 13:08:56 +10:00
parent 57ddae8920
commit 898ea25e89
58 changed files with 783 additions and 719 deletions
+4 -4
View File
@@ -29,11 +29,11 @@ class FootageJob
{
public:
FootageJob() :
type_(Stream::kUnknown)
type_(Track::kNone)
{
}
FootageJob(const QString& decoder, const QString& filename, Stream::Type type) :
FootageJob(const QString& decoder, const QString& filename, Track::Type type) :
decoder_(decoder),
filename_(filename),
type_(type)
@@ -50,7 +50,7 @@ public:
return filename_;
}
Stream::Type type() const
Track::Type type() const
{
return type_;
}
@@ -90,7 +90,7 @@ private:
QString filename_;
Stream::Type type_;
Track::Type type_;
VideoParams video_params_;
+8 -8
View File
@@ -16,8 +16,7 @@ PreviewAutoCacher::PreviewAutoCacher() :
use_custom_range_(false),
single_frame_render_(nullptr),
last_update_time_(0),
ignore_next_mouse_button_(false),
color_manager_(nullptr)
ignore_next_mouse_button_(false)
{
// Set default autocache range
SetPlayhead(rational());
@@ -70,7 +69,7 @@ void PreviewAutoCacher::GenerateHashes(ViewerOutput *viewer, FrameHashCache* cac
foreach (const rational& time, times) {
// See if hash already exists in disk cache
QByteArray hash = RenderManager::Hash(viewer->GetConnectedNode(ViewerOutput::kTextureInput), viewer->video_params(), time);
QByteArray hash = RenderManager::Hash(viewer->GetConnectedNode(ViewerOutput::kTextureInput), viewer->GetVideoParams(), time);
// Check memory list since disk checking is slow
bool hash_exists = (std::find(existing_hashes.begin(), existing_hashes.end(), hash) != existing_hashes.end());
@@ -164,7 +163,7 @@ void PreviewAutoCacher::AudioRendered()
watcher->GetTicket()->GetJobTime());
if (!valid_ranges.isEmpty()) {
// Generate visual waveform in this background thread
track->waveform().set_channel_count(viewer_node_->audio_params().channel_count());
track->waveform().set_channel_count(viewer_node_->GetAudioParams().channel_count());
foreach (const TimeRange& r, valid_ranges) {
track->waveform().OverwriteSums(waveform_info.waveform, r.in(), r.in() - waveform_info.range.in(), r.length());
@@ -510,7 +509,7 @@ void PreviewAutoCacher::TryRender()
single_frame_render_->Start();
watcher->SetTicket(RenderManager::instance()->RenderFrame(copied_viewer_node_,
color_manager_,
copied_color_manager_,
single_frame_render_->property("time").value<rational>(),
RenderMode::kOffline,
viewer_node_->video_frame_cache(),
@@ -556,7 +555,7 @@ void PreviewAutoCacher::RequeueFrames()
connect(watcher, &RenderTicketWatcher::Finished, this, &PreviewAutoCacher::VideoRendered);
video_tasks_.insert(watcher, hash);
watcher->SetTicket(RenderManager::instance()->RenderFrame(copied_viewer_node_,
color_manager_,
copied_color_manager_,
t,
RenderMode::kOffline,
viewer_node_->video_frame_cache(),
@@ -662,10 +661,11 @@ void PreviewAutoCacher::SetViewerNode(ViewerOutput *viewer_node)
// Find copied viewer node
copied_viewer_node_ = static_cast<ViewerOutput*>(copy_map_.value(viewer_node_));
copied_color_manager_ = static_cast<ColorManager*>(copy_map_.value(viewer_node_->project()->color_manager()));
// Copy parameters
copied_viewer_node_->set_video_params(viewer_node_->video_params());
copied_viewer_node_->set_audio_params(viewer_node_->audio_params());
copied_viewer_node_->SetVideoParams(viewer_node_->GetVideoParams());
copied_viewer_node_->SetAudioParams(viewer_node_->GetAudioParams());
// Add all connections
foreach (Node* node, graph->nodes()) {
+1 -7
View File
@@ -79,11 +79,6 @@ public:
void ClearAudioQueue(bool wait = false);
void ClearVideoDownloadQueue(bool wait = false);
void SetColorManager(ColorManager* manager)
{
color_manager_ = manager;
}
private:
static void GenerateHashes(ViewerOutput *viewer, FrameHashCache *cache, const QVector<rational>& times, qint64 job_time);
@@ -132,6 +127,7 @@ private:
QVector<QueuedJob> graph_update_queue_;
QHash<Node*, Node*> copy_map_;
ViewerOutput* copied_viewer_node_;
ColorManager* copied_color_manager_;
QVector<Node*> created_nodes_;
bool paused_;
@@ -160,8 +156,6 @@ private:
bool ignore_next_mouse_button_;
ColorManager* color_manager_;
QTimer delayed_requeue_timer_;
private slots:
+3 -3
View File
@@ -107,8 +107,8 @@ RenderTicketPtr RenderManager::RenderFrame(ViewerOutput *viewer, ColorManager* c
color_manager,
time,
mode,
viewer->video_params(),
viewer->audio_params(),
viewer->GetVideoParams(),
viewer->GetAudioParams(),
QSize(0, 0),
QMatrix4x4(),
VideoParams::kFormatInvalid,
@@ -158,7 +158,7 @@ RenderTicketPtr RenderManager::RenderFrame(ViewerOutput *viewer, ColorManager* c
RenderTicketPtr RenderManager::RenderAudio(ViewerOutput* viewer, const TimeRange& r, bool generate_waveforms, bool prioritize)
{
return RenderAudio(viewer, r, viewer->audio_params(), generate_waveforms, prioritize);
return RenderAudio(viewer, r, viewer->GetAudioParams(), generate_waveforms, prioritize);
}
RenderTicketPtr RenderManager::RenderAudio(ViewerOutput* viewer, const TimeRange &r, const AudioParams &params, bool generate_waveforms, bool prioritize)
+11 -3
View File
@@ -58,8 +58,12 @@ void RenderProcessor::Run()
const VideoParams& video_params = ticket_->property("vparam").value<VideoParams>();
rational time = ticket_->property("time").value<rational>();
NodeValueTable table = ProcessInput(viewer, ViewerOutput::kTextureInput,
TimeRange(time, time + video_params.time_base()));
NodeValueTable table;
NodeOutput texture_output = viewer->GetConnectedTextureOutput();
if (texture_output.IsValid()) {
table = GenerateTable(texture_output.node(), texture_output.output(),
TimeRange(time, time + video_params.time_base()));
}
TexturePtr texture = table.Get(NodeValue::kTexture).value<TexturePtr>();
@@ -133,7 +137,11 @@ void RenderProcessor::Run()
ViewerOutput* viewer = Node::ValueToPtr<ViewerOutput>(ticket_->property("viewer"));
TimeRange time = ticket_->property("time").value<TimeRange>();
NodeValueTable table = ProcessInput(viewer, ViewerOutput::kSamplesInput, time);
NodeValueTable table;
NodeOutput texture_output = viewer->GetConnectedSampleOutput();
if (texture_output.IsValid()) {
table = GenerateTable(texture_output.node(), texture_output.output(), time);
}
ticket_->Finish(table.Get(NodeValue::kSamples), IsCancelled());
break;