-
Notifications
You must be signed in to change notification settings - Fork 8
/
ChangeLog.txt
146 lines (122 loc) · 5.64 KB
/
ChangeLog.txt
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
=======================================================================
AudioWerkzeugeBibliothek - ChangeLog
Version 3.0
10/2024
=======================================================================
The library AudioWerkzeugeBibliothek originated from several format-specific
libraries for mp3, flag, ogg and others. Because of that, there were a lot burden
of the past contained in the code. Some duplicates, no consistency in parameter
order, type or naming and some other inconveniences.
With version 3.0, I tried to improve the overall consistency and usability of the
provided methods. However, it is not possible to do this downward compatible.
Also, I decided to implement a more consistent way to access all Tag Items in all
AudioFile classes.
Therefore, a lot of the previous methods like GetAllFrames or GetAllFields have
been replaced by a new method, which is the same for all classes.
New in Version 3.0 (10/2024)
============================
- Support for *.opus-Files
- Support for CoverArt in VorbisComments (*.ogg and *.opus)
Support only for the "official" version, using METADATA_BLOCK_PICTURE as Key. The
unofficial, deprecated variant "COVERART" is NOT directly supported. However, you
can check for this key, and try to get the picture data from it.
Updated class TBaseAudioFile
----------------------------
- new: procedure GetTagList(Dest: TTagItemList;
ContentTypes: TTagContentTypes = cDefaultTagContentTypes);
- new: procedure DeleteTagItem(aTagItem: TTagItem);
- new: function GetPicture( ... ): Boolean;
- new: function SetPicture( ... ): Boolean;
- new: property Lyrics: String;
new class TTagItem (unit AudioFiles.BaseTags.pas)
-------------------------------------------------
A new base class TTagItem for all separate TagItems (like "Artist" or "Title").
Derived from that are classes like TID3v2Frame, TCommentVector or TFlacMetaBlock
Basic properties:
- TagType: teTagType; // e.g. ttID3v2, ttVorbis, ttFlacMetaBlock, ttApev2, ttM4AAtom
- Key: String;
- Description: String;
- TagContentType: TTagContentType; // e.g. tctText, tctPicture, tctBinary, ...
Changes in Version 3.0
======================
- removed: const Array Picture_Types: Array[0..20] of string = ( ... )
(units Id3v2Frames.pas, FlacFiles)
- removed: Type TApePictureTypes
- removed: const TPictureTypeStrings: Array[TApePictureTypes] of AnsiString = ( ... )
(unit ApeTagItem.pas)
These three Arrays were basically the same, and are replaced with one new Array,
declared in Unit AudioFiles.Declarations.pas.
- new: Type TPictureType = ( ... );
- new: Const cPictureTypes: Array[TPictureType] of string = ( ... );
(unit AudioFiles.Declarations.pas)
This type replaces the Byte or Cardinal parameter "PicType" (or similar) for
picture-related methods in Flac and ID3v2, and also Ape.
- modified: type TAudioError; (Renamed/removed/added some error types)
Unified parameters for picture related methods
----------------------------------------------
It is now always "Stream, Mime, PictureType, Description"
Note:
Not all Tag-Formats actually contain values for Mime/PictureType/Description.
Use dummy values in these cases.
Mp3Files
--------
TID3v2Tag
- removed: procedure DeleteFrame(aFrame: TID3v2Frame);
(use DeleteTagItem instead)
- removed: already deprecated functions GetAll*Frames: TObjectList;
- modified: GetAll*Frames(aList: TObjectlist); to procedure GetAll*Frames(aList: TTagItemList);
TID3v2Frame
- removed: property FrameType: TID3v2FrameTypes
(use property TagContentType instead)
- removed: type TID3v2FrameTypes
(use TTagContentType instead)
OggVorbisFiles, FlacFiles
-------------------------
Note:
Classes TFlacFile, TOggVorbisFile and (new) TOpusFile are derived from a common
ancestor TBaseVorbisFile that provides access to the VorbisComments.
Also note that CoverArt in Flac files is *NOT* stored within the VorbisComments,
but in a separate structure.
- removed: procedure GetAllFields(Target: TStrings);
(use GetTagList instead)
- removed: GetPropertyByIndex
- removed: SetPropertyByIndex
(use the TagItems determined by GetTagList instead)
FlacFiles
-------------------------
- renamed: GetPictureStream (to: GetPicture)
- removed: procedure GetAllPictureBlocks(aTarget: TObjectList);
(use GetTagList instead with parameter [tctPicture])
- removed: procedure DeletePicture(aFlacPictureBlock: TFlacPictureBlock);
(use DeleteTagItem instead)
ApeFiles (Monkey, MusePack, OptimFrog, TrueAudio, WavPack)
----------------------------------------------------------
TApeTag
- removed: procedure GetAllFrames(dest: TStrings);
- removed: procedure GetAllTextFrames(dest: TStrings);
- removed: procedure GetAllPictureFrames(dest: TStrings);
(use GetTagList instead)
TApeTagItem
- removed: Property Value
(use methods Get/SetText instead for text information)
M4AFiles
--------
TM4AFile
- removed: procedure GetAllTextAtomDescriptions(dest: TStrings);
- removed: procedure GetAllTextAtoms(dest: TObjectList);
- removed: procedure GetAllAtoms(dest: TObjectList);
(use GetTagList instead)
- removed: procedure RemoveAtom(aAtom: TMetaAtom);
(use DeleteTagItem instead)
- removed: function GetTextDataByDescription(aDescription: UnicodeString): UnicodeString;
(use acces through the TTagItems instead)
TMetaAtom
- removed: function GetListDescription: UnicodeString;
(use property Description from BaseClass TTagItem instead)
TUdtaAtom
- removed: procedure GetAllTextAtomDescriptions(dest: TStrings);
- removed: procedure GetAllTextAtoms(dest: TObjectList);
- removed: procedure GetAllAtoms(dest: TObjectList);
(use GetTagList instead)
- removed: procedure RemoveAtom(aAtom: TMetaAtom);
(use DeleteTagItem instead)