cannam@85
|
1
|
cannam@85
|
2 libmad - MPEG audio decoder library
|
cannam@85
|
3 Copyright (C) 2000-2004 Underbit Technologies, Inc.
|
cannam@85
|
4
|
cannam@85
|
5 $Id: CHANGES,v 1.14 2004/02/17 02:02:03 rob Exp $
|
cannam@85
|
6
|
cannam@85
|
7 ===============================================================================
|
cannam@85
|
8
|
cannam@85
|
9 Version 0.15.1 (beta)
|
cannam@85
|
10
|
cannam@85
|
11 * Updated to autoconf 2.59, automake 1.8.2, libtool 1.5.2.
|
cannam@85
|
12
|
cannam@85
|
13 * Replaced Layer III IMDCT routine with one based on a faster algorithm,
|
cannam@85
|
14 improving both speed and accuracy.
|
cannam@85
|
15
|
cannam@85
|
16 * Improved portability of the Huffman table initialization.
|
cannam@85
|
17
|
cannam@85
|
18 * Fixed a problem that could result in an assertion failure in layer3.c
|
cannam@85
|
19 due to an invalid Layer III free format bitrate.
|
cannam@85
|
20
|
cannam@85
|
21 * Improved the robustness of Layer II bitrate/mode combinations, and added
|
cannam@85
|
22 a new MAD_ERROR_BADMODE error enum. The allowability of low-bitrate
|
cannam@85
|
23 stereo streams is influenced by the --enable-strict-iso option to
|
cannam@85
|
24 `configure'.
|
cannam@85
|
25
|
cannam@85
|
26 Version 0.15.0 (beta)
|
cannam@85
|
27
|
cannam@85
|
28 * Updated to autoconf 2.57, automake 1.7.5, libtool 1.4.3.
|
cannam@85
|
29
|
cannam@85
|
30 * Added new mad_f_div() API routine.
|
cannam@85
|
31
|
cannam@85
|
32 * Added a 64th entry to the Layer I/Layer II scalefactor table, for better
|
cannam@85
|
33 compatibility with existing streams. The --enable-strict-iso option to
|
cannam@85
|
34 `configure' can be used to disable use of this entry.
|
cannam@85
|
35
|
cannam@85
|
36 * Modified the header decoding routine to allow the reserved emphasis
|
cannam@85
|
37 value, for better compatibility with existing streams. The
|
cannam@85
|
38 --enable-strict-iso option to `configure' can be used to restore the
|
cannam@85
|
39 previous behavior of reporting this value as an error.
|
cannam@85
|
40
|
cannam@85
|
41 * Added new MAD_EMPHASIS_RESERVED enumeration constant.
|
cannam@85
|
42
|
cannam@85
|
43 * Fixed a bug in the ARM version of mad_f_scale64() discovered by Andre
|
cannam@85
|
44 McCurdy.
|
cannam@85
|
45
|
cannam@85
|
46 * Rewrote PowerPC assembly for minor gains.
|
cannam@85
|
47
|
cannam@85
|
48 * Modified mad_timer_fraction() to avoid the possibility of division by
|
cannam@85
|
49 zero when 0 is passed as the second argument.
|
cannam@85
|
50
|
cannam@85
|
51 * Fixed a non-fatal problem caused by attempting to designate ancillary
|
cannam@85
|
52 bits in Layer III after a decoding error.
|
cannam@85
|
53
|
cannam@85
|
54 * Changed to build a shared library by default.
|
cannam@85
|
55
|
cannam@85
|
56 * Changed to use native Cygwin build by default; give --host=mingw32 to
|
cannam@85
|
57 `configure' to use MinGW (and avoid a dependency on the Cygwin DLL).
|
cannam@85
|
58
|
cannam@85
|
59 Version 0.14.2 (beta)
|
cannam@85
|
60
|
cannam@85
|
61 * Changed Cygwin builds to use MinGW; resulting Win32 executables no
|
cannam@85
|
62 longer have a dependency on Cygwin DLLs.
|
cannam@85
|
63
|
cannam@85
|
64 * Added a new mad_stream_errorstr() API function to libmad for retrieving
|
cannam@85
|
65 a string description of the current error condition.
|
cannam@85
|
66
|
cannam@85
|
67 Version 0.14.1 (beta)
|
cannam@85
|
68
|
cannam@85
|
69 * Updated config.guess and config.sub to latest upstream versions.
|
cannam@85
|
70
|
cannam@85
|
71 * Enabled libtool versioning rather than release numbering.
|
cannam@85
|
72
|
cannam@85
|
73 * Improved the documentation in minimad.c.
|
cannam@85
|
74
|
cannam@85
|
75 * Several other small fixes.
|
cannam@85
|
76
|
cannam@85
|
77 Version 0.14.0 (beta)
|
cannam@85
|
78
|
cannam@85
|
79 * Added a 64-bit FPM negation operation to improve performance of subband
|
cannam@85
|
80 synthesis on some platforms.
|
cannam@85
|
81
|
cannam@85
|
82 * Improved MSVC++ portability and added MSVC++ project files.
|
cannam@85
|
83
|
cannam@85
|
84 * Added rounding to Layer III requantization for slightly better accuracy.
|
cannam@85
|
85
|
cannam@85
|
86 Version 0.13.0 (beta)
|
cannam@85
|
87
|
cannam@85
|
88 * Ancillary data is now properly extracted from Layer III streams.
|
cannam@85
|
89
|
cannam@85
|
90 * Rewrote the Layer III joint stereo decoding routine to correct a major
|
cannam@85
|
91 MPEG-2 problem and a minor MPEG-1 problem decoding intensity stereo.
|
cannam@85
|
92
|
cannam@85
|
93 * Eliminated the dependency on sign-extending right shifts for Layer I and
|
cannam@85
|
94 Layer II.
|
cannam@85
|
95
|
cannam@85
|
96 * Renamed `private' field to `private_bits' for better C++ compatibility.
|
cannam@85
|
97
|
cannam@85
|
98 * Gratuitously renamed `sfreq' field to `samplerate' and
|
cannam@85
|
99 MAD_ERROR_BADSAMPLEFREQ constant to MAD_ERROR_BADSAMPLERATE.
|
cannam@85
|
100
|
cannam@85
|
101 * Added `samplerate' and `channels' fields to synth.pcm struct to allow
|
cannam@85
|
102 these to be different from the decoded frame, and for simpler access.
|
cannam@85
|
103
|
cannam@85
|
104 * Added new mad_stream_options() and mad_decoder_options() API entries for
|
cannam@85
|
105 special runtime decoding options.
|
cannam@85
|
106
|
cannam@85
|
107 * Added new MAD_OPTION_IGNORECRC and MAD_OPTION_HALFSAMPLERATE options.
|
cannam@85
|
108
|
cannam@85
|
109 * Added new MAD_FLAG_FREEFORMAT indicator flag.
|
cannam@85
|
110
|
cannam@85
|
111 * Fixed some bugs in the async decoder.
|
cannam@85
|
112
|
cannam@85
|
113 * Added a new mad_timer_multiply() API routine.
|
cannam@85
|
114
|
cannam@85
|
115 * Eliminated `+' from asm constraints under Intel for better compatibility
|
cannam@85
|
116 with some compilers.
|
cannam@85
|
117
|
cannam@85
|
118 * Fixed a PIC-related problem in imdct_l_arm.S.
|
cannam@85
|
119
|
cannam@85
|
120 * Eliminated a static variable to make libmad thread-safe.
|
cannam@85
|
121
|
cannam@85
|
122 Version 0.12.5 (beta)
|
cannam@85
|
123
|
cannam@85
|
124 * Modified Layer III requantization to occur during Huffman decoding for
|
cannam@85
|
125 significant performance gains.
|
cannam@85
|
126
|
cannam@85
|
127 * Optimized short block IMDCT by eliminating redundant calculations.
|
cannam@85
|
128
|
cannam@85
|
129 * Made several other Layer III performance improvements; added
|
cannam@85
|
130 ASO_INTERLEAVE1, ASO_INTERLEAVE2, and ASO_ZEROCHECK
|
cannam@85
|
131 architecture-specific options for best performance on various
|
cannam@85
|
132 architectures.
|
cannam@85
|
133
|
cannam@85
|
134 * Optimized synthesis DCT to store result values as soon as they are
|
cannam@85
|
135 calculated.
|
cannam@85
|
136
|
cannam@85
|
137 Version 0.12.4 (beta)
|
cannam@85
|
138
|
cannam@85
|
139 * New PowerPC fixed-point assembly courtesy of David Blythe.
|
cannam@85
|
140
|
cannam@85
|
141 * Reorganized fixed-point assembly routines for easier maintenance and
|
cannam@85
|
142 better performance.
|
cannam@85
|
143
|
cannam@85
|
144 * Improved performance of subband synthesis through better indexing and
|
cannam@85
|
145 fewer local variables.
|
cannam@85
|
146
|
cannam@85
|
147 * Added alias reduction for the lower two subbands of mixed short blocks,
|
cannam@85
|
148 per a report of ambiguity with ISO/IEC 11172-3 and for uniformity with
|
cannam@85
|
149 most other implementations. Also improved alias reduction performance
|
cannam@85
|
150 using multiply/accumulate.
|
cannam@85
|
151
|
cannam@85
|
152 * Added --enable-strict-iso option to `configure' to override best
|
cannam@85
|
153 accepted practices such as the alias reduction for mixed short blocks.
|
cannam@85
|
154
|
cannam@85
|
155 * Improved performance of Layer III IMDCT by using longer
|
cannam@85
|
156 multiply/accumulate runs where possible.
|
cannam@85
|
157
|
cannam@85
|
158 Version 0.12.3 (beta)
|
cannam@85
|
159
|
cannam@85
|
160 * Added MPEG 2.5 support.
|
cannam@85
|
161
|
cannam@85
|
162 * Added preliminary support for parameterizing the binary point position
|
cannam@85
|
163 in the fixed-point representation.
|
cannam@85
|
164
|
cannam@85
|
165 * Added multiply/accumulate optimization to the Layer III IMDCT for long
|
cannam@85
|
166 blocks.
|
cannam@85
|
167
|
cannam@85
|
168 * Fixed a bug in the handling of Layer III mixed_block_flag.
|
cannam@85
|
169
|
cannam@85
|
170 * Fixed a configure problem when multiple -O CFLAGS are present.
|
cannam@85
|
171
|
cannam@85
|
172 Version 0.12.2 (beta)
|
cannam@85
|
173
|
cannam@85
|
174 * Rearranged the synthesis polyphase filterbank memory vector for better
|
cannam@85
|
175 locality of reference, and rewrote mad_synth_frame() to accommodate,
|
cannam@85
|
176 resulting in improved performance.
|
cannam@85
|
177
|
cannam@85
|
178 * Discovered a combination of compiler optimization flags that further
|
cannam@85
|
179 improve performance.
|
cannam@85
|
180
|
cannam@85
|
181 * Changed some array references in layer3.c to pointer derefs.
|
cannam@85
|
182
|
cannam@85
|
183 Version 0.12.1 (beta)
|
cannam@85
|
184
|
cannam@85
|
185 * Resolved the intensity + MS joint stereo issue (a simple bug).
|
cannam@85
|
186 OPT_ISKLUGE is no longer considered to be a kluge.
|
cannam@85
|
187
|
cannam@85
|
188 * Fixed another, hopefully last main_data memory bug.
|
cannam@85
|
189
|
cannam@85
|
190 * Split part of struct mad_frame into struct mad_header for convenience
|
cannam@85
|
191 and size.
|
cannam@85
|
192
|
cannam@85
|
193 Version 0.12.0 (alpha)
|
cannam@85
|
194
|
cannam@85
|
195 * Changed the build environment to use automake and libtool. A libmad
|
cannam@85
|
196 shared library can now be built using the --enable-shared option to
|
cannam@85
|
197 `configure'.
|
cannam@85
|
198
|
cannam@85
|
199 * Added another callback to MAD's high-level decoder API after the frame
|
cannam@85
|
200 header has been read but before the frame's audio data is decoded.
|
cannam@85
|
201
|
cannam@85
|
202 * Streamlined header processing so that mad_frame_decode() can be called
|
cannam@85
|
203 with or without having already called mad_frame_header().
|
cannam@85
|
204
|
cannam@85
|
205 * Fixed some other header reading miscellany, including CRC handling and
|
cannam@85
|
206 free bitrate detection, and frame length verification with free
|
cannam@85
|
207 bitrates.
|
cannam@85
|
208
|
cannam@85
|
209 * Fixed a problem with Layer III free bitrates > 320 kbps. The main_data
|
cannam@85
|
210 buffer size should now be large enough to handle any size frame, by
|
cannam@85
|
211 virtue of the maximum possible part2_3_length.
|
cannam@85
|
212
|
cannam@85
|
213 * Further developed the async API; arbitrary messages can now be passed to
|
cannam@85
|
214 the subsidiary decoding process.
|
cannam@85
|
215
|
cannam@85
|
216 * Streamlined timer.c and extended its interface. It now has support for
|
cannam@85
|
217 video frame/field lengths, including output support for drop-frame
|
cannam@85
|
218 encoding.
|
cannam@85
|
219
|
cannam@85
|
220 * Replaced many constant integer preprocessor defines with enums.
|
cannam@85
|
221
|
cannam@85
|
222 Version 0.11.4 (beta)
|
cannam@85
|
223
|
cannam@85
|
224 * Fixed free format bitrate discovery.
|
cannam@85
|
225
|
cannam@85
|
226 * Changed the timer implementation and extended its interface.
|
cannam@85
|
227
|
cannam@85
|
228 * Integrated Nicolas Pitre's patch for pre-shifting at compile-time and
|
cannam@85
|
229 for better multiply/accumulate code output.
|
cannam@85
|
230
|
cannam@85
|
231 * Applied Simon Burge's patch to imdct_l_arm.S for a.out compatibility.
|
cannam@85
|
232
|
cannam@85
|
233 * Added -mtune=strongarm for all ARM targets.
|
cannam@85
|
234
|
cannam@85
|
235 Version 0.11.3 (beta)
|
cannam@85
|
236
|
cannam@85
|
237 * Added new --enable-speed and --enable-accuracy options for `configure'
|
cannam@85
|
238 to automatically select appropriate SSO/ASO options, et al.
|
cannam@85
|
239
|
cannam@85
|
240 * Modified subband synthesis to use multiply/accumulate optimization (if
|
cannam@85
|
241 available) for better speed and/or accuracy.
|
cannam@85
|
242
|
cannam@85
|
243 * Incorporated Andre McCurdy's changes for further rounding optimizations
|
cannam@85
|
244 in the rest of his code.
|
cannam@85
|
245
|
cannam@85
|
246 Version 0.11.2 (beta)
|
cannam@85
|
247
|
cannam@85
|
248 * Incorporated Nicolas Pitre's ARM assembly and parameterized scaling
|
cannam@85
|
249 changes.
|
cannam@85
|
250
|
cannam@85
|
251 * Incorporated Andre McCurdy's ARM assembly optimization (used only if
|
cannam@85
|
252 --enable-aso is given to `configure' to enable architecture-specific
|
cannam@85
|
253 optimizations.)
|
cannam@85
|
254
|
cannam@85
|
255 * Reduced FPM_INTEL assembly to two instructions.
|
cannam@85
|
256
|
cannam@85
|
257 * Fixed accuracy problems with certain FPM modes in synth.c.
|
cannam@85
|
258
|
cannam@85
|
259 * Improved the accuracy of FPM_APPROX.
|
cannam@85
|
260
|
cannam@85
|
261 * Improved the accuracy of SSO.
|
cannam@85
|
262
|
cannam@85
|
263 * Improved sync discovery by checking for a sync word in the following
|
cannam@85
|
264 frame.
|
cannam@85
|
265
|
cannam@85
|
266 * Minor code clean-up.
|
cannam@85
|
267
|
cannam@85
|
268 * Added experimental rules for generating a libmad.so shared library.
|
cannam@85
|
269
|
cannam@85
|
270 Version 0.11.1 (beta)
|
cannam@85
|
271
|
cannam@85
|
272 * Moved libmad code into a separate directory.
|
cannam@85
|
273
|
cannam@85
|
274 * Changed SSO to be disabled by default, as output accuracy is deemed to
|
cannam@85
|
275 be more important than speed in the general case.
|
cannam@85
|
276
|
cannam@85
|
277 * Fixed a bug in Layer III sanity checking that could cause a crash on
|
cannam@85
|
278 certain random data input.
|
cannam@85
|
279
|
cannam@85
|
280 * Extended the Layer III requantization table from 8191 to 8206 as some
|
cannam@85
|
281 encoders are known to use these values, even though ISO/IEC 11172-3
|
cannam@85
|
282 suggests the maximum should be 8191.
|
cannam@85
|
283
|
cannam@85
|
284 Version 0.11.0 (beta)
|
cannam@85
|
285
|
cannam@85
|
286 * Implemented MPEG-2 extension to Lower Sampling Frequencies.
|
cannam@85
|
287
|
cannam@85
|
288 * Improved Layer III performance by avoiding IMDCT calculation when all
|
cannam@85
|
289 input samples are zero.
|
cannam@85
|
290
|
cannam@85
|
291 * Significantly reduced size of Layer II tables.
|
cannam@85
|
292
|
cannam@85
|
293 Version 0.10.3 (beta)
|
cannam@85
|
294
|
cannam@85
|
295 * Improved SSO output quality.
|
cannam@85
|
296
|
cannam@85
|
297 * Made portable to cygwin.
|
cannam@85
|
298
|
cannam@85
|
299 * Localized memory references in III_huffdecode() for better performance.
|
cannam@85
|
300
|
cannam@85
|
301 Version 0.10.2 (beta)
|
cannam@85
|
302
|
cannam@85
|
303 * Rewrote Layer III long block 36-point IMDCT routine for better
|
cannam@85
|
304 performance.
|
cannam@85
|
305
|
cannam@85
|
306 * Improved subband synthesis fixed-point games somewhat.
|
cannam@85
|
307
|
cannam@85
|
308 Version 0.10.1 (beta)
|
cannam@85
|
309
|
cannam@85
|
310 * Added a subband synthesis optimization (SSO) which involves modifying
|
cannam@85
|
311 the fixed-point multiplication method during windowing. This produces
|
cannam@85
|
312 subtle differences in the output but improves performance greatly.
|
cannam@85
|
313
|
cannam@85
|
314 * Added I_STEREO and MS_STEREO flags to frame struct.
|
cannam@85
|
315
|
cannam@85
|
316 * Eliminated privately-used CRCFAILED flag.
|
cannam@85
|
317
|
cannam@85
|
318 * Fixed a bug where Layer III decoding could crash on some badly-formatted
|
cannam@85
|
319 (e.g. non-MPEG) bitstreams.
|
cannam@85
|
320
|
cannam@85
|
321 * Miscellaneous code clean-up.
|
cannam@85
|
322
|
cannam@85
|
323 Version 0.10.0 (beta)
|
cannam@85
|
324
|
cannam@85
|
325 * Added SPARC fixed-point math support.
|
cannam@85
|
326
|
cannam@85
|
327 * Revamped libmad API for better high- and low-level support.
|
cannam@85
|
328
|
cannam@85
|
329 * Documented more of the code.
|
cannam@85
|
330
|
cannam@85
|
331 * Changed sync semantics such that new stream buffers are assumed to be
|
cannam@85
|
332 sync-aligned.
|
cannam@85
|
333
|
cannam@85
|
334 * Changed Layer III to dynamically allocate static memory so as not to
|
cannam@85
|
335 waste it (about 6.4K) when only decoding Layer I or Layer II.
|
cannam@85
|
336
|
cannam@85
|
337 ===============================================================================
|
cannam@85
|
338
|