Index: Makefile.am =================================================================== RCS file: /home/kde/kdesupport/taglib/Makefile.am,v retrieving revision 1.31 diff -u -3 -p -r1.31 Makefile.am --- Makefile.am 10 Sep 2004 01:54:20 -0000 1.31 +++ Makefile.am 8 Mar 2005 00:20:57 -0000 @@ -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 @@ INCLUDES = \ -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,9 @@ taglib_include_HEADERS = tag.h fileref.h 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 Index: fileref.cpp =================================================================== RCS file: /home/kde/kdesupport/taglib/fileref.cpp,v retrieving revision 1.20 diff -u -3 -p -r1.20 fileref.cpp --- fileref.cpp 9 Sep 2004 00:28:56 -0000 1.20 +++ fileref.cpp 8 Mar 2005 00:20:57 -0000 @@ -27,6 +27,7 @@ #include "vorbisfile.h" #include "flacfile.h" #include "mpcfile.h" +#include "wmafile.h" using namespace TagLib; @@ -137,6 +138,8 @@ File *FileRef::create(const char *fileNa 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; Index: toolkit/tstring.cpp =================================================================== RCS file: /home/kde/kdesupport/taglib/toolkit/tstring.cpp,v retrieving revision 1.47 diff -u -3 -p -r1.47 tstring.cpp --- toolkit/tstring.cpp 7 Aug 2004 20:23:10 -0000 1.47 +++ toolkit/tstring.cpp 8 Mar 2005 00:20:57 -0000 @@ -366,6 +366,20 @@ ByteVector String::data(Type t) const } 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,14 @@ void String::prepare(Type t) 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; } Index: toolkit/tstring.h =================================================================== RCS file: /home/kde/kdesupport/taglib/toolkit/tstring.h,v retrieving revision 1.36 diff -u -3 -p -r1.36 tstring.h --- toolkit/tstring.h 9 Jun 2004 13:33:05 -0000 1.36 +++ toolkit/tstring.h 8 Mar 2005 00:20:57 -0000 @@ -90,7 +90,11 @@ namespace TagLib { /*! * 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 }; /*!