summaryrefslogtreecommitdiffstats
path: root/desktop-widgets
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2018-07-10 15:04:35 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2018-07-28 15:31:25 -0700
commitfce42d4858d33e10b7a1c48d75838f1901b6b123 (patch)
tree3be7516c1e306e4fb8cce9cd1f3e357e3a5575df /desktop-widgets
parent51066e5478d76824c5da53f37184e0e0d1f3e4af (diff)
downloadsubsurface-fce42d4858d33e10b7a1c48d75838f1901b6b123.tar.gz
Dive media: Extract thumbnails from videos with ffmpeg
Extract thumbnails using ffmpeg. Behavior is controlled by three new preferences fields: - extract_video_thumbnails (bool): if true, thumbnails are calculated. - extract_video_thumbnail_position (int 0..100): position in video where thumbnail is fetched. - ffmpeg_executable (string): path of ffmpeg executable. If ffmpeg refuses to start, extract_video_thumbnails is set to false to avoid unnecessary churn. Video thumbnails are marked by an overlay. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets')
-rw-r--r--desktop-widgets/preferences/preferences_defaults.cpp27
-rw-r--r--desktop-widgets/preferences/preferences_defaults.h2
-rw-r--r--desktop-widgets/preferences/preferences_defaults.ui75
3 files changed, 103 insertions, 1 deletions
diff --git a/desktop-widgets/preferences/preferences_defaults.cpp b/desktop-widgets/preferences/preferences_defaults.cpp
index a7b5e4c1d..4d8aef610 100644
--- a/desktop-widgets/preferences/preferences_defaults.cpp
+++ b/desktop-widgets/preferences/preferences_defaults.cpp
@@ -43,6 +43,22 @@ void PreferencesDefaults::on_localDefaultFile_toggled(bool toggle)
ui->chooseFile->setEnabled(toggle);
}
+void PreferencesDefaults::on_ffmpegFile_clicked()
+{
+ QFileInfo fi(system_default_filename());
+ QString ffmpegFileName = QFileDialog::getOpenFileName(this, tr("Select ffmpeg executable"));
+
+ if (!ffmpegFileName.isEmpty())
+ ui->ffmpegExecutable->setText(ffmpegFileName);
+}
+
+void PreferencesDefaults::on_extractVideoThumbnails_toggled(bool toggled)
+{
+ ui->videoThumbnailPosition->setEnabled(toggled);
+ ui->ffmpegExecutable->setEnabled(toggled);
+ ui->ffmpegFile->setEnabled(toggled);
+}
+
void PreferencesDefaults::refreshSettings()
{
ui->font->setCurrentFont(QString(prefs.divelist_font));
@@ -73,6 +89,14 @@ void PreferencesDefaults::refreshSettings()
ui->defaultfilename->setEnabled(prefs.default_file_behavior == LOCAL_DEFAULT_FILE);
ui->btnUseDefaultFile->setEnabled(prefs.default_file_behavior == LOCAL_DEFAULT_FILE);
ui->chooseFile->setEnabled(prefs.default_file_behavior == LOCAL_DEFAULT_FILE);
+
+ ui->videoThumbnailPosition->setEnabled(prefs.extract_video_thumbnails);
+ ui->ffmpegExecutable->setEnabled(prefs.extract_video_thumbnails);
+ ui->ffmpegFile->setEnabled(prefs.extract_video_thumbnails);
+
+ ui->extractVideoThumbnails->setChecked(prefs.extract_video_thumbnails);
+ ui->videoThumbnailPosition->setValue(prefs.extract_video_thumbnails_position);
+ ui->ffmpegExecutable->setText(prefs.ffmpeg_executable);
}
void PreferencesDefaults::syncSettings()
@@ -87,6 +111,9 @@ void PreferencesDefaults::syncSettings()
general->setDefaultFileBehavior(LOCAL_DEFAULT_FILE);
else if (ui->cloudDefaultFile->isChecked())
general->setDefaultFileBehavior(CLOUD_DEFAULT_FILE);
+ general->setExtractVideoThumbnails(ui->extractVideoThumbnails->isChecked());
+ general->setExtractVideoThumbnailsPosition(ui->videoThumbnailPosition->value());
+ general->setFfmpegExecutable(ui->ffmpegExecutable->text());
auto display = qPrefDisplay::instance();
display->set_divelist_font(ui->font->currentFont().toString());
diff --git a/desktop-widgets/preferences/preferences_defaults.h b/desktop-widgets/preferences/preferences_defaults.h
index 1674dd2ad..d7bb7db7f 100644
--- a/desktop-widgets/preferences/preferences_defaults.h
+++ b/desktop-widgets/preferences/preferences_defaults.h
@@ -20,6 +20,8 @@ public slots:
void on_chooseFile_clicked();
void on_btnUseDefaultFile_toggled(bool toggled);
void on_localDefaultFile_toggled(bool toggled);
+ void on_ffmpegFile_clicked();
+ void on_extractVideoThumbnails_toggled(bool toggled);
private:
Ui::PreferencesDefaults *ui;
diff --git a/desktop-widgets/preferences/preferences_defaults.ui b/desktop-widgets/preferences/preferences_defaults.ui
index 1a54d7b0a..731eed6ab 100644
--- a/desktop-widgets/preferences/preferences_defaults.ui
+++ b/desktop-widgets/preferences/preferences_defaults.ui
@@ -73,7 +73,7 @@
<item>
<widget class="QRadioButton" name="noDefaultFile">
<property name="text">
- <string>No default file</string>
+ <string>&amp;No default file</string>
</property>
</widget>
</item>
@@ -210,6 +210,79 @@
</widget>
</item>
<item>
+ <widget class="QGroupBox" name="groupBox_10">
+ <property name="title">
+ <string>Video thumbnails</string>
+ </property>
+ <layout class="QFormLayout" name="formLayout">
+ <property name="horizontalSpacing">
+ <number>5</number>
+ </property>
+ <property name="verticalSpacing">
+ <number>5</number>
+ </property>
+ <property name="margin">
+ <number>5</number>
+ </property>
+ <item row="1" column="0">
+ <widget class="QLabel" name="ffmpegExectuableLabel">
+ <property name="text">
+ <string>ffmpeg executable</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <layout class="QHBoxLayout" name="horizontalLayout_3b">
+ <item>
+ <widget class="QLineEdit" name="ffmpegExecutable"/>
+ </item>
+ <item>
+ <widget class="QToolButton" name="ffmpegFile">
+ <property name="text">
+ <string>...</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="videoThumbnailPositionLabel">
+ <property name="text">
+ <string>Extract at position</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QSlider" name="videoThumbnailPosition">
+ <property name="maximum">
+ <number>100</number>
+ </property>
+ <property name="value">
+ <number>20</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="extractVideoThumbnailsLabel">
+ <property name="text">
+ <string>Extract video thumbnails</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QCheckBox" name="extractVideoThumbnails">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
<widget class="QGroupBox" name="groupBox_9">
<property name="title">
<string>Clear all settings</string>