From 67c082885c7a6b6cd428ba8568bf5ee8b2b357a2 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Mon, 24 Sep 2012 14:00:09 +0200 Subject: [PATCH] Cleanup & fix melt job (like video stab) not keeping original clip profile --- src/clipstabilize.cpp | 2 ++ src/cliptranscode.cpp | 2 ++ src/docclipbase.cpp | 2 +- src/kdenlivesettings.kcfg | 2 +- src/projectlist.cpp | 12 ++++++------ src/projecttree/meltjob.cpp | 19 +++++++++++-------- src/widgets/clipstabilize_ui.ui | 21 +++++++++++++++++---- src/widgets/cutjobdialog_ui.ui | 2 +- 8 files changed, 41 insertions(+), 21 deletions(-) diff --git a/src/clipstabilize.cpp b/src/clipstabilize.cpp index 6114707d..30a265d0 100644 --- a/src/clipstabilize.cpp +++ b/src/clipstabilize.cpp @@ -43,6 +43,7 @@ ClipStabilize::ClipStabilize(const QString &dest, int count, const QString &filt setupUi(this); setWindowTitle(i18n("Stabilize Clip")); auto_add->setText(i18np("Add clip to project", "Add clips to project", count)); + auto_add->setChecked(KdenliveSettings::add_new_clip()); QPalette p = palette(); KColorScheme scheme(p.currentColorGroup(), KColorScheme::View, KSharedConfig::openConfig(KdenliveSettings::colortheme())); @@ -132,6 +133,7 @@ ClipStabilize::~ClipStabilize() /*if (m_stabilizeProcess.state() != QProcess::NotRunning) { m_stabilizeProcess.close(); }*/ + KdenliveSettings::setAdd_new_clip(auto_add->isChecked()); } QStringList ClipStabilize::params() diff --git a/src/cliptranscode.cpp b/src/cliptranscode.cpp index 42a3a6ca..c91ec598 100644 --- a/src/cliptranscode.cpp +++ b/src/cliptranscode.cpp @@ -43,6 +43,7 @@ ClipTranscode::ClipTranscode(KUrl::List urls, const QString ¶ms, const QStri log_text->setHidden(true); setWindowTitle(i18n("Transcode Clip")); auto_add->setText(i18np("Add clip to project", "Add clips to project", m_urls.count())); + auto_add->setChecked(KdenliveSettings::add_new_clip()); if (m_urls.count() == 1) { QString fileName = m_urls.at(0).path(); //.section('.', 0, -1); @@ -101,6 +102,7 @@ ClipTranscode::ClipTranscode(KUrl::List urls, const QString ¶ms, const QStri ClipTranscode::~ClipTranscode() { + KdenliveSettings::setAdd_new_clip(auto_add->isChecked()); if (m_transcodeProcess.state() != QProcess::NotRunning) { m_transcodeProcess.close(); } diff --git a/src/docclipbase.cpp b/src/docclipbase.cpp index 876dadcd..9b55d6b1 100644 --- a/src/docclipbase.cpp +++ b/src/docclipbase.cpp @@ -44,8 +44,8 @@ DocClipBase::DocClipBase(ClipManager *clipManager, QDomElement xml, const QStrin m_audioFrameCache(), m_refcount(0), m_baseTrackProducers(), - m_audioTrackProducers(), m_videoTrackProducers(), + m_audioTrackProducers(), m_snapMarkers(QList < CommentedTime >()), m_duration(), m_thumbProd(NULL), diff --git a/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg index 16a0b8b5..ac858ebc 100644 --- a/src/kdenlivesettings.kcfg +++ b/src/kdenlivesettings.kcfg @@ -811,7 +811,7 @@ true - + true diff --git a/src/projectlist.cpp b/src/projectlist.cpp index abe5881b..e0ff8d2a 100644 --- a/src/projectlist.cpp +++ b/src/projectlist.cpp @@ -2760,7 +2760,7 @@ void ProjectList::slotCutClipJob(const QString &id, QPoint zone) Ui::CutJobDialog_UI ui; ui.setupUi(d); ui.extra_params->setVisible(false); - ui.add_clip->setChecked(KdenliveSettings::add_clip_cut()); + ui.add_clip->setChecked(KdenliveSettings::add_new_clip()); ui.file_url->fileDialog()->setOperationMode(KFileDialog::Saving); ui.extra_params->setMaximumHeight(QFontMetrics(font()).lineSpacing() * 5); ui.file_url->setUrl(KUrl(dest)); @@ -2793,11 +2793,11 @@ void ProjectList::slotCutClipJob(const QString &id, QPoint zone) } } QString extraParams = ui.extra_params->toPlainText().simplified(); - KdenliveSettings::setAdd_clip_cut(ui.add_clip->isChecked()); + KdenliveSettings::setAdd_new_clip(ui.add_clip->isChecked()); delete d; QStringList jobParams; - jobParams << dest << item->clipUrl().path() << timeIn << timeOut << QString::number(duration) << QString::number(KdenliveSettings::add_clip_cut()); + jobParams << dest << item->clipUrl().path() << timeIn << timeOut << QString::number(duration) << QString::number(KdenliveSettings::add_new_clip()); if (!extraParams.isEmpty()) jobParams << extraParams; CutClipJob *job = new CutClipJob(item->clipType(), id, jobParams); if (job->isExclusive() && hasPendingJob(item, job->jobType)) { @@ -2841,7 +2841,7 @@ void ProjectList::slotTranscodeClipJob(const QString &condition, QString params, ui.extra_params->setVisible(false); d->adjustSize(); ui.button_more->setIcon(KIcon("configure")); - ui.add_clip->setChecked(KdenliveSettings::add_clip_cut()); + ui.add_clip->setChecked(KdenliveSettings::add_new_clip()); ui.extra_params->setPlainText(params.simplified().section(' ', 0, -2)); QString mess = desc; mess.append(' ' + i18np("(%1 clip)", "(%1 clips)", ids.count())); @@ -2851,7 +2851,7 @@ void ProjectList::slotTranscodeClipJob(const QString &condition, QString params, return; } params = ui.extra_params->toPlainText().simplified(); - KdenliveSettings::setAdd_clip_cut(ui.add_clip->isChecked()); + KdenliveSettings::setAdd_new_clip(ui.add_clip->isChecked()); int index = 0; foreach(const QString &id, ids) { ProjectItem *item = getItemById(id); @@ -2870,7 +2870,7 @@ void ProjectList::slotTranscodeClipJob(const QString &condition, QString params, int max = item->clipMaxDuration(); QString duration = QString::number(max); jobParams << duration; - jobParams << QString::number(KdenliveSettings::add_clip_cut()); + jobParams << QString::number(KdenliveSettings::add_new_clip()); jobParams << params; CutClipJob *job = new CutClipJob(item->clipType(), id, jobParams); if (job->isExclusive() && hasPendingJob(item, job->jobType)) { diff --git a/src/projecttree/meltjob.cpp b/src/projecttree/meltjob.cpp index 6bc6a198..605ad342 100644 --- a/src/projecttree/meltjob.cpp +++ b/src/projecttree/meltjob.cpp @@ -91,22 +91,25 @@ void MeltJob::startJob() setStatus(JOBCRASHED); return; } - - m_profile = m_producer->profile(); - - Mlt::Producer *prod; + Mlt::Producer *prod ; + m_profile = new Mlt::Profile; + m_profile->set_explicit(false); if (out == -1) { - prod = new Mlt::Producer(*m_profile, m_url.toUtf8().constData()); + prod = new Mlt::Producer(*m_profile, m_url.toUtf8().constData()); } - else - prod = m_producer->cut(in, out); + else { + Mlt::Producer *tmp = new Mlt::Producer(*m_profile, m_url.toUtf8().constData()); + prod = tmp->cut(in, out); + delete tmp; + } + m_profile->from_producer(*prod); + m_profile->set_explicit(true); QStringList list = producerParams.split(' ', QString::SkipEmptyParts); foreach(const QString &data, list) { if (data.contains('=')) { prod->set(data.section('=', 0, 0).toUtf8().constData(), data.section('=', 1, 1).toUtf8().constData()); } } - if (consumer.contains(":")) { m_consumer = new Mlt::Consumer(*m_profile, consumer.section(':', 0, 0).toUtf8().constData(), consumer.section(':', 1).toUtf8().constData()); } diff --git a/src/widgets/clipstabilize_ui.ui b/src/widgets/clipstabilize_ui.ui index 7510b0e5..10d8e191 100644 --- a/src/widgets/clipstabilize_ui.ui +++ b/src/widgets/clipstabilize_ui.ui @@ -7,7 +7,7 @@ 0 0 290 - 198 + 122 @@ -41,7 +41,7 @@ - + Qt::Horizontal @@ -51,14 +51,14 @@ - + Add clip to project - + Qt::Horizontal @@ -71,6 +71,19 @@ + + + + Qt::Vertical + + + + 20 + 40 + + + + diff --git a/src/widgets/cutjobdialog_ui.ui b/src/widgets/cutjobdialog_ui.ui index 3652fbc8..e61ccffb 100644 --- a/src/widgets/cutjobdialog_ui.ui +++ b/src/widgets/cutjobdialog_ui.ui @@ -58,7 +58,7 @@ - Add new clip to project + Add clip to project -- 2.39.2