finished merge of viewer and footage
This commit is contained in:
@@ -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_;
|
||||
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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 ¶ms, bool generate_waveforms, bool prioritize)
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user