1$Id: NEWS,v 1.27 2002/07/23 13:57:45 t1mpy Exp $ 2 3this file will not be updated anymore. Please go to http://sourceforge.net/news/?group_id=979 for the latest news 4 5Old News: 6 72001-09-08 Version 3.8.0pre2 8* ID3Lib maintainer has disappeared. Project maintenance taken over by existing 9 developers 10* Many bug fixes -- mostly compilation problems -- more detailed info will be 11 provided in a later release. 12 132000-11-20 Version 3.8.0pre1 14 15* First prerelease of 3.8.0 stable. 16* Clean separation of interface and implementation to help ensure interface and 17 binary compatibility of future releases 18* Completely revamped implementation of tag reading and writing 19* Better debugging output in debug mode 20* New documentation (much more still needed) 21* Command-line options processing now more cross-platform 22* Removed all exception handling 23* Minor changes to public interface 24* Use of std::string and other STL classes in implementation 25* id3com source code removed from source distribution. It has moved to its own 26 project at http://sourceforge.net/projects/id3com 27* Many more changes than can be mentioned here: see ChangeLog file 28 292000-09-07 Version 3.7.13 30 31* id3com is broken; maintainer has disappeared; anyone care to fix it? 32* Complete reimplementation of ID3_Field: cleaner, safer, faster, clearer, more 33 efficient 34* Much more robust MusicMatch parsing 35* Improved conversion from ID3v2 to ID3v1 36* Cleaner implementation of file processing 37* Examples now use popt for command-line processing 38* Improved portability for Macintosh 39* Improved build process for platforms without popt or zlib 40* New documentation about the MusicMatch tagging format 41* Minor updates to ID3_Field interface 42* New interface behavior: 43 // copies entire string (same for unicode_t*) 44 size_t ID3_Field::Get(const uchar*, size_t) 45 // for lists, copies a specific item in string (0-based) 46 size_t ID3_Field::Get(const uchar*, size_t, index_t); 47 // returns the size in characters for strings, in bytes for all else 48 size_t ID3_Field::Size() cosnt; 49 // returns the rendered size of the field 50 size_t ID3_Field::BinSize() cosnt; 51 522000-07-07 Version 3.7.12 53 54* Removed debugging output left over from 3.7.11 55* Update() now updates all tag types by default, not just ID3v2 56* Added a second, optional parameter to ID3_GetComment to find a comment with 57 a specific description 58* Converting an ID3v1 comment to an ID3v2 COMM frame now has the description 59 "ID3v1 Comment" 60* An ID3v2 COMM frame will only be converted to an ID3v1 comment if it has a 61 description of "ID3v1 Comment" 62 632000-07-05 Version 3.7.11 64 65* Now parses and converts files with MusicMatch tags (beta - needs testing!) 66* New tag type enums: ID3TT_LYRICS3, ID3TT_LYRICS3V2, ID3TT_MUSICMATCH, 67 ID3TT_PREPENDED, ID3TT_APPENDED. Deprecated ID3TT_LYRICS 68* Improved file processing routines; cleaned up interface w.r.t. files 69* Stripping one type of appended tag strips them all 70* New C function: ID3Tag_HasTagType 71* New methods for ID3_Tag: GetPrependedBytes(), GetAppendedBytes(), 72 GetFileSize(), and GetFileName() 73* New function for calculating size of non-tag data in file: ID3_GetDataSize() 74* Render now parameterized on ID3_TagType 75* Bug fixes 76 772000-06-23 Version 3.7.10 78 79* New and updated example tags 80* Corrected unicode parsing and rendering 81* Improved parsing/conversion of Lyrics3 v2.00 tags 82* Fixed errors with exception handling (thanks to Luca Leonardo Scorcia for the 83 bug reports) 84* Fixed bugs/memory leaks with removing frames and updating tag (thanks to Luca 85 Leonardo Scorcia for the bug reports) 86* Fixed finding of frames with empty text fields (thanks to Luca Leonardo 87 Scorcia for the bug reports) 88* Improved documentation/implementation for uint28 89* Added GetTextID() method for ID3_Frame objects 90* Tag doesn't render if there aren't any frames; frame doesn't render if there 91 aren't any fields 92* Reordered ID3_AddSyncLyrics() parameters for better consistency with other 93 helper functions 94* ID3_GetSyncLyricsInfo() parameters updated to be more specific 95* Several other minor bug fixes 96 972000-05-28 Version 3.7.9 98 99* Added new test programs in examples/ for creating example tag files 100* Further improvements to compile on (Unix) systems that don't have zlib 101* Fixed a bug when parsing compressed frames (thanks to Christian Becker for 102 the bug report and example file) 103* Fixed several bugs when writing to files (thanks to Lothar Egger and Peter 104 Thorstenson for the bug reports) 105* New delphi example code for use with id3com (thanks Michael Little) 106* Bugfixes for id3com (thanks John Adcock) 107* Changed behavior of Link() and Clear() in ID3_Tag: Clear() doesn't remove 108 file reference, and Link'ing to an already-linked tag just changes the file 109 reference 110* Cleaned up the class interfaces to use size_t, flags_t, and index_t rather 111 than luint, so as to be more descriptive 112* ID3_Tag::RemoveFrame() now returns the pointer to the frame removed (NULL if 113 not present), thus releasing the tag from its repsonsibility of managing that 114 frame's memory 115* Cleaned up C interface so that appropriate function parameters are const 116* Cleaned up implementation of ID3_Tag::Clear() to fix inconsistencies 117* Deprecated ID3_Tag's HasV2Tag(), HasV1Tag(), and HasLyrics() methods in 118 favor of ID3_Tag::HasTagType() method 119* All Render() methods now const 120* Added GetUnsync() method to ID3_Tag 121* Cleaned up internal class definitions (thereby destroying binary 122 compatibility) 123* ID3v2 tag now won't render (and its reported size is 0) if there aren't any 124 frames (per the spec) 125* Fixed a bug when copying frames that prevented rendering compressed frames in 126 certain situations 127* Fixed a bug with resyncing that caused it to improperly handle the last byte 128* Fixed a bug with recognizing certain sync signals 129* Lots of other minor changes 130 1312000-05-11 Version 3.7.8 132 133* Major bug fix that caused all string frames to be written out as unicode, yet 134 with the wrong encoding information given 135* Bug fix for stripping id3v2 tags that wouldn't remove enough data 136* Bug fix for writing id3v1 tags that might add extraneous data to the tag 137 1382000-05-10 Version 3.7.7 139 140* As part of the major rewrite of underlying codebase started with previous 141 release, this release features near-complete reimplementation of most of the 142 ID3v2 parsing code - smaller, faster, and better organized 143* Much imporved Lyrics3 v2 tag support, along with much improved synchronized 144 lyrics (SYLT) support (thanks Severino Delaurenti) 145* Updated id3com to reflect changes to compression strategy introduced in last 146 release (thanks John Adcock) 147* Cleaned up the parameters to several functions/methods with regards to 148 constness 149* Several new methods to several classes 150* A variety of bugfixes 151 1522000-05-03 Version 3.7.6 153 154* Beginning of major rewrite of underlying codebase to improve efficiency, 155 expandability; the interface will need minor updates through this endeavor 156 (sorry!) 157* Major bugfix in ID3_Tag::Strip which was deleting too much info from a file 158 in certain circumstances 159* Add descriptions to frames; can access either through a ID3_Frame method for 160 a frame object, or via the static method on the class (w/ ID3_FrameID param) 161 (thanks John Adcock for descriptions, Daryl Pawluk for spotting misorder) 162* Frame compression is determined frame by frame, so deprecated 163 ID3_Tag::SetCompression() for ID3_Frame::SetCompression(). 164 ID3_Tag::SetCompression() is now a no-op (updated C interface accordingly) 165* New method ID3_Frame::Contains(ID3_FieldID) for determining if a frame 166 contains a particular field 167* New static method ID3_Tag::IsV2Tag() deprecates ID3_IsTagHeader() 168* Other minor bugfixes 169 1702000-04-28 Version 3.7.5 171 172* Fixed nasty bug with rewriting tags to windows files (thanks John Adcock) 173* More fixes, improvements to id3com files (thanks John Adcock) 174* Added parsing of Lyrics3 v1.00 tags (thanks Severino Delaurenti) 175* Updated documentation, but still in flux 176* Other minor bugfixes 177 1782000-04-26 Version 3.7.4 179 180* Fixed windows project files so that they all work correctly with new release 181 (thanks John Adcock, Robert Moon, and Lothar Egger) 182* Added a simple VB app to test id3lib using id3com.dll (thanks John Adcock) 183* Added better implementation of PRIV (Private) frame (thanks John Adcock) 184* Fixed padding logic (thanks John Adcock) 185* New "Spec Versioning" system under the hood produces minor interface change 186 - Defined new enum: ID3_V2Spec (ID3V2_2_0, ID3V2_2_1, ID3V2_3_0, etc.) 187 - {Get,Set}Spec now used in favor of deprected {Get,Set}Version, GetRevision 188 - Field definitions updated accordingly; now smaller and more exact 189 1902000-04-24 Version 3.7.3 191 192* C/C++ interface changes: 193 - Moved V1_LEN* constants into an enumeration so that they can be used as 194 array size initializers in C. Renamed the constants for consistency 195 (LEN_V1 -> ID3_V1_LEN, LEN_V1_TITLE -> ID3_V1_LEN_TITLE, etc.) 196 - Renamed ID3_TagType's enums to be more consistent with rest of library's 197 enums (V1_TAG -> ID3TT_ID3V1, V2_TAG -> ID3TT_ID3V2, etc.) 198 - ID3_Err enumeration now defines ID3E_NoError 199* C++ interface changes: 200 - ID3_Frame now has a copy constructor 201 - ID3_Tag::AddNewFrame deprecated for AttachFrame (no other difference in 202 behavior) 203 - ID3_Tag::Link(char *, bool, bool) deprecated for 204 ID3_Tag::Link(char *, luint). Now accepts ID3_TagTypes to determine which 205 tags to parse. i.e, mytag.Link("myfile.mp3", ID3TT_ID3V2 | ID3TT_LYRICS); 206 - ID3_Tag::operator<<, ID3_Tag::AddFrame: relevant parameters now const 207* C interface changes: 208 - ID3Tag_Parse, ID3Tag_Update, ID3Tag_Strip now return an ID3_Err 209 - Added functions ID3Tag_UpdateByTagType, ID3Frame_New, ID3Frame_NewID, 210 ID3Frame_Delete 211* Implementation changes: 212 - AddFrame, AddFrames now add copies of the frames passed in. 213 - AttachFrame adds the actual frame passed to it. 214 - The tag takes responsibility for managing its frames' memory in all cases. 215* Miscellaneous changes: 216 - Moved most enum and struct declarations to include/id3/globals.h so they 217 are accessible to C interface 218 - id3com.dsp file is 'fixed', but the project still doesn't compile w/o 219 errors 220 - Most doxygen comments moved from tag.h to respective files 221 - Fixed a bug in id3lib.spec which caused rpm binaries to be compiled without 222 exception handling 223 - examples, include/id3/* header files no longer include config.h 224 - Other minor bugfixes 225 2262000-04-21 Version 3.7.2 227 228* Implementation of C interface for all platforms (in src/c_wrapper.cpp, which 229 replaces dll_wrapper.cpp) 230* Added examples/demo_simple.c which demonstrates basic use of C interface 231* Auto-generated documentation no longer shipped with main tarball distribution 232* mp3 example files no longer included (still available via CVS) 233* Updated Windows project files so that they'll (hopefully) compile cleanly 234 again 235 2362000-04-19 Version 3.7.1 237 238* Interface changed: functions in version.{h,cpp} replaced with constants 239 defined in globals.h 240* Added a spec file for creating rpm's 241* C interface now defined in include/id3.h, replaces include/src/dll.h; 242* Lots of file movement. src/id3/* to src/; src/examples to examples; 243* Examples now compiled as installable binaries, rather than 'checks' 244* Removed unnecessary files: externals.h, types.h, version.{h,cpp}, dll.h 245 2462000-04-15 Version 3.7.0 247 248* New project management: MusicMatch handed reigns over to Scott Thomas Haug 249* New project licensing: LGPL (http://www.gnu.org/copyleft/lesser.html) 250* New versioning: 3.7.x is unstable series leading up to 3.8.x stable 251* Many bug fixes 252* Better windows compatibility, with new windows project files 253* Improved documentation, using the Doxygen documentation system 254 (http://www.stack.nl/~dimitri/doxygen/) 255* Extended API, improved implementation 256* More supported frames 257* Now parses and rerenders unrecognized frame types 258* Better version handling in configuration files, similar to the glib library 259 (http://www.gtk.org) 260 2611999-12-02 Version 3.6.2 262 263* Improved portability: another minor portability fixes, along with the 264 inclusion of zlib sources and project files for windows compilation. 265 2661999-12-01 Version 3.6.1 267 268* Code movement: moved the header files from src/id3 to include/id3 to allow 269 for easier windows compilation. 270* Improved portability: made changes in several files to improve compilation 271 on windows. (thanks to elrod for the fixes) 272* Random cleanup: some spelling errors fixed, some minor file administration, 273 etc. 274 2751999-11-30 Version 3.6.0 276 277* Code overhaul: more descriptive variable naming, streamlined implementation 278 logic, cleaner interface specification, generalization of magic numbers and 279 strings. 280* Better documentation: transcribed the the "Documentation for ID3Lib 3.05" 281 document (written by Dirk Mahoney, 22 Nov 1998) into the actual source, using 282 javadoc-like tags so as to create documentation with the application doc++. 283 Using this program (and ones like it) allows for creating the documentation 284 in many different formats, including html, texinfo, man, latex, and the like. 285* Added functionality: Added additional functions for simplified access to 286 common tags, such as artist, title, and album. 287* More robust error checking: Improved upon the exception handling already in 288 place to better handle error conditions, such as invalid tags, unrecognized 289 frames, and the like. Work is still needed to ensure the library can handle 290 error situations gracefully. 291* Improved portability: restructured the code into a GNU-like directory. 292 hierarchy. By making use of the GNU tools automake and autoconf, a wide 293 variety of platforms can be easily supported. This allows for a standard 294 "./configure; make; make install" installation process, as well as an 295 equally trivial method for uninstallation: "make uninstall". Likewise, 296 "make check" builds the example applications (see below). 297* Enhanced examples: the src/examples/ subdirectory has both new and improved 298 examples demonstrating how to make use of id3lib. The original "id3convert" 299 example now can convert both ways between id3v1 and id3v2 tags, as well as 300 strip both types of tags off of files via command-line switches. 301 Additionally, an "id3info" app has been added for displaying id3v1/v2 tag 302 information about a file. 303* Bug fixing: Fixes, fixes, and more fixes. A continual process. 304* The zlib library files were removed from the project. The need for zlib 305 was instead made a requirement through the configuration process via autoconf 306 and automake. 307* All of the id3lib library files were renamed by removing the "id3_" prefix. 308 Instead, the library files were placed in an id3 subdirectory in the src 309 directory. Likewise, when the library is installed on a system, an "id3" 310 subdirectory is created in the indicated include directory, and the header 311 files are placed there. Pragmatically, this means that code that makes use 312 of id3lib needs to "#include <id3/tag.h>" rather than "#include <id3_tag.h>". 313 This was done to create more structure and to avoid clutter in the include 314 directory. 315* The versioning strategy has been updated to be more in line with the 316 "libtool" way. However, in order to be more compatible with how versions 317 progressed previously, I've taken the approach that many other libraries have 318 taken: I've "massaged" the version:revision:age numbers so that the resulting 319 compiled library shows up as id3lib.so.3.6.0 (or whatever the current release 320 is). This is /strongly/ advised against in the libtool documentation, so I'm 321 considering going to a more "traditional" libtool versioning approach (see 322 the libtool info page for more information). 323 324There is yet much to do! Please see the TODO file for known bugs and lacking 325features... 326