aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp11
-rw-r--r--src/plugins/Input/ffmpeg/settingsdialog.cpp9
-rw-r--r--src/plugins/Input/ffmpeg/settingsdialog.ui11
3 files changed, 24 insertions, 7 deletions
diff --git a/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp b/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
index 29379fb74..e9d0d1f64 100644
--- a/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
+++ b/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
@@ -92,8 +92,9 @@ bool DecoderFFmpegFactory::canDecode(QIODevice *i) const
DecoderProperties DecoderFFmpegFactory::properties() const
{
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
- QStringList filters;
- filters << "*.wma" << "*.ape" << "*.tta" << "*.m4a" << "*.aac" << "*.ra" << "*.shn" << "*.vqf" << "*.ac3" << "*.tak";
+ QStringList filters = {
+ "*.wma", "*.ape", "*.tta", "*.m4a", "*.aac", "*.ra", "*.shn", "*.vqf", "*.ac3", "*.tak", "*.dsf", "*.dsdiff"
+ };
filters = settings.value("FFMPEG/filters", filters).toStringList();
if(!avcodec_find_decoder(AV_CODEC_ID_WMAV1))
@@ -122,7 +123,11 @@ DecoderProperties DecoderFFmpegFactory::properties() const
filters.removeAll("*.vqf");
if(!avcodec_find_decoder(AV_CODEC_ID_TAK))
filters.removeAll("*.tak");
-
+ if(!avcodec_find_decoder(AV_CODEC_ID_DSD_LSBF))
+ {
+ filters.removeAll("*.dsf");
+ filters.removeAll("*.dsdiff");
+ }
DecoderProperties properties;
properties.name = tr("FFmpeg Plugin");
diff --git a/src/plugins/Input/ffmpeg/settingsdialog.cpp b/src/plugins/Input/ffmpeg/settingsdialog.cpp
index e3c2ad22c..5c7bfb8d3 100644
--- a/src/plugins/Input/ffmpeg/settingsdialog.cpp
+++ b/src/plugins/Input/ffmpeg/settingsdialog.cpp
@@ -35,8 +35,9 @@ SettingsDialog::SettingsDialog(QWidget *parent)
m_ui.setupUi(this);
setAttribute(Qt::WA_DeleteOnClose);
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
- QStringList filters;
- filters << "*.wma" << "*.ape" << "*.tta" << "*.m4a" << "*.aac" << "*.ra" << "*.shn" << "*.vqf" << "*.ac3" << "*.tak";
+ QStringList filters = {
+ "*.wma", "*.ape", "*.tta", "*.m4a", "*.aac", "*.ra", "*.shn", "*.vqf", "*.ac3", "*.tak", "*.dsf", "*.dsdiff"
+ };
filters = settings.value("FFMPEG/filters", filters).toStringList();
m_ui.wmaCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_WMAV1));
@@ -65,6 +66,8 @@ SettingsDialog::SettingsDialog(QWidget *parent)
m_ui.vqfCheckBox->setChecked(filters.contains("*.vqf") && avcodec_find_decoder(AV_CODEC_ID_TWINVQ));
m_ui.takCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_TAK));
m_ui.takCheckBox->setChecked(filters.contains("*.tak") && avcodec_find_decoder(AV_CODEC_ID_TAK));
+ m_ui.dsdCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_DSD_LSBF));
+ m_ui.dsdCheckBox->setChecked(filters.contains("*.dsd") && avcodec_find_decoder(AV_CODEC_ID_DSD_LSBF));
}
SettingsDialog::~SettingsDialog()
@@ -100,6 +103,8 @@ void SettingsDialog::accept()
filters << "*.vqf";
if (m_ui.takCheckBox->isChecked())
filters << "*.tak";
+ if (m_ui.dsdCheckBox->isChecked())
+ filters << "*.dsf" << "*.dsdiff";
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
settings.setValue("FFMPEG/filters", filters);
QDialog::accept();
diff --git a/src/plugins/Input/ffmpeg/settingsdialog.ui b/src/plugins/Input/ffmpeg/settingsdialog.ui
index ba601556a..0df5618c9 100644
--- a/src/plugins/Input/ffmpeg/settingsdialog.ui
+++ b/src/plugins/Input/ffmpeg/settingsdialog.ui
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>337</width>
- <height>447</height>
+ <width>361</width>
+ <height>486</height>
</rect>
</property>
<property name="windowTitle">
@@ -146,6 +146,13 @@
</property>
</widget>
</item>
+ <item>
+ <widget class="QCheckBox" name="dsdCheckBox">
+ <property name="text">
+ <string>Direct Stream Digital (DSD)</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>