From facbc1dfb0a9ba82f59a4034b0c7cfcc32a4cf5e Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Wed, 24 Mar 2021 19:40:46 +0000 Subject: mpeg: added librcd support git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9775 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Input/mpeg/decodermpegfactory.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/plugins/Input/mpeg/decodermpegfactory.cpp') 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 #include #include +#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 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 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 tags = { { Qmmp::ARTIST, CSTR_TO_QSTR(tag->artist(), utf) }, { Qmmp::ALBUM, CSTR_TO_QSTR(tag->album(), utf) }, -- cgit v1.2.3-13-gbd6f