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