diff --git a/app/task/export/export.cpp b/app/task/export/export.cpp index 017fc59fb..397a0eda8 100644 --- a/app/task/export/export.cpp +++ b/app/task/export/export.cpp @@ -28,10 +28,14 @@ namespace olive { ExportTask::ExportTask(ViewerOutput *viewer_node, ColorManager* color_manager, const EncodingParams& params) : - color_manager_(color_manager), params_(params) { - set_viewer(viewer_node); + // Create a copy of the project + copier_ = new ProjectCopier(this); + copier_->SetProject(viewer_node->project()); + + set_viewer(copier_->GetCopy(viewer_node)); + color_manager_ = copier_->GetCopy(color_manager); // Adjust video params to have no divider VideoParams vp = viewer_node->GetVideoParams(); diff --git a/app/task/export/export.h b/app/task/export/export.h index 7dcd8cf99..7a367c6b2 100644 --- a/app/task/export/export.h +++ b/app/task/export/export.h @@ -24,6 +24,7 @@ #include "codec/encoder.h" #include "node/output/viewer/viewer.h" #include "render/colorprocessor.h" +#include "render/projectcopier.h" #include "task/render/render.h" #include "task/task.h" @@ -52,6 +53,8 @@ protected: private: bool WriteAudioLoop(const TimeRange &time, const SampleBuffer &samples); + ProjectCopier *copier_; + QHash time_map_; QHash audio_map_;