From e1ca5f2f826660f45033fa85e923db5374a42828 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 3 Apr 2020 01:27:40 +1100 Subject: [PATCH] various: removed hardcoded OCIO::ROLE_SCENE_LINEAR to allow for a configurable reference space --- app/dialog/color/colordialog.cpp | 4 ++-- app/dialog/export/export.cpp | 2 +- app/render/backend/opengl/openglproxy.cpp | 4 ++-- app/render/colormanager.cpp | 13 +++++++++++++ app/render/colormanager.h | 6 ++++++ app/widget/viewer/viewerglwidget.cpp | 2 +- 6 files changed, 25 insertions(+), 6 deletions(-) diff --git a/app/dialog/color/colordialog.cpp b/app/dialog/color/colordialog.cpp index 8ad333948..3fe1bd349 100644 --- a/app/dialog/color/colordialog.cpp +++ b/app/dialog/color/colordialog.cpp @@ -79,10 +79,10 @@ Color ColorDialog::GetSelectedColor() const void ColorDialog::ColorSpaceChanged(const QString &input, const QString &display, const QString &view, const QString &look) { - ColorProcessorPtr to_linear_processor_ = ColorProcessor::Create(color_manager_->GetConfig(), input, OCIO::ROLE_SCENE_LINEAR); + ColorProcessorPtr to_linear_processor_ = ColorProcessor::Create(color_manager_->GetConfig(), input, color_manager_->GetReferenceColorSpace()); ColorProcessorPtr to_display = ColorProcessor::Create(color_manager_->GetConfig(), - OCIO::ROLE_SCENE_LINEAR, + color_manager_->GetReferenceColorSpace(), display, view, look); diff --git a/app/dialog/export/export.cpp b/app/dialog/export/export.cpp index 2d7cd1f63..a897871fa 100644 --- a/app/dialog/export/export.cpp +++ b/app/dialog/export/export.cpp @@ -270,7 +270,7 @@ void ExportDialog::accept() SampleFormat::GetConfiguredFormatForMode(render_mode)); ColorProcessorPtr color_processor = ColorProcessor::Create(color_manager_->GetConfig(), - OCIO::ROLE_SCENE_LINEAR, + color_manager_->GetReferenceColorSpace(), video_tab_->CurrentOCIODisplay(), video_tab_->CurrentOCIOView(), video_tab_->CurrentOCIOLook()); diff --git a/app/render/backend/opengl/openglproxy.cpp b/app/render/backend/opengl/openglproxy.cpp index 2083f6695..f8254cb57 100644 --- a/app/render/backend/opengl/openglproxy.cpp +++ b/app/render/backend/opengl/openglproxy.cpp @@ -76,8 +76,8 @@ void OpenGLProxy::FrameToValue(DecoderPtr decoder, StreamPtr stream, const TimeR if (!color_processor) { color_processor = OpenGLColorProcessor::Create(video_stream->footage()->project()->color_manager()->GetConfig(), - video_stream->colorspace(), - OCIO::ROLE_SCENE_LINEAR); + video_stream->colorspace(), + video_stream->footage()->project()->color_manager()->GetReferenceColorSpace()); color_cache_.Add(colorspace_match, color_processor); } diff --git a/app/render/colormanager.cpp b/app/render/colormanager.cpp index 98450a3eb..d9d886fba 100644 --- a/app/render/colormanager.cpp +++ b/app/render/colormanager.cpp @@ -10,6 +10,9 @@ ColorManager::ColorManager() { // Ensures config is set to something config_ = OCIO::GetCurrentConfig(); + + // Default reference space is scene linear + reference_space_ = OCIO::ROLE_SCENE_LINEAR; } OCIO::ConstConfigRcPtr ColorManager::GetConfig() const @@ -108,6 +111,16 @@ void ColorManager::SetDefaultInputColorSpace(const QString &s) default_input_color_space_ = s; } +const QString &ColorManager::GetReferenceColorSpace() const +{ + return reference_space_; +} + +void ColorManager::SetReferenceColorSpace(const QString &s) +{ + reference_space_ = s; +} + QStringList ColorManager::ListAvailableInputColorspaces(OCIO::ConstConfigRcPtr config) { QStringList spaces; diff --git a/app/render/colormanager.h b/app/render/colormanager.h index 9e8fc5979..cb1217148 100644 --- a/app/render/colormanager.h +++ b/app/render/colormanager.h @@ -40,6 +40,10 @@ public: void SetDefaultInputColorSpace(const QString& s); + const QString& GetReferenceColorSpace() const; + + void SetReferenceColorSpace(const QString& s); + static QStringList ListAvailableInputColorspaces(OCIO::ConstConfigRcPtr config); enum OCIOMethod { @@ -70,6 +74,8 @@ private: QString default_input_color_space_; + QString reference_space_; + }; #endif // COLORSERVICE_H diff --git a/app/widget/viewer/viewerglwidget.cpp b/app/widget/viewer/viewerglwidget.cpp index b58c7228d..1d3a202ce 100644 --- a/app/widget/viewer/viewerglwidget.cpp +++ b/app/widget/viewer/viewerglwidget.cpp @@ -371,7 +371,7 @@ void ViewerGLWidget::SetupColorProcessor() try { color_service_ = OpenGLColorProcessor::Create(color_manager_->GetConfig(), - OCIO::ROLE_SCENE_LINEAR, + color_manager_->GetReferenceColorSpace(), ocio_display_, ocio_view_, ocio_look_);