diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2021-03-24 19:40:46 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2021-03-24 19:40:46 +0000 |
| commit | facbc1dfb0a9ba82f59a4034b0c7cfcc32a4cf5e (patch) | |
| tree | b745239421522f52f64586750900ef42a1518169 /src/plugins/Input/mpeg/decodermpegfactory.cpp | |
| parent | 3feda2eb202d0591f759817086bbee6517397d23 (diff) | |
| download | qmmp-facbc1dfb0a9ba82f59a4034b0c7cfcc32a4cf5e.tar.gz qmmp-facbc1dfb0a9ba82f59a4034b0c7cfcc32a4cf5e.tar.bz2 qmmp-facbc1dfb0a9ba82f59a4034b0c7cfcc32a4cf5e.zip | |
mpeg: added librcd support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9775 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/mpeg/decodermpegfactory.cpp')
| -rw-r--r-- | src/plugins/Input/mpeg/decodermpegfactory.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/plugins/Input/mpeg/decodermpegfactory.cpp b/src/plugins/Input/mpeg/decodermpegfactory.cpp index 3021b6e4f..5cde2dce4 100644 --- a/src/plugins/Input/mpeg/decodermpegfactory.cpp +++ b/src/plugins/Input/mpeg/decodermpegfactory.cpp @@ -36,6 +36,7 @@ #include <taglib/id3v2header.h> #include <taglib/textidentificationframe.h> #include <taglib/id3v2framefactory.h> +#include "tagextractor.h" #include "mpegmetadatamodel.h" #include "settingsdialog.h" #ifdef WITH_MAD @@ -46,7 +47,6 @@ #endif #include "decodermpegfactory.h" - #define CSTR_TO_QSTR(str,utf) codec->toUnicode(str.toCString(utf)).trimmed() // DecoderMPEGFactory @@ -56,12 +56,13 @@ DecoderMPEGFactory::DecoderMPEGFactory() //detecting rusxmms patch m_using_rusxmms = false; char str[] = { char(0xF2), char(0xE5), char(0xF1), char(0xF2), '\0'}; - QTextCodec *codec = QTextCodec::codecForName ("windows-1251"); + QTextCodec *codec = QTextCodec::codecForName("windows-1251"); TagLib::String tstr(str); if(codec->toUnicode(str) == QString::fromUtf8(tstr.toCString(true))) { qDebug("DecoderMADFactory: found taglib with rusxmms patch"); m_using_rusxmms = true; + TagExtractor::setForceUtf8(m_using_rusxmms); } } @@ -245,7 +246,7 @@ QList<TrackInfo *> DecoderMPEGFactory::createPlayList(const QString &path, Track tag = fileRef.ID3v1Tag(); break; case SettingsDialog::ID3v2: - codecName = settings.value("ID3v2_encoding","UTF-8").toByteArray (); + codecName = settings.value("ID3v2_encoding","UTF-8").toByteArray(); tag = fileRef.ID3v2Tag(); break; case SettingsDialog::APE: @@ -266,7 +267,15 @@ QList<TrackInfo *> DecoderMPEGFactory::createPlayList(const QString &path, Track if (tag && codec && !tag->isEmpty()) { + if((tag == fileRef.ID3v1Tag() || tag == fileRef.ID3v2Tag()) && !m_using_rusxmms && + settings.value("detect_encoding", false).toBool()) + { + QTextCodec *detectedCodec = TagExtractor::detectCharset(tag); + codec = detectedCodec ? detectedCodec : codec; + } + bool utf = codec->name().contains("UTF"); + QMap<Qmmp::MetaData, QString> tags = { { Qmmp::ARTIST, CSTR_TO_QSTR(tag->artist(), utf) }, { Qmmp::ALBUM, CSTR_TO_QSTR(tag->album(), utf) }, |
