1$Id: HISTORY,v 1.3 2000/04/17 05:05:01 eldamitri Exp $ 2 3ID3Lib History 4 5The following is a history of id3lib up to version 3.05a. Please see the 6NEWS file for changes since then. 7 823 Nov 1998 3.05a - Released 3.05a in which the only change was the 9 inclusion of a C header file for using the DLL 10 (how forgetful I am!). 11 1222 Nov 1998 3.05 - Released 3.05 and the DLL. 13 14 8 Nov 1998 3.05 - Finished the first revision of the DLL. Interesting 15 stuff. Contains both C++ class and C functions (the 16 C++ classes that are exported to the DLL are Tag, 17 Frame, Field and Error). 18 - Took out the SetVersion function from the ID3_Tag 19 class. This is because I no longer wish ID3Lib to be 20 able to create the old ID3v2-2.0 tags. ID3Lib will 21 always create the latest version tags it is capable 22 of creating. 23 24 1 Nov 1998 3.05 - Removed the encryption and grouping stuff. I have a 25 lot to do before I finish that section and I might 26 end up implementing it differently, so I thought it 27 best to remove it before people started using it 28 (no-one should since it wasn't fully functional 29 anyway). 30 3113 Oct 1998 3.05 - Work has begun on the Windows DLL. 32 33 9 Oct 1998 3.04 - Added the text list handling functions from 2.16, but 34 they are slightly different under 3.xx. 35 - Also added a Size() function for fields which 36 applications can use to allocate buffers and so on. 37 - Work has progressed on the encryption and grouping 38 side of things, but nothing usable by an application 39 just yet. 40 41 5 Oct 1998 3.04 - Changed the ID3_AddHandler() function to include a 42 parameter which specifies the factor by which the 43 size of the frame may increase as a result of 44 encryption or encoding. This is used for buffer and 45 size estimates. 46 47 3 Oct 1998 3.03a - Fixed a small Unicode BOM bug. 48 49 2 Oct 1998 3.03 - Added very minimal and not-totally-functional support 50 for the automatic handling of encryption and 51 grouping. 52 - Added a function to ID3_Tag which makes attaching 53 arrays of ID3_Frame objects easy. 54 55 1 Oct 1998 3.03 - Yesterday, ID3v2-3.0 became an informal standard. 56 Due to this, ID3Lib now does not create ID3v2-3.0 57 tags with the EXPERIMENTAL bit set. 58 5930 Sep 1998 3.02 - Expanded the error handling class to include 60 functions which return the ID3Lib source file and 61 line number of the exception. This is useful for 62 debugging and generating bug reports (hint, hint). 63 6428 Sep 1998 3.02 - Added the grouping registration and encryption 65 registration frames. Also added support for parsing 66 and rendering frames with the grouping and encryption 67 symbols, although currently this data is ignored. I 68 plan to implement call backs to handle the encryption 69 and decryption of data. Also, there is currently no 70 checking at render-time that all frames which have 71 these symbols also have a corresponding rego frame. 72 7326 Sep 1998 3.02 - Changed the 'tag changed' stuff so that calls to 74 ID3_Tag::SetVersion(), ID3_Tag::SetCompression() etc 75 now constitute a change in the tag. This is because 76 of the relaxed restrictions on the calls to these 77 functions before rendering/updating. - Fixed a bug 78 in the ID3_Tag::Link() command. 79 8025 Sep 1998 3.01 - Added the ID3_Tag::RemoveFrame() function. 81 - Added the ID3_Tag::SetExtendedHeader() function, even 82 though this setting is currently ignored. 83 - Added luint return type to the Field::Get() functions 84 for ASCII and Unicode strings. These functions now 85 return how many characters (not bytes necessarily) of 86 the supplied buffer were used, not including the 87 NULL-termination. 88 - Added the 'unique file identifier' frame which I 89 omitted from 3.00 but was present in 2.xx. 90 - Added code that allows ID3Lib and applications to 91 track whether a tag has been altered since the last 92 parse or render. 93 - Slightly altered the padding strategy when a tag 94 shrinks in size. 95 - No more requirements on when ID3_Tag::SetVersion() 96 etc must be called, except that they should be called 97 prior to an update or render if you plan to use 98 different settings than the defaults. 99 10021 Sep 1998 3.00 - Released 3.00 101 10215 Sep 1998 3.00 - Added support for parsing and converting ID3v1/1.1 103 and Lyrics3 v2.0 tags and CDM frames from 2.01 104 experimental tags. Also parses Unicode now. 105 106 9 Sep 1998 3.00 - Work almost done on 3.00. A little bit to fix up in 107 the parsing department (doesn't parse Unicode yet, or 108 CDMs from the old 2.01 draft). Then just add 109 validity checking and support for most of the frames. 110 111 2 Sep 1998 2.16 - Small Unicode string parsing bug fixed. 112 11325 Aug 1998 2.15 - Small bug fixes in the tag parsing routines. 114 - Completely removed support for creating extended 115 headers, and ID3Lib will now ignore tags which have 116 the EXTENDEDHEADER bit set (as under 2.00, this bit 117 isn't defined). 118 11924 Aug 1998 2.14 - Small bug fixes in the example file 'convert.cpp'. 120 - ID3Lib now sets the EXPERIMENTAL bit in the tag 121 header. 122 12313 Aug 1998 2.13 - As of 2.13, ID3Lib now comes in two flavours. The 124 first is the normal distribution as we have come to 125 know and love. The second is a machine-specific 126 archive which contains the static link libraries. 127 Currently, you can get Win32 link libraries. 128 12912 Aug 1998 2.12 - As of 2.12, the ID3Lib distribution will contain 130 precompiled static libraries for Visual C++ and 131 eventually for Linux i386. The MSVC static libs are 132 be compiled for the multi-threaded run-time library 133 and there will be one for debugging and one normal 134 one for release-quality applications. 135 136 - Fixed a small exclusion in the 'id3_support.h' file. 137 It now contains a #include for the 'wchar.h' header 138 file. The absence of this line resulted in some 139 applications producing compilation errors if they 140 didn't already include it or 'stdio.h'. 141 14211 Aug 1998 2.12 - I created a small problem in 2.11 where the name of 143 the URL field in the 'ID3FID_WWWUSER' frame ('WXX') 144 was changed from ID3FN_URL to ID3FN_TEXT. This has 145 been fixed (is back to ID3FN_URL). 146 - When reading a binary tag, previous versions of 147 ID3Lib ignored the fact that some of the frames in 148 the tag may have been compressed, so when writing the 149 tag back out, those old frames were written without 150 compression. This is fixed so that all old frames 151 are written back out as they were read in, unless of 152 course you explicitly change the compression status 153 before rendering the new tag. 154 - Added the ID3C_SetSongSize and ID3C_GetSongSize 155 commands to the ID3_Tag class. These allow you to 156 tell ID3Lib how big (in bytes) the song file is to 157 which you intend attaching the tag. ID3Lib can then 158 work out how much padding the tag requires to 159 correctly make the entire resulting file fill an even 160 multiple of 2Kb. 161 - If the tag we are manipulating was read in as a 162 binary tag before we started playing with it, then 163 ID3Lib will record the size of tag before we started 164 fooling around with it. This way, the padding system 165 can pad the new tag out to the old size if the new 166 tag will still fit inside the old one. This makes 167 file manipulation much easier when writing tags to 168 existing song files. If it won't fit, then the new 169 tag will receive padding as per the 2K cluster 170 method. All this talk of padding only applies if the 171 tag's padding property is set to ID3PD_AUTOMATIC, 172 which it is by default. 173 17410 Aug 1998 2.11 - Replaced ID3C_SetID and GetID with proper field 175 names, and the same with ID3C_SetComp and GetComp. 176 This requires a change in source code for the 177 application. Without quotes, do a search and 178 replace... 179 180 "ID3C_SetID," replace with "ID3C_Set, ID3FN_ID," 181 "ID3C_GetID," replace with "ID3C_Get, ID3FN_ID," 182 "ID3C_SetComp," replace with "ID3C_Set, ID3FN_COMPRESSED," 183 "ID3C_GetComp," replace with "ID3C_Get, ID3FN_COMPRESSED," 184 185 - Thanks to a suggestion by Ilana Rudnik, I added a 186 generic frame type called 'ID3FID_UNSUPPORTED' which 187 is only to be used by applications as a 188 'place-holder' in lists and arrays while waiting for 189 ID3Lib to support all the frames. 190 191 6 Aug 1998 2.11 - Created the ID3C_Locate and ID3C_GetNumFrames 192 commands. 193 - Made the documentation an HTML file instead of boring 194 text. 195 196 5 Aug 1998 2.11 - Thanks to Eng-Keong Lee, I have located and fixed a 197 bug which most-of-the-time caused a crash when 198 performing an ID3C_SetID on a frame for the first 199 time. 200 201 3 Aug 1998 2.10 - Fixed a few things to make ID3Lib compile completely 202 cleanly under Linux - thanks to Carlos Puchol for 203 finding the remaining hassles. 204 - Added two commands to adjust the unsync facility - 205 ID3C_SetUnsync and ID3C_GetUnsync. The default is 206 ID3SY_AUTOMATIC. 207 - Add support for the 2.01 extended tag header. By 208 default, ID3Lib will NOT write an extended header to 209 tags it creates. This can be adjusted by the 210 ID3C_SetExtHeader command. 211 - Changed the directory structure so that the required 212 zlib source is now in the same directory as the 213 ID3Lib source. 214 215 2 Aug 1998 2.10 - Fixed a small memory leak which occurred when 216 clearing a tag of frames which were read in from an 217 external binary tag. 218 - Added a 'bugreport.txt' file to the documentation to 219 improve effectiveness of bug reporting. 220 221 1 Aug 1998 2.10 - Adding support for tag padding. This results in two 222 new commands which operate on ID3_Tag objects: 223 ID3C_SetPadding and ID3C_GetPadding. 224 225 1 Aug 1998 2.09 - Fixed some bugs in the ID3C_ToFile and ID3C_FromFile 226 commands. 227 - Fixed a bug which prevented empty strings which were 228 supposed to be NULL-terminated from doing so. 229 23031 Jul 1998 2.09 - Changed the functionality of the error handling 231 mechanism. The function interface to the error 232 handler has changed - see the example source file 233 'main.cpp' for details. 234 - Improved frame verification somewhat. 235 23628 July 1998 2.08 - Added ID3C_ToFile command to binary fields. 237 - Changed the format of the ID3C_Size command when 238 applied to frames. There is now a required second 239 parameter which specifies which field you require the 240 size of. If you request ID3FN_ALL, you will get the 241 size of the frame itself. 242 - The above change for ID3C_Size now also applies to 243 the ID3C_Clear command (again, only when applied to 244 frames). 245 - Enhanced the ID3C_Find command so as to allow 246 searches based on the ID3FN_LANGUAGE field and the 247 ID3FN_DESCRIPTION field. 248 24927 July 1998 2.07 - Fixed a bug which had the WXX and TXX frames 250 including a language field which they shouldn't. 251 - Fixed a bug in the string's ID3C_Get command which 252 wrongly interpreted the presence of a '/' symbol in 253 the string as meaning that the string was a textlist. 254 25521 July 1998 2.06 - Added support for frame compression via zlib. This 256 means that all frames have an extra attribute which 257 specifies whether the frame should be compressed. 258 - Changed some typedefs and macro names so as not to 259 clash with some of Windows' pre-defined 260 datatypes/names. Thanks to Chuck Zenkus for finding 261 this. 262 26314 July 1998 2.05 - Finished up Unicode support. All internal string 264 handling is done with Unicode strings. Strings are 265 converted as needed during rendering of the tag. 266 267 6 July 1998 2.05 - BINARY fields now support an 'ID3C_FromFile' command 268 which fills the field with data from the specified 269 file. The file is read and the contents placed in 270 the field immediately on the field encountering this 271 command. 272 273 2 July 1998 2.04 - Improved support for frame validation. 274 - Repaired a cool bug in the error handling which 275 prevented an application from finding further 276 information about the error. This fix resulted in a 277 new format for the application error handler 278 function. 279 280 2.03 - Added support for the ID3C_Add, ID3C_Remove, 281 ID3C_GetElement, ID3C_GetNumElements commands in the 282 STRING field type. This allows easy use of the text 283 lists as used in the 'TP1' frame. 284 285 - Improved error handling once more. 286 - Added support for the ID3C_Increment command in the 287 INT field type. 288 - Added support for the CNT, POP, GEO, TCO, TCR and UFI 289 frames. 290 - Added preliminary validation checking for frames to 291 ensure they meet the ID3v2 standard requirements. 292 Not fully implemented. 293 294 2.02 - Adjusted the '::Do()' function slightly - you can now 295 chain commands together. The last parameter to this 296 call must now always be 'ID3C_DONE'. 297 298 1 July 1998 2.01 - Added the 'ID3_IsTagHeader()' function and an 299 appropriately adjusted ID3C_Parse command. 300 30130 June 1998 2.00 - First preliminary release of ID3Lib v2.00. Supports 302 lots of frames (even PIC). Lots of work still 303 needed. 304 30525 June 1998 2.00 - Abandoned the v1.xx framework in favour of a more 306 versatile and expandable one. This required a major 307 re-write of most of the internals of the library as 308 well as changes to any applications using the 309 previous framework. The new framework is part of all 310 ID3Libs which are 2.xx. 311 31223 June 1998 1.01 - Released v1.01 which added support for four new 313 frames. TXX, WXX, COM, ULT 314 31521 June 1998 1.00 - Initial Release (v1.0) 316