aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-07-23 20:16:25 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-07-23 20:16:25 +0000
commit7bb0c1f24ba3e265d9f76454690281a63fd9ab55 (patch)
tree84f8dec48294bcc6d438bf96a5d0ba36935dc9b5
parentef7a934ed7220b6f597e5ef1b6f85730b0fee25b (diff)
downloadqmmp-7bb0c1f24ba3e265d9f76454690281a63fd9ab55.tar.gz
qmmp-7bb0c1f24ba3e265d9f76454690281a63fd9ab55.tar.bz2
qmmp-7bb0c1f24ba3e265d9f76454690281a63fd9ab55.zip
ffmpeg: improved filter configuration
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@10186 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp47
-rw-r--r--src/plugins/Input/ffmpeg/settingsdialog.cpp95
2 files changed, 70 insertions, 72 deletions
diff --git a/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp b/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
index 3f9808e34..b71a7be51 100644
--- a/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
+++ b/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
@@ -23,6 +23,7 @@
#include <QFileInfo>
#include <QRegularExpression>
#include <QtDebug>
+#include <QSet>
#include <qmmp/cueparser.h>
extern "C"{
#include <libavformat/avformat.h>
@@ -97,53 +98,53 @@ bool DecoderFFmpegFactory::canDecode(QIODevice *i) const
DecoderProperties DecoderFFmpegFactory::properties() const
{
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
- QStringList filters = {
- "*.wma", "*.ape", "*.tta", "*.m4a", "*.m4b", "*.aac", "*.ra", "*.shn", "*.vqf", "*.ac3", "*.tak", "*.dsf", "*.dsdiff",
- "*mka"
+ QSet<QString> filters = {
+ "*.wma", "*.ape", "*.tta", "*.m4a", "*.m4b", "*.aac", "*.mp3", "*.ra", "*.shn", "*.vqf", "*.ac3", "*.tak", "*.dsf",
+ "*.dsdiff", "*.mka"
};
- filters = settings.value("FFMPEG/filters", filters).toStringList();
+ const QStringList disabledFilters = settings.value("FFMPEG/disabled_filters", { "*.mp3" }).toStringList();
- if(filters.contains("*.m4a") && !filters.contains("*.m4b"))
- filters << "*.m4b";
+ for(const QString &filter : qAsConst(disabledFilters))
+ filters.remove(filter);
if(!avcodec_find_decoder(AV_CODEC_ID_WMAV1))
- filters.removeAll("*.wma");
+ filters.remove("*.wma");
if(!avcodec_find_decoder(AV_CODEC_ID_APE))
- filters.removeAll("*.ape");
+ filters.remove("*.ape");
if(!avcodec_find_decoder(AV_CODEC_ID_TTA))
- filters.removeAll("*.tta");
+ filters.remove("*.tta");
if(!avcodec_find_decoder(AV_CODEC_ID_AAC))
- filters.removeAll("*.aac");
+ filters.remove("*.aac");
if(!avcodec_find_decoder(AV_CODEC_ID_MP3))
- filters.removeAll("*.mp3");
+ filters.remove("*.mp3");
if(!avcodec_find_decoder(AV_CODEC_ID_AAC) && !avcodec_find_decoder(AV_CODEC_ID_ALAC))
{
- filters.removeAll("*.m4a");
- filters.removeAll("*.m4b");
+ filters.remove("*.m4a");
+ filters.remove("*.m4b");
}
if(!avcodec_find_decoder(AV_CODEC_ID_RA_288))
- filters.removeAll("*.ra");
+ filters.remove("*.ra");
if(!avcodec_find_decoder(AV_CODEC_ID_SHORTEN))
- filters.removeAll("*.shn");
+ filters.remove("*.shn");
if(!avcodec_find_decoder(AV_CODEC_ID_EAC3))
- filters.removeAll("*.ac3");
+ filters.remove("*.ac3");
if(!avcodec_find_decoder(AV_CODEC_ID_DTS))
- filters.removeAll("*.dts");
+ filters.remove("*.dts");
if(!avcodec_find_decoder(AV_CODEC_ID_TRUEHD))
- filters.removeAll("*.mka");
+ filters.remove("*.mka");
if(!avcodec_find_decoder(AV_CODEC_ID_TWINVQ))
- filters.removeAll("*.vqf");
+ filters.remove("*.vqf");
if(!avcodec_find_decoder(AV_CODEC_ID_TAK))
- filters.removeAll("*.tak");
+ filters.remove("*.tak");
if(!avcodec_find_decoder(AV_CODEC_ID_DSD_LSBF))
{
- filters.removeAll("*.dsf");
- filters.removeAll("*.dsdiff");
+ filters.remove("*.dsf");
+ filters.remove("*.dsdiff");
}
DecoderProperties properties;
properties.name = tr("FFmpeg Plugin");
- properties.filters = filters;
+ properties.filters = QStringList(filters.cbegin(), filters.cend());
properties.description = tr("FFmpeg Formats");
if(filters.contains("*.wma"))
properties.contentTypes << "audio/x-ms-wma";
diff --git a/src/plugins/Input/ffmpeg/settingsdialog.cpp b/src/plugins/Input/ffmpeg/settingsdialog.cpp
index 74ae32ca2..774eab329 100644
--- a/src/plugins/Input/ffmpeg/settingsdialog.cpp
+++ b/src/plugins/Input/ffmpeg/settingsdialog.cpp
@@ -35,40 +35,37 @@ SettingsDialog::SettingsDialog(QWidget *parent)
m_ui.setupUi(this);
setAttribute(Qt::WA_DeleteOnClose);
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
- QStringList filters = {
- "*.wma", "*.ape", "*.tta", "*.m4a", "*.m4b", "*.aac", "*.ra", "*.shn", "*.vqf", "*.ac3", "*.tak", "*.dsf", "*.dsdiff",
- "*.mka"
- };
- filters = settings.value("FFMPEG/filters", filters).toStringList();
+ QStringList disabledFilters = { "*.mp3" };
+ disabledFilters = settings.value("FFMPEG/disabled_filters", disabledFilters).toStringList();
m_ui.wmaCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_WMAV1));
- m_ui.wmaCheckBox->setChecked(filters.contains("*.wma") && avcodec_find_decoder(AV_CODEC_ID_WMAV1));
+ m_ui.wmaCheckBox->setChecked(!disabledFilters.contains("*.wma") && avcodec_find_decoder(AV_CODEC_ID_WMAV1));
m_ui.apeCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_APE));
- m_ui.apeCheckBox->setChecked(filters.contains("*.ape") && avcodec_find_decoder(AV_CODEC_ID_APE));
+ m_ui.apeCheckBox->setChecked(!disabledFilters.contains("*.ape") && avcodec_find_decoder(AV_CODEC_ID_APE));
m_ui.ttaCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_TTA));
- m_ui.ttaCheckBox->setChecked(filters.contains("*.tta") && avcodec_find_decoder(AV_CODEC_ID_TTA));
+ m_ui.ttaCheckBox->setChecked(!disabledFilters.contains("*.tta") && avcodec_find_decoder(AV_CODEC_ID_TTA));
m_ui.aacCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_AAC));
- m_ui.aacCheckBox->setChecked(filters.contains("*.aac") && avcodec_find_decoder(AV_CODEC_ID_AAC));
+ m_ui.aacCheckBox->setChecked(!disabledFilters.contains("*.aac") && avcodec_find_decoder(AV_CODEC_ID_AAC));
m_ui.mp3CheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_MP3));
- m_ui.mp3CheckBox->setChecked(filters.contains("*.mp3") && avcodec_find_decoder(AV_CODEC_ID_MP3));
+ m_ui.mp3CheckBox->setChecked(!disabledFilters.contains("*.mp3") && avcodec_find_decoder(AV_CODEC_ID_MP3));
m_ui.mp4CheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_AAC));
- m_ui.mp4CheckBox->setChecked(filters.contains("*.m4a") && (avcodec_find_decoder(AV_CODEC_ID_AAC)
+ m_ui.mp4CheckBox->setChecked(!disabledFilters.contains("*.m4a") && (avcodec_find_decoder(AV_CODEC_ID_AAC)
|| avcodec_find_decoder(AV_CODEC_ID_ALAC)));
m_ui.raCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_RA_288));
- m_ui.raCheckBox->setChecked(filters.contains("*.ra") && avcodec_find_decoder(AV_CODEC_ID_RA_288));
- m_ui.shCheckBox->setChecked(filters.contains("*.shn") && avcodec_find_decoder(AV_CODEC_ID_SHORTEN));
+ m_ui.raCheckBox->setChecked(!disabledFilters.contains("*.ra") && avcodec_find_decoder(AV_CODEC_ID_RA_288));
+ m_ui.shCheckBox->setChecked(!disabledFilters.contains("*.shn") && avcodec_find_decoder(AV_CODEC_ID_SHORTEN));
m_ui.ac3CheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_EAC3));
- m_ui.ac3CheckBox->setChecked(filters.contains("*.ac3") && avcodec_find_decoder(AV_CODEC_ID_EAC3));
+ m_ui.ac3CheckBox->setChecked(!disabledFilters.contains("*.ac3") && avcodec_find_decoder(AV_CODEC_ID_EAC3));
m_ui.dtsCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_DTS));
- m_ui.dtsCheckBox->setChecked(filters.contains("*.dts") && avcodec_find_decoder(AV_CODEC_ID_DTS));
+ m_ui.dtsCheckBox->setChecked(!disabledFilters.contains("*.dts") && avcodec_find_decoder(AV_CODEC_ID_DTS));
m_ui.mkaCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_TRUEHD));
- m_ui.mkaCheckBox->setChecked(filters.contains("*.mka") && avcodec_find_decoder(AV_CODEC_ID_TRUEHD));
+ m_ui.mkaCheckBox->setChecked(!disabledFilters.contains("*.mka") && avcodec_find_decoder(AV_CODEC_ID_TRUEHD));
m_ui.vqfCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_TWINVQ));
- m_ui.vqfCheckBox->setChecked(filters.contains("*.vqf") && avcodec_find_decoder(AV_CODEC_ID_TWINVQ));
+ m_ui.vqfCheckBox->setChecked(!disabledFilters.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.takCheckBox->setChecked(!disabledFilters.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("*.dsdiff") && avcodec_find_decoder(AV_CODEC_ID_DSD_LSBF));
+ m_ui.dsdCheckBox->setChecked(!disabledFilters.contains("*.dsdiff") && avcodec_find_decoder(AV_CODEC_ID_DSD_LSBF));
}
SettingsDialog::~SettingsDialog()
@@ -77,36 +74,36 @@ SettingsDialog::~SettingsDialog()
void SettingsDialog::accept()
{
- QStringList filters;
- if (m_ui.mp3CheckBox->isChecked())
- filters << "*.mp3";
- if (m_ui.wmaCheckBox->isChecked())
- filters << "*.wma";
- if (m_ui.apeCheckBox->isChecked())
- filters << "*.ape";
- if (m_ui.ttaCheckBox->isChecked())
- filters << "*.tta";
- if (m_ui.aacCheckBox->isChecked())
- filters << "*.aac";
- if (m_ui.mp4CheckBox->isChecked())
- filters << "*.m4a" << "*.m4b";
- if (m_ui.raCheckBox->isChecked())
- filters << "*.ra";
- if (m_ui.shCheckBox->isChecked())
- filters << "*.shn";
- if (m_ui.ac3CheckBox->isChecked())
- filters << "*.ac3";
- if (m_ui.dtsCheckBox->isChecked())
- filters << "*.dts";
- if (m_ui.mkaCheckBox->isChecked())
- filters << "*.mka";
- if (m_ui.vqfCheckBox->isChecked())
- filters << "*.vqf";
- if (m_ui.takCheckBox->isChecked())
- filters << "*.tak";
- if (m_ui.dsdCheckBox->isChecked())
- filters << "*.dsf" << "*.dsdiff";
+ QStringList disabledFilters;
+ if (!m_ui.mp3CheckBox->isChecked())
+ disabledFilters << "*.mp3";
+ if (!m_ui.wmaCheckBox->isChecked())
+ disabledFilters << "*.wma";
+ if (!m_ui.apeCheckBox->isChecked())
+ disabledFilters << "*.ape";
+ if (!m_ui.ttaCheckBox->isChecked())
+ disabledFilters << "*.tta";
+ if (!m_ui.aacCheckBox->isChecked())
+ disabledFilters << "*.aac";
+ if (!m_ui.mp4CheckBox->isChecked())
+ disabledFilters << "*.m4a" << "*.m4b";
+ if (!m_ui.raCheckBox->isChecked())
+ disabledFilters << "*.ra";
+ if (!m_ui.shCheckBox->isChecked())
+ disabledFilters << "*.shn";
+ if (!m_ui.ac3CheckBox->isChecked())
+ disabledFilters << "*.ac3";
+ if (!m_ui.dtsCheckBox->isChecked())
+ disabledFilters << "*.dts";
+ if (!m_ui.mkaCheckBox->isChecked())
+ disabledFilters << "*.mka";
+ if (!m_ui.vqfCheckBox->isChecked())
+ disabledFilters << "*.vqf";
+ if (!m_ui.takCheckBox->isChecked())
+ disabledFilters << "*.tak";
+ if (!m_ui.dsdCheckBox->isChecked())
+ disabledFilters << "*.dsf" << "*.dsdiff";
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
- settings.setValue("FFMPEG/filters", filters);
+ settings.setValue("FFMPEG/disabled_filters", disabledFilters);
QDialog::accept();
}