aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/mpeg/decodermpegfactory.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-03-24 19:40:46 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-03-24 19:40:46 +0000
commitfacbc1dfb0a9ba82f59a4034b0c7cfcc32a4cf5e (patch)
treeb745239421522f52f64586750900ef42a1518169 /src/plugins/Input/mpeg/decodermpegfactory.cpp
parent3feda2eb202d0591f759817086bbee6517397d23 (diff)
downloadqmmp-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.cpp15
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) },