aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjmarshallnz <jcmarsha@gmail.com>2012-11-27 11:25:57 -0800
committerjmarshallnz <jcmarsha@gmail.com>2012-11-27 11:25:57 -0800
commit0a59a1f2e01108e529d8d822d48f7a994821a57a (patch)
tree18fdb3b15a80ec88da0c5f8abd8ff333cb2e72ed
parentc9f398bc532060b6a6defedd591cf26dcabd77cd (diff)
parent324a8c491d35ba5257a2b3fe9e396f533f45e94e (diff)
Merge pull request #1851 from taxigps/taglib
fixed: reimplementing Latin1StringHandler.parse() to get non-ISO-8859-1 ...
-rw-r--r--xbmc/music/tags/TagLoaderTagLib.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/xbmc/music/tags/TagLoaderTagLib.cpp b/xbmc/music/tags/TagLoaderTagLib.cpp
index 5e9ce9f8da..48dcd4d90b 100644
--- a/xbmc/music/tags/TagLoaderTagLib.cpp
+++ b/xbmc/music/tags/TagLoaderTagLib.cpp
@@ -44,12 +44,29 @@
#include "utils/URIUtils.h"
#include "utils/log.h"
#include "utils/StringUtils.h"
+#include "utils/CharsetConverter.h"
#include "settings/AdvancedSettings.h"
using namespace std;
using namespace TagLib;
using namespace MUSIC_INFO;
+class TagStringHandler : public ID3v2::Latin1StringHandler
+{
+public:
+ TagStringHandler() {}
+ virtual ~TagStringHandler() {}
+ virtual String parse(const ByteVector &data) const
+ {
+ CStdString strSource(data.data(), data.size());
+ CStdString strUTF8;
+ g_charsetConverter.unknownToUTF8(strSource, strUTF8);
+ return String(strUTF8, String::UTF8);
+ }
+};
+
+static const TagStringHandler StringHandler;
+
CTagLoaderTagLib::CTagLoaderTagLib()
{
}
@@ -84,6 +101,7 @@ bool CTagLoaderTagLib::Load(const string& strFileName, CMusicInfoTag& tag, Embed
return false;
}
+ ID3v2::Tag::setLatin1StringHandler(&StringHandler);
TagLib::File* file = NULL;
TagLib::APE::File* apeFile = NULL;
TagLib::ASF::File* asfFile = NULL;