aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
diff options
context:
space:
mode:
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";