aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
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 /src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
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
Diffstat (limited to 'src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp')
-rw-r--r--src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp47
1 files changed, 24 insertions, 23 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";