Commit e629e8bf authored by Julius Künzel's avatar Julius Künzel 💬
Browse files

Merge branch 'release/22.08'

parents cfb0f12c 772a9c03
Pipeline #216944 passed with stage
in 8 minutes and 21 seconds
......@@ -10,7 +10,7 @@
<name>Red white input</name>
</parameter>
<parameter type="constant" name="av.romin" default="0" min="0" max="1" decimals="2">
<name>Red black output input</name>
<name>Red black output</name>
</parameter>
<parameter type="constant" name="av.romax" default="1" min="0" max="1" decimals="2">
<name>Red white output</name>
......@@ -22,7 +22,7 @@
<name>Green white input</name>
</parameter>
<parameter type="constant" name="av.gomin" default="0" min="0" max="1" decimals="2">
<name>Green black output input</name>
<name>Green black output</name>
</parameter>
<parameter type="constant" name="av.gomax" default="1" min="0" max="1" decimals="2">
<name>Green white output</name>
......@@ -34,7 +34,7 @@
<name>Blue white input</name>
</parameter>
<parameter type="constant" name="av.bomin" default="0" min="0" max="1" decimals="2">
<name>Blue black output input</name>
<name>Blue black output</name>
</parameter>
<parameter type="constant" name="av.bomax" default="1" min="0" max="1" decimals="2">
<name>Blue white output</name>
......
......@@ -242,7 +242,25 @@
</ul>
</description>
<releases>
<release version="22.08.0" date="2022-08-18"/>
<release version="22.08.0" date="2022-08-18">
<url type="details">https://kdenlive.org/en/2022/08/kdenlive-22-08-released</url>
<description>
<p>
The 22.08 release brings exciting new features, many improvements and of course a bunch of fixes for a smooth editing experience. Check it out!
</p>
<p>
Some highlights:
</p>
<ul>
<li>Improved audio recording: countdown timer, ability to control the input level, live waveform while recording.</li>
<li>Global subtitle styling: adjust font, color, size, position etc.</li>
<li>Importing of .vtt (Web Video Text Tracks) and .sbv (YouTube) subtitle files.</li>
<li>Export guides as chapters for YouTube, etc.</li>
<li>Integration with Glaxnimate vector graphics animation program.</li>
<li>Added support of LOTTIE and RAWR animations and AVIF, HEIF, HEIC and JPEG XL image formats.</li>
</ul>
</description>
</release>
<release version="22.04.3" date="2022-07-07"/>
<release version="22.04.2" date="2022-06-09"/>
<release version="22.04.1" date="2022-05-12"/>
......
......@@ -4857,7 +4857,7 @@ void Bin::checkProfile(const std::shared_ptr<Mlt::Producer> &producer)
if (*clipProfile.get() == *projectProfile.get()) {
if (KdenliveSettings::default_profile().isEmpty()) {
// Confirm default project format
KdenliveSettings::setDefault_profile(pCore->getCurrentProfilePath());
KdenliveSettings::setDefault_profile(pCore->getCurrentProfile()->path());
}
} else {
// Profiles do not match, propose profile adjustment
......
......@@ -416,13 +416,7 @@ std::unique_ptr<Mlt::Repository> &Core::getMltRepository()
std::unique_ptr<ProfileModel> &Core::getCurrentProfile() const
{
if (m_projectProfile == nullptr) {
m_projectProfile = std::make_unique<ProfileModel>(m_currentProfile.toStdString().c_str());
m_projectProfile->set_explicit(true);
updateMonitorProfile();
}
return m_projectProfile;
return ProfileRepository::get()->getProfile(m_currentProfile);
}
Mlt::Profile &Core::getMonitorProfile()
......@@ -432,10 +426,15 @@ Mlt::Profile &Core::getMonitorProfile()
Mlt::Profile *Core::getProjectProfile()
{
return &getCurrentProfile()->profile();
if (!m_projectProfile) {
m_projectProfile = std::make_unique<Mlt::Profile>(m_currentProfile.toStdString().c_str());
m_projectProfile->set_explicit(true);
updateMonitorProfile();
}
return m_projectProfile.get();
}
void Core::updateMonitorProfile() const
void Core::updateMonitorProfile()
{
m_monitorProfile.set_colorspace(m_projectProfile->colorspace());
m_monitorProfile.set_frame_rate(m_projectProfile->frame_rate_num(), m_projectProfile->frame_rate_den());
......@@ -455,28 +454,28 @@ const QString &Core::getCurrentProfilePath() const
bool Core::setCurrentProfile(const QString &profilePath)
{
const auto &profileFromRepository = ProfileRepository::get()->getProfile(profilePath);
if (m_currentProfile == profilePath) {
// no change required, ensure timecode has correct fps
m_timecode.setFormat(profileFromRepository->fps());
m_timecode.setFormat(getCurrentProfile()->fps());
return true;
}
if (ProfileRepository::get()->profileExists(profilePath)) {
m_currentProfile = profilePath;
m_thumbProfile.reset();
const auto &currentProfile = getCurrentProfile();
currentProfile->profile().set_colorspace(profileFromRepository->colorspace());
currentProfile->profile().set_frame_rate(profileFromRepository->frame_rate_num(), profileFromRepository->frame_rate_den());
currentProfile->profile().set_height(profileFromRepository->height());
currentProfile->profile().set_progressive(profileFromRepository->progressive());
currentProfile->profile().set_sample_aspect(profileFromRepository->sample_aspect_num(), profileFromRepository->sample_aspect_den());
currentProfile->profile().set_display_aspect(profileFromRepository->display_aspect_num(), profileFromRepository->display_aspect_den());
currentProfile->profile().set_width(profileFromRepository->width());
currentProfile->profile().get_profile()->description = qstrdup(profileFromRepository->description().toUtf8().constData());
currentProfile->setPath(profilePath);
if (m_projectProfile) {
m_projectProfile->set_colorspace(getCurrentProfile()->colorspace());
m_projectProfile->set_frame_rate(getCurrentProfile()->frame_rate_num(), getCurrentProfile()->frame_rate_den());
m_projectProfile->set_height(getCurrentProfile()->height());
m_projectProfile->set_progressive(getCurrentProfile()->progressive());
m_projectProfile->set_sample_aspect(getCurrentProfile()->sample_aspect_num(), getCurrentProfile()->sample_aspect_den());
m_projectProfile->set_display_aspect(getCurrentProfile()->display_aspect_num(), getCurrentProfile()->display_aspect_den());
m_projectProfile->set_width(getCurrentProfile()->width());
m_projectProfile->get_profile()->description = qstrdup(getCurrentProfile()->description().toUtf8().constData());
m_projectProfile->set_explicit(true);
updateMonitorProfile();
}
// inform render widget
m_timecode.setFormat(profileFromRepository->fps());
m_timecode.setFormat(getCurrentProfile()->fps());
profileChanged();
if (m_guiConstructed) {
emit m_mainWindow->updateRenderWidgetProfile();
......
......@@ -309,9 +309,9 @@ private:
Timecode m_timecode;
std::unique_ptr<Mlt::Profile> m_thumbProfile;
/** @brief Mlt profile used in the consumer 's monitors */
mutable Mlt::Profile m_monitorProfile;
Mlt::Profile m_monitorProfile;
/** @brief Mlt profile used to build the project's clips */
mutable std::unique_ptr<ProfileModel> m_projectProfile;
std::unique_ptr<Mlt::Profile> m_projectProfile;
bool m_guiConstructed = false;
/** @brief Check that the profile is valid (width is a multiple of 8 and height a multiple of 2 */
void checkProfileValidity();
......@@ -343,7 +343,7 @@ public slots:
/** @brief Open the proxies test dialog. */
void testProxies();
/** @brief Refresh the monitor profile when project profile changes. */
void updateMonitorProfile() const;
void updateMonitorProfile();
/** @brief Add a new Bin Widget. */
void addBin(const QString &id = QString());
/** @brief Transcode a bin clip video. */
......@@ -376,7 +376,7 @@ signals:
/** @brief Add a time remap effect to clip and show keyframes dialog */
void remapClip(int cid);
/** @brief A monitor property changed, check if we need to reset */
void monitorProfileUpdated() const;
void monitorProfileUpdated();
/** @brief Color theme changed, process refresh */
void updatePalette();
/** @brief Emitted when a clip is resized (to handle clip monitor inserted zones) */
......
......@@ -260,7 +260,7 @@ void KdenliveSettingsDialog::initProjectPage()
m_configProject.profile_box->setLayout(vbox);
m_configProject.profile_box->setTitle(i18n("Select the Default Profile (preset)"));
// Select profile
m_pw->loadProfile(KdenliveSettings::default_profile().isEmpty() ? pCore->getCurrentProfilePath() : KdenliveSettings::default_profile());
m_pw->loadProfile(KdenliveSettings::default_profile().isEmpty() ? pCore->getCurrentProfile()->path() : KdenliveSettings::default_profile());
connect(m_pw, &ProfileWidget::profileChanged, this, &KdenliveSettingsDialog::slotDialogModified);
m_configProject.projecturl->setMode(KFile::Directory);
m_configProject.projecturl->setUrl(QUrl::fromLocalFile(KdenliveSettings::defaultprojectfolder()));
......@@ -1605,7 +1605,7 @@ void KdenliveSettingsDialog::slotReloadBlackMagic()
void KdenliveSettingsDialog::checkProfile()
{
m_pw->loadProfile(KdenliveSettings::default_profile().isEmpty() ? pCore->getCurrentProfilePath() : KdenliveSettings::default_profile());
m_pw->loadProfile(KdenliveSettings::default_profile().isEmpty() ? pCore->getCurrentProfile()->path() : KdenliveSettings::default_profile());
}
void KdenliveSettingsDialog::slotReloadShuttleDevices()
......
......@@ -1383,7 +1383,7 @@ QMap<QString, QString> KdenliveDoc::documentProperties()
QDir folder(m_projectFolder);
m_documentProperties.insert(QStringLiteral("storagefolder"), folder.absoluteFilePath(m_documentProperties.value(QStringLiteral("documentid"))));
}
m_documentProperties.insert(QStringLiteral("profile"), pCore->getCurrentProfilePath());
m_documentProperties.insert(QStringLiteral("profile"), pCore->getCurrentProfile()->path());
if (m_documentProperties.contains(QStringLiteral("decimalPoint"))) {
// "kdenlive:docproperties.decimalPoint" was removed in document version 100
m_documentProperties.remove(QStringLiteral("decimalPoint"));
......
......@@ -215,7 +215,7 @@ void MainWindow::init(const QString &mltPath)
m_commandStack = new QUndoGroup();
// If using a custom profile, make sure the file exists or fallback to default
QString currentProfilePath = pCore->getCurrentProfilePath();
QString currentProfilePath = pCore->getCurrentProfile()->path();
if (currentProfilePath.startsWith(QLatin1Char('/')) && !QFile::exists(currentProfilePath)) {
KMessageBox::error(this, i18n("Cannot find your default profile, switching to ATSC 1080p 25"));
pCore->setCurrentProfile(QStringLiteral("atsc_1080p_25"));
......@@ -2086,7 +2086,7 @@ void MainWindow::slotEditProjectSettings()
}
}
}
if (pCore->getCurrentProfilePath() != profile || project->profileChanged(profile)) {
if (pCore->getCurrentProfile()->path() != profile || project->profileChanged(profile)) {
if (!qFuzzyCompare(pCore->getCurrentProfile()->fps() - ProfileRepository::get()->getProfile(profile)->fps(), 0.)) {
// Fps was changed, we save the project to an xml file with updated profile and reload project
// Check if blank project
......
......@@ -138,11 +138,6 @@ QString ProfileModel::path() const
return m_path;
}
void ProfileModel::setPath(const QString path)
{
m_path = path;
}
mlt_profile ProfileModel::get_profile() const
{
return m_profile->get_profile();
......
......@@ -47,7 +47,6 @@ public:
int colorspace() const override;
mlt_profile get_profile() const;
QString path() const override;
void setPath(const QString path);
void adjustDimensions() override{};
......
......@@ -111,7 +111,7 @@ ProjectSettings::ProjectSettings(KdenliveDoc *doc, QMap<QString, QString> metada
QString currentProf;
if (doc) {
currentProf = pCore->getCurrentProfilePath();
currentProf = pCore->getCurrentProfile()->path();
enable_proxy->setChecked(doc->useProxy());
generate_proxy->setChecked(doc->getDocumentProperty(QStringLiteral("generateproxy")).toInt() != 0);
proxy_minsize->setValue(doc->getDocumentProperty(QStringLiteral("proxyminsize")).toInt());
......@@ -162,7 +162,6 @@ ProjectSettings::ProjectSettings(KdenliveDoc *doc, QMap<QString, QString> metada
}
// Select profile
qDebug() << "/// LOADING PROFILE: " << currentProf;
m_pw->loadProfile(currentProf);
proxy_minsize->setEnabled(generate_proxy->isChecked());
......@@ -515,7 +514,7 @@ void ProjectSettings::accept()
}
}
}
if (!m_newProject && selectedProfile() != pCore->getCurrentProfilePath()) {
if (!m_newProject && selectedProfile() != pCore->getCurrentProfile()->path()) {
if (KMessageBox::warningContinueCancel(
this,
i18n("Changing the profile of your project cannot be undone.\nIt is recommended to save your project before attempting this operation "
......
......@@ -147,7 +147,7 @@ void ProjectManager::newFile(bool showProjectSettings)
{
QString profileName = KdenliveSettings::default_profile();
if (profileName.isEmpty()) {
profileName = pCore->getCurrentProfilePath();
profileName = pCore->getCurrentProfile()->path();
}
newFile(profileName, showProjectSettings);
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment