diff -ur /taglib-1.3.1/work/taglib-1.3.1/configure.in taglib-1.3.1/configure.in --- taglib-1.3.1/configure.in 2004-11-07 17:18:20.000000000 +0100 +++ taglib-1.3.1/configure.in 2005-05-03 15:15:44.000000000 +0200 @@ -127,6 +127,7 @@ AC_CONFIG_FILES([ taglib/ogg/Makefile ]) AC_CONFIG_FILES([ taglib/ogg/flac/Makefile ]) AC_CONFIG_FILES([ taglib/ogg/vorbis/Makefile ]) +AC_CONFIG_FILES([ taglib/wma/Makefile]) AC_CONFIG_FILES([ taglib/toolkit/Makefile ]) AC_CONFIG_FILES([ tests/Makefile ]) AC_CONFIG_FILES([ taglib/taglib-config ]) diff -ur taglib-1.3.1/taglib/Makefile.am taglib-1.3.1/taglib/Makefile.am --- taglib-1.3.1/taglib/Makefile.am 2004-11-07 17:18:20.000000000 +0100 +++ taglib-1.3.1/taglib/Makefile.am 2005-05-03 13:29:07.000000000 +0200 @@ -1,4 +1,4 @@ -SUBDIRS = toolkit mpeg ogg flac ape mpc +SUBDIRS = toolkit mpeg ogg flac ape mpc wma INCLUDES = \ -I$(top_srcdir)/taglib/toolkit \ @@ -7,6 +7,7 @@ -I$(top_srcdir)/taglib/flac \ -I$(top_srcdir)/taglib/mpc \ -I$(top_srcdir)/taglib/ogg/vorbis \ + -I$(top_srcdir)/taglib/wma \ $(all_includes) lib_LTLIBRARIES = libtag.la @@ -16,7 +17,7 @@ taglib_includedir = $(includedir)/taglib libtag_la_LDFLAGS = $(all_libraries) -no-undefined -version-info 4:0:3 -libtag_la_LIBADD = ./mpeg/libmpeg.la ./ogg/libogg.la ./flac/libflac.la ./mpc/libmpc.la ./ape/libape.la ./toolkit/libtoolkit.la +libtag_la_LIBADD = ./mpeg/libmpeg.la ./ogg/libogg.la ./flac/libflac.la ./mpc/libmpc.la ./ape/libape.la ./toolkit/libtoolkit.la ./wma/libwma.la bin_SCRIPTS = taglib-config diff -ur taglib-1.3.1/taglib/fileref.cpp taglib-1.3.1/taglib/fileref.cpp --- taglib-1.3.1/taglib/fileref.cpp 2004-08-09 05:47:51.000000000 +0200 +++ taglib-1.3.1/taglib/fileref.cpp 2005-05-03 13:31:42.000000000 +0200 @@ -27,6 +27,7 @@ #include "vorbisfile.h" #include "flacfile.h" #include "mpcfile.h" +#include "wmafile.h" using namespace TagLib; @@ -137,6 +138,8 @@ return new FLAC::File(fileName, readAudioProperties, audioPropertiesStyle); if(s.substr(s.size() - 4, 4).upper() == ".MPC") return new MPC::File(fileName, readAudioProperties, audioPropertiesStyle); + if(s.substr(s.size() - 4, 4).upper() == ".WMA") + return new WMA::File(fileName, readAudioProperties, audioPropertiesStyle); } return 0; diff -ur taglib-1.3.1/taglib/toolkit/tstring.cpp taglib-1.3.1/taglib/toolkit/tstring.cpp --- taglib-1.3.1/taglib/toolkit/tstring.cpp 2004-08-07 22:21:56.000000000 +0200 +++ taglib-1.3.1/taglib/toolkit/tstring.cpp 2005-05-03 13:36:01.000000000 +0200 @@ -366,6 +366,20 @@ } break; } + case UTF16LE: + { + // Output UTF16 little-endian, without byte order mark, since the probable + // application is to write ASF formats that used UTF16LE in the first place. + for(wstring::const_iterator it = d->data.begin(); it != d->data.end(); it++) { + + char c1 = *it & 0xff; + char c2 = *it >> 8; + + v.append(c1); + v.append(c2); + } + break; + } case UTF16BE: { for(wstring::const_iterator it = d->data.begin(); it != d->data.end(); it++) { @@ -686,6 +700,13 @@ delete [] sourceBuffer; delete [] targetBuffer; + break; } + case UTF16LE: + { + for(uint i = 0; i < d->data.size(); i++) + d->data[i] = byteSwap((unsigned short)d->data[i]); + break; + } default: break; } diff -ur taglib-1.3.1/taglib/toolkit/tstring.h taglib-1.3.1/taglib/toolkit/tstring.h --- taglib-1.3.1/taglib/toolkit/tstring.h 2004-06-23 23:39:39.000000000 +0200 +++ taglib-1.3.1/taglib/toolkit/tstring.h 2005-05-03 13:38:35.000000000 +0200 @@ -90,7 +90,11 @@ /*! * UTF8 encoding. Characters are usually 8 bits but can be up to 32. */ - UTF8 = 3 + UTF8 = 3, + /*! + * UTF16 little endian. 16 bit characters. Used in WMA files. + */ + UTF16LE = 4 }; /*!