Counter Strike : Global Offensive Source Code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

338 lines
11 KiB

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