blob: 3438772418871663dbd4ba5a98eabec375fc567f [file] [log] [blame]
$Id: HISTORY,v 1.3 2000/04/17 05:05:01 eldamitri Exp $
ID3Lib History
The following is a history of id3lib up to version 3.05a. Please see the
NEWS file for changes since then.
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)