From 0a64c6204cf544c944fd46316ff6328bc11c1a87 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Wed, 7 Nov 2012 22:19:37 +0100 Subject: [PATCH] Speed up automatic scene detection (still very slow but better) --- src/projectlist.cpp | 6 ++++-- src/projecttree/meltjob.cpp | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/projectlist.cpp b/src/projectlist.cpp index a00d6f40..a8e11723 100644 --- a/src/projectlist.cpp +++ b/src/projectlist.cpp @@ -3508,14 +3508,16 @@ void ProjectList::startClipFilterJob(const QString &filterName, const QString &c // Producer params jobParams << QString(); // Filter params, use a smaller region of the image to speed up operation - jobParams << filterName << "bounding=\"25%x25%:15%x15\" shot_change_list=0 denoise=0"; + // In fact, it's faster to rescale whole image than using part of it (bounding=\"25%x25%:15%x15\") + jobParams << filterName << "shot_change_list=0 denoise=0"; // Consumer - jobParams << "null" << "all=1 terminate_on_pause=1 real_time=-1"; + jobParams << "null" << "all=1 terminate_on_pause=1 real_time=-1 rescale=nearest deinterlace_method=onefield top_field_first=-1"; QMap extraParams; extraParams.insert("key", "shot_change_list"); extraParams.insert("projecttreefilter", "1"); QString keyword("%count"); extraParams.insert("resultmessage", i18n("Found %1 scenes.", keyword)); + extraParams.insert("resize_profile", "160"); if (ui.store_data->isChecked()) { // We want to save result as clip metadata extraParams.insert("storedata", "1"); diff --git a/src/projecttree/meltjob.cpp b/src/projecttree/meltjob.cpp index 1bc16c69..8efb1e5b 100644 --- a/src/projecttree/meltjob.cpp +++ b/src/projecttree/meltjob.cpp @@ -96,6 +96,10 @@ void MeltJob::startJob() else { m_profile = new Mlt::Profile(KdenliveSettings::current_profile().toUtf8().constData()); } + if (m_extra.contains("resize_profile")) { + m_profile->set_height(m_extra.value("resize_profile").toInt()); + m_profile->set_width(m_profile->height() * m_profile->sar()); + } if (out == -1) { prod = new Mlt::Producer(*m_profile, m_url.toUtf8().constData()); m_length = prod->get_length(); -- 2.39.2