colormanager: implement default config
This commit is contained in:
@@ -6,6 +6,7 @@ ts/*.qm
|
||||
docs
|
||||
history
|
||||
build/
|
||||
.DS_Store
|
||||
|
||||
.vscode
|
||||
|
||||
|
||||
@@ -18,8 +18,6 @@ set(OLIVE_SOURCES
|
||||
${OLIVE_SOURCES}
|
||||
audio/audiomanager.h
|
||||
audio/audiomanager.cpp
|
||||
audio/bufferaverage.h
|
||||
audio/bufferaverage.cpp
|
||||
audio/outputdeviceproxy.h
|
||||
audio/outputdeviceproxy.cpp
|
||||
audio/outputmanager.h
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
/***
|
||||
|
||||
Olive - Non-Linear Video Editor
|
||||
Copyright (C) 2019 Olive Team
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
***/
|
||||
|
||||
#include "bufferaverage.h"
|
||||
|
||||
OLIVE_NAMESPACE_ENTER
|
||||
|
||||
QVector<double> AudioBufferAverage::ProcessAverages(const char *data, int length, int channel_count)
|
||||
{
|
||||
// FIXME: Assumes float and stereo
|
||||
const float* samples = reinterpret_cast<const float*>(data);
|
||||
int sample_count = static_cast<int>(length / static_cast<int>(sizeof(float)));
|
||||
|
||||
// Create array of samples to send
|
||||
QVector<double> averages(channel_count);
|
||||
averages.fill(0);
|
||||
|
||||
// Add all samples together
|
||||
for (int i=0;i<sample_count;i++) {
|
||||
averages[i%channel_count] = qMax(averages[i%channel_count], static_cast<double>(qAbs(samples[i])));
|
||||
}
|
||||
|
||||
return averages;
|
||||
}
|
||||
|
||||
OLIVE_NAMESPACE_EXIT
|
||||
@@ -1,40 +0,0 @@
|
||||
/***
|
||||
|
||||
Olive - Non-Linear Video Editor
|
||||
Copyright (C) 2019 Olive Team
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
***/
|
||||
|
||||
#ifndef AUDIOBUFFERAVERAGE_H
|
||||
#define AUDIOBUFFERAVERAGE_H
|
||||
|
||||
#include <QVector>
|
||||
|
||||
#include "common/define.h"
|
||||
|
||||
OLIVE_NAMESPACE_ENTER
|
||||
|
||||
class AudioBufferAverage
|
||||
{
|
||||
public:
|
||||
AudioBufferAverage() = default;
|
||||
|
||||
static QVector<double> ProcessAverages(const char* data, int length, int channel_count);
|
||||
};
|
||||
|
||||
OLIVE_NAMESPACE_EXIT
|
||||
|
||||
#endif // AUDIOBUFFERAVERAGE_H
|
||||
@@ -21,7 +21,6 @@
|
||||
#include "outputdeviceproxy.h"
|
||||
|
||||
#include "audiomanager.h"
|
||||
#include "bufferaverage.h"
|
||||
|
||||
OLIVE_NAMESPACE_ENTER
|
||||
|
||||
|
||||
@@ -25,8 +25,6 @@
|
||||
|
||||
#include <QFile>
|
||||
|
||||
#include "bufferaverage.h"
|
||||
|
||||
OLIVE_NAMESPACE_ENTER
|
||||
|
||||
AudioOutputManager::AudioOutputManager(QObject *parent) :
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
|
||||
OLIVE_NAMESPACE_ENTER
|
||||
|
||||
const SampleFormat::Format SampleFormat::kInternalFormat = SAMPLE_FMT_S32;
|
||||
|
||||
QString SampleFormat::GetSampleFormatName(const SampleFormat::Format &f)
|
||||
{
|
||||
switch (f) {
|
||||
@@ -47,15 +49,4 @@ QString SampleFormat::GetSampleFormatName(const SampleFormat::Format &f)
|
||||
return tr("Invalid");
|
||||
}
|
||||
|
||||
SampleFormat::Format SampleFormat::GetConfiguredFormatForMode(RenderMode::Mode /*mode*/)
|
||||
{
|
||||
//return static_cast<SampleFormat::Format>(Core::GetPreferenceForRenderMode(mode, QStringLiteral("SampleFormat")).toInt());
|
||||
return SAMPLE_FMT_FLT;
|
||||
}
|
||||
|
||||
void SampleFormat::SetConfiguredFormatForMode(RenderMode::Mode mode, SampleFormat::Format format)
|
||||
{
|
||||
Core::SetPreferenceForRenderMode(mode, QStringLiteral("SampleFormat"), format);
|
||||
}
|
||||
|
||||
OLIVE_NAMESPACE_EXIT
|
||||
|
||||
@@ -47,10 +47,9 @@ public:
|
||||
SAMPLE_FMT_COUNT
|
||||
};
|
||||
|
||||
static QString GetSampleFormatName(const Format& f);
|
||||
static const Format kInternalFormat;
|
||||
|
||||
static Format GetConfiguredFormatForMode(RenderMode::Mode mode);
|
||||
static void SetConfiguredFormatForMode(RenderMode::Mode mode, Format format);
|
||||
static QString GetSampleFormatName(const Format& f);
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -645,7 +645,7 @@ void FFmpegDecoder::Index(const QAtomicInt* cancelled)
|
||||
|
||||
QString FFmpegDecoder::GetIndexFilename()
|
||||
{
|
||||
return GetMediaIndexFilename(GetUniqueFileIdentifier(stream()->footage()->filename()))
|
||||
return FileFunctions::GetMediaIndexFilename(FileFunctions::GetUniqueFileIdentifier(stream()->footage()->filename()))
|
||||
.append(QString::number(stream()->index()));
|
||||
}
|
||||
|
||||
|
||||
@@ -37,10 +37,12 @@
|
||||
#include <execinfo.h>
|
||||
#endif
|
||||
|
||||
#include "common/filefunctions.h"
|
||||
|
||||
OLIVE_NAMESPACE_ENTER
|
||||
|
||||
void crash_handler(int sig) {
|
||||
QString log_path = QDir(QStandardPaths::writableLocation(QStandardPaths::TempLocation)).filePath(QStringLiteral("olive_crash"));
|
||||
QString log_path = QDir(FileFunctions::GetTempPath()).filePath(QStringLiteral("olive_crash"));
|
||||
QFile output(log_path);
|
||||
|
||||
output.open(QFile::WriteOnly);
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
OLIVE_NAMESPACE_ENTER
|
||||
|
||||
QString GetUniqueFileIdentifier(const QString &filename)
|
||||
QString FileFunctions::GetUniqueFileIdentifier(const QString &filename)
|
||||
{
|
||||
QFileInfo info(filename);
|
||||
|
||||
@@ -50,7 +50,7 @@ QString GetUniqueFileIdentifier(const QString &filename)
|
||||
return QString(result.toHex());
|
||||
}
|
||||
|
||||
QString GetMediaIndexLocation()
|
||||
QString FileFunctions::GetMediaIndexLocation()
|
||||
{
|
||||
QDir local_appdata_dir(Config::Current()["DiskCachePath"].toString());
|
||||
|
||||
@@ -62,12 +62,12 @@ QString GetMediaIndexLocation()
|
||||
return media_index_dir.absolutePath();
|
||||
}
|
||||
|
||||
QString GetMediaIndexFilename(const QString &filename)
|
||||
QString FileFunctions::GetMediaIndexFilename(const QString &filename)
|
||||
{
|
||||
return QDir(GetMediaIndexLocation()).filePath(filename);
|
||||
}
|
||||
|
||||
QString GetMediaCacheLocation()
|
||||
QString FileFunctions::GetMediaCacheLocation()
|
||||
{
|
||||
QDir local_appdata_dir(Config::Current()["DiskCachePath"].toString());
|
||||
|
||||
@@ -79,7 +79,7 @@ QString GetMediaCacheLocation()
|
||||
return media_cache_dir.absolutePath();
|
||||
}
|
||||
|
||||
QString GetConfigurationLocation()
|
||||
QString FileFunctions::GetConfigurationLocation()
|
||||
{
|
||||
if (IsPortable()) {
|
||||
return GetApplicationPath();
|
||||
@@ -88,14 +88,62 @@ QString GetConfigurationLocation()
|
||||
}
|
||||
}
|
||||
|
||||
bool IsPortable()
|
||||
bool FileFunctions::IsPortable()
|
||||
{
|
||||
return QFileInfo::exists(QDir(GetApplicationPath()).filePath("portable"));
|
||||
}
|
||||
|
||||
QString GetApplicationPath()
|
||||
QString FileFunctions::GetApplicationPath()
|
||||
{
|
||||
return QCoreApplication::applicationDirPath();
|
||||
}
|
||||
|
||||
QString FileFunctions::GetTempPath()
|
||||
{
|
||||
QString temp_path = QDir(QDir(QStandardPaths::writableLocation(QStandardPaths::TempLocation))
|
||||
.filePath(QCoreApplication::organizationName()))
|
||||
.filePath(QCoreApplication::applicationName());
|
||||
|
||||
// Ensure it exists
|
||||
QDir(temp_path).mkpath(".");
|
||||
|
||||
return temp_path;
|
||||
}
|
||||
|
||||
void FileFunctions::CopyDirectory(const QString &source, const QString &dest)
|
||||
{
|
||||
QDir d(source);
|
||||
|
||||
if (!d.exists()) {
|
||||
qCritical() << "Failed to copy directory, source" << source << "didn't exist";
|
||||
return;
|
||||
}
|
||||
|
||||
QDir dest_dir(dest);
|
||||
|
||||
if (!dest_dir.mkpath(QStringLiteral("."))) {
|
||||
qCritical() << "Failed to create destination directory" << dest;
|
||||
return;
|
||||
}
|
||||
|
||||
QFileInfoList l = d.entryInfoList();
|
||||
|
||||
foreach (const QFileInfo& info, l) {
|
||||
// QDir::NoDotAndDotDot continues to not work, so we have to check manually
|
||||
if (info.fileName() == QStringLiteral(".") || info.fileName() == QStringLiteral("..")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
QString dest_file_path = dest_dir.filePath(info.fileName());
|
||||
|
||||
if (info.isDir()) {
|
||||
// Copy dir
|
||||
CopyDirectory(info.absoluteFilePath(), dest_file_path);
|
||||
} else {
|
||||
// Copy file
|
||||
QFile::copy(info.absoluteFilePath(), dest_file_path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
OLIVE_NAMESPACE_EXIT
|
||||
|
||||
@@ -27,19 +27,37 @@
|
||||
|
||||
OLIVE_NAMESPACE_ENTER
|
||||
|
||||
bool IsPortable();
|
||||
/**
|
||||
* @brief A collection of static file and directory functions
|
||||
*/
|
||||
class FileFunctions {
|
||||
public:
|
||||
/**
|
||||
* @brief Returns true if the application is running in portable mode
|
||||
*
|
||||
* In portable mode, any persistent configuration files should be made in a path relative to the application rather
|
||||
* than in the user's home folder.
|
||||
*/
|
||||
static bool IsPortable();
|
||||
|
||||
QString GetUniqueFileIdentifier(const QString& filename);
|
||||
static QString GetUniqueFileIdentifier(const QString& filename);
|
||||
|
||||
QString GetMediaIndexLocation();
|
||||
static QString GetMediaIndexLocation();
|
||||
|
||||
QString GetMediaIndexFilename(const QString& filename);
|
||||
static QString GetMediaIndexFilename(const QString& filename);
|
||||
|
||||
QString GetMediaCacheLocation();
|
||||
static QString GetMediaCacheLocation();
|
||||
|
||||
static QString GetConfigurationLocation();
|
||||
|
||||
static QString GetApplicationPath();
|
||||
|
||||
static QString GetTempPath();
|
||||
|
||||
static void CopyDirectory(const QString& source, const QString& dest);
|
||||
};
|
||||
|
||||
QString GetConfigurationLocation();
|
||||
|
||||
QString GetApplicationPath();
|
||||
|
||||
OLIVE_NAMESPACE_EXIT
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ Config::Config()
|
||||
|
||||
QString Config::GetConfigFilePath()
|
||||
{
|
||||
return QDir(GetConfigurationLocation()).filePath(QStringLiteral("config.xml"));
|
||||
return QDir(FileFunctions::GetConfigurationLocation()).filePath(QStringLiteral("config.xml"));
|
||||
}
|
||||
|
||||
Config &Config::Current()
|
||||
@@ -101,8 +101,6 @@ void Config::SetDefaults()
|
||||
// Online/offline settings
|
||||
config_map_["OnlinePixelFormat"] = PixelFormat::PIX_FMT_RGBA32F;
|
||||
config_map_["OfflinePixelFormat"] = PixelFormat::PIX_FMT_RGBA16F;
|
||||
config_map_["OnlineSampleFormat"] = SampleFormat::SAMPLE_FMT_FLT;
|
||||
config_map_["OfflineSampleFormat"] = SampleFormat::SAMPLE_FMT_FLT;
|
||||
config_map_["OnlineOCIOMethod"] = ColorManager::kOCIOAccurate;
|
||||
config_map_["OfflineOCIOMethod"] = ColorManager::kOCIOFast;
|
||||
}
|
||||
|
||||
+18
-15
@@ -116,6 +116,9 @@ void Core::Start()
|
||||
// Set up the index manager for renderers
|
||||
IndexManager::CreateInstance();
|
||||
|
||||
// Set up color manager's default config
|
||||
ColorManager::SetUpDefaultConfig();
|
||||
|
||||
// Reset config (Config sets to default on construction already, but we do it again here as a workaround that fixes
|
||||
// the fact that some of the config paths set by default rely on the app name having been set (in main())
|
||||
Config::Current().SetDefaults();
|
||||
@@ -123,20 +126,6 @@ void Core::Start()
|
||||
// Load application config
|
||||
Config::Load();
|
||||
|
||||
// Load recently opened projects list
|
||||
{
|
||||
QFile recent_projects_file(GetRecentProjectsFilePath());
|
||||
if (recent_projects_file.open(QFile::ReadOnly | QFile::Text)) {
|
||||
QTextStream ts(&recent_projects_file);
|
||||
|
||||
while (!ts.atEnd()) {
|
||||
recent_projects_.append(ts.readLine());
|
||||
}
|
||||
|
||||
recent_projects_file.close();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Start GUI (FIXME CLI mode)
|
||||
@@ -555,6 +544,20 @@ void Core::StartGUI(bool full_screen)
|
||||
// Start autorecovery timer using the config value as its interval
|
||||
SetAutorecoveryInterval(Config::Current()["AutorecoveryInterval"].toInt());
|
||||
autorecovery_timer_.start();
|
||||
|
||||
// Load recently opened projects list
|
||||
{
|
||||
QFile recent_projects_file(GetRecentProjectsFilePath());
|
||||
if (recent_projects_file.open(QFile::ReadOnly | QFile::Text)) {
|
||||
QTextStream ts(&recent_projects_file);
|
||||
|
||||
while (!ts.atEnd()) {
|
||||
recent_projects_.append(ts.readLine());
|
||||
}
|
||||
|
||||
recent_projects_file.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Core::SaveProjectInternal(ProjectPtr project)
|
||||
@@ -783,7 +786,7 @@ QString Core::GetProjectFilter()
|
||||
|
||||
QString Core::GetRecentProjectsFilePath()
|
||||
{
|
||||
return QDir(GetConfigurationLocation()).filePath(QStringLiteral("recent"));
|
||||
return QDir(FileFunctions::GetConfigurationLocation()).filePath(QStringLiteral("recent"));
|
||||
}
|
||||
|
||||
bool Core::SaveProject(ProjectPtr p)
|
||||
|
||||
@@ -308,7 +308,7 @@ void ExportDialog::accept()
|
||||
|
||||
AudioRenderingParams audio_render_params(audio_tab_->sample_rate_combobox()->currentData().toInt(),
|
||||
audio_tab_->channel_layout_combobox()->currentData().toULongLong(),
|
||||
SampleFormat::GetConfiguredFormatForMode(render_mode));
|
||||
SampleFormat::kInternalFormat);
|
||||
|
||||
ColorProcessorPtr color_processor = ColorProcessor::Create(color_manager_,
|
||||
color_manager_->GetReferenceColorSpace(),
|
||||
|
||||
@@ -55,7 +55,7 @@ VideoStreamProperties::VideoStreamProperties(ImageStreamPtr stream) :
|
||||
video_color_space_->addItem(colorspace);
|
||||
}
|
||||
|
||||
video_color_space_->setCurrentText(stream_->colorspace());
|
||||
video_color_space_->setCurrentText(stream_->colorspace(false));
|
||||
|
||||
video_layout->addWidget(video_color_space_, row, 1);
|
||||
|
||||
|
||||
@@ -50,13 +50,11 @@ PreferencesQualityTab::PreferencesQualityTab()
|
||||
|
||||
offline_group_ = new PreferencesQualityGroup(tr("Offline Quality"));
|
||||
offline_group_->bit_depth_combobox()->setCurrentIndex(PixelFormat::instance()->GetConfiguredFormatForMode(RenderMode::kOffline));
|
||||
offline_group_->sample_fmt_combobox()->setCurrentIndex(SampleFormat::GetConfiguredFormatForMode(RenderMode::kOffline));
|
||||
offline_group_->ocio_method()->setCurrentIndex(ColorManager::GetOCIOMethodForMode(RenderMode::kOffline));
|
||||
quality_stack_->addWidget(offline_group_);
|
||||
|
||||
online_group_ = new PreferencesQualityGroup(tr("Online Quality"));
|
||||
online_group_->bit_depth_combobox()->setCurrentIndex(PixelFormat::instance()->GetConfiguredFormatForMode(RenderMode::kOnline));
|
||||
online_group_->sample_fmt_combobox()->setCurrentIndex(SampleFormat::GetConfiguredFormatForMode(RenderMode::kOnline));
|
||||
online_group_->ocio_method()->setCurrentIndex(ColorManager::GetOCIOMethodForMode(RenderMode::kOnline));
|
||||
quality_stack_->addWidget(online_group_);
|
||||
|
||||
@@ -71,8 +69,6 @@ void PreferencesQualityTab::Accept()
|
||||
ColorManager::SetOCIOMethodForMode(RenderMode::kOnline, static_cast<ColorManager::OCIOMethod>(online_group_->ocio_method()->currentIndex()));
|
||||
PixelFormat::instance()->SetConfiguredFormatForMode(RenderMode::kOffline, static_cast<PixelFormat::Format>(offline_group_->bit_depth_combobox()->currentData().toInt()));
|
||||
PixelFormat::instance()->SetConfiguredFormatForMode(RenderMode::kOnline, static_cast<PixelFormat::Format>(online_group_->bit_depth_combobox()->currentData().toInt()));
|
||||
SampleFormat::SetConfiguredFormatForMode(RenderMode::kOffline, static_cast<SampleFormat::Format>(offline_group_->sample_fmt_combobox()->currentData().toInt()));
|
||||
SampleFormat::SetConfiguredFormatForMode(RenderMode::kOnline, static_cast<SampleFormat::Format>(online_group_->sample_fmt_combobox()->currentData().toInt()));
|
||||
}
|
||||
|
||||
PreferencesQualityGroup::PreferencesQualityGroup(const QString &title, QWidget *parent) :
|
||||
@@ -113,24 +109,6 @@ PreferencesQualityGroup::PreferencesQualityGroup(const QString &title, QWidget *
|
||||
ocio_method_->addItem(tr("Accurate"));
|
||||
video_layout->addWidget(ocio_method_, row, 1);
|
||||
|
||||
row = 0;
|
||||
|
||||
QGroupBox* audio_group = new QGroupBox(tr("Audio"));
|
||||
|
||||
QGridLayout* audio_layout = new QGridLayout(audio_group);
|
||||
quality_outer_layout->addWidget(audio_group);
|
||||
|
||||
audio_layout->addWidget(new QLabel(tr("Sample Format:")), row, 0);
|
||||
|
||||
sample_fmt_combobox_ = new QComboBox();
|
||||
|
||||
for (int i=0;i<SampleFormat::SAMPLE_FMT_COUNT;i++) {
|
||||
sample_fmt_combobox_->addItem(SampleFormat::GetSampleFormatName(static_cast<SampleFormat::Format>(i)),
|
||||
i);
|
||||
}
|
||||
|
||||
audio_layout->addWidget(sample_fmt_combobox_, row, 1);
|
||||
|
||||
quality_outer_layout->addStretch();
|
||||
}
|
||||
|
||||
@@ -144,9 +122,4 @@ QComboBox *PreferencesQualityGroup::ocio_method()
|
||||
return ocio_method_;
|
||||
}
|
||||
|
||||
QComboBox *PreferencesQualityGroup::sample_fmt_combobox()
|
||||
{
|
||||
return sample_fmt_combobox_;
|
||||
}
|
||||
|
||||
OLIVE_NAMESPACE_EXIT
|
||||
|
||||
@@ -40,15 +40,11 @@ public:
|
||||
|
||||
QComboBox* ocio_method();
|
||||
|
||||
QComboBox* sample_fmt_combobox();
|
||||
|
||||
private:
|
||||
QComboBox* bit_depth_combobox_;
|
||||
|
||||
QComboBox* ocio_method_;
|
||||
|
||||
QComboBox* sample_fmt_combobox_;
|
||||
|
||||
};
|
||||
|
||||
class PreferencesQualityTab : public PreferencesTab
|
||||
|
||||
@@ -54,6 +54,7 @@ ProjectPropertiesDialog::ProjectPropertiesDialog(Project* p, QWidget *parent) :
|
||||
color_layout->addWidget(new QLabel(tr("OpenColorIO Configuration:")), row, 0);
|
||||
|
||||
ocio_filename_ = new QLineEdit();
|
||||
ocio_filename_->setPlaceholderText(tr("(default)"));
|
||||
color_layout->addWidget(ocio_filename_, row, 1);
|
||||
|
||||
row++;
|
||||
@@ -86,7 +87,7 @@ ProjectPropertiesDialog::ProjectPropertiesDialog(Project* p, QWidget *parent) :
|
||||
}
|
||||
|
||||
ocio_filename_->setText(working_project_->color_manager()->GetConfigFilename());
|
||||
ListPossibleInputSpaces(working_project_->color_manager()->GetConfigFilename());
|
||||
ListPossibleInputSpaces(working_project_->color_manager()->GetConfig());
|
||||
}
|
||||
|
||||
void ProjectPropertiesDialog::accept()
|
||||
@@ -120,12 +121,12 @@ bool ProjectPropertiesDialog::VerifyOCIOConfig(const QString &fn)
|
||||
}
|
||||
}
|
||||
|
||||
void ProjectPropertiesDialog::ListPossibleInputSpaces(const QString& fn)
|
||||
void ProjectPropertiesDialog::ListPossibleInputSpaces(OCIO::ConstConfigRcPtr config)
|
||||
{
|
||||
try {
|
||||
default_input_colorspace_->clear();
|
||||
|
||||
QStringList input_cs = ColorManager::ListAvailableInputColorspaces(OCIO::Config::CreateFromFile(fn.toUtf8()));
|
||||
QStringList input_cs = ColorManager::ListAvailableInputColorspaces(config);
|
||||
|
||||
foreach (QString cs, input_cs) {
|
||||
default_input_colorspace_->addItem(cs);
|
||||
@@ -145,7 +146,7 @@ void ProjectPropertiesDialog::BrowseForOCIOConfig()
|
||||
if (VerifyOCIOConfig(fn)) {
|
||||
ocio_filename_->setText(fn);
|
||||
|
||||
ListPossibleInputSpaces(fn);
|
||||
ListPossibleInputSpaces(OCIO::Config::CreateFromFile(fn.toUtf8()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ public slots:
|
||||
private:
|
||||
bool VerifyOCIOConfig(const QString& fn);
|
||||
|
||||
void ListPossibleInputSpaces(const QString &fn);
|
||||
void ListPossibleInputSpaces(OpenColorIO::v1::ConstConfigRcPtr config);
|
||||
|
||||
Project* working_project_;
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
add_subdirectory(backend)
|
||||
add_subdirectory(ocioconf)
|
||||
|
||||
set(OLIVE_SOURCES
|
||||
${OLIVE_SOURCES}
|
||||
@@ -37,3 +38,8 @@ set(OLIVE_SOURCES
|
||||
render/videoparams.cpp
|
||||
PARENT_SCOPE
|
||||
)
|
||||
|
||||
set(OLIVE_RESOURCES
|
||||
${OLIVE_RESOURCES}
|
||||
PARENT_SCOPE
|
||||
)
|
||||
|
||||
@@ -111,7 +111,7 @@ QString AudioRenderBackend::CachePathName() const
|
||||
{
|
||||
QString cache_fn = cache_id();
|
||||
cache_fn.append(".pcm");
|
||||
return QDir(GetMediaCacheLocation()).filePath(cache_fn);
|
||||
return QDir(FileFunctions::GetMediaCacheLocation()).filePath(cache_fn);
|
||||
}
|
||||
|
||||
bool AudioRenderBackend::CanRender()
|
||||
|
||||
@@ -152,7 +152,7 @@ QString VideoRenderFrameCache::CachePathName(const QByteArray& hash, const Pixel
|
||||
ext = QStringLiteral("exr");
|
||||
}
|
||||
|
||||
QDir cache_dir(QDir(GetMediaCacheLocation()).filePath(QString(hash.left(1).toHex())));
|
||||
QDir cache_dir(QDir(FileFunctions::GetMediaCacheLocation()).filePath(QString(hash.left(1).toHex())));
|
||||
cache_dir.mkpath(".");
|
||||
|
||||
QString filename = QStringLiteral("%1.%2").arg(QString(hash.mid(1).toHex()), ext);
|
||||
|
||||
@@ -20,19 +20,26 @@
|
||||
|
||||
#include "colormanager.h"
|
||||
|
||||
#include <QDir>
|
||||
#include <QFloat16>
|
||||
|
||||
#include "common/define.h"
|
||||
#include "common/filefunctions.h"
|
||||
#include "config/config.h"
|
||||
#include "core.h"
|
||||
|
||||
OLIVE_NAMESPACE_ENTER
|
||||
|
||||
QString ColorManager::default_config_;
|
||||
|
||||
ColorManager::ColorManager()
|
||||
{
|
||||
// Ensures config is set to something
|
||||
config_ = OCIO::GetCurrentConfig();
|
||||
|
||||
// Default input space is first in config
|
||||
default_input_color_space_ = ListAvailableInputColorspaces().first();
|
||||
|
||||
// Default reference space is scene linear
|
||||
reference_space_ = OCIO::ROLE_SCENE_LINEAR;
|
||||
}
|
||||
@@ -47,6 +54,19 @@ const QString &ColorManager::GetConfigFilename() const
|
||||
return config_filename_;
|
||||
}
|
||||
|
||||
void ColorManager::SetUpDefaultConfig()
|
||||
{
|
||||
// Kind of hacky, but it'll work
|
||||
QString dir = QDir(FileFunctions::GetTempPath()).filePath(QStringLiteral("ocioconf"));
|
||||
|
||||
FileFunctions::CopyDirectory(QStringLiteral(":/ocioconf"),
|
||||
dir);
|
||||
|
||||
default_config_ = QDir(dir).filePath(QStringLiteral("config.ocio"));
|
||||
|
||||
OCIO::SetCurrentConfig(OCIO::Config::CreateFromFile(default_config_.toUtf8()));
|
||||
}
|
||||
|
||||
void ColorManager::SetConfig(const QString &filename)
|
||||
{
|
||||
if (filename != config_filename_) {
|
||||
@@ -63,7 +83,7 @@ void ColorManager::SetConfigInternal(const QString &filename)
|
||||
OCIO::ConstConfigRcPtr cfg;
|
||||
|
||||
if (config_filename_.isEmpty()) {
|
||||
cfg = OCIO::Config::CreateFromEnv();
|
||||
cfg = OCIO::GetCurrentConfig();
|
||||
} else {
|
||||
cfg = OCIO::Config::CreateFromFile(filename.toUtf8());
|
||||
}
|
||||
|
||||
@@ -38,6 +38,8 @@ public:
|
||||
|
||||
const QString& GetConfigFilename() const;
|
||||
|
||||
static void SetUpDefaultConfig();
|
||||
|
||||
void SetConfig(const QString& filename);
|
||||
|
||||
void SetConfigAndDefaultInput(const QString& filename, const QString& s);
|
||||
@@ -108,6 +110,8 @@ private:
|
||||
|
||||
QString reference_space_;
|
||||
|
||||
static QString default_config_;
|
||||
|
||||
};
|
||||
|
||||
OLIVE_NAMESPACE_EXIT
|
||||
|
||||
@@ -171,7 +171,7 @@ bool DiskManager::ClearDiskCache(bool quick_delete)
|
||||
lock_.lock();
|
||||
|
||||
if (quick_delete) {
|
||||
deleted_files = QDir(GetMediaCacheLocation()).removeRecursively();
|
||||
deleted_files = QDir(FileFunctions::GetMediaCacheLocation()).removeRecursively();
|
||||
|
||||
disk_data_.clear();
|
||||
} else {
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
# Olive - Non-Linear Video Editor
|
||||
# Copyright (C) 2019 Olive Team
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
set(OLIVE_RESOURCES
|
||||
${OLIVE_RESOURCES}
|
||||
render/ocioconf/ocioconf.qrc
|
||||
PARENT_SCOPE
|
||||
)
|
||||
Executable
+346
@@ -0,0 +1,346 @@
|
||||
# Film Emulsion-like configuration for
|
||||
# Blender. Crafted by Troy James Sobotka with
|
||||
# special thanks, feedback, and knowledge from Guillermo
|
||||
# Espertino, Claudio Rocha, Bassam Kurdali, Eugenio
|
||||
# Pignataro, Henri Hebeisen, Jason Clarke,
|
||||
# Haarm-Peter Duiker, Thomas Mansencal, Andrew
|
||||
# Price, Nick Shaw, and Timothy
|
||||
# Lottes.
|
||||
|
||||
ocio_profile_version: 1
|
||||
|
||||
search_path: "luts:looks"
|
||||
strictparsing: true
|
||||
luma: [0.2126, 0.7152, 0.0722]
|
||||
|
||||
description: A filmlike dynamic range encoding set for Blender
|
||||
|
||||
roles:
|
||||
default: Linear
|
||||
reference: Linear
|
||||
scene_linear: Linear
|
||||
data: Non-Colour Data
|
||||
compositing_log: Filmic Log Encoding
|
||||
color_timing: Filmic Log Encoding
|
||||
default_byte: sRGB OETF
|
||||
default_float: Linear
|
||||
default_sequencer: sRGB OETF
|
||||
color_picking: sRGB OETF
|
||||
texture_paint: sRGB OETF
|
||||
matte_paint: Filmic Log Encoding
|
||||
|
||||
displays:
|
||||
sRGB:
|
||||
- !<View> {name: sRGB OETF, colorspace: sRGB OETF}
|
||||
- !<View> {name: Non-Colour Data, colorspace: Non-Colour Data}
|
||||
- !<View> {name: Linear Raw, colorspace: Linear}
|
||||
- !<View> {name: Filmic Log Encoding Base, colorspace: Filmic Log Encoding}
|
||||
BT.1886:
|
||||
- !<View> {name: BT.1886 EOTF, colorspace: BT.1886 EOTF}
|
||||
- !<View> {name: Non-Colour Data, colorspace: Non-Colour Data}
|
||||
- !<View> {name: Linear Raw, colorspace: Linear}
|
||||
- !<View> {name: Filmic Log Encoding Base, colorspace: BT.1886 Filmic Log Encoding}
|
||||
Apple Display P3:
|
||||
- !<View> {name: sRGB OETF, colorspace: AppleP3 sRGB OETF}
|
||||
- !<View> {name: Non-Colour Data, colorspace: Non-Colour Data}
|
||||
- !<View> {name: Linear Raw, colorspace: Linear}
|
||||
- !<View> {name: Filmic Log Encoding Base, colorspace: AppleP3 Filmic Log Encoding}
|
||||
# VRay users should uncomment the Filmic views below as VRay doesn't permit Looks
|
||||
# - !<View> {name: Filmic Very High Contrast, colorspace: Filmic Log Encoding, look: +Very High Contrast}
|
||||
# - !<View> {name: Filmic High Contrast, colorspace: Filmic Log Encoding, look: +High Contrast}
|
||||
# - !<View> {name: Filmic Medium High Contrast, colorspace: Filmic Log Encoding, look: +Medium High Contrast}
|
||||
# - !<View> {name: Filmic Very Low Contrast, colorspace: Filmic Log Encoding, look: +Very Low Contrast}
|
||||
# - !<View> {name: Filmic Medium Low Contrast, colorspace: Filmic Log Encoding, look: +Medium Low Contrast}
|
||||
# - !<View> {name: Filmic Low Contrast, colorspace: Filmic Log Encoding, look: +Low Contrast}
|
||||
# - !<View> {name: Filmic Base Contrast, colorspace: Filmic Log Encoding, look: +Base Contrast}
|
||||
# - !<View> {name: Filmic False Colour, colorspace: Filmic Log Encoding, look: +False Colour}
|
||||
# - !<View> {name: Debug, colorspace: Debug}
|
||||
|
||||
active_displays: [sRGB, BT.1886, Apple Display P3, None]
|
||||
#active_views: [Filmic Log Encoding Base, sRGB OETF, Non-Colour Data, Linear Raw, No View]
|
||||
|
||||
colorspaces:
|
||||
- !<ColorSpace>
|
||||
name: Linear
|
||||
family:
|
||||
equalitygroup:
|
||||
bitdepth: 32f
|
||||
description: |
|
||||
ITU BT.709 primaries based scene referred linear space.
|
||||
isdata: false
|
||||
allocation: lg2
|
||||
allocationvars: [-12.473931188, 12.526068812]
|
||||
|
||||
# - !<ColorSpace>
|
||||
# name: Debug
|
||||
# family:
|
||||
# equalitygroup:
|
||||
# bitdepth: 32f
|
||||
# description: |
|
||||
# Debug purposes only. Do not use.
|
||||
# isdata: false
|
||||
# allocation: lg2
|
||||
# allocationvars: [-12.473931188, 12.526068812]
|
||||
# from_reference: !<GroupTransform>
|
||||
# children:
|
||||
# - !<AllocationTransform> {allocation: lg2, vars: [-12.473931188, 12.526068812]} #[-12.473931188, 7.526068812]}
|
||||
# - !<AllocationTransform> {allocation: uniform, vars: [0, 0.66]} #0.825
|
||||
|
||||
- !<ColorSpace>
|
||||
name: Filmic Log Encoding
|
||||
family:
|
||||
equalitygroup:
|
||||
bitdepth: 32f
|
||||
description: |
|
||||
Log based filmic shaper with 16.5 stops of latitude, and 25 stops of dynamic range.
|
||||
isdata: false
|
||||
allocation: lg2
|
||||
allocationvars: [-12.473931188, 12.526068812]
|
||||
from_reference: !<GroupTransform>
|
||||
children:
|
||||
- !<AllocationTransform> {allocation: lg2, vars: [-12.473931188, 12.526068812]}
|
||||
- !<FileTransform> {src: desat65cube.spi3d, interpolation: best}
|
||||
- !<AllocationTransform> {allocation: uniform, vars: [0, 0.66]}
|
||||
to_reference: !<AllocationTransform> {allocation: lg2, vars: [-12.473931188, 4.026068812], direction: inverse}
|
||||
|
||||
# - !<ColorSpace>
|
||||
# name: Desat Log Encoding
|
||||
# family:
|
||||
# equalitygroup:
|
||||
# bitdepth: 32f
|
||||
# description: |
|
||||
# Desaturation transform for proper crosstalk. Not intended for use.
|
||||
# isdata: false
|
||||
# allocation: lg2
|
||||
# allocationvars: [-12.473931188, 12.526068812]
|
||||
# to_reference: !<AllocationTransform> {allocation: lg2, vars: [-12.473931188, 12.526068812], direction: inverse}
|
||||
|
||||
- !<ColorSpace>
|
||||
name: sRGB OETF
|
||||
family:
|
||||
equalitygroup:
|
||||
bitdepth: 32f
|
||||
description: |
|
||||
sRGB specification display referred Optical-Electro Transfer Function.
|
||||
isdata: false
|
||||
allocation: uniform
|
||||
allocationvars: [0.0, 1.0]
|
||||
to_reference: !<FileTransform> {src: sRGB_OETF_to_Linear.spi1d, interpolation: linear}
|
||||
|
||||
- !<ColorSpace>
|
||||
name: Apple DCI-P3 D65
|
||||
family: display
|
||||
equalitygroup: ""
|
||||
bitdepth: 32f
|
||||
isdata: false
|
||||
allocation: lg2
|
||||
allocationvars: [-12.4739, 12.5261]
|
||||
to_reference: !<GroupTransform>
|
||||
children:
|
||||
- !<MatrixTransform> {matrix: [0.515121, 0.291977, 0.157104, 0, 0.241196, 0.692245, 0.0665741, 0, -0.00105286, 0.0418854, 0.784073, 0, 0, 0, 0, 1]}
|
||||
- !<MatrixTransform> {matrix: [1.04788, 0.0229187, -0.0502014, 0, 0.0295868, 0.990479, -0.0170593, 0, -0.00923157, 0.0150757, 0.751678, 0, 0, 0, 0, 1], direction: inverse}
|
||||
- !<MatrixTransform> {matrix: [0.412391, 0.357584, 0.180481, 0, 0.212639, 0.715169, 0.0721923, 0, 0.0193308, 0.119195, 0.950532, 0, 0, 0, 0, 1], direction: inverse}
|
||||
|
||||
- !<ColorSpace>
|
||||
name: AppleP3 sRGB OETF
|
||||
family:
|
||||
equalitygroup:
|
||||
bitdepth: 32f
|
||||
description: |
|
||||
sRGB specification display referred Optical-Electro Transfer Function with Apple DCI-P3 primaries.
|
||||
isdata: false
|
||||
allocation: uniform
|
||||
allocationvars: [0.0, 1.0]
|
||||
to_reference: !<GroupTransform>
|
||||
children:
|
||||
- !<FileTransform> {src: sRGB_OETF_to_Linear.spi1d, interpolation: linear}
|
||||
- !<ColorSpaceTransform> {src: Apple DCI-P3 D65, dst: Linear}
|
||||
|
||||
- !<ColorSpace>
|
||||
name: BT.1886 EOTF
|
||||
family:
|
||||
equalitygroup:
|
||||
bitdepth: 32f
|
||||
description: |
|
||||
BT.1886 specification display referred Electro-Optical Transfer Function with REC.709 primaries.
|
||||
isdata: false
|
||||
allocation: uniform
|
||||
allocationvars: [0.0, 1.0]
|
||||
to_reference: !<ExponentTransform> {value: [2.4, 2.4, 2.4, 1.0]}
|
||||
|
||||
- !<ColorSpace>
|
||||
name: AppleP3 Filmic Log Encoding
|
||||
family:
|
||||
equalitygroup:
|
||||
bitdepth: 32f
|
||||
description: |
|
||||
Log based filmic shaper with 16.5 stops of latitude, and 25 stops of dynamic range with Apple P3 primaries.
|
||||
isdata: false
|
||||
allocation: lg2
|
||||
allocationvars: [-12.473931188, 12.526068812]
|
||||
from_reference: !<GroupTransform>
|
||||
children:
|
||||
- !<ColorSpaceTransform> {src: Linear, dst: Filmic Log Encoding}
|
||||
- !<ExponentTransform> {value: [2.2, 2.2, 2.2, 1.0]}
|
||||
- !<ColorSpaceTransform> {src: Linear, dst: Apple DCI-P3 D65}
|
||||
- !<ExponentTransform> {value: [2.2, 2.2, 2.2, 1.0], direction: inverse}
|
||||
to_reference: !<GroupTransform>
|
||||
children:
|
||||
- !<ExponentTransform> {value: [2.2, 2.2, 2.2, 1.0]}
|
||||
- !<ColorSpaceTransform> {src: Apple DCI-P3 D65, dst: Linear}
|
||||
- !<ExponentTransform> {value: [2.2, 2.2, 2.2, 1.0], direction: inverse}
|
||||
- !<AllocationTransform> {allocation: lg2, vars: [-12.473931188, 4.026068812], direction: inverse}
|
||||
|
||||
- !<ColorSpace>
|
||||
name: BT.1886 Filmic Log Encoding
|
||||
family:
|
||||
equalitygroup:
|
||||
bitdepth: 32f
|
||||
description: |
|
||||
Log based filmic shaper with 16.5 stops of latitude, and 25 stops of dynamic range with REC.709 primaries.
|
||||
isdata: false
|
||||
allocation: lg2
|
||||
allocationvars: [-12.473931188, 12.526068812]
|
||||
from_reference: !<GroupTransform>
|
||||
children:
|
||||
- !<ColorSpaceTransform> {src: Linear, dst: Filmic Log Encoding}
|
||||
- !<ExponentTransform> {value: [2.2, 2.2, 2.2, 1.0]}
|
||||
- !<ExponentTransform> {value: [2.4, 2.4, 2.4, 1.0], direction: inverse}
|
||||
to_reference: !<GroupTransform>
|
||||
children:
|
||||
- !<ExponentTransform> {value: [2.4, 2.4, 2.4, 1.0]}
|
||||
- !<ExponentTransform> {value: [2.2, 2.2, 2.2, 1.0], direction: inverse}
|
||||
- !<AllocationTransform> {allocation: lg2, vars: [-12.473931188, 4.026068812], direction: inverse}
|
||||
|
||||
- !<ColorSpace>
|
||||
name: Fuji F-Log OETF
|
||||
family: Camera Footage
|
||||
equalitygroup: ""
|
||||
bitdepth: 32f
|
||||
description: |
|
||||
Fuji F-Log transfer function
|
||||
isdata: false
|
||||
allocation: uniform
|
||||
allocationvars: [0, 1]
|
||||
to_reference: !<FileTransform> {src: F-Log_to_Linear.spi1d, interpolation: linear}
|
||||
|
||||
- !<ColorSpace>
|
||||
name: Fuji F-Log F-Gamut
|
||||
family: ""
|
||||
equalitygroup: ""
|
||||
bitdepth: 32f
|
||||
description: |
|
||||
Fuji F-Log / F-Gamut
|
||||
isdata: false
|
||||
allocation: uniform
|
||||
allocationvars: [0, 1]
|
||||
to_reference: !<GroupTransform>
|
||||
children:
|
||||
- !<ColorSpaceTransform> {src: Fuji F-Log OETF, dst: Linear}
|
||||
- !<MatrixTransform> {matrix: [0.636958048000, 0.144616904000, 0.168880975000, 0.000000000000, 0.262700212000, 0.677998072000, 0.059301716500, 0.000000000000, 4.994106570E-17, 0.028072693000, 1.060985060000, 0.000000000000, 0.000000000000, 0.000000000000, 0.000000000000, 1.000000000000]}
|
||||
- !<MatrixTransform> {matrix: [0.412390800000, 0.357584340000, 0.180480790000, 0.000000000000, 0.212639010000, 0.715168680000, 0.072192320000, 0.000000000000, 0.019330820000, 0.119194780000, 0.950532150000, 0.000000000000, 0.000000000000, 0.000000000000, 0.000000000000, 1.000000000000], direction: inverse}
|
||||
|
||||
- !<ColorSpace>
|
||||
name: Panasonic V-Log V-Gamut
|
||||
family: Camera Footage
|
||||
equalitygroup: ""
|
||||
bitdepth: 32f
|
||||
description: |
|
||||
Panasonic V-Log / V-Gamut
|
||||
isdata: false
|
||||
allocation: uniform
|
||||
allocationvars: [0, 1]
|
||||
to_reference: !<GroupTransform>
|
||||
children:
|
||||
- !<FileTransform> {src: V-Log_to_linear.spi1d, interpolation: linear}
|
||||
- !<MatrixTransform> {matrix: [1.806576, -0.695697, -0.110879, 0, -0.170090 , 1.305955, -0.135865, 0, -0.025206, -0.154468, 1.179674, 0, 0, 0, 0, 1]}
|
||||
|
||||
- !<ColorSpace>
|
||||
name: Arri Wide Gamut / LogC EI 800
|
||||
family: Camera Footage
|
||||
equalitygroup: ""
|
||||
bitdepth: 32f
|
||||
description: |
|
||||
Panasonic V-Log / V-Gamut
|
||||
isdata: false
|
||||
allocation: uniform
|
||||
allocationvars: [0, 1]
|
||||
to_reference: !<GroupTransform>
|
||||
children:
|
||||
- !<FileTransform> {src: V3_LogC_800_to_linear.spi1d, interpolation: linear}
|
||||
- !<MatrixTransform> {matrix: [1.617523, -0.537287, -0.080237, 0, -0.070573, 1.334613, -0.26404, 0, -0.021102, -0.226954, 1.248056, 0, 0, 0, 0, 1]}
|
||||
|
||||
- !<ColorSpace>
|
||||
name: Arri Wide Gamut / LogC EI 400
|
||||
family: Camera Footage
|
||||
equalitygroup: ""
|
||||
bitdepth: 32f
|
||||
description: |
|
||||
Panasonic V-Log / V-Gamut
|
||||
isdata: false
|
||||
allocation: uniform
|
||||
allocationvars: [0, 1]
|
||||
to_reference: !<GroupTransform>
|
||||
children:
|
||||
- !<FileTransform> {src: V3_LogC_400_to_linear.spi1d, interpolation: linear}
|
||||
- !<MatrixTransform> {matrix: [1.617523, -0.537287, -0.080237, 0, -0.070573, 1.334613, -0.26404, 0, -0.021102, -0.226954, 1.248056, 0, 0, 0, 0, 1]}
|
||||
|
||||
- !<ColorSpace>
|
||||
name: Non-Colour Data
|
||||
family:
|
||||
description: |
|
||||
Transform to flag data as non-colour, strictly data, and avoid OCIO colour specific transforms.
|
||||
equalitygroup:
|
||||
bitdepth: 32f
|
||||
isdata: true
|
||||
allocation: uniform
|
||||
allocationvars: [0, 1]
|
||||
|
||||
looks:
|
||||
- !<Look>
|
||||
name: Greyscale
|
||||
process_space: Filmic Log Encoding
|
||||
transform: !<MatrixTransform> {matrix: [0.2126729, 0.7151521, 0.0721750, 0, 0.2126729, 0.7151521, 0.0721750, 0, 0.2126729, 0.7151521, 0.0721750, 0, 0, 0, 0, 1]}
|
||||
|
||||
- !<Look>
|
||||
name: False Colour
|
||||
process_space: Filmic Log Encoding
|
||||
transform: !<GroupTransform>
|
||||
children:
|
||||
- !<MatrixTransform> {matrix: [0.2126729, 0.7151521, 0.0721750, 0, 0.2126729, 0.7151521, 0.0721750, 0, 0.2126729, 0.7151521, 0.0721750, 0, 0, 0, 0, 1]}
|
||||
- !<FileTransform> {src: Filmic_False_Colour.spi3d, interpolation: best}
|
||||
|
||||
- !<Look>
|
||||
name: Very High Contrast
|
||||
process_space: Filmic Log Encoding
|
||||
transform: !<FileTransform> {src: Filmic_to_1.20_1-00.spi1d, interpolation: linear}
|
||||
|
||||
- !<Look>
|
||||
name: High Contrast
|
||||
process_space: Filmic Log Encoding
|
||||
transform: !<FileTransform> {src: Filmic_to_0.99_1-0075.spi1d, interpolation: linear}
|
||||
|
||||
- !<Look>
|
||||
name: Medium High Contrast
|
||||
process_space: Filmic Log Encoding
|
||||
transform: !<FileTransform> {src: Filmic_to_0-85_1-011.spi1d, interpolation: best}
|
||||
|
||||
- !<Look>
|
||||
name: Base Contrast
|
||||
process_space: Filmic Log Encoding
|
||||
transform: !<FileTransform> {src: Filmic_to_0-70_1-03.spi1d, interpolation: linear}
|
||||
|
||||
- !<Look>
|
||||
name: Medium Low Contrast
|
||||
process_space: Filmic Log Encoding
|
||||
transform: !<FileTransform> {src: Filmic_to_0-60_1-04.spi1d, interpolation: linear}
|
||||
|
||||
- !<Look>
|
||||
name: Low Contrast
|
||||
process_space: Filmic Log Encoding
|
||||
transform: !<FileTransform> {src: Filmic_to_0-48_1-09.spi1d, interpolation: linear}
|
||||
|
||||
- !<Look>
|
||||
name: Very Low Contrast
|
||||
process_space: Filmic Log Encoding
|
||||
transform: !<FileTransform> {src: Filmic_to_0-35_1-30.spi1d, interpolation: linear}
|
||||
+274628
File diff suppressed because it is too large
Load Diff
+4102
File diff suppressed because it is too large
Load Diff
+4102
File diff suppressed because it is too large
Load Diff
+4102
File diff suppressed because it is too large
Load Diff
+4102
File diff suppressed because it is too large
Load Diff
+4102
File diff suppressed because it is too large
Load Diff
+4102
File diff suppressed because it is too large
Load Diff
+4102
File diff suppressed because it is too large
Load Diff
+4102
File diff suppressed because it is too large
Load Diff
+4102
File diff suppressed because it is too large
Load Diff
+65542
File diff suppressed because it is too large
Load Diff
+65542
File diff suppressed because it is too large
Load Diff
Executable
+274628
File diff suppressed because it is too large
Load Diff
+4102
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,19 @@
|
||||
<RCC>
|
||||
<qresource prefix="/ocioconf">
|
||||
<file>config.ocio</file>
|
||||
<file>looks/Filmic_False_Colour.spi3d</file>
|
||||
<file>looks/Filmic_to_0-35_1-30.spi1d</file>
|
||||
<file>looks/Filmic_to_0-48_1-09.spi1d</file>
|
||||
<file>looks/Filmic_to_0-60_1-04.spi1d</file>
|
||||
<file>looks/Filmic_to_0-70_1-03.spi1d</file>
|
||||
<file>looks/Filmic_to_0-85_1-011.spi1d</file>
|
||||
<file>looks/Filmic_to_0.99_1-0075.spi1d</file>
|
||||
<file>looks/Filmic_to_1.20_1-00.spi1d</file>
|
||||
<file>luts/F-Log_to_Linear.spi1d</file>
|
||||
<file>luts/V-Log_to_linear.spi1d</file>
|
||||
<file>luts/V3_LogC_400_to_linear.spi1d</file>
|
||||
<file>luts/V3_LogC_800_to_linear.spi1d</file>
|
||||
<file>luts/desat65cube.spi3d</file>
|
||||
<file>luts/sRGB_OETF_to_Linear.spi1d</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
@@ -112,23 +112,6 @@ void AudioMonitor::SetUpdateLoop(bool e)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void AudioMonitor::SetValues(QVector<double> values)
|
||||
{
|
||||
values_ = values;
|
||||
|
||||
if (values_.size() != peaked_.size()) {
|
||||
peaked_.resize(values_.size());
|
||||
peaked_.fill(false);
|
||||
}
|
||||
|
||||
clear_timer_.stop();
|
||||
clear_timer_.start();
|
||||
|
||||
update();
|
||||
}
|
||||
*/
|
||||
|
||||
void AudioMonitor::paintGL()
|
||||
{
|
||||
QPainter p(this);
|
||||
|
||||
@@ -520,7 +520,7 @@ void ViewerWidget::UpdateRendererParameters()
|
||||
}
|
||||
|
||||
AudioRenderingParams aparam(GetConnectedNode()->audio_params(),
|
||||
SampleFormat::GetConfiguredFormatForMode(render_mode));
|
||||
SampleFormat::kInternalFormat);
|
||||
|
||||
if (audio_renderer_->params() != aparam) {
|
||||
audio_renderer_->SetParameters(aparam);
|
||||
|
||||
Reference in New Issue
Block a user