diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2021-07-23 20:16:25 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2021-07-23 20:16:25 +0000 |
| commit | 7bb0c1f24ba3e265d9f76454690281a63fd9ab55 (patch) | |
| tree | 84f8dec48294bcc6d438bf96a5d0ba36935dc9b5 | |
| parent | ef7a934ed7220b6f597e5ef1b6f85730b0fee25b (diff) | |
| download | qmmp-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.cpp | 47 | ||||
| -rw-r--r-- | src/plugins/Input/ffmpeg/settingsdialog.cpp | 95 |
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(); } |
