1Revision history for Audio::Scan
2
3Note: Bug numbers refer to bugs at http://bugs.slimdevices.com
4
51.01    2018-07-09
6        - Added Opus codec support. (Jeff Muizelaar)
7        - ADTS: RT #124525, fixed incorrect duration calcuation due to off-by-one error
8          in frame counter.
9        - Added missing license meta name. (manwar)
10
111.00    2018-04-21
12        - Fixed parsing of DSF files with more than 2 channels.
13
140.99    2017-11-24
15        - Fixed a bug where an incorrect audio offset was returned when using
16          NO_ARTWORK and reading a file with an ID3v2.2 or v2.3 unsynchronization bit
17          set. The artwork in this type of file is only available when scanning in
18          normal mode (without NO_ARTWORK).
19        - Added id3_was_unsynced => 1 to the info section for v2.2/v2.3 files with the
20          whole-tag unsync bit set. This type of tag is generally harmful to parser performance,
21          so this flag might be useful if you want to find and upgrade this type of tag to v2.4.
22        - DSF: WAV_BLOCK_SIZE was being used instead of DSF_BLOCK_SIZE. (Kimmo Taskinen)
23        - ID3: Support for reading ID3 tags located >4GB into a file, such as in very large
24          DSF files. (Kimmo Taskinen)
25        - WavPack: Read correct samplerate and bits_per_sample for DSD files. (Kimmo Taskinen)
26        - DSF/DFF: added bitrate to info hash.
27
280.98    2017-04-28
29        - RT #119101, stop including MYMETA files in the tarball.
30
310.97    2017-04-27
32        - WAV: GH #2, fixed an integer overflow error that could result in an incorrect song_length_ms
33          for >16-bit files.
34
350.96    2016-11-21
36        - Ogg: RT #118888, fixed crash when trying to read Vorbis comments in an
37          incorrectly framed file with a bad terminal header page.
38        - Removed hints/darwin.pl, don't try to be smarter than Perl about how to build things.
39        - Fixed various minor compiler warnings output by the latest clang on macOS.
40
410.95    Unreleased community build
42        - Improved DFF parsing for files which end with corrupted chunk. (Adrian Smith)
43        - Improved ID3 support for DFF files. (Adrian Smith)
44
450.94    Unreleased community build
46        - DSF/DFF: Support dsd file scanning for dsd and dsdiff files. (Kimmo Taskinen)
47        - AIFF: Fixed scanning of 24 bit files. (Adrian Smith)
48
490.93    2011-09-14
50        - ASF: Support seeking in a file without an ASF_Index object.
51        - Don't use MAX_PATH because this limits path names to only 260 chars on Win32.
52
530.92    2011-09-09
54        - Added $info->{jenkins_hash} which is a 32-bit hash value of the
55          filename + mtime + file size.
56        - MP4: Get correct HE-AAC samplerate values from esds.
57        - ADTS AAC: Add support for .adts file extension.
58
590.91    2011-09-06
60        - MP3, MP4, WMA, WAV, AIFF, ADTS AAC: Added DLNA audio profile detection as
61          $info->{dlna_profile}.
62
630.90    2011-08-03
64        - ID3: Bug 17392, fixed APIC offset calculation for non-MP3 files such as AIFF
65          and WAV where the tag does not live at the front of the file.
66
670.89    2011-08-03
68        - APE: Bug 15895, better handling if we have a broken APE tag and run out of
69          tag data. (Adrian Smith)
70        - WMA: Bug 17355, fixed WM/Picture offset calculation when artwork is stored in the
71          Header Extension/Metadata Library block.
72        - WMA: Added output warning when trying to seek in a file without ASF_Index.
73        - Switched aac.t to Test::Warn instead of manual STDERR redirection.
74
750.88    2011-07-20
76        - ADTS AAC: Check first 2-3 frames to avoid false syncs.
77        - OSX: Xcode 4 doesn't include the 10.5 SDK, so check for this before using it.
78        - Win32: Display better error messages when unable to read from files.
79        - MP3, AAC, MPC: Bug 17173: Cleaned up several places where invalid memory reads could occur.
80
810.87    2011-03-21
82        - AAC: Bug 16874, Fixed infinite loop that could occur when reading a truncated
83          ADTS stream.
84        - Win32: Fixed MSVC compilation error in mp3.c.
85
860.86    2011-03-18
87        - MP3: Require first 3 frames to have matching samplerate and channel values.
88        - MP3: Fixed bug where info->{vbr} would not be set if a file had a Xing frame
89          but no LAME data.
90        - MP3: Handle case where ID3 tag indicates an extended header is present but no
91          actual header exists.
92
930.85    2010-09-08 23:40:00
94        - Changed audio_md5 to use bytes from middle of file instead of the start,
95          to reduce chance of false matches due to padding or silence.  Added new
96          md5_offset option to override the default location used for MD5.
97        - MP4: Fixed incorrect COVR_offset calculation.
98        - FLAC: Fixed a bug where artwork could be seen as invalid if the picture header
99          wasn't fully buffered.
100        - FLAC: Use existing MD5 value if available for audio_md5.
101        - FLAC, INCOMPATIBLE CHANGE: info 'md5' value changed to 'audio_md5'.
102
1030.84    2010-08-27 19:10:00
104        - Added an optional audio_md5 info value, this is the MD5 checksum of the
105          first N audio bytes of the file.  This is useful in determining if a file
106          is the same even when tags have been changed.  See the documentation for details.
107        - Added audio_size info value to all formats.
108        - Added image offset values in AUDIO_SCAN_NO_ARTWORK mode for some formats, so
109          image data may be extracted directly from the file if needed.  See the
110          documentation for specific details.
111        - AAC: Fixed samplerate values for AACplus files. The samplerate in the header
112          needs to be doubled to obtain the actual playback samplerate.
113        - ID3: Bug 16452, Don't add null strings as array entries for T* frames.
114
1150.83    2010-06-10 14:15:00
116        - APE: Tag could be ignored when ID3v1 tag is present.
117        - Fixed error handling for invalid RVAD tags.
118        - Win32: Added binmode for all open files and filehandles.
119
1200.82    2010-05-24 13:15:00
121        - RT 57664: ID3: Add checks to avoid reading too much inside an invalid frame.
122        - FLAC: Seeking bug fixes.
123
1240.81    2010-05-15 10:40:00
125        - Fixed broken boolean values.
126
1270.80    2010-05-14 23:15:00
128        - ID3: Fixed unsynchronisation of v2.2/v2.3 tags.
129        - FLAC: Fixed several seeking bugs and improved seeking algorithm.
130        - MP3: Subtract LAME encoder delay/padding from total samples to obtain more
131          accurate song duration value.
132
1330.79    2010-04-27 14:30:00
134        - ID3: Bug 16079, fixed crash when reading empty TCON tag.
135        - Bug 16095, workaround Win32+filehandle bug where file pos could sometimes
136          be off-by-one after a PerlIO_read.
137
1380.78    2010-04-16 15:45:00
139        - ASF: Fixed various issues when seeking, now uses the ASF_Index object correctly.
140        - ASF: Refactored to clean up the code and make it more efficient.
141        - ID3: Bug 16073, properly handle illegal zero-byte frames.
142
1430.77    2010-04-14 11:30:00
144        - PerlIO_seek with SEEK_END sometimes does not work correctly, changed all seeks
145          to use SEEK_SET instead.
146
1470.76    2010-04-14 10:30:00
148        - APE: Bug 15992, fixed reading of APE tags when file also has a Lyricsv2 tag.
149        - APE: Bug 16056, fixed reading of APE tags with certain kinds of invalid tags.
150
1510.75    2010-04-02 15:50:00
152        - ID3: Really fixed empty text field bug this time.
153
1540.74    2010-04-02 12:15:00
155        - ID3: Fixed bug where an empty text field could contain the text from the
156          previous frame.
157
1580.73    2010-03-31 12:30:00
159        - Added find_frame_fh_return_info method for MP4 seeking from a filehandle.
160
1610.72    2010-03-31 10:50:00
162        - Fixed bug in reading unsynchronized APIC frames, the APIC data returned was not
163          the correct size.
164        - Fixed Mac hints file to work properly on OSX Server 10.6.
165
1660.71    2010-03-30 00:00:00
167        - Added find_frame_return_info method for MP4 that returns the seek offset as well
168          as a rewritten header that can be placed before the seeked audio to construct a
169          valid bitstream.
170
1710.70    2010-03-23 19:00:00
172        - Replaced libid3tag with a custom ID3 tag parser. libid3tag would read an entire
173          tag into memory, so in files with large embedded artwork this was a huge waste
174          of memory.  The new parser will generally never buffer more than about 4K of the
175          file if AUDIO_SCAN_NO_ARTWORK is set.  It is also around twice as fast.
176        - INCOMPATIBLE CHANGE: ID3 tag elements returned in array form no longer include
177          the encoding type as the first value in the array.  Common frames this affects
178          include COMM, APIC, USLT, and others.
179        - INCOMPATIBLE CHANGE: find_frame for both MP3 and Ogg Vorbis now take a
180          timestamp in milliseconds.  Seeking using a file offset is too ambiguous
181          because of non-audio tag data.
182        - Fixed minor bug in Ogg Vorbis bitrate calculation, it was not ignoring the
183          size of the leading tag data when calculating average bitrate.
184        - Improved Ogg Vorbis bitrate/duration calculation when file contains multiple
185          logical bitstreams.
186        - Added support for old WavPack versions < 4.
187        - Changed ASF file_size value to be the actual file size, not the value from within
188          the file metadata which may or may not be correct.
189        - Bundled a win32 build of zlib to make compiling on Windows a bit easier.
190
1910.62    2010-03-02 12:00:00
192        - INCOMPATIBLE CHANGE: Ogg Vorbis COVERART tags are now translated to an
193          ALLPICTURES block and are base64-decoded.
194        - Added support for new Ogg Vorbis cover art tag, METADATA_BLOCK_PICTURE. Data
195          is returned in the same ALLPICTURES array as for FLAC.
196
1970.61    2010-02-23 22:50:00
198        - RT 53118: Fixed crash under Perl 5.11.
199        - Updated Mac hints file to be more compatible with non-Apple Perl builds.
200
2010.60    2010-02-22 17:45:00
202        - WavPack 4.x support.
203        - ID3: Bug 3998, Fixed parsing of multiple TCON genre values in older tag
204          versions.
205        - ID3: Parse RGAD frame (replay gain adjustment).
206        - APE: Fixed bug where a trailing null could be read from tags.
207        - FLAC: Calculate correct duration/bitrate for files with bad header
208          information.
209        - WAV: Ignore chunks SAUR, PAD, and otom.
210
2110.59    2010-02-08 15:30:00
212        - MP4: Bug 15656, read channels and bits_per_sample for ALAC files.
213        - APE: Bug 15324, read APEv2 tags that don't contain a header.
214        - APE: Fixed reading of binary tag data.
215        - APE: Support for reading special "Cover Art (Front)" tag.
216
2170.58    2010-01-28 12:30:00
218        - MP4: Bug 15262, Don't overwrite song_length_ms from individual tracks if it was
219          found in the mvhd box.
220
2210.57    2010-01-12 21:40:00
222        - Vorbis: Fixed parsing of files with large comment headers containing >128
223          page segments.
224        - Removed leading numbers from most tests, Schwern is right. :)
225          http://use.perl.org/~schwern/journal/40054
226
2270.56    2009-12-21 08:15:00
228        - MP3: Bug 15197, fixed bitrate/duration calculation of MPEG-2 Layer 3 files.
229        - MP3: RT 52932, fixed crash if seek fails while looking for APE tag.
230
2310.55    2009-11-26 17:00:00
232        - ID3: Bug 15196, fixed reading multiple TCON genre values.
233
2340.54    2009-11-25 15:30:00
235        - FLAC: Fixed bug when seeking in a file containing artwork.
236        - FLAC: Save memory by not buffering padding data.
237
2380.53    2009-11-22 17:20:00
239        - FLAC: Avoid wasting memory when reading picture block when
240          AUDIO_SCAN_NO_ARTWORK is set.
241        - Fixed Win32 compile issue.
242
2430.52    2009-11-20 23:30:00
244        - Bug 15115, ignore ID3 LINK frame data in latin1 list type.
245        - libid3tag: Avoid wasting memory when AUDIO_SCAN_NO_ARTWORK is set and we're
246          reading an APIC frame.
247        - MP4: Refactored tag parser to avoid wasting memory on COVR tags when not
248          reading artwork.
249        - Various minor buffer optimizations to slightly reduce memory usage.
250
2510.51    2009-11-16 15:10:00
252        - Fixed compilation error under Windows.
253
2540.50    2009-11-12 22:00:00
255        - MP4: API change, avg_bitrate is now returned in the top-level info hash, not
256          on a per-track basis.  This fixes some issues where tracks do not have an
257          average bitrate value.
258        - MP4: Read correct bits_per_sample value for secondary SLS track.
259
2600.49    2009-11-09 09:00:00
261        - Bug 15074, Fixed ASF GUID struct issues on some platforms.
262
2630.48    2009-11-02 15:40:00
264        - Fixed bug where AUDIO_SCAN_NO_ARTWORK didn't work properly when set to 0.
265
2660.47    2009-11-02 14:00:00
267        - If the AUDIO_SCAN_NO_ARTWORK environment variable is set, binary artwork tag
268          data is instead replaced by the length of the artwork data.  This can save
269          memory when scanning a lot of files with potentially large artwork.
270        - Changed method on non-Windows platforms for determining file size to use
271          stat instead of seek/tell.
272
2730.46    2009-10-29 14:00:00
274        - ID3: Change format of id3_version info field to list all versions of
275          tags found in a file.
276        - FLAC: Don't parse ID3 tags when using find_frame, in filehandle mode this
277          caused a crash.
278        - FLAC: Bug 14913, fixed error when calculating bitrate for large files.
279        - WAV: Bug 14946, strip nulls from the end of LIST INFO tags.
280        - MP4: Fixed error in avg_bitrate calculation for ALAC files.
281
2820.45    2009-10-26 15:00:00
283        - Bug 8380, Read multiple ID3 tags when more than one is found
284          in a file, such as ID3v1 + ID3v2.
285        - Fixed MP3 find_frame when looking for audio_offset + 1 and
286          a Xing TOC is present.  Xing TOC is ignored for this special
287          case.
288        - Fixed FLAC find_frame when file has ID3v2 tags.
289        - Bug 14883, added audio_size info to WAV and AIFF.
290        - Fixed crash on invalid FLAC picture block.
291        - Fixed bug in Ogg bitrate calculation.
292        - Fixed tests to work on old Perls without Encode.
293        - Max buffer size got accidentally reset to 10M in 0.44.
294        - Added utility methods: get_types, extensions_for, type_for (Frank Terbeck)
295
2960.44    2009-10-16 22:00:00
297        - Bug 14788, ASF: Fixed crasher when reading multiple integer tags.
298        - Changed Newx/Newxz calls to use older New/Newz API to support older Perls.
299
3000.43    2009-10-16 15:00:00
301        - Increase max buffer size yet again (to 20MB), this time someone had 16MB
302          of artwork!
303        - libid3tag: Don't re-generate frametype.c, compat.c, and genre.dat as this
304          can fail if gperf is not available.
305
3060.42    2009-10-13 10:45:00
307        - Bug 14728, fixed issue in libid3tag where default ID3v2.3 UTF-16 byte
308          order was set to big-endian instead of little-endian when no BOM
309          was present.  Several other tag readers also default to little-endian
310          so this appears to be the de-facto standard, even though the v2.3 spec
311          says all Unicode text must have a BOM.
312        - Bug 14705, Fixed libid3tag to return frames parsed so far when it runs into
313          an invalid frame.
314        - Bug 14658, MP4: fixed signed char issue on some PPC platforms.
315
3160.41    2009-10-12 10:30:00
317        - FLAC: Re-factored FLAC code to remove libFLAC dependency.
318        - FLAC: API change: more accurate seeking via find_frame, which
319          now takes an offset in milliseconds instead of bytes and seeks
320          to the correct audio frame containing the desired sample.
321        - FLAC: Added support for reading ID3v2 tags.
322        - AIFF: Fixed error when reading ID3 chunks with a bad chunk size.
323        - MP4: Fixed parsing of files with short TRKN fields.
324        - MP4: Parse audio object type from esds box.
325        - Vorbis: Added file_size to info.
326
3270.40    2009-10-03 16:00:00
328        - Bug 14462, fixed reading of WAV files with 18-byte fmt chunks.
329        - WAV: Fixed reading of files with data chunks having the wrong size.
330        - MP4: Fixed parsing of tags with duplicate keys containing integer
331          values.
332
3330.39    2009-10-01 16:00:00
334        - Bug 14241, fixed Win32 crash when using find_frame on FLAC files.
335        - Bug 14476, fixed crash when very large artwork is present (now supports
336          tags up to 10M).
337        - MP4: Fixed handling of cover art when multiple covers are present. Currently
338          only the first cover image is returned.
339        - Added is_supported($path) method. Can be used to determine if a given
340          file can be scanned. (Frank Terbeck)
341
3420.38    2009-09-22 13:00:00
343        - Fixed crasher bug in average bitrate calculation logic.
344
3450.37    2009-09-18 23:40:00
346        - Minor fix to avoid an error being printed during bitrate calculation.
347
3480.36    2009-09-18 23:30:00
349        - Bug 13449, changed the way MP3 average bitrate calculation works. Read
350          bitrate of all frames starting from the beginning of the file, bail out
351          early if the file appears to be CBR.
352        - Fixed a few bugs in the buffering code.
353
3540.35    2009-09-17 15:00:00
355        - WAV: added support for tags in an "ID3 " chunk.
356
3570.34    2009-09-12 00:15:00
358        - Bug 13995, fixed divide by zero error when trying to detect MP3 average
359          bitrate on a file with no valid frames.
360
3610.33    2009-09-11 22:15:00
362        - Fixed Xing bitrate calculation for MPEG 2.0 files.
363
3640.32    2009-09-09 14:00:00
365        - Bug 13921, added support for ID3v2.3 experimental XSOP frame.
366        - PPC is dead, changed Snow Leopard hint to only compile 32/64-bit x86.
367
3680.31    2009-08-29 13:30:00
369        - Allow static linking to a libFLAC that was built without
370          Ogg support.
371        - Change Snow Leopard hint to use 10.5 SDK and minimum version.
372
3730.30    2009-08-27 00:15:00
374        - Bug 8563, fixed parsing of MP4 sample rate.
375        - Bug 13486, fixed parsing of MP4 files with multiple values for
376          a single key.
377        - Added Snow Leopard 64-bit universal binary support.
378
3790.29    2009-08-07 16:00:00
380        - Bug 13198, really fixed bad FLAC bitrate calculation on some
381          files under Windows.
382
3830.28    2009-08-06 19:00:00
384        - Bug 13198, Changed the method for determining FLAC bitrate.
385
3860.27    2009-07-26 23:00:00
387        - Added support for Musepack SV8 files.
388        - Refactored Musepack code to use buffer API, fixes
389          crashes on big-endian platforms.
390        - Added support for reading Musepack track gain and album gain.
391
3920.26    2009-07-25 17:00:00
393        - Added support for ID3v2.4 RVA2 peak values.
394        - Fixed build on Solaris again.
395
3960.25    2009-07-10 22:00:00
397        - Bug 9942, fixed APE check when file does not have an ID3v1 tag, and
398          fixed parsing of APE tags with multiple items separated by a null byte.
399        - Bug 12615, improved Ogg Vorbis parser to do a better job finding the
400          audio offset.
401        - Bug 12668, fixed build on OpenSolaris (Sun's CC doesn't support -Wall).
402
4030.24    2009-07-09 22:45:00
404        - Bug 12691, some people have *really* large embedded artwork, allow buffer
405          to allocate up to 5M at a time (was 1M).
406
4070.23    2009-06-26 10:00:00
408        - Added support for ADTS files with leading junk before first audio frame.
409
4100.22    2009-06-18 12:00:00
411        - Improved accuracy of MP3 find_frame when Xing TOC is present.
412        - Fixed MP3 bug where Xing parser was not reading enough data.
413
4140.21    2009-06-17 17:30:00
415        - Refactored MP3 code to use more robust buffer API.
416        - Bug 12409, fixed crash when scanning MP3 file with null bytes before
417          initial audio frame.
418
4190.20    2009-06-16 15:00:00
420        - Bug 12168, fixed Vorbis calculation of bitrate and duration in certain
421          files.
422        - Bug 12326, fixed bug in scanning MP4 meta box.
423        - Bug 12152, added support for APEv1 tags.
424        - Fixed some APE test failures that happened on some platforms.
425
4260.19    2009-06-15 15:35:00
427        - MP4: find_frame support.
428        - MP4: Added leading_mdat flag for MP4 files where mdat precedes
429          moov.
430        - MP4: Handle invalid data sizes in ilst box.
431        - Changed FLAC parser to return CUESHEET_BLOCK for cuesheet metadata
432          block so it doesn't conflict with user-added CUESHEET tag.
433
4340.18    2009-06-05 11:45:00
435        - Added support for reading ID3v2 tags from ADTS files.
436
4370.17    2009-06-05 09:45:00
438        - MPEG-4 ADTS support.
439        - Fixed Makefile.PL to set local include dirs before FLAC include
440          dirs. (Philippe Kehl)
441
4420.16    2009-06-04 15:45:00
443        - Fixed parsing of MPEG-4 files where mdat occurs before moov.
444        - Bug 12250, Added handling for invalid field lengths in WAV LIST INFO
445          chunks.
446        - Bug 12242, (libid3tag) Fixed broken parsing of ID3v2.2 PIC frames.
447
4480.15    2009-06-02 16:30:00
449        - Bug 12224, (libid3tag) Added support for broken iTunes v2.4 lengths that
450          are not sync-safe.
451        - Bug 12212, Fixed infinite loop during MP3 bitrate calculation if tag size
452          is very large compared to the audio size.
453
4540.14    2009-05-21 14:45:00
455        - MPEG-4 support.
456        - Bug 12082: Fixed reading of APE files with header version <= 3.97.
457        - Fixed test failure on some Linux platforms due to rounding error.
458
4590.13    2009-04-24 16:00:00
460        - Musepack support.
461        - Monkey's Audio Codec (APE) support.
462        - AIFF support.
463
4640.12    2009-04-23 12:10:00
465        - Fixed bug in WAV duration calculation.
466        - Fixed seek-related bug caused by passing a PerlIO to libid3tag.
467
4680.11    2009-04-22 16:20:00
469        - Renamed FLAC CRC function to fix --with-flac-static build.
470
4710.10    2009-04-22 16:10:00
472        - WAV support.
473        - FLAC: Support for find_frame().
474
4750.09    2009-04-19 18:00:00
476        - ASF: Disabled index parsing.  This data isn't useful and just adds
477          overhead.  Also, it does not compile on Windows.
478        - Fixed Win32 compile issues.
479
4800.08    2009-04-18 16:35:00
481        - MP3: Support for find_frame().
482        - MP3: Added support for RVA/RVAD frame.
483
4840.07    2009-04-17 12:35:00
485        - Added find_frame_fh( $type => $fh, $offset ) method.
486          See docs for details.
487        - Added $info->{lossless} for WMA Lossless.
488
4890.06    2009-04-15 23:15:00
490        - Added scan_fh( $type => $fh ) method to scan a filehandle.
491        - Don't build FLAC support with < libFLAC 1.1.3.
492        - --with-flac-static flag for statically-linking libFLAC.
493
4940.05    2009-04-13 11:20:00
495        - ASF: Fixed bug with empty script command names.
496        - ASF: Support Extended Content Encryption.
497
4980.04    2009-04-12 16:10:00
499        - ASF: Support for Content Encryption, Extended Content
500          Encryption, Script Command, and Digital Signature objects.
501        - ASF: Fixed handling of multiple WM/Picture tags.
502
5030.03    2009-04-11 14:30:00
504        - Fixed big-endian GUID issues with ASF.
505        - (libid3tag) Updated to latest config.guess.
506
5070.02    2009-04-10 17:15:00
508        - ASF (WMA/WMV) parsing support.
509        - Improved directory structure.
510        - Added build instructions for Win32.
511        - Skip FLAC tests if FLAC support was not built.
512        - Don't try and build Universal Binary on PPC Macs.
513        - Fixed #define MIN for platforms that don't have it.
514
5150.01    2009-04-03 11:00:00
516        - Initial release.
517
518