From a708851b63c4aefe13f74b15a902927f97959538 Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Fri, 28 Mar 2025 01:20:23 -0700 Subject: [PATCH] Dependencies: Update BASS and WavPack libraries BASSMIDI: 2.4.15.3 BASSFLAC: 2.4.5.5 BASSOPUS: 2.4.3 BASSWV: 2.4.7.4 WavPack: 5.8.1 And updated the WavPack plugin to support threaded decoding, using up to four worker threads, as detected from the host machine's CPU count. Signed-off-by: Christopher Snowhill --- .gitignore | 1 + Frameworks/WavPack/Files/AUTHORS | 11 - Frameworks/WavPack/Files/ChangeLog | 366 ---- Frameworks/WavPack/Files/NEWS | 717 ------- Frameworks/WavPack/Files/README.md | 136 -- Frameworks/WavPack/Files/common_utils.c | 788 -------- Frameworks/WavPack/Files/decorr_tables.h | 1077 ---------- Frameworks/WavPack/Files/decorr_utils.c | 204 -- Frameworks/WavPack/Files/entropy_utils.c | 378 ---- Frameworks/WavPack/Files/extra1.c | 704 ------- Frameworks/WavPack/Files/extra2.c | 929 --------- Frameworks/WavPack/Files/md5.c | 291 --- Frameworks/WavPack/Files/md5.h | 45 - Frameworks/WavPack/Files/open_filename.c | 304 --- Frameworks/WavPack/Files/open_legacy.c | 114 -- Frameworks/WavPack/Files/open_raw.c | 315 --- Frameworks/WavPack/Files/open_utils.c | 1284 ------------ Frameworks/WavPack/Files/pack.c | 1726 ----------------- Frameworks/WavPack/Files/pack_dns.c | 191 -- Frameworks/WavPack/Files/pack_dsd.c | 668 ------- Frameworks/WavPack/Files/pack_floats.c | 270 --- Frameworks/WavPack/Files/pack_utils.c | 1445 -------------- Frameworks/WavPack/Files/read_words.c | 614 ------ Frameworks/WavPack/Files/tag_utils.c | 597 ------ Frameworks/WavPack/Files/tags.c | 179 -- Frameworks/WavPack/Files/unpack.c | 817 -------- Frameworks/WavPack/Files/unpack3.c | 1703 ---------------- Frameworks/WavPack/Files/unpack3.h | 119 -- Frameworks/WavPack/Files/unpack3_open.c | 289 --- Frameworks/WavPack/Files/unpack3_seek.c | 212 -- Frameworks/WavPack/Files/unpack_dsd.c | 620 ------ Frameworks/WavPack/Files/unpack_floats.c | 134 -- Frameworks/WavPack/Files/unpack_seek.c | 387 ---- Frameworks/WavPack/Files/unpack_utils.c | 411 ---- Frameworks/WavPack/Files/utils.c | 770 -------- Frameworks/WavPack/Files/utils.h | 61 - Frameworks/WavPack/Files/wavpack_local.h | 707 ------- Frameworks/WavPack/Files/wavpack_version.h | 19 - Frameworks/WavPack/Files/write_words.c | 688 ------- Frameworks/WavPack/Info.plist | 26 - .../WavPack/WavPack.xcodeproj/project.pbxproj | 554 ------ .../xcschemes/WavPack Framework.xcscheme | 76 - Frameworks/WavPack/en.lproj/InfoPlist.strings | Bin 204 -> 0 bytes Frameworks/WavPack/es.lproj/InfoPlist.strings | 3 - Frameworks/WavPack/pl.lproj/InfoPlist.strings | Bin 204 -> 0 bytes Frameworks/WavPack/tr.lproj/InfoPlist.strings | Bin 204 -> 0 bytes .../WavPack/WavPack.xcodeproj/project.pbxproj | 64 +- Plugins/WavPack/WavPackDecoder.h | 5 +- Plugins/WavPack/WavPackDecoder.m | 59 +- ThirdParty/BASS/README.md | 8 +- ThirdParty/BASS/bassmidi.h | 22 +- .../WavPack/include}/wavpack.h | 28 +- ThirdParty/libraries-debug-overlay.tar.xz | Bin 2683212 -> 3012240 bytes ThirdParty/libraries.tar.xz | Bin 7273952 -> 7735940 bytes 54 files changed, 116 insertions(+), 21020 deletions(-) delete mode 100644 Frameworks/WavPack/Files/AUTHORS delete mode 100644 Frameworks/WavPack/Files/ChangeLog delete mode 100644 Frameworks/WavPack/Files/NEWS delete mode 100644 Frameworks/WavPack/Files/README.md delete mode 100644 Frameworks/WavPack/Files/common_utils.c delete mode 100644 Frameworks/WavPack/Files/decorr_tables.h delete mode 100644 Frameworks/WavPack/Files/decorr_utils.c delete mode 100644 Frameworks/WavPack/Files/entropy_utils.c delete mode 100644 Frameworks/WavPack/Files/extra1.c delete mode 100644 Frameworks/WavPack/Files/extra2.c delete mode 100644 Frameworks/WavPack/Files/md5.c delete mode 100644 Frameworks/WavPack/Files/md5.h delete mode 100644 Frameworks/WavPack/Files/open_filename.c delete mode 100644 Frameworks/WavPack/Files/open_legacy.c delete mode 100644 Frameworks/WavPack/Files/open_raw.c delete mode 100644 Frameworks/WavPack/Files/open_utils.c delete mode 100644 Frameworks/WavPack/Files/pack.c delete mode 100644 Frameworks/WavPack/Files/pack_dns.c delete mode 100644 Frameworks/WavPack/Files/pack_dsd.c delete mode 100644 Frameworks/WavPack/Files/pack_floats.c delete mode 100644 Frameworks/WavPack/Files/pack_utils.c delete mode 100644 Frameworks/WavPack/Files/read_words.c delete mode 100644 Frameworks/WavPack/Files/tag_utils.c delete mode 100644 Frameworks/WavPack/Files/tags.c delete mode 100644 Frameworks/WavPack/Files/unpack.c delete mode 100644 Frameworks/WavPack/Files/unpack3.c delete mode 100644 Frameworks/WavPack/Files/unpack3.h delete mode 100644 Frameworks/WavPack/Files/unpack3_open.c delete mode 100644 Frameworks/WavPack/Files/unpack3_seek.c delete mode 100644 Frameworks/WavPack/Files/unpack_dsd.c delete mode 100644 Frameworks/WavPack/Files/unpack_floats.c delete mode 100644 Frameworks/WavPack/Files/unpack_seek.c delete mode 100644 Frameworks/WavPack/Files/unpack_utils.c delete mode 100644 Frameworks/WavPack/Files/utils.c delete mode 100644 Frameworks/WavPack/Files/utils.h delete mode 100644 Frameworks/WavPack/Files/wavpack_local.h delete mode 100644 Frameworks/WavPack/Files/wavpack_version.h delete mode 100644 Frameworks/WavPack/Files/write_words.c delete mode 100644 Frameworks/WavPack/Info.plist delete mode 100644 Frameworks/WavPack/WavPack.xcodeproj/project.pbxproj delete mode 100644 Frameworks/WavPack/WavPack.xcodeproj/xcshareddata/xcschemes/WavPack Framework.xcscheme delete mode 100644 Frameworks/WavPack/en.lproj/InfoPlist.strings delete mode 100644 Frameworks/WavPack/es.lproj/InfoPlist.strings delete mode 100644 Frameworks/WavPack/pl.lproj/InfoPlist.strings delete mode 100644 Frameworks/WavPack/tr.lproj/InfoPlist.strings rename {Frameworks/WavPack/Files => ThirdParty/WavPack/include}/wavpack.h (93%) diff --git a/.gitignore b/.gitignore index b5f9d79fc..febe4d97e 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,4 @@ Xcode-config/SENTRY_SETTINGS.xcconfig /ThirdParty/vorbis/lib/libvorbisfile.3.dylib /ThirdParty/vorbis/lib/libvorbis.0.dylib /ThirdParty/soxr/lib/libsoxr.0.dylib +/ThirdParty/WavPack/lib/libwavpack.a diff --git a/Frameworks/WavPack/Files/AUTHORS b/Frameworks/WavPack/Files/AUTHORS deleted file mode 100644 index 27bdd8f0d..000000000 --- a/Frameworks/WavPack/Files/AUTHORS +++ /dev/null @@ -1,11 +0,0 @@ -David Bryant -Sebastian Dröge -Joachim Henke -Joël R. Langlois -Alexis Ballier -Stephen -Phil Eichinger -Sebastian Ramacher -luxagen -Martin Koegler -nu774 diff --git a/Frameworks/WavPack/Files/ChangeLog b/Frameworks/WavPack/Files/ChangeLog deleted file mode 100644 index d68161e76..000000000 --- a/Frameworks/WavPack/Files/ChangeLog +++ /dev/null @@ -1,366 +0,0 @@ -2019-12-14 David Bryant - - * cli/wvunpack.c - -s option: add "5.1 surround side" and "7.1 surround" to reported channel configurations - -2019-12-13 David Bryant - - * cli/riff[_write].c, cli/wave64[_write].c, cli/caff[_write].c, cli/dsf[_write].c, cli/dsdiff[_write].c: - split header readers & writers so that wvunpack doesn't link libwavpack encoder - -2019-12-12 David Bryant - - * cli/riff.c, cli/wave64.c, cli/caff.c: - -i option: display warning when dropping PCM samples from end of file - -2019-12-11 David Bryant - - * cli/wavpack.c: - fix a WAV header if user specified -i (to ignore length) and we can make it valid - -2019-12-08 David Bryant - - * fuzzing/fuzzer.cc, fuzzing/fuzzer_seed_corpus.zip, etc...: - add fuzzing directory with corpus and other files for oss-fuzz - -2019-12-08 David Bryant - - * src/open_utils.c: - fix possible memory leak on opening corrupted files - -2019-12-08 David Bryant - - * src/common_utils.c, src/pack_dsd.c, src/unpack_dsd.c, src/wavpack_local.h: - - fix potential memory leak when seeking in DSD files - - simplify DSD fast mode lookup buffer allocations - -2019-12-08 David Bryant - - * src/unpack.c, src/unpack_dsd.c, src/unpack_seek.c: - seeking fixes: - - fix crash during seek to corrupted block - - check header size before malloc() - - fix overlapping memcpy() - -2019-11-30 David Bryant - - * src/pack.c: - - provide more configuration sanity checks to aid application debugging - - force max_blocksize even so bitstream buffer overflow detection works - -2019-04-09 David Bryant - - * cli/import_id3.c: - issue #69: add TPUB (Publisher) to accepted ID3v2 tag fields - -2019-03-05 David Bryant - - * cli/wave64.c: - issue #68: clear WaveHeader at start to prevent uninitialized read - -2019-03-05 David Bryant - - * cli/dsdiff.c: - issue #67: make sure sample rate is specified and non-zero in DFF files - -2019-03-04 David Bryant - - * cli/caff.c: - issue #66: make sure CAF files have a "desc" chunk - -2019-03-02 David Bryant - - * cli/dsdiff.c: - issue #65: makre sure DSDIFF files have a valid channel count - -2018-12-23 evpobr - - * include/wavpack.h src/wavpack_local.h: - remove duplication so that wavpack_local.h can include wavpack.h - -2018-12-16 evpobr - - * Makefile.am, CMakeLists.txt - add CMake project - -2018-12-09 orbea - - * cli/Makefile.am: - fix command-line builds with slibtool - -2018-12-08 Ørjan Malde - - * src/extra[12].c, src/pack.c, src/pack_x64.S, src/unpack.c, src/unpack_x64.S, src/wavpack_local.h: - x64 ASM support for midipix - -2018-11-29 David Bryant - - * src/pack_utils.c: - issue #53: error on zero sample rate - - CVE-2018-19840 - -2018-11-29 David Bryant - - * src/open_utils.c: - issue #54: fix potential out-of-bounds heap read - - CVE-2018-19841 - -2018-11-29 David Bryant - - * src/open_filename.c: - Windows only: use wvc file when verifying encode when source is stdin - -2018-09-03 Mike Tzou - - * cli/import_id3.c, cli/wvgain.c, cli/open_raw.c, cli/wvparser.c, cli/wvunpack.c, winamp/in_wv.c: - printf() format specifiers - memory leaks - -2018-08-26 David Bryant - - * cli/dsdiff.c, cli/dsf.c, cli/caff.c: - issue #41 issue #42 issue #43: sanitize input files to prevent crashes - -2018-06-02 David Bryant - - * src/unpack_armv7.S: - fix thumb interworking on ARM by adding .type for assembly functions - -2018-04-30 David Bryant - - * cli/import_id3.c, cli/wavpack.c: - allow ID3v2.3 tag import from any file type (not just DSF) - -2018-04-29 David Bryant - - * cli/import_id3.c: - handle ID3v2.3 TXXX tags using description for APEv2 item name (w/ case formatting) - -2018-04-24 David Bryant - - * cli/riff.c, cli/wave64.c: - issue #30 issue #31 issue #32: no multiple format chunks in WAV or W64 - - CVE-2018-10536 - - CVE-2018-10537 - - * cli/dsdiff.c, cli/riff.c, cli/wave64.c: - issue #33, sanitize size of unknown chunks before malloc() - - CVE-2018-10538 - - CVE-2018-10539 - - CVE-2018-10540 - -2018-04-17 David Bryant - - * cli/import_id3.c: - add a bunch more ID3v2.3 tag entries - make ImportID3v2() more robust (e.g. always set bytes_used) - -2018-04-08 David Bryant - - * src/common_utils.c: - fix memory leaks - -2018-02-11 David Bryant - - * cli/caff.c: - issue #26, fix buffer overflows and bad allocs on corrupt CAF files - - CVE-2018-7254 - -2018-02-10 David Bryant - - * cli/dsdiff.c: - issue #28, do not overwrite heap on corrupt DSDIFF file - - CVE-2018-7253 - -2018-02-04 David Bryant - - * cli/riff.c: - issue #27, do not overwrite stack on corrupt RF64 file - - CVE-2018-6767 - -2017-10-29 David Bryant - - * src/read_words.c: - issue #24, another C++ compiler fix, this time for _BitScanForward() - -2017-10-28 David Bryant - - * Makefile.am: - add README.md to extra distribution files - -2017-10-20 Joël R. Langlois - - * README, README.md: - Updated README to Markdown format. - -2017-10-12 Joël R. Langlois - - * src/decorr_utils.c, src/entropy_utils.c, src/open_legacy.c, - src/open_utils.c, src/tag_utils.c, src/tags.c, src/unpack3.c, - src/unpack3_open.c, src/unpack_dsd.c, src/unpack_seek.c, - src/unpack_utils.c: - Fixed errors when compiling using a C++ compiler. - -2017-09-30 David Bryant - - * cli/import_id3.c: - experimental fix to handle ID3v2.3 tags that [incorrectly] use synchsafe for the frame size - -2017-08-31 David Bryant - - * cli/wavpack.c - briefly describe other utilities in help displays for wavpack - -2017-07-24 David Bryant - - * cli/md5.h - do not try to use libcrypto on OS X - -2017-07-23 David Bryant - - * cli/md5.c, cli/md5.h, cli/wavpack.c, cli/wvtest.c, cli/wvunpack.c, configure.ac: - use Alexander Peslyak's MD5 implementation (or libcrypto if present) to fix - unaligned access coredump on OpenBSD/sparc64 (reported on openbsd-ports) - -2017-03-19 David Bryant - - * src/write_words.c: - improve quality of scan_word() results on very short blocks (via multiple passes) - -2017-03-01 David Bryant - - * cli/wavpack.c, cli/wvgain.c, cli/wvtag.c, cli/wvunpack.c: - add required parens to correct precedence error/warning - -2017-02-26 David Bryant - - * cli/wavpack.c, cli/wvgain.c, cli/wvtag.c, cli/wvunpack.c: - refactor debug logging mode so that we can turn on a forced arg dump - - * src/common_utils.c, src/wavpack_local.h: - provide for a "close" callback to be installed for dumping accumulated statistics - - * configure.ac, src/unpack_armv7.S: - SSAT instruction required armv6, now we should work on all ARMs using a pair of shifts instead - -2017-02-18 Alexis Ballier - - * configure.ac: - configure: Restrict arm assembly to armv7 only. - ARM assembly in wavpack is armv7 only it seems. - I have reports this causes build failures on armv5: https://bugs.gentoo.org/show_bug.cgi?id=609168 - -2017-02-16 David Bryant - - * cli/import_id3.c, cli/wvtag.c: - fix GitHub issue #19 (new dependency on wchar_t) by removing dependency - -2017-01-22 David Bryant - - * .travis.yml: - do more exhaustive testing for Travis (but should be faster) - -2017-01-22 Stephen - - * .travis.yml: - enable travis ci build and testing (#17) - Create .travis.yml - fix for running tests - limit to smaller test suite - add quotes to get spaces in arg - remove linux clang builds - move to trusty for clang - -2017-01-18 David Bryant - - * ChangeLog: - refine change log and add updated plugins - - * audition/cool_wv4.c, audition/readme.odt, audition/readme.pdf: - update Cool Edit / Audition filter to 3.1 - - * COPYING, license.txt, winamp/in_wv.c, winamp/installer/WavPackPlugin1.nsi: - update winamp to 2.8.0.3 and license dates - -2017-01-17 David Bryant - - * ChangeLog: - first pass at 5.1.0 changelog - - * cli/Makefile.am, cli/import_id3.c, cli/wavpack.c: - fix Darwin build (iconv) and ptr warnings - improve --import-id3 console messaging - -2017-01-16 David Bryant - - * wavpackdll/wavpackdll.rc, wavpackexe/wavpack.vcproj, winamp/in_wv.c: - bump DLL version and fix MSVC build - - * cli/utils.h, cli/wavpack.c, cli/wvgain.c, cli/wvtag.c, cli/wvunpack.c, - configure.ac, src/wavpack_version.h: - update version to 5.1.0 and bump some copyright dates - - * src/pack.c: - do not write data in NEW_CONFIG_BLOCK for "do not care" bits in qmode - - * src/unpack_dsd.c: - shorter DSD decimation filter with less HF rolloff and lower CPU use - -2017-01-15 David Bryant - - * doc/wavpack_doc.html: - update user manual for 5.1.0 and wvtag - -2017-01-14 David Bryant - - * cli/wvtag.c: - allow multiple files on Windows, update "help" - - * man/Makefile.am, man/wavpack.1, man/wavpack.xml, man/wvgain.1, man/wvgain.xml, - man/wvtag.1, man/wvtag.xml, man/wvunpack.1, man/wvunpack.xml: - add man page for wvtag and update the other man pages (--import-id3) - -2017-01-13 David Bryant - - * cli/Makefile.am, cli/wavpack.c: - add --import-id3 option to wavpack executable - (works with original DSF files and when transcoding) - - * cli/import_id3.c, cli/wvtag.c: - refactor ID3 import code to calculate the total number of bytes being imported - - allow total size and item count to be returned even on dry runs - - plug a memory leak in the dry run - -2017-01-11 David Bryant - - * src/pack.c, src/unpack.c: - fix issue where noise-shaping falsely triggers lossy muting - - only in very rare cases (detected with pathological testing) - - also fix (again) macro that disables lossy muting - -2017-01-08 David Bryant - - * src/pack_utils.c: - fix regression causing non-byte-aligned audio (e.g., 12-bit) - to lose the actual reduced bit-depth indication (although - there was no effect on integrity or compression ratio) - -2017-01-07 David Bryant - - * cli/import_id3.c, cli/wvtag.c, wavpack.sln, wvtagexe/wvtag.vcproj: - add wvtag to MSVC build and fix warnings (and one mistake) - - * src/open_filename.c: - fix MSVC build (broken by portability enhancements...sigh) - -2017-01-06 David Bryant - - * cli/Makefile.am, cli/import_id3.c, cli/wvtag.c: - new cli tool "wvtag" to manipulate APEv2 tags on existing WavPack files - (includes new facility to import ID3v2.3 tag items from Sony DSF files) - - * cli/wavpack.c: - add --pre-quantize-round to settings tag - - * cli/wvgain.c, cli/wvunpack.c: - copy TextToUTF8() BOM fix into other modules that use it for filename lists diff --git a/Frameworks/WavPack/Files/NEWS b/Frameworks/WavPack/Files/NEWS deleted file mode 100644 index 03523733e..000000000 --- a/Frameworks/WavPack/Files/NEWS +++ /dev/null @@ -1,717 +0,0 @@ - --------------------------------- - Release 5.2.0 - December 15, 2019 - --------------------------------- - - WavPack Library Source Code - 5.2.0 - wavpack.exe (command-line encoder) - 5.2.0 - wvunpack.exe (command-line decoder) - 5.2.0 - wvgain.exe (command-line ReplayGain scanner) - 5.2.0 - wvtag.exe (command-line tagging utility) - 5.2.0 - ---------------------------------------------------- - fixed: potential security issues including the following CVEs: - CVE-2018-19840 CVE-2018-19841 CVE-2018-10536 - CVE-2018-10537 CVE-2018-10538 CVE-2018-10539 - CVE-2018-10540 CVE-2018-7254 CVE-2018-7253 - CVE-2018-6767 - added: support for CMake, Travis CI, and Google's OSS-fuzz - fixed: use correction file for encode verify (pipe input, Windows) - fixed: correct WAV header with actual length (pipe input, -i option) - fixed: thumb interworking and not needing v6 architecture (ARM asm) - added: handle more ID3v2.3 tag items and from all file types - fixed: coredump on Sparc64 (changed MD5 implementation) - fixed: handle invalid ID3v2.3 tags from sacd-ripper - fixed: several corner-case memory leaks - - - -------------------------------- - Release 5.1.0 - January 18, 2017 - -------------------------------- - - WavPack Library Source Code - 5.1.0 - wavpack.exe (command-line encoder) - 5.1.0 - wvunpack.exe (command-line decoder) - 5.1.0 - wvgain.exe (command-line ReplayGain scanner) - 5.1.0 - wvtag.exe (command-line tagging utility) - 5.1.0 - ---------------------------------------------------- - added: all new command-line tagging utility (wvtag) - added: option to import ID3v2.3 tags from Sony DSF files - fixed: fuzz test failures from AFL reported on SourceForge - improved: DSD decimation filter (less HF rolloff & CPU use) - fixed: non-byte audio depths (12-bit, 20-bit) not showing - fixed: rare case of noise-shaping triggering a lossy mute - fixed: recognize UTF-8 BOM when reading text files - fixed: a few portability issues - - in_wv.dll (winamp plugin) - 2.8.0.3 - CoreWavPack DirectShow Filters - 1.5.1.0 - AmioWavpack.amio (Adobe Audition Plugins) - 2.1 - cool_wv4.flt (Cool Edit / Audition filter) - 3.1 - ------------------------------------------------ - updated: see 5.1.0 library changes - - - -------------------------------- - Release 5.0.0 - December 6, 2016 - -------------------------------- - - WavPack Library Source Code - 5.0.0 - wavpack.exe (command-line encoder) - 5.0.0 - wvunpack.exe (command-line decoder) - 5.0.0 - wvgain.exe (command-line ReplayGain scanner) - 5.0.0 - ---------------------------------------------------- - added: multiple input formats, including RF64, Wave64, and CAF - added: lossless DSD audio in Philips DSDIFF and Sony DSF files - fixed: seeking in > 2GB WavPack files (new stream reader) - fixed: accept > 4GB source audio files (all formats) - improved: increase maximum samples from 2^32 to 2^40 - added: block checksums for robustness to corruption - added: support for non-standard channel identities - removed: support for legacy WavPack files (< 4.0) - added: block decoder for streaming applications - fixed: many small fixes and improvements - added: all new pdf documentation - - AmioWavpack.amio (Adobe Audition Plugins) - 2.0 - ----------------------------------------------- - improved: all new dialog for WavPack settings - fixed: handle unlimited audio file size - fixed: save all Amio channel identities - added: save/restore APEv2 tags - - in_wv.dll (winamp plugin) - 2.8.0.2 - CoreWavPack DirectShow Filters - 1.5.0.0 - cool_wv4.flt (Cool Edit / Audition filter) - 3.0 - ------------------------------------------------ - updated: see 5.0.0 library changes - - - ------------------------------- - Release 4.80.0 - March 28, 2016 - ------------------------------- - - WavPack Library Source Code - 4.80.0 - wavpack.exe (command-line encoder) - 4.80.0 - wvunpack.exe (command-line decoder) - 4.80.0 - wvgain.exe (command-line ReplayGain scanner) - 4.80.0 - ----------------------------------------------------- - added: full Unicode support on Windows platform - added: new option --pre-quantize to truncate high-resolution files - to a reasonable depth (e.g., 20-bit) for better compression - fixed: Debian bug #793320 (executable stack) - fixed: LargeAddressAware problem reported on HA - fixed: several "fuzz test" failures reported on GitHub - fixed: repack blocks after possible arithmetic overflows - improved: faster assembly code for mono packing - improved: portability for various platforms - - wvtest.exe (command-line libwavpack test suite) - 4.80.0 - -------------------------------------------------------- - added: exhaustive test for WavpackSeekSample() API - - in_wv.dll (winamp plugin) - 2.8.0.1 - CoreWavPack DirectShow Filters - 1.3.0.0 - AmioWavpack.amio (Adobe Audition Plugins) - 1.5 - cool_wv4.flt (CoolEdit / Audition filter) - 2.14 - ------------------------------------------------ - updated: see 4.80.0 library changes - - - -------------------------------- - Release 4.75.2 - October 1, 2015 - -------------------------------- - - WavPack Library Source Code - 4.75.2 - ------------------------------------ - fixed: corrupt mono or multichannel files created with assembly code (rare) - fixed: building on Clang systems like Darwin and FreeBSD (req. Clang 3.5+) - fixed: explicitly sign-extend audio data (< 4-byte) to avoid corrupt files - fixed: rare decoding errors due to integer overflow (ARM assembly code) - added: assembly optimizations for "extra" mode on mono or multichannel - - wvtest.exe (command-line libwavpack test suite) - 4.75.2 - -------------------------------------------------------- - all new program to stress-test libwavpack (requires Pthreads) - - wavpack.exe (command-line encoder) - 4.75.2 - wvunpack.exe (command-line decoder) - 4.75.2 - wvgain.exe (command-line ReplayGain scanner) - 4.75.2 - ----------------------------------------------------- - fixed: corrupt mono or multichannel files created with assembly code (rare) - added: assembly optimizations for "extra" mode on mono or multichannel - improved: flush stderr after all writes - - cool_wv4.flt (CoolEdit / Audition filter) - 2.13 - AmioWavpack.amio (Adobe Audition Plugins) - 1.4 - ------------------------------------------------ - fixed: corrupt mono or multichannel files (rare) - - - ----------------------------- - Release 4.75.0 - May 25, 2015 - ----------------------------- - - WavPack Library Source Code - 4.75.0 - ------------------------------------ - improved: reorganization for modularity and to improve linking - added: assembly optimizations for encode/decode on x86 and x64 - added: assembly optimizations for decoding on ARMv7 (Linux) - improved: several minor speed optimizations using intrinsics - fixed: wavpack.pc.in not working correctly on some Linux distros - fixed: memcpy() issue causing abort() on OpenBSD - - wavpack.exe (command-line encoder) - 4.75.0 - wvunpack.exe (command-line decoder) - 4.75.0 - wvgain.exe (command-line ReplayGain scanner) - 4.75.0 - ----------------------------------------------------- - changed: writing to console title default is off (Linux only, -z1 to enable) - fixed: wvgain crashes on bad file arguments (Debian bug #716478) - - cool_wv4.flt (CoolEdit / Audition filter) - 2.12 - ------------------------------------------------ - improved: performance (from assembly optimizations) - - - ------------------------- - Update - December 7, 2013 - ------------------------- - - CoreWavPack DirectShow Filters - 1.2.0.2 - ---------------------------------------- - imported: latest filter sources from Christophe Paris and CoreCodec - updated: port to VS 2008 and add 64-bit build platform with installer - added: decode streams with full headers (tested with LAV splitter) - fixed: issues with 7.1 and non-standard channel configurations - fixed: problems with 12-bit, 20-bit, and 32-bit integer audio - fixed: crashing bug related to hybrid files with DNS - fixed: custom sampling rates being ignored - - - --------------------------------- - Release 4.70.0 - October 19, 2013 - --------------------------------- - - wavpack.exe (command-line encoder) - 4.70.0 - ------------------------------------------- - added: transcoding from existing WavPack files (with tag copy) - added: option to verify WavPack file integrity on creation (-v) - added: use temporary files for safer overwriting - added: detect UTF-16LE encoding for tag text files (mostly a Windows thing) - added: --version command to write machine-parsable value - added: option to allow up to 16 MB APEv2 tag data (--allow-huge-tags) - added: allow channel-order specification on WAV files with zeroed channel mask - added: several Windows features to Linux (clean ^C handling, console title) - added: 4GB file support on 32-bit Linux targets - - WavPack Library Source Code - 4.70.0 - ------------------------------------ - fixed: seeking to last block failure (after finishing file) - fixed: memcpy() not always used correctly (Linux targets) - fixed: unsigned char issue (ARM targets) - fixed: add binary tag functions to Windows DLL exports (forgot on 4.60) - added: read-only access to APEv2 tags that come at the beginning of files - improved: switched to Microsoft Visual Studio 2008 (win32 only) - - wvunpack.exe (command-line decoder) - 4.70.0 - -------------------------------------------- - added: use temporary files for safer overwriting - added: --version command to write machine-parsable value - added: new command (-f) for getting machine-parsable WavPack file info - added: option (-n) to suppress audio decoding (useful for extracting only tags) - - wvgain.exe (command-line ReplayGain scanner) - 4.70.0 - ----------------------------------------------------- - fixed: the -q (quiet) option would cause the -c (clean) option to fail - added: version command (-v) to write machine-parsable value - - in_wv.dll (winamp plugin) - 2.8 - ------------------------------- - fixed: settings could not be saved on newer Windows versions (7 & 8) - fixed: installation issue caused by including manifest in build - added: dialog to installer suggesting "Winamp Essentials Pack" - - AmioWavpack.amio (Adobe Audition Plugin) - 1.0 - ---------------------------------------------- - all new plugin for Audition 4.0 (CS5.5) and later (including Audition CC) - - - -------------------------- - Update - December 23, 2009 - -------------------------- - - in_wv.dll (winamp plugin) - 2.8a - -------------------------------- - fixed: crashes in winamp 5.57 when playing tracks that have "genre" tag - - - ---------------------------------- - Release 4.60.1 - November 29, 2009 - ---------------------------------- - - WavPack Library Source Code - 4.60.1 - ------------------------------------ - fixed: filename specs in tag extractions failed in batch operations - fixed: prevent creation of APEv2 tags > 1 MB (which we can't read) - fixed: crash when decoding old WavPack files (pre version 4.0) - added: man pages to build system and updated with newer options - added: versioning info to Windows DLL - improved: build compatibility (eliminated uchar, ushort types) - - wavpack.exe (command-line encoder) - 4.60.1 - ------------------------------------------- - fixed: don't allow user to attempt to place over 1 MB into APEv2 tags - - in_wv.dll (winamp plugin) - 2.7 - ------------------------------- - added: read-only support for displaying cover art (thanks Benski!) - - wvunpack.exe (command-line decoder) - 4.60.1 - wvgain.exe (command-line ReplayGain scanner) - 4.60.1 - cool_wv4.flt (CoolEdit / Audition filter) - 2.11 - ----------------------------------------------------- - (see library changes) - - - --------------------------------- - Release 4.60 - September 27, 2009 - --------------------------------- - - WavPack Library Source Code - 4.60 - ---------------------------------- - added: API for reading & writing binary fields in APEv2 tags - fixed: recognize APEv2 tags with footers but no headers - fixed: playback of files with 8 streams (15-16 channels) - fixed: playback and seeking failed on certain rare correction files - fixed: handle case where library makes RIFF header but app adds RIFF trailer - improved: channel count limit now virtually unlimited (tested to 256) - improved: move all tag functions into new module (tags.c) - - wavpack.exe (command-line encoder) - 4.60 - ----------------------------------------- - added: --write-binary-tag command for embedded cover art - added: --no-utf8-convert command to skip Unicode character conversions - added: --raw-pcm command to specify raw PCM data (samplerate, bitdepth, num chans) - added: --channel-order accepts "..." to specify unassigned channels - added: --pair-unassigned-chans command to put unassigned channels into stereo pairs - - wvunpack.exe (command-line decoder) - 4.60 - ------------------------------------------ - added: -x (and -xx) commands for extracting arbitrary tag fields to stdout (and files) - added: --no-utf8-convert command to skip Unicode character conversions - changed: -ss command no longer dumps multiline tags (use -x instead) - improved: formatting of -ss command, also shows information on binary tags - - wvgain.exe (command-line ReplayGain scanner) - 4.60 - --------------------------------------------------- - added: -n option for processing new files only (those without ReplayGain info) - improved: increase maximum gain value generated from +24 to +64 dB - - in_wv.dll (winamp plugin) - 2.6 - cool_wv4.flt (CoolEdit / Audition filter) - 2.10 - ------------------------------------------------ - (see library changes) - - - ------------------------- - Update - January 23, 2009 - ------------------------- - - in_wv.dll (winamp plugin) - 2.6b - -------------------------------- - added: "lossless" and "category" to metadata keywords that we handle in winamp plugin - added: internationalization support to facilitate inclusion in Winamp Essentials Pack - - - ----------------------------- - Release 4.50.1 - July 3, 2008 - ----------------------------- - - WavPack Library Source Code - 4.50.1 - ------------------------------------ - fixed: alignment fault when manipulating APEv2 tags (non-x86 only) - fixed: build on UNIX via elimination of non-standard strnlen() - - wavpack.exe (command-line encoder) - 4.50.1 - wvunpack.exe (command-line decoder) - 4.50.1 - -------------------------------------------- - fixed: checking return value of iconv_open() prevents core dump on Solaris - - - ---------------------------- - Release 4.50 - June 13, 2008 - ---------------------------- - - WavPack Library Source Code - 4.50 - ---------------------------------- - added: dynamic noise shaping for improved hybrid quality - added: option to merge blocks of similar redundancy - added: ability to store and retrieve extra mode level - fixed: alignment fault on some big-endian machines - fixed: compiling with enable-mmx on gcc 4.3.x (thanks Joachim) - improved: allow bitrate to be calculated for files down to 1/10 second - improved: decoding of corrupt files (prevents heap overrun crashes) - - wavpack.exe (command-line encoder) - 4.50 - ----------------------------------------- - added: dynamic noise shaping for improved hybrid quality - added: --channel-order option to reorder nonconforming multichannel files - added: --merge-blocks option to optimize storage of LossyWAV output files - added: ignore -o on Windows for compatibility with Linux version - fixed: alignment fault on some big-endian machines - improved: reformatted and expanded --help display - - wvunpack.exe (command-line decoder) - 4.50 - ------------------------------------------ - fixed: don't ignore fractions of seconds in --skip option - added: show extra level and dns status for newer files (-s command) - added: ignore -o on Windows for compatibility with Linux version - improved: decoding of corrupt files (prevents heap overrun crashes) - improved: display bitrate for files down to 1/10 second - - in_wv.dll (winamp plugin) - 2.5 - ------------------------------- - added: transcoding API (allows CD burning, format conversion, ReplayGain calc, etc.) - added: metadata writing API (for Auto-Tag, etc.) - added: full Unicode support for info box (older Winamps) and media library - added: standard Winamp metadata display & edit for newer Winamps - added: option to pass multichannel audio - added: option to pass all audio as 16-bit (for better compatibility) - added: option to output 24-bit audio when ReplayGain is active - added: genre display to info box (older Winamps) - fixed: seek bar sometimes vacillates when moved - fixed: crash when winamp is opened with files in playlist moved or deleted - improved: hi-res audio now output as 24-bit (not 32-bit) for better compatibility (EQ, etc.) - improved: performance of adding tracks to library, especially from network drives - improved: decoding of corrupt files (prevents heap overrun crashes) - - cool_wv4.flt (CoolEdit / Audition filter) - 2.9 - ----------------------------------------------- - added: about box - added: dynamic noise shaping for improved hybrid quality - improved: display bitrate for files as short as 1/10 second - improved: decoding of corrupt files (prevents heap overrun crashes) - improved: replace "extra processing" switch with a slider (0-6) - - - -------------------------- - Release 4.41 - May 6, 2007 - -------------------------- - - WavPack Library Source Code - 4.41 - ---------------------------------- - added: create wavpackdll.dll for Windows (not used yet) - fixed: corrupt floating-point audio on big-endian machines - fixed: put MSVC projects in their own subdir (fixed build problems) - fixed: limit RIFF data buffering to 16 MB to prevent out-of-memory crash - improved: attempt to mute errors when decoding corrupt legacy WavPack files - improved: overall performance enhancements of 10% to 30% (depending on mode) - added: MMX intrinsics for 24-bit (and higher) stereo encoding (thanks to - Joachim Henke) - - wavpack.exe (command-line encoder) - 4.41 - ----------------------------------------- - fixed: corrupt floating-point audio on big-endian machines - improved: refuse to encode WAV files over 4 GB or with over 16 MB RIFF data - improved: overall performance enhancements of 10% to 30% (depending on mode) - added: MMX intrinsics for 24-bit (and higher) stereo encoding (thanks to - Joachim Henke) - - wvunpack.exe (command-line decoder) - 4.41 - ------------------------------------------ - fixed: corrupt floating-point audio on big-endian machines - fixed: restore files mistakenly encoded with huge RIFF chunks - improved: attempt to mute errors when decoding corrupt legacy WavPack files - improved: overall performance enhancements of 10% to 30% (depending on mode) - added: --skip and --until commands to unpack specified range of audio data - added: MMX intrinsics for 24-bit (and higher) stereo encoding (thanks to - Joachim Henke) - - wvgain.exe (command-line ReplayGain scanner) - 4.41 - --------------------------------------------------- - improved: overall performance enhancements of 10% to 30% (depending on mode) - added: MMX intrinsics for 24-bit (and higher) stereo encoding (thanks to - Joachim Henke) - - cool_wv4.flt (CoolEdit / Audition filter) - 2.8 - ----------------------------------------------- - fixed: read all RIFF metadata from files created in other applications - improved: attempt to mute errors when decoding corrupt legacy WavPack files - improved: overall performance enhancements of 10% to 30% (depending on mode) - added: MMX intrinsics for 24-bit (and higher) stereo encoding (thanks to - Joachim Henke) - - - ------------------------------- - Release 4.40 - December 3, 2006 - ------------------------------- - - WavPack Library Source Code - 4.40 - ---------------------------------- - added: new hardware-friendly "high" mode that compresses almost as well as - old "high" mode but decodes significantly faster; old "high" mode - now available as "very high" - added: option added to improve compression of mono material in stereo files - (requires at least version 4.3 decoder) - added: function to obtain channel mapping information on decoding - added: function to get trailing wrapper info (RIFF) without decoding file - improved: "extra" mode levels 1-3 completely revamped, fast enough for use - improved: reorganized to create a standard library that should more easily - integrate into other applications; eliminated namespace issues - improved: more robust handling of corrupt files - - wavpack.exe (command-line encoder) - 4.40 - ----------------------------------------- - added: accepts long option names including --help for full usage info - added: new hardware-friendly "high" mode that compresses almost as well as - old "high" mode but decodes significantly faster; old "high" mode - now available as "very high" (-hh) - added: --optimize-mono option added to improve compression of mono material - in stereo files (requires at least version 4.3 decoder) - improved: "extra" mode levels 1-3 completely revamped, fast enough for use - improved: switched to Microsoft Visual Studio 2005 (win32 only) - removed: support for Windows 95 - - wvunpack.exe (command-line decoder) - 4.40 - ------------------------------------------ - added: cuesheet extraction (to .cue file or stdout) - added: wav header generation on decode for files with missing RIFF - information, or forced with -w option - added: more summary info (wrapper info + channel assignments) - improved: more robust handling of corrupt files - improved: separate options for raw (-r) and blind stream decoding (-b) - improved: switched to Microsoft Visual Studio 2005 (win32 only) - removed: support for Windows 95 - - wvgain.exe (command-line ReplayGain scanner) - 4.40 - --------------------------------------------------- - improved: switched to Microsoft Visual Studio 2005 (win32 only) - removed: support for Windows 95 - - wvselfx.exe (self-extraction stub) - 4.40 - ------------------------------------------ - added: automatic cuesheet extraction (if present in APEv2 tag) - - in_wv.dll (winamp plugin) - 2.4 - ------------------------------- - fixed: quietly skips deleted files in playlist - improved: more robust handling of corrupt files - improved: APEv2 tags are read even if followed by ID3v1 tag - - cool_wv4.flt (CoolEdit / Audition filter) - 2.7 - ----------------------------------------------- - added: new hardware-friendly "high" mode that compresses almost as well as - old "high" mode but decodes significantly faster; old "high" mode - now available as "v. high" - improved: more robust handling of corrupt files - - - ---------------------- - Update - April 5, 2006 - ---------------------- - - WavPack Library Source Code - 4.32 - wavpack.exe (command-line encoder) - 4.32 - ----------------------------------------- - fixed: generating RIFF headers on big-endian machines caused crash - - - -------------------------- - Update - December 10, 2005 - -------------------------- - - wavpack.exe (command-line encoder) - 4.31 - wvunpack.exe (command-line decoder) - 4.31 - ------------------------------------------ - fixed: detect debug mode in all cases (win32 only) - improved: use latest service pack and SDK for building (win32 only) - improved: better directory choice for logging file (win32 only) - improved: allow shell to expand wildcards (*nix only) - added: option (-o) to specify output directory or path (*nix only) - added: option (-t) to copy timestamp (*nix only) - - wvgain.exe (command-line ReplayGain scanner) - 4.31 - --------------------------------------------------- - new - - WavPack Library Source Code - 4.31 - ---------------------------------- - fixed: failing seek with some files that had been played to the end - fixed: small memory leak when opening hybrid lossless files - improved: signed characters no longer must be default - improved: APEv2 tags are read even if followed by ID3v1 tag - improved: limited APEv2 tag editing capability - - - ------------------------------ - Release 4.3 - November 1, 2005 - ------------------------------ - - wavpack.exe (command-line encoder) - 4.3 - ---------------------------------------- - fixed: bug causing termination error with very wide screen widths - added: command-line option (-l) to use low priority for batch operation - added: command-line option (-r) to generate a fresh RIFF header - added: debug mode (rename to wavpack_debug.exe) - added: automatically detect lower resolution data even without -x1 - added: src and dst dirs are searched also for tag source files (handy for EAC) - added: wildcard accepted for tag source files (handy for EAC) - added: handle non-standard sampling rates - improved: returns error status for any error - improved: use longer blocks in multichannel files (better "high" compression) - - wvunpack.exe (command-line decoder) - 4.3 - ----------------------------------------- - fixed: very rare decoding bug causing overflow with hi-res files - fixed: bug causing termination error with very wide screen widths - fixed: formatting error in duration display - added: command-line option (-ss) to include tags in summary dump - added: command-line option (-l) to use low priority for batch operation - added: debug mode (rename to wvunpack_debug.exe) - improved: returns error status for any error - improved: more robust decoding of damaged (or invalid) files - - in_wv.dll (winamp plugin) - 2.3 - nxWavPack.dll (Nero plugin) - 1.2 - WavPack_Apollo.dll (Apollo plugin) - 1.3 - cool_wv4.flt (CoolEdit / Audition filter) - 2.6 - ----------------------------------------------- - fixed: very rare decoding bug causing overflow with hi-res files - improved: handle ID3v1.1 tags (now includes track number) - improved: more robust decoding of damaged (or invalid) files - added: handle non-standard sampling rates - - foo_wavpack.dll (foobar plugin) - 2.3 - ----------------------------------------------- - fixed: any error during WavPack file open caused crash if wvc file present - fixed: very rare decoding bug causing overflow with hi-res files - improved: more robust decoding of damaged (or invalid) files - added: handle non-standard sampling rates - - WavPack Library Source Code - 4.3 - --------------------------------- - fixed: very rare decoding bug causing overflow with hi-res files - added: automatic generation of RIFF wav header during encoding - added: new functions to access tags by index (instead of item name) - added: automatically detect lower resolution data during encoding - added: handle non-standard sampling rates - improved: more robust decoding of damaged (or invalid) files - improved: use longer blocks in multichannel files (better "high" compression) - improved: two structures renamed to avoid namespace conflict - removed: legacy code for Borland compiler - - - -------------------------- - Update - September 1, 2005 - -------------------------- - - wavpack.exe (command-line encoder) - 4.22 - cool_wv4.flt (CoolEdit / Audition filter) - 2.5 - ----------------------------------------------- - fixed: possible corrupt files written (24 or 32-bit + "extra" mode) - - - --------------------------- - Release 4.2 - April 2, 2005 - --------------------------- - - wavpack.exe (command-line encoder) - 4.2 - ---------------------------------------- - fixed: handling of wav files larger than 2 gig - improved: stereo lossless encoding speed (including "extra" mode) - added: -i option to ignore length specified in wav header - added: -w option to write APEv2 tags directly from command line - - wvunpack.exe (command-line decoder) - 4.2 - ----------------------------------------- - improved: decoding speed - - in_wv.dll (winamp plugin) - 2.2 - ------------------------------- - added: winamp media library support - improved: decoding speed - - foo_wavpack.dll (foobar plugin) - 2.2 - ------------------------------------- - improved: decoding speed - - nxWavPack.dll (Nero plugin) - 1.1 - Cool_wv4.flt (CoolEdit / Audition filter) - 2.4 - ----------------------------------------------- - fixed: handling of wav files larger than 2 gig - improved: encoding and decoding speed - - WavPack Library Source Code - 4.2 - --------------------------------- - improved: encoding and decoding speed - fixed: works correctly with 64-bit compilers - added: mode bit to open files in "streaming" mode - - - -------------------------- - Update - December 12, 2004 - -------------------------- - - WavPack_Apollo.dll (Apollo plugin) - 1.2 - ---------------------------------------- - fixed: crash when Apollo opened and WavPack plugin can't find config file - - - -------------------------------- - Release 4.1 - September 14, 2004 - -------------------------------- - - wavpack.exe (command-line encoder) - 4.1 - ---------------------------------------- - fixed: hybrid mode + "extra" mode + very low bitrates making corrupt files - fixed: mono or multichannel files causing crash (no corruption possible) - added: third name specification for "correction" file (EAC specific) - added: -t option to preserve timestamps - added: error summary for batch mode - - wvunpack.exe (command-line decoder) - 4.1 - ----------------------------------------- - fixed: hybrid mode decoding bugs (very obscure situations) - added: -s option to dump file summary to stdout - added: -t option to preserve timestamps - added: error summary for batch mode - - wvselfx.exe (self-extraction stub) - 4.1 - ---------------------------------------- - fixed: hybrid mode decoding bugs (very obscure situations) - - in_wv.dll (winamp plugin) - 2.1 - ------------------------------- - fixed: international characters in tags display properly (UTF-8 to Ansi) - added: maximum tag data field width changed from 64 chars to 128 chars - added: new infobox items including encoder version & modes, track #, md5 - - foo_wavpack.dll (foobar plugin) - 2.1 - ------------------------------------- - added: new database items including encoder version & modes and md5 - - WavPack_Apollo.dll (Apollo plugin) - 1.1 - ---------------------------------------- - fixed: international characters in tags display properly (UTF-8 to Ansi) - - Cool_wv4.flt (CoolEdit / Audition filter) - 2.2 - ----------------------------------------------- - fixed: hybrid mode + "extra" mode + very low bitrates making corrupt files - fixed: saving mono file causing crash (no corruption possible) - fixed: hybrid mode decoding bugs (very obscure situations) - fixed: partial saves (with "Cancel") have incorrect RIFF header if unpacked - - nxWavPack.dll (Nero plugin) - 1.0 - --------------------------------- - new - - WavPack Library Source Code - 4.1 - --------------------------------- - fixed: hybrid mode + "extra" mode + very low bitrates making corrupt files - fixed: mono or multichannel files causing crash (no corruption possible) - fixed: hybrid mode decoding bugs (very obscure situations) - added: mode bits for determining additional encode info (extra, sfx) - added: function to return total compressed file length (including wvc) - added: function to return encoder version (1, 2, 3, or 4) - added: ability to obtain MD5 sum before decoding file (requires seek to end) - added: mode bit for determining tag type (for proper character translation) - added: ability to encode WavPack files without knowing length in advance - added: option for small "information only" version of library diff --git a/Frameworks/WavPack/Files/README.md b/Frameworks/WavPack/Files/README.md deleted file mode 100644 index a3742a82e..000000000 --- a/Frameworks/WavPack/Files/README.md +++ /dev/null @@ -1,136 +0,0 @@ - - -Hybrid Lossless Wavefile Compressor - -Copyright (c) 1998 - 2019 David Bryant. - -All Rights Reserved. - -Distributed under the [BSD Software License](https://github.com/dbry/WavPack/blob/master/license.txt). - ---- - -This [repository](https://github.com/dbry/WavPack) contains all of the source code required to build the WavPack library (_libwavpack_), and any associated command-line programs. - -Additional references: - -* [Official website](http://wavpack.com/) -* [Binaries](http://wavpack.com/downloads.html#binaries) -* [Other sources](http://wavpack.com/downloads.html#sources) -* [Documentation](http://wavpack.com/downloads.html#documentation) -* [Test suite](http://www.rarewares.org/wavpack/test_suite.zip) -* [Logos](http://wavpack.com/downloads.html#logos) - ---- - -## Build Status - -| Branch | Status | -|----------------|-------------------------------------------------------------------------------------------------------------------| -| `master` | [![Build Status](https://travis-ci.org/dbry/WavPack.svg?branch=master)](https://travis-ci.org/dbry/WavPack) | - -Branches [actively built](https://travis-ci.org/dbry/WavPack/branches) by TravisCI. - ---- - -## Building - -### Windows - -There are solution and project files for Visual Studio 2008, and additional source code to build the [CoolEdit/Audition](https://github.com/dbry/WavPack/tree/master/audition) plugin and the [Winamp](https://github.com/dbry/WavPack/tree/master/winamp) plugin. - -The CoolEdit/Audition plugin provides a good example for using the library to both read and write WavPack files, and the Winamp plugin makes extensive use of APEv2 tag reading and writing. - -Both 32-bit and 64-bit platforms are provided. - -Visual Studio 2008 does not support projects with x64 assembly very well. I have provided a copy of the edited `masm.rules` file that works for me, but I can't provide support if your build does not work. Please make a copy of your `masm.rules` file first. - -On my system it lives here: `C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\VCProjectDefaults` - -### Linux - -To build everything on Linux, type: - -1. `./configure` - * `--disable-asm` - * `--enable-man` - * `--enable-rpath` - * `--enable-tests` - * `--disable-apps` - * `--disable-dsd` - * `--enable-legacy` -2. `make` - * Optionally, `make install`, to install into `/usr/local/bin` - -If you are using the code directly from Git (rather than a distribution) then you will need to do a ./autogen.sh instead of the configure step. If assembly optimizations are available for your processor they will be automatically enabled, but if there is a problem with them then use the `--disable-asm` option to revert to pure C. - -For Clang-based build systems (Darwin, FreeBSD, etc.), Clang version 3.5 or higher is required. - -If you get a WARNING about unexpected _libwavpack_ version when you run the command-line programs, you might try using `--enable-rpath` to hardcode the library location in the executables, or simply force static linking with `--disable-shared`. - -There is now a CLI program to do a full suite of stress tests for _libwavpack_, and this is particularly useful for packagers to make sure that the assembly language optimizations are working correctly on various platforms. It is built with the configure option `--enable-tests` and requires Pthreads (it worked out-of-the-box on all the platforms I tried it on). There are lots of options, but the default test suite (consisting of 192 tests) is executed with `wvtest --default`. There is also a seeking test. On Windows a third-party Pthreads library is required, so I am not including this in the build for now. - ---- - -## Assembly - -Assembly language optimizations are provided for x86 and x86-64 (AMD64) processors (encoding and decoding) and ARMv7 (decoding only). - -The x86 assembly code includes a runtime check for MMX capability, so it will work on legacy i386 processors. - -## Documentation - -There are four documentation files contained in the distribution: - -| File | Description | -|------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [doc/wavpack_doc.html](https://github.com/dbry/WavPack/blob/master/doc/wavpack_doc.html) | Contains user-targeted documentation for the command-line programs. | -| [doc/WavPack5PortingGuide.pdf](https://github.com/dbry/WavPack/blob/master/doc/WavPack5PortingGuide.pdf) | This document is targeted at developers who are migrating to WavPack 5, and it provides a short description of the major improvements and how to utilize them. | -| [doc/WavPack5LibraryDoc.pdf](https://github.com/dbry/WavPack/blob/master/doc/WavPack5LibraryDoc.pdf) | Contains a detailed description of the API provided by WavPack library appropriate for reading and writing WavPack files and manipulating APEv2 tags. | -| [doc/WavPack5FileFormat.pdf](https://github.com/dbry/WavPack/blob/master/doc/WavPack5FileFormat.pdf) | Contains a description of the WavPack file format, including details needed for parsing WavPack, blocks, and interpreting the block header and flags. | - -There is also a description of the WavPack algorithms in the forth edition of David Salomon's book "Data Compression: The Complete Reference". This section can be found here: www.wavpack.com/WavPack.pdf - -## Portability - -This code is designed to be easy to port to other platforms. - -It is endian-agnostic and usually uses callbacks for I/O, although there's a convenience function for reading files that accepts filename strings and automatically handles correction files. - -On Windows, there is now an option to select UTF-8 instead of ANSI. - -To maintain compatibility on various platforms, the following conventions are used: -* `char` must be 8-bits (`signed` or `unsigned`). -* `short` must be 16-bits. -* `int` and `long` must be at least 32-bits. - -## Design - -The code's modules are organized in such a way that if major chunks of the functionality are not referenced (for example, creating WavPack files) then link-time dependency resolution should provide optimum binary sizes. - -However, some functionality could not be easily excluded in this way and so there are additional macros that may be used to further reduce the size of the binary. Note that these must be defined for all modules: - -| Macros | Description | -|-----------------|------------------------------------------------------------------------------------------------------------| -| `NO_SEEKING` | To not allow seeking to a specific sample index (for applications that always read entire files). | -| `NO_TAGS` | To not read specified fields from ID3v1 and APEv2 tags, and not create or edit APEv2 tags. | -| `ENABLE_LEGACY` | Include support for Wavpack files from before version 4.0. This was eliminated by default with WavPack 5. | -| `ENABLE_DSD` | Include support for DSD audio. New for WavPack 5 and the default, but obviously not universally required. | - -Note that this has been tested on many platforms. - -## Tiny Decoder - -There are alternate versions of this library available specifically designed for resource limited CPUs, and hardware encoding and decoding. - -There is the _Tiny Decoder_ library which works with less than 32k of code and less than 4k of data, and has assembly language optimizations for the ARM and Freescale ColdFire CPUs. - -The _Tiny Decoder_ is also designed for embedded use and handles the pure lossless, lossy, and hybrid lossless modes. - -Neither of these versions use any memory allocation functions, nor do they require floating-point arithmetic support. - ---- - -Questions or comments should be directed to david@wavpack.com. - -You may also find David on GitHub as [dbry](https://github.com/dbry). diff --git a/Frameworks/WavPack/Files/common_utils.c b/Frameworks/WavPack/Files/common_utils.c deleted file mode 100644 index e7084a305..000000000 --- a/Frameworks/WavPack/Files/common_utils.c +++ /dev/null @@ -1,788 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// common_utils.c - -// This module provides a lot of the trivial WavPack API functions and several -// functions that are common to both reading and writing WavPack files (like -// WavpackCloseFile()). Functions here are restricted to those that have few -// external dependencies and this is done so that applications that statically -// link to the WavPack library (like the command-line utilities on Windows) -// do not need to include the entire library image if they only use a subset -// of it. This module will be loaded for ANY WavPack application. - -#include -#include -#include - -#include "wavpack_local.h" - -#ifndef LIBWAVPACK_VERSION_STRING -#include "wavpack_version.h" -#endif - -///////////////////////////// local table storage //////////////////////////// - -const uint32_t sample_rates [] = { 6000, 8000, 9600, 11025, 12000, 16000, 22050, - 24000, 32000, 44100, 48000, 64000, 88200, 96000, 192000 }; - -///////////////////////////// executable code //////////////////////////////// - -// This function obtains general information about an open input file and -// returns a mask with the following bit values: - -// MODE_WVC: a .wvc file has been found and will be used for lossless -// MODE_LOSSLESS: file is lossless (either pure or hybrid) -// MODE_HYBRID: file is hybrid mode (either lossy or lossless) -// MODE_FLOAT: audio data is 32-bit ieee floating point -// MODE_VALID_TAG: file contains a valid ID3v1 or APEv2 tag -// MODE_HIGH: file was created in "high" mode (information only) -// MODE_FAST: file was created in "fast" mode (information only) -// MODE_EXTRA: file was created using "extra" mode (information only) -// MODE_APETAG: file contains a valid APEv2 tag -// MODE_SFX: file was created as a "self-extracting" executable -// MODE_VERY_HIGH: file was created in the "very high" mode (or in -// the "high" mode prior to 4.4) -// MODE_MD5: file contains an MD5 checksum -// MODE_XMODE: level used for extra mode (1-6, 0=unknown) -// MODE_DNS: dynamic noise shaping - -int WavpackGetMode (WavpackContext *wpc) -{ - int mode = 0; - - if (wpc) { - if (wpc->config.flags & CONFIG_HYBRID_FLAG) - mode |= MODE_HYBRID; - else if (!(wpc->config.flags & CONFIG_LOSSY_MODE)) - mode |= MODE_LOSSLESS; - - if (wpc->wvc_flag) - mode |= (MODE_LOSSLESS | MODE_WVC); - - if (wpc->lossy_blocks) - mode &= ~MODE_LOSSLESS; - - if (wpc->config.flags & CONFIG_FLOAT_DATA) - mode |= MODE_FLOAT; - - if (wpc->config.flags & (CONFIG_HIGH_FLAG | CONFIG_VERY_HIGH_FLAG)) { - mode |= MODE_HIGH; - - if ((wpc->config.flags & CONFIG_VERY_HIGH_FLAG) || - (wpc->streams && wpc->streams [0] && wpc->streams [0]->wphdr.version < 0x405)) - mode |= MODE_VERY_HIGH; - } - - if (wpc->config.flags & CONFIG_FAST_FLAG) - mode |= MODE_FAST; - - if (wpc->config.flags & CONFIG_EXTRA_MODE) - mode |= (MODE_EXTRA | (wpc->config.xmode << 12)); - - if (wpc->config.flags & CONFIG_CREATE_EXE) - mode |= MODE_SFX; - - if (wpc->config.flags & CONFIG_MD5_CHECKSUM) - mode |= MODE_MD5; - - if ((wpc->config.flags & CONFIG_HYBRID_FLAG) && (wpc->config.flags & CONFIG_DYNAMIC_SHAPING) && - wpc->streams && wpc->streams [0] && wpc->streams [0]->wphdr.version >= 0x407) - mode |= MODE_DNS; - -#ifndef NO_TAGS - if (valid_tag (&wpc->m_tag)) { - mode |= MODE_VALID_TAG; - - if (valid_tag (&wpc->m_tag) == 'A') - mode |= MODE_APETAG; - } -#endif - - mode |= (wpc->config.qmode << 16) & 0xFF0000; - } - - return mode; -} - -// This function obtains information about specific file features that were -// added for version 5.0, specifically qualifications added to support CAF -// and DSD files. Except for indicating the presence of DSD data, these -// bits are meant to simply indicate the format of the data in the original -// source file and do NOT indicate how the library will return the data to -// the appication (which is always the same). This means that in general an -// application that simply wants to play or process the audio data need not -// be concerned about these. If the file is DSD audio, then either of the -// QMDOE_DSD_LSB_FIRST or QMODE_DSD_MSB_FIRST bits will be set (but the -// DSD audio is always returned to the caller MSB first). - -// QMODE_BIG_ENDIAN 0x1 // big-endian data format (opposite of WAV format) -// QMODE_SIGNED_BYTES 0x2 // 8-bit audio data is signed (opposite of WAV format) -// QMODE_UNSIGNED_WORDS 0x4 // audio data (other than 8-bit) is unsigned (opposite of WAV format) -// QMODE_REORDERED_CHANS 0x8 // source channels were not Microsoft order, so they were reordered -// QMODE_DSD_LSB_FIRST 0x10 // DSD bytes, LSB first (most Sony .dsf files) -// QMODE_DSD_MSB_FIRST 0x20 // DSD bytes, MSB first (Philips .dff files) -// QMODE_DSD_IN_BLOCKS 0x40 // DSD data is blocked by channels (Sony .dsf only) - -int WavpackGetQualifyMode (WavpackContext *wpc) -{ - return wpc->config.qmode & 0xFF; -} - -// This function returns a pointer to a string describing the last error -// generated by WavPack. - -char *WavpackGetErrorMessage (WavpackContext *wpc) -{ - return wpc->error_message; -} - -// Get total number of samples contained in the WavPack file, or -1 if unknown - -uint32_t WavpackGetNumSamples (WavpackContext *wpc) -{ - return (uint32_t) WavpackGetNumSamples64 (wpc); -} - -int64_t WavpackGetNumSamples64 (WavpackContext *wpc) -{ - return wpc ? wpc->total_samples : -1; -} - -// Get the current sample index position, or -1 if unknown - -uint32_t WavpackGetSampleIndex (WavpackContext *wpc) -{ - return (uint32_t) WavpackGetSampleIndex64 (wpc); -} - -int64_t WavpackGetSampleIndex64 (WavpackContext *wpc) -{ - if (wpc) { -#ifdef ENABLE_LEGACY - if (wpc->stream3) - return get_sample_index3 (wpc); - else if (wpc->streams && wpc->streams [0]) - return wpc->streams [0]->sample_index; -#else - if (wpc->streams && wpc->streams [0]) - return wpc->streams [0]->sample_index; -#endif - } - - return -1; -} - -// Get the number of errors encountered so far - -int WavpackGetNumErrors (WavpackContext *wpc) -{ - return wpc ? wpc->crc_errors : 0; -} - -// return TRUE if any uncorrected lossy blocks were actually written or read - -int WavpackLossyBlocks (WavpackContext *wpc) -{ - return wpc ? wpc->lossy_blocks : 0; -} - -// Calculate the progress through the file as a double from 0.0 (for begin) -// to 1.0 (for done). A return value of -1.0 indicates that the progress is -// unknown. - -double WavpackGetProgress (WavpackContext *wpc) -{ - if (wpc && wpc->total_samples != -1 && wpc->total_samples != 0) - return (double) WavpackGetSampleIndex64 (wpc) / wpc->total_samples; - else - return -1.0; -} - -// Return the total size of the WavPack file(s) in bytes. - -uint32_t WavpackGetFileSize (WavpackContext *wpc) -{ - return (uint32_t) (wpc ? wpc->filelen + wpc->file2len : 0); -} - -int64_t WavpackGetFileSize64 (WavpackContext *wpc) -{ - return wpc ? wpc->filelen + wpc->file2len : 0; -} - -// Calculate the ratio of the specified WavPack file size to the size of the -// original audio data as a double greater than 0.0 and (usually) smaller than -// 1.0. A value greater than 1.0 represents "negative" compression and a -// return value of 0.0 indicates that the ratio cannot be determined. - -double WavpackGetRatio (WavpackContext *wpc) -{ - if (wpc && wpc->total_samples != -1 && wpc->filelen) { - double output_size = (double) wpc->total_samples * wpc->config.num_channels * - wpc->config.bytes_per_sample; - double input_size = (double) wpc->filelen + wpc->file2len; - - if (output_size >= 1.0 && input_size >= 1.0) - return input_size / output_size; - } - - return 0.0; -} - -// Calculate the average bitrate of the WavPack file in bits per second. A -// return of 0.0 indicates that the bitrate cannot be determined. An option is -// provided to use (or not use) any attendant .wvc file. - -double WavpackGetAverageBitrate (WavpackContext *wpc, int count_wvc) -{ - if (wpc && wpc->total_samples != -1 && wpc->filelen) { - double output_time = (double) wpc->total_samples / WavpackGetSampleRate (wpc); - double input_size = (double) wpc->filelen + (count_wvc ? wpc->file2len : 0); - - if (output_time >= 0.1 && input_size >= 1.0) - return input_size * 8.0 / output_time; - } - - return 0.0; -} - -// Calculate the bitrate of the current WavPack file block in bits per second. -// This can be used for an "instant" bit display and gets updated from about -// 1 to 4 times per second. A return of 0.0 indicates that the bitrate cannot -// be determined. - -double WavpackGetInstantBitrate (WavpackContext *wpc) -{ - if (wpc && wpc->stream3) - return WavpackGetAverageBitrate (wpc, TRUE); - - if (wpc && wpc->streams && wpc->streams [0] && wpc->streams [0]->wphdr.block_samples) { - double output_time = (double) wpc->streams [0]->wphdr.block_samples / WavpackGetSampleRate (wpc); - double input_size = 0; - int si; - - for (si = 0; si < wpc->num_streams; ++si) { - if (wpc->streams [si]->blockbuff) - input_size += ((WavpackHeader *) wpc->streams [si]->blockbuff)->ckSize; - - if (wpc->streams [si]->block2buff) - input_size += ((WavpackHeader *) wpc->streams [si]->block2buff)->ckSize; - } - - if (output_time > 0.0 && input_size >= 1.0) - return input_size * 8.0 / output_time; - } - - return 0.0; -} - -// This function allows retrieving the Core Audio File channel layout, many of which do not -// conform to the Microsoft ordering standard that WavPack requires internally (at least for -// those channels present in the "channel mask"). In addition to the layout tag, this function -// returns the reordering string (if stored in the file) to allow the unpacker to reorder the -// channels back to the specified layout (if it wants to restore the CAF order). The number of -// channels in the layout is determined from the lower nybble of the layout word (and should -// probably match the number of channels in the file), and if a reorder string is requested -// then that much space must be allocated. Note that all the reordering is actually done -// outside of this library, and that if reordering is done then the appropriate qmode bit -// will be set. -// -// Note: Normally this function would not be used by an application unless it specifically -// wanted to restore a non-standard channel order (to check an MD5, for example) or obtain -// the Core Audio channel layout ID. For simple file decoding for playback, the channel_mask -// should provide all the information required unless there are non-Microsoft channels -// involved, in which case WavpackGetChannelIdentities() will provide the identities of -// the other channels (if they are known). - -uint32_t WavpackGetChannelLayout (WavpackContext *wpc, unsigned char *reorder) -{ - if ((wpc->channel_layout & 0xff) && wpc->channel_reordering && reorder) - memcpy (reorder, wpc->channel_reordering, wpc->channel_layout & 0xff); - - return wpc->channel_layout; -} - -// This function provides the identities of ALL the channels in the file, including the -// standard Microsoft channels (which come first, in order, and are numbered 1-18) and also -// any non-Microsoft channels (which can be in any order and have values from 33-254). The -// value 0x00 is invalid and 0xFF indicates an "unknown" or "unnassigned" channel. The -// string is NULL terminated so the caller must supply enough space for the number -// of channels indicated by WavpackGetNumChannels(), plus one. -// -// Note that this function returns the actual order of the channels in the Wavpack file -// (i.e., the order returned by WavpackUnpackSamples()). If the file includes a "reordering" -// string because the source file was not in Microsoft order that is NOT taken into account -// here and really only needs to be considered if doing an MD5 verification or if it's -// required to restore the original order/file (like wvunpack does). - -void WavpackGetChannelIdentities (WavpackContext *wpc, unsigned char *identities) -{ - int num_channels = wpc->config.num_channels, index = 1; - uint32_t channel_mask = wpc->config.channel_mask; - unsigned char *src = wpc->channel_identities; - - while (num_channels--) { - if (channel_mask) { - while (!(channel_mask & 1)) { - channel_mask >>= 1; - index++; - } - - *identities++ = index++; - channel_mask >>= 1; - } - else if (src && *src) - *identities++ = *src++; - else - *identities++ = 0xff; - } - - *identities = 0; -} - -// For local use only. Install a callback to be executed when WavpackCloseFile() is called, -// usually used to dump some statistics accumulated during encode or decode. - -void install_close_callback (WavpackContext *wpc, void cb_func (void *wpc)) -{ - wpc->close_callback = cb_func; -} - -// Close the specified WavPack file and release all resources used by it. -// Returns NULL. - -WavpackContext *WavpackCloseFile (WavpackContext *wpc) -{ - if (wpc->close_callback) - wpc->close_callback (wpc); - - if (wpc->streams) { - free_streams (wpc); - - if (wpc->streams [0]) - free (wpc->streams [0]); - - free (wpc->streams); - } - -#ifdef ENABLE_LEGACY - if (wpc->stream3) - free_stream3 (wpc); -#endif - - if (wpc->reader && wpc->reader->close && wpc->wv_in) - wpc->reader->close (wpc->wv_in); - - if (wpc->reader && wpc->reader->close && wpc->wvc_in) - wpc->reader->close (wpc->wvc_in); - - WavpackFreeWrapper (wpc); - - if (wpc->metadata) { - int i; - - for (i = 0; i < wpc->metacount; ++i) - if (wpc->metadata [i].data) - free (wpc->metadata [i].data); - - free (wpc->metadata); - } - - if (wpc->channel_identities) - free (wpc->channel_identities); - - if (wpc->channel_reordering) - free (wpc->channel_reordering); - -#ifndef NO_TAGS - free_tag (&wpc->m_tag); -#endif - -#ifdef ENABLE_DSD - if (wpc->decimation_context) - decimate_dsd_destroy (wpc->decimation_context); -#endif - - free (wpc); - - return NULL; -} - -// These routines are used to access (and free) header and trailer data that -// was retrieved from the Wavpack file. The header will be available before -// the samples are decoded and the trailer will be available after all samples -// have been read. - -uint32_t WavpackGetWrapperBytes (WavpackContext *wpc) -{ - return wpc ? wpc->wrapper_bytes : 0; -} - -unsigned char *WavpackGetWrapperData (WavpackContext *wpc) -{ - return wpc ? wpc->wrapper_data : NULL; -} - -void WavpackFreeWrapper (WavpackContext *wpc) -{ - if (wpc && wpc->wrapper_data) { - free (wpc->wrapper_data); - wpc->wrapper_data = NULL; - wpc->wrapper_bytes = 0; - } -} - -// Returns the sample rate of the specified WavPack file - -uint32_t WavpackGetSampleRate (WavpackContext *wpc) -{ - return wpc ? (wpc->dsd_multiplier ? wpc->config.sample_rate * wpc->dsd_multiplier : wpc->config.sample_rate) : 44100; -} - -// Returns the native sample rate of the specified WavPack file -// (provides the native rate for DSD files rather than the "byte" rate that's used for -// seeking, duration, etc. and would generally be used just for user facing reports) - -uint32_t WavpackGetNativeSampleRate (WavpackContext *wpc) -{ - return wpc ? (wpc->dsd_multiplier ? wpc->config.sample_rate * wpc->dsd_multiplier * 8 : wpc->config.sample_rate) : 44100; -} - -// Returns the number of channels of the specified WavPack file. Note that -// this is the actual number of channels contained in the file even if the -// OPEN_2CH_MAX flag was specified when the file was opened. - -int WavpackGetNumChannels (WavpackContext *wpc) -{ - return wpc ? wpc->config.num_channels : 2; -} - -// Returns the standard Microsoft channel mask for the specified WavPack -// file. A value of zero indicates that there is no speaker assignment -// information. - -int WavpackGetChannelMask (WavpackContext *wpc) -{ - return wpc ? wpc->config.channel_mask : 0; -} - -// Return the normalization value for floating point data (valid only -// if floating point data is present). A value of 127 indicates that -// the floating point range is +/- 1.0. Higher values indicate a -// larger floating point range. - -int WavpackGetFloatNormExp (WavpackContext *wpc) -{ - return wpc->config.float_norm_exp; -} - -// Returns the actual number of valid bits per sample contained in the -// original file, which may or may not be a multiple of 8. Floating data -// always has 32 bits, integers may be from 1 to 32 bits each. When this -// value is not a multiple of 8, then the "extra" bits are located in the -// LSBs of the results. That is, values are right justified when unpacked -// into ints, but are left justified in the number of bytes used by the -// original data. - -int WavpackGetBitsPerSample (WavpackContext *wpc) -{ - return wpc ? wpc->config.bits_per_sample : 16; -} - -// Returns the number of bytes used for each sample (1 to 4) in the original -// file. This is required information for the user of this module because the -// audio data is returned in the LOWER bytes of the long buffer and must be -// left-shifted 8, 16, or 24 bits if normalized longs are required. - -int WavpackGetBytesPerSample (WavpackContext *wpc) -{ - return wpc ? wpc->config.bytes_per_sample : 2; -} - -// If the OPEN_2CH_MAX flag is specified when opening the file, this function -// will return the actual number of channels decoded from the file (which may -// or may not be less than the actual number of channels, but will always be -// 1 or 2). Normally, this will be the front left and right channels of a -// multichannel file. - -int WavpackGetReducedChannels (WavpackContext *wpc) -{ - if (wpc) - return wpc->reduced_channels ? wpc->reduced_channels : wpc->config.num_channels; - else - return 2; -} - -// Free all memory allocated for raw WavPack blocks (for all allocated streams) -// and free all additional streams. This does not free the default stream ([0]) -// which is always kept around. - -void free_streams (WavpackContext *wpc) -{ - int si = wpc->num_streams; - - while (si--) { - if (wpc->streams [si]->blockbuff) { - free (wpc->streams [si]->blockbuff); - wpc->streams [si]->blockbuff = NULL; - } - - if (wpc->streams [si]->block2buff) { - free (wpc->streams [si]->block2buff); - wpc->streams [si]->block2buff = NULL; - } - - if (wpc->streams [si]->sample_buffer) { - free (wpc->streams [si]->sample_buffer); - wpc->streams [si]->sample_buffer = NULL; - } - - if (wpc->streams [si]->dc.shaping_data) { - free (wpc->streams [si]->dc.shaping_data); - wpc->streams [si]->dc.shaping_data = NULL; - } - -#ifdef ENABLE_DSD - free_dsd_tables (wpc->streams [si]); -#endif - - if (si) { - wpc->num_streams--; - free (wpc->streams [si]); - wpc->streams [si] = NULL; - } - } - - wpc->current_stream = 0; -} - -void free_dsd_tables (WavpackStream *wps) -{ - if (wps->dsd.probabilities) { - free (wps->dsd.probabilities); - wps->dsd.probabilities = NULL; - } - - if (wps->dsd.summed_probabilities) { - free (wps->dsd.summed_probabilities); - wps->dsd.summed_probabilities = NULL; - } - - if (wps->dsd.lookup_buffer) { - free (wps->dsd.lookup_buffer); - wps->dsd.lookup_buffer = NULL; - } - - if (wps->dsd.value_lookup) { - free (wps->dsd.value_lookup); - wps->dsd.value_lookup = NULL; - } - - if (wps->dsd.ptable) { - free (wps->dsd.ptable); - wps->dsd.ptable = NULL; - } -} - -void WavpackFloatNormalize (int32_t *values, int32_t num_values, int delta_exp) -{ - f32 *fvalues = (f32 *) values; - int exp; - - if (!delta_exp) - return; - - while (num_values--) { - if ((exp = get_exponent (*fvalues)) == 0 || exp + delta_exp <= 0) - *fvalues = 0; - else if (exp == 255 || (exp += delta_exp) >= 255) { - set_exponent (*fvalues, 255); - set_mantissa (*fvalues, 0); - } - else - set_exponent (*fvalues, exp); - - fvalues++; - } -} - -void WavpackLittleEndianToNative (void *data, char *format) -{ - unsigned char *cp = (unsigned char *) data; - int64_t temp; - - while (*format) { - switch (*format) { - case 'D': - temp = cp [0] + ((int64_t) cp [1] << 8) + ((int64_t) cp [2] << 16) + ((int64_t) cp [3] << 24) + - ((int64_t) cp [4] << 32) + ((int64_t) cp [5] << 40) + ((int64_t) cp [6] << 48) + ((int64_t) cp [7] << 56); - * (int64_t *) cp = temp; - cp += 8; - break; - - case 'L': - temp = cp [0] + ((int32_t) cp [1] << 8) + ((int32_t) cp [2] << 16) + ((int32_t) cp [3] << 24); - * (int32_t *) cp = (int32_t) temp; - cp += 4; - break; - - case 'S': - temp = cp [0] + (cp [1] << 8); - * (int16_t *) cp = (int16_t) temp; - cp += 2; - break; - - default: - if (isdigit (*format)) - cp += *format - '0'; - - break; - } - - format++; - } -} - -void WavpackNativeToLittleEndian (void *data, char *format) -{ - unsigned char *cp = (unsigned char *) data; - int64_t temp; - - while (*format) { - switch (*format) { - case 'D': - temp = * (int64_t *) cp; - *cp++ = (unsigned char) temp; - *cp++ = (unsigned char) (temp >> 8); - *cp++ = (unsigned char) (temp >> 16); - *cp++ = (unsigned char) (temp >> 24); - *cp++ = (unsigned char) (temp >> 32); - *cp++ = (unsigned char) (temp >> 40); - *cp++ = (unsigned char) (temp >> 48); - *cp++ = (unsigned char) (temp >> 56); - break; - - case 'L': - temp = * (int32_t *) cp; - *cp++ = (unsigned char) temp; - *cp++ = (unsigned char) (temp >> 8); - *cp++ = (unsigned char) (temp >> 16); - *cp++ = (unsigned char) (temp >> 24); - break; - - case 'S': - temp = * (int16_t *) cp; - *cp++ = (unsigned char) temp; - *cp++ = (unsigned char) (temp >> 8); - break; - - default: - if (isdigit (*format)) - cp += *format - '0'; - - break; - } - - format++; - } -} - -void WavpackBigEndianToNative (void *data, char *format) -{ - unsigned char *cp = (unsigned char *) data; - int64_t temp; - - while (*format) { - switch (*format) { - case 'D': - temp = cp [7] + ((int64_t) cp [6] << 8) + ((int64_t) cp [5] << 16) + ((int64_t) cp [4] << 24) + - ((int64_t) cp [3] << 32) + ((int64_t) cp [2] << 40) + ((int64_t) cp [1] << 48) + ((int64_t) cp [0] << 56); - * (int64_t *) cp = temp; - cp += 8; - break; - - case 'L': - temp = cp [3] + ((int32_t) cp [2] << 8) + ((int32_t) cp [1] << 16) + ((int32_t) cp [0] << 24); - * (int32_t *) cp = (int32_t) temp; - cp += 4; - break; - - case 'S': - temp = cp [1] + (cp [0] << 8); - * (int16_t *) cp = (int16_t) temp; - cp += 2; - break; - - default: - if (isdigit (*format)) - cp += *format - '0'; - - break; - } - - format++; - } -} - -void WavpackNativeToBigEndian (void *data, char *format) -{ - unsigned char *cp = (unsigned char *) data; - int64_t temp; - - while (*format) { - switch (*format) { - case 'D': - temp = * (int64_t *) cp; - *cp++ = (unsigned char) (temp >> 56); - *cp++ = (unsigned char) (temp >> 48); - *cp++ = (unsigned char) (temp >> 40); - *cp++ = (unsigned char) (temp >> 32); - *cp++ = (unsigned char) (temp >> 24); - *cp++ = (unsigned char) (temp >> 16); - *cp++ = (unsigned char) (temp >> 8); - *cp++ = (unsigned char) temp; - break; - - case 'L': - temp = * (int32_t *) cp; - *cp++ = (unsigned char) (temp >> 24); - *cp++ = (unsigned char) (temp >> 16); - *cp++ = (unsigned char) (temp >> 8); - *cp++ = (unsigned char) temp; - break; - - case 'S': - temp = * (int16_t *) cp; - *cp++ = (unsigned char) (temp >> 8); - *cp++ = (unsigned char) temp; - break; - - default: - if (isdigit (*format)) - cp += *format - '0'; - - break; - } - - format++; - } -} - -uint32_t WavpackGetLibraryVersion (void) -{ - return (LIBWAVPACK_MAJOR<<16) - |(LIBWAVPACK_MINOR<<8) - |(LIBWAVPACK_MICRO<<0); -} - -const char *WavpackGetLibraryVersionString (void) -{ - return LIBWAVPACK_VERSION_STRING; -} - diff --git a/Frameworks/WavPack/Files/decorr_tables.h b/Frameworks/WavPack/Files/decorr_tables.h deleted file mode 100644 index b47c30142..000000000 --- a/Frameworks/WavPack/Files/decorr_tables.h +++ /dev/null @@ -1,1077 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// decorr_tables.h - -// These four tables specify the characteristics of the decorrelation filters -// for the four basic compression modes (fast, normal, high, and very high). -// -// The first entry in the table represents the "default" filter for the -// corresponding mode; subsequent entries represent filters that are tried -// in the "extra" modes 1-3 ("extra" modes 4-6 create filters from scratch). -// -// The first value indicates whether the filter is applied to joint stereo -// data (0=L/R, 1=M/S) and the second value represents the "delta" value of -// the adaptive filter. The rest of the values (2-16, depending on mode) are -// the "terms" of the filter. -// -// Each term represents one layer of the sequential filter, where positive -// values indicate the relative sample involved from the same channel (1=prev), -// 17 & 18 are special functions using the previous 2 samples, and negative -// values indicate cross channel decorrelation (in stereo only). -// -// It would be ideal if this was the only source for the decorrelation tables, -// but unfortunately the defaults (first entry) are duplicated in the assembly -// code for the function pack_decorr_mono_buffer() and there is no check in -// that code to make sure the correct filter is being passed in. SO, IF A -// CHANGE IS MADE HERE TO ONE OF THE DEFAULT FILTERS, THEN THE CORRESPONDING -// ASSEMBLY CODE MUST BE CHANGED ALSO, OR VERY CORRUPT FILES WILL RESULT!! -// -// Since this include file contains that actual tables as static const data, -// it should only be included from ONE source file (currently pack.c)! - -static const WavpackDecorrSpec fast_specs [] = { - { 1, 2, {18,17} }, // 0 - { 1, 1, {17,17} }, // 1 - { 0, 2, {18,17} }, // 2 - { 0, 1, {17,17} }, // 3 - { 1, 3, { 1,18} }, // 4 - { 1, 1, {17, 1} }, // 5 - { 0, 1, { 1,17} }, // 6 - { 0, 1, {-2,17} }, // 7 - { 0, 2, {-1,17} }, // 8 - { 1, 1, {17, 2} }, // 9 - { 0, 3, {18,18} }, // 10 - { 0, 1, {17, 1} }, // 11 - { 1, 6, { 1, 2} }, // 12 - { 1, 1, {17, 3} }, // 13 - { 0, 1, {-2, 3} }, // 14 - { 0, 1, { 2,17} }, // 15 - { 0, 1, {18,-2} }, // 16 - { 0, 1, {-1,17} }, // 17 - { 0, 1, {18,17} }, // 18 - { 0, 1, {17, 2} }, // 19 - { 1, 2, {18,-2} }, // 20 - { 1, 1, { 1,17} }, // 21 - { 0, 3, {18, 2} }, // 22 - { 0, 1, {17,-2} }, // 23 - { 0, 1, {18,-2} }, // 24 - { 1, 2, {17,-3} }, // 25 - { 0, 1, {18, 3} }, // 26 - { 0, 1, {18,18} }, // 27 - { 1, 1, { 1, 3} }, // 28 - { 1, 1, {18, 3} }, // 29 - { 1, 1, { 1, 3} }, // 30 - { 0, 2, {18,17} }, // 31 - { 1, 1, { 1,17} }, // 32 - { 1, 1, {17, 3} }, // 33 - { 0, 3, {18,17} }, // 34 - { 0, 1, {18,18} }, // 35 - { 1, 1, { 1, 3} }, // 36 - { 1, 1, { 1,18} }, // 37 - { 0, 1, {18,-2} }, // 38 - { 0, 2, {18,17} }, // 39 - { 0, 1, {-1,18} }, // 40 - { 1, 1, {17, 3} }, // 41 - { 0, 1, {17, 2} }, // 42 - { 0, 1, {17, 3} }, // 43 - { 1, 1, {18, 2} }, // 44 - { 1, 1, {17,-2} }, // 45 - { 0, 1, { 1,-2} }, // 46 - { 0, 2, {18,17} }, // 47 - { 0, 1, {17,-2} }, // 48 - { 1, 1, {17,-2} }, // 49 - { 0, 1, {18, 3} }, // 50 - { 0, 1, { 2,17} }, // 51 - { 1, 2, {18,-3} }, // 52 - { 1, 2, { 1,18} }, // 53 - { 1, 2, {18, 2} }, // 54 - { 0, 1, {17,-1} }, // 55 - { 0, 1, {17,-2} }, // 56 - { 1, 1, {17,-2} }, // 57 - { 1, 1, { 1, 3} }, // 58 - { 0, 1, { 1,17} }, // 59 - { 1, 2, {18,-2} }, // 60 - { 1, 2, {17,-3} }, // 61 - { 0, 2, {18,17} }, // 62 - { 0, 2, {18,17} }, // 63 - { 1, 1, {17, 2} }, // 64 - { 1, 2, {18,18} }, // 65 - { 0, 1, {17, 2} }, // 66 - { 0, 1, {18,17} }, // 67 - { 1, 1, { 1,17} }, // 68 - { 1, 1, {17, 2} }, // 69 - { 0, 2, {18,18} }, // 70 - { 0, 2, {18,17} }, // 71 - { 1, 2, {17,-3} }, // 72 - { 1, 6, { 1, 2} }, // 73 - { 0, 3, {17,17} }, // 74 - { 0, 1, { 1,18} }, // 75 - { 0, 1, { 1,-2} }, // 76 - { 1, 1, {17, 2} }, // 77 - { 0, 2, {18,17} }, // 78 - { 0, 2, {18,17} }, // 79 - { 1, 1, {18, 3} }, // 80 - { 1, 2, {17,-3} }, // 81 - { 0, 1, {17, 2} }, // 82 - { 0, 1, {17, 3} }, // 83 - { 0, 1, {18,-2} }, // 84 - { 1, 1, {18,18} }, // 85 - { 1, 6, { 1, 2} }, // 86 - { 0, 2, {18,17} }, // 87 - { 0, 2, {18,17} }, // 88 - { 0, 1, {-1,17} }, // 89 - { 1, 1, {18, 3} }, // 90 - { 0, 1, {17,18} }, // 91 - { 1, 1, {17, 3} }, // 92 - { 0, 1, {18, 3} }, // 93 - { 0, 2, {18,17} }, // 94 - { 0, 2, {18,17} }, // 95 - { 1, 2, {18, 2} }, // 96 - { 0, 1, {-2, 3} }, // 97 - { 0, 4, {18,-1} }, // 98 - { 0, 2, {18,18} }, // 99 - { 0, 1, {-2, 3} }, // 100 - { 1, 1, {17,-2} }, // 101 - { 0, 1, {17, 3} }, // 102 - { 0, 2, {18,17} }, // 103 - { 0, 2, {-1,18} }, // 104 - { 1, 1, { 2,17} }, // 105 - { 0, 2, {17,-2} }, // 106 - { 0, 1, {17, 2} }, // 107 - { 1, 2, {18,-3} }, // 108 - { 0, 1, {17,-2} }, // 109 - { 0, 2, {18,17} }, // 110 - { 0, 2, {18,17} }, // 111 - { 1, 1, {17,-2} }, // 112 - { 1, 2, {17,-3} }, // 113 - { 1, 1, { 1, 3} }, // 114 - { 1, 1, { 2,17} }, // 115 - { 1, 2, {18, 2} }, // 116 - { 1, 1, { 2,17} }, // 117 - { 1, 1, {18, 2} }, // 118 - { 0, 2, {18,17} }, // 119 - { 0, 2, {18,17} }, // 120 - { 0, 1, {17,-2} }, // 121 - { 0, 2, {18,17} }, // 122 - { 0, 2, {17,-1} }, // 123 - { 0, 2, {18,-2} }, // 124 - { 0, 2, {18,17} }, // 125 - { 0, 2, {18,17} }, // 126 - { 0, 2, {18,17} }, // 127 - { 1, 1, { 1, 3} }, // 128 - { 0, 2, {-2,17} }, // 129 - { 0, 2, {18,-2} }, // 130 - { 0, 2, {17,-2} }, // 131 - { 1, 1, { 2,17} }, // 132 - { 1, 1, { 1, 3} }, // 133 - { 0, 1, { 2,17} }, // 134 - { 0, 2, {18,17} }, // 135 - { 0, 3, {-1,17} }, // 136 - { 1, 1, { 2,17} }, // 137 - { 0, 2, {18,18} }, // 138 - { 0, 1, {17, 2} }, // 139 - { 1, 4, {18,-3} }, // 140 - { 1, 1, {18, 1} }, // 141 - { 0, 2, {18,17} }, // 142 - { 0, 2, {18,17} }, // 143 - { 1, 2, {18,-1} }, // 144 - { 0, 1, {-1,18} }, // 145 - { 1, 6, { 1, 2} }, // 146 - { 1, 1, {17, 2} }, // 147 - { 1, 4, {18, 3} }, // 148 - { 0, 1, { 1,17} }, // 149 - { 0, 1, {18, 2} }, // 150 - { 0, 2, {18,17} }, // 151 - { 0, 2, {18,17} }, // 152 - { 1, 2, {17, 2} }, // 153 - { 0, 2, {18,-2} }, // 154 - { 0, 1, { 1,18} }, // 155 - { 1, 2, {18,-3} }, // 156 - { 0, 2, {18,17} }, // 157 - { 0, 2, {18,17} }, // 158 - { 0, 2, {18,17} }, // 159 - { 1, 2, {18,18} }, // 160 - { 1, 3, {17,17} }, // 161 - { 0, 1, {-2,17} }, // 162 - { 0, 1, {17,18} }, // 163 - { 0, 1, {-1, 3} }, // 164 - { 1, 1, { 2,17} }, // 165 - { 0, 2, {18,-1} }, // 166 - { 0, 2, {18,17} }, // 167 - { 0, 2, {18,17} }, // 168 - { 1, 1, {17,-2} }, // 169 - { 1, 2, {17, 2} }, // 170 - { 1, 1, {18, 3} }, // 171 - { 0, 1, {18, 2} }, // 172 - { 1, 2, {17,-3} }, // 173 - { 0, 2, {18,17} }, // 174 - { 0, 2, {18,17} }, // 175 - { 0, 1, {-2,17} }, // 176 - { 0, 1, {17,-1} }, // 177 - { 0, 1, {18,-1} }, // 178 - { 0, 2, {18,17} }, // 179 - { 1, 2, {17,-3} }, // 180 - { 1, 1, { 1,18} }, // 181 - { 1, 3, {18, 2} }, // 182 - { 0, 2, {18,17} }, // 183 - { 0, 2, {18,17} }, // 184 - { 0, 2, {18,17} }, // 185 - { 0, 2, {18,17} }, // 186 - { 0, 3, {18,18} }, // 187 - { 0, 1, { 1,-2} }, // 188 - { 0, 2, {18,17} }, // 189 - { 0, 2, {18,17} }, // 190 - { 0, 2, {18,17} }, // 191 - { 1, 2, {17,-3} }, // 192 - { 1, 1, {18,18} }, // 193 - { 0, 2, {18, 2} }, // 194 - { 0, 1, {17,18} }, // 195 - { 1, 2, {18, 2} }, // 196 - { 1, 1, {17,-2} }, // 197 - { 0, 2, {17,-1} }, // 198 - { 0, 2, {18,17} }, // 199 - { 0, 2, {18,17} }, // 200 - { 0, 2, {18,17} }, // 201 - { 0, 1, { 1,-2} }, // 202 - { 0, 1, {18, 1} }, // 203 - { 1, 2, {18,-2} }, // 204 - { 0, 1, {17, 2} }, // 205 - { 0, 2, {18,17} }, // 206 - { 0, 2, {18,17} }, // 207 - { 1, 1, {17, 3} }, // 208 - { 0, 1, {17,-1} }, // 209 - { 0, 1, {18, 2} }, // 210 - { 1, 1, {17, 3} }, // 211 - { 1, 1, {17,-2} }, // 212 - { 0, 1, {18,18} }, // 213 - { 0, 2, {18,17} }, // 214 - { 0, 2, {18,17} }, // 215 - { 0, 2, {18,17} }, // 216 - { 0, 2, {18,17} }, // 217 - { 0, 2, {18,17} }, // 218 - { 1, 1, {17,18} }, // 219 - { 0, 1, {-2, 3} }, // 220 - { 0, 2, {18,17} }, // 221 - { 0, 2, {18,17} }, // 222 - { 0, 2, {18,17} }, // 223 - { 1, 2, {18,-3} }, // 224 - { 0, 2, {18,17} }, // 225 - { 0, 3, {18, 2} }, // 226 - { 0, 1, { 1,18} }, // 227 - { 0, 2, {18,17} }, // 228 - { 0, 1, {17,-1} }, // 229 - { 0, 2, {18,17} }, // 230 - { 0, 2, {18,17} }, // 231 - { 0, 2, {18,17} }, // 232 - { 0, 1, {-2, 3} }, // 233 - { 0, 3, {17,17} }, // 234 - { 0, 2, {18,17} }, // 235 - { 0, 2, {18,17} }, // 236 - { 1, 1, {17, 2} }, // 237 - { 0, 2, {18,17} }, // 238 - { 0, 2, {18,17} }, // 239 - { 1, 1, {17, 2} }, // 240 - { 0, 2, {18,17} }, // 241 - { 0, 2, {18,17} }, // 242 - { 0, 2, {18,17} }, // 243 - { 0, 2, {18, 2} }, // 244 - { 0, 2, {18,17} }, // 245 - { 0, 2, {18,17} }, // 246 - { 0, 2, {18,17} }, // 247 - { 0, 2, {18,17} }, // 248 - { 0, 2, {18,17} }, // 249 - { 0, 2, {18,17} }, // 250 - { 0, 2, {18,17} }, // 251 - { 0, 2, {18,17} }, // 252 - { 0, 2, {18,17} }, // 253 - { 0, 2, {18,17} }, // 254 - { 0, 2, {18,17} }, // 255 -}; - -static const WavpackDecorrSpec default_specs [] = { - { 1, 2, {18,18, 2,17, 3} }, // 0 - { 0, 2, {18,17,-1, 3, 2} }, // 1 - { 1, 1, {17,18,18,-2, 2} }, // 2 - { 0, 2, {18,17, 3,-2,17} }, // 3 - { 1, 2, {18,17, 2,17, 3} }, // 4 - { 0, 1, {18,18,-1, 2,17} }, // 5 - { 0, 1, {17,17,-2, 2, 3} }, // 6 - { 0, 1, {18,-2,18, 2,17} }, // 7 - { 1, 2, {18,18,-1, 2, 3} }, // 8 - { 0, 2, {18,17, 3, 2, 5} }, // 9 - { 1, 1, {18,17,18, 2, 5} }, // 10 - { 0, 1, {17,17,-2, 2, 3} }, // 11 - { 0, 1, {18,-2,18, 2, 5} }, // 12 - { 0, 1, {17,-2,17, 2,-3} }, // 13 - { 1, 1, {17,-2,17, 1, 2} }, // 14 - { 0, 1, {17,17,-2, 2, 3} }, // 15 - { 1, 1, {18, 3, 1, 5, 4} }, // 16 - { 1, 4, {18,18, 2, 3,-2} }, // 17 - { 0, 1, { 1,-1,-1, 2,17} }, // 18 - { 0, 2, {18,17, 3, 2, 5} }, // 19 - { 0, 1, {18,18,18, 2,17} }, // 20 - { 0, 1, {18,17,-1, 2,18} }, // 21 - { 1, 1, {17, 3, 2, 1, 7} }, // 22 - { 0, 2, {18,-2,18, 2, 3} }, // 23 - { 1, 3, {18,-3,18, 2, 3} }, // 24 - { 0, 3, {18,17, 2, 3,17} }, // 25 - { 1, 1, {17,17, 2, 1, 4} }, // 26 - { 0, 1, {17,18,-2, 2,17} }, // 27 - { 1, 1, {18,18, 3, 5, 2} }, // 28 - { 0, 1, {17,17, 2,18, 4} }, // 29 - { 0, 1, {18,17, 1, 4, 6} }, // 30 - { 1, 1, { 3,17,18, 2,17} }, // 31 - { 1, 1, {17, 3, 2, 1, 7} }, // 32 - { 0, 1, {18,17,-1, 2, 3} }, // 33 - { 1, 1, {17,17, 2, 1, 4} }, // 34 - { 1, 2, {18,17,-1,17, 3} }, // 35 - { 1, 2, {18,17, 2, 3,-1} }, // 36 - { 0, 2, {18,18,-2, 2,17} }, // 37 - { 0, 1, {17,17, 2,18, 4} }, // 38 - { 0, 5, {-2,18,18,18, 2} }, // 39 - { 1, 1, {18,18,-1, 6, 3} }, // 40 - { 0, 1, {17,17,-2, 2, 3} }, // 41 - { 1, 1, {18,17,18, 2,17} }, // 42 - { 0, 1, {18,17, 4, 3, 1} }, // 43 - { 0, 1, {-2,18, 2, 2,18} }, // 44 - { 1, 2, {18,18,-2, 2,-1} }, // 45 - { 1, 1, {17,17, 2, 1, 4} }, // 46 - { 0, 1, {17,18,-2, 2,17} }, // 47 - { 1, 1, {17, 3, 2, 1, 7} }, // 48 - { 1, 3, {18,-3,18, 2, 3} }, // 49 - { 1, 2, {18,18,-2, 2,-1} }, // 50 - { 1, 1, {18,18, 3, 5, 2} }, // 51 - { 0, 2, {18,18,-1, 2,17} }, // 52 - { 0, 1, {18,-1,17,18, 2} }, // 53 - { 0, 1, {17,-1, 2, 3, 6} }, // 54 - { 0, 1, {18,-2,18, 2, 5} }, // 55 - { 1, 2, {18,18,-2, 2,-1} }, // 56 - { 0, 3, {18,18, 2, 3,17} }, // 57 - { 0, 1, {17,17, 2,18, 4} }, // 58 - { 1, 1, {17,-2,17, 1, 2} }, // 59 - { 0, 1, {-1, 3, 5, 4, 7} }, // 60 - { 0, 3, {18,18, 3, 2, 5} }, // 61 - { 0, 1, {17,17, 2,18, 4} }, // 62 - { 0, 1, {18,17,-2,18, 3} }, // 63 - { 0, 2, {18,18,-2, 2,17} }, // 64 - { 0, 3, {18,17,-2, 2, 3} }, // 65 - { 1, 1, {18,18,-2, 2,17} }, // 66 - { 0, 1, {18,17, 4, 3, 1} }, // 67 - { 1, 2, { 3,18,17, 2,17} }, // 68 - { 1, 2, {18,18, 2,-2,18} }, // 69 - { 1, 2, {18,18,-1,18, 2} }, // 70 - { 0, 2, {18,18,-2, 2,17} }, // 71 - { 1, 3, {18,18, 2, 3,-2} }, // 72 - { 0, 3, {18,18, 3, 2, 5} }, // 73 - { 0, 1, {18,-2,18, 2, 5} }, // 74 - { 1, 1, {17, 3, 2, 1, 7} }, // 75 - { 1, 3, {18,18,-2, 2,18} }, // 76 - { 1, 1, {17,18,18,-2, 2} }, // 77 - { 0, 1, {18,-2,18, 2, 5} }, // 78 - { 0, 2, {18,-2,18, 2, 3} }, // 79 - { 0, 1, {-1, 3, 4, 5, 7} }, // 80 - { 1, 1, {17,17, 2,-1, 7} }, // 81 - { 0, 1, {18,-1,-1, 2,-2} }, // 82 - { 0, 2, {18,17, 2, 3,17} }, // 83 - { 0, 1, {18,17, 2,18, 2} }, // 84 - { 0, 2, {18,17,-1, 2,17} }, // 85 - { 0, 1, { 1,18, 3, 2, 5} }, // 86 - { 0, 2, {18,-2, 4,18, 2} }, // 87 - { 1, 1, {18, 3, 1, 5, 4} }, // 88 - { 0, 1, {18,17,18, 2, 5} }, // 89 - { 1, 1, {18, 3, 1, 5, 4} }, // 90 - { 0, 4, {18,18,-2, 2,18} }, // 91 - { 1, 1, {18,18, 3, 2, 5} }, // 92 - { 1, 1, {17,17, 2, 1, 4} }, // 93 - { 0, 2, {18,18,-2,18, 2} }, // 94 - { 0, 2, {18,18,-2,18, 2} }, // 95 - { 1, 1, {18,18, 2, 1, 3} }, // 96 - { 1, 1, {17,17, 2, 1, 4} }, // 97 - { 1, 2, {17,17, 2,18, 3} }, // 98 - { 0, 1, {18,17, 1, 4, 6} }, // 99 - { 1, 2, {18,18,-2, 2,-1} }, // 100 - { 0, 1, {18,-2,18, 2, 5} }, // 101 - { 1, 1, {17, 2,18, 2,17} }, // 102 - { 0, 2, {18,18,-2,18, 2} }, // 103 - { 0, 1, {18,18, 3, 6,-1} }, // 104 - { 0, 1, {18,17, 2,18, 3} }, // 105 - { 0, 1, {18,17,-2, 2,17} }, // 106 - { 1, 1, { 3,17,18, 2,17} }, // 107 - { 1, 3, {18,-3,18, 2, 3} }, // 108 - { 1, 3, {18,18,-3,18, 2} }, // 109 - { 1, 1, {18, 3, 1, 5, 4} }, // 110 - { 0, 1, {17,-2,17, 2,-3} }, // 111 - { 1, 1, {18,18, 3, 5, 2} }, // 112 - { 1, 2, {18,18,-2, 2,-1} }, // 113 - { 0, 1, {18,-1,-1, 2,-2} }, // 114 - { 1, 1, {18, 3, 1, 5, 4} }, // 115 - { 0, 3, {18,17,-1, 2,17} }, // 116 - { 1, 3, {18,17, 2,18,-2} }, // 117 - { 0, 2, {18,18,-2,18, 2} }, // 118 - { 1, 2, {18,18,-2, 2,-1} }, // 119 - { 1, 1, {18, 3, 1, 5, 4} }, // 120 - { 0, 4, { 3,18,18, 2,17} }, // 121 - { 0, 2, {18,18,-2,18, 2} }, // 122 - { 1, 1, {18,17,-1,18, 2} }, // 123 - { 0, 2, {18,18,-2,18, 2} }, // 124 - { 0, 2, {18,18,-2,18, 2} }, // 125 - { 0, 2, {18,18,-2,18, 2} }, // 126 - { 0, 2, {18,18,-2,18, 2} }, // 127 - { 1, 1, {18,18,18, 3, 2} }, // 128 - { 0, 1, {17,-1, 2, 3, 6} }, // 129 - { 0, 1, {17,-1, 2, 3, 6} }, // 130 - { 0, 2, {18,17,-2, 3, 2} }, // 131 - { 1, 3, {18,17, 2,-2,18} }, // 132 - { 0, 2, {18,18, 2,17, 3} }, // 133 - { 0, 1, {18,18, 2,18,-2} }, // 134 - { 0, 2, {18,-2, 4,18, 2} }, // 135 - { 0, 1, {-2,18, 2, 2,18} }, // 136 - { 0, 2, {18,17, 3, 6, 2} }, // 137 - { 0, 1, {18,17,18, 2, 5} }, // 138 - { 0, 3, {18,18,-2, 3, 2} }, // 139 - { 1, 1, {18,18, 2,18, 5} }, // 140 - { 0, 1, {17,-1, 2, 3, 6} }, // 141 - { 1, 4, {18,18, 2, 3,-2} }, // 142 - { 0, 2, {18,17,18, 2,-2} }, // 143 - { 0, 1, { 1,18, 3, 2, 5} }, // 144 - { 1, 4, {18,-2,18, 2, 3} }, // 145 - { 1, 2, {18, 2,18, 3,-2} }, // 146 - { 0, 2, {18,18,18, 2, 4} }, // 147 - { 0, 2, { 3,17,18, 2,17} }, // 148 - { 1, 1, {18,-1,18, 2,17} }, // 149 - { 1, 2, {17,17, 2,18, 3} }, // 150 - { 0, 2, {18,17,-2, 3, 2} }, // 151 - { 0, 1, { 1,-1,-1, 2,17} }, // 152 - { 0, 3, { 3,18,18, 2,17} }, // 153 - { 0, 1, {18,-1,17,18, 2} }, // 154 - { 0, 1, {18,17, 2,18, 3} }, // 155 - { 0, 2, {18,18,-2,18, 2} }, // 156 - { 0, 1, {18,17, 2,18, 2} }, // 157 - { 0, 2, {18,18,-2,18, 2} }, // 158 - { 0, 2, {18,18,-2,18, 2} }, // 159 - { 1, 2, {17,17, 2,18, 3} }, // 160 - { 0, 1, {18,17,-2, 2, 3} }, // 161 - { 0, 1, {18,-2,18, 2, 5} }, // 162 - { 1, 4, {18,-2,18, 2, 3} }, // 163 - { 1, 3, {18,17, 2, 3, 6} }, // 164 - { 0, 2, {18,18, 2,17, 3} }, // 165 - { 0, 2, {18,17, 2,18, 2} }, // 166 - { 0, 2, {18,18,-2,18, 2} }, // 167 - { 1, 1, {18,18, 3, 5, 2} }, // 168 - { 0, 2, {18,18,-2, 2, 3} }, // 169 - { 1, 2, {18,17, 2,17, 3} }, // 170 - { 0, 1, {18,17, 2, 3,18} }, // 171 - { 0, 2, {18,18,-2,18, 2} }, // 172 - { 1, 4, {18,18, 2, 3,-2} }, // 173 - { 0, 1, {17,-2,17, 2,-3} }, // 174 - { 0, 1, {17,17, 2,18, 4} }, // 175 - { 1, 1, {18,18,18, 2, 4} }, // 176 - { 1, 2, {18, 2,18, 3,-2} }, // 177 - { 1, 1, {18,18,-2, 2,17} }, // 178 - { 0, 2, {18,18,-2,18, 2} }, // 179 - { 0, 2, {18,18, 2,17, 3} }, // 180 - { 0, 2, {18,18,18, 2, 4} }, // 181 - { 0, 2, {18,18,-2,18, 2} }, // 182 - { 0, 2, {18,17,-2, 3, 2} }, // 183 - { 0, 1, { 1,-1,-1, 2,17} }, // 184 - { 1, 4, {18,18, 2, 3,-2} }, // 185 - { 0, 2, {18,18,-2,18, 2} }, // 186 - { 0, 1, {18,-2,18, 3, 2} }, // 187 - { 0, 2, {18,18,-2,18, 2} }, // 188 - { 0, 2, {18,18,-2,18, 2} }, // 189 - { 0, 2, {18,18,-2,18, 2} }, // 190 - { 0, 2, {18,18,-2,18, 2} }, // 191 - { 0, 1, {18,18,-2, 2,17} }, // 192 - { 0, 3, {18,17, 2, 3,17} }, // 193 - { 1, 2, {18,18, 2,-2,18} }, // 194 - { 0, 1, {-1, 3, 5, 4, 7} }, // 195 - { 1, 1, {18, 3, 1, 5, 4} }, // 196 - { 1, 1, {18,18,-2,18, 3} }, // 197 - { 0, 2, {18,17,18, 2,-2} }, // 198 - { 0, 2, {18,18, 2,17, 3} }, // 199 - { 1, 2, {18, 2,18, 3,-2} }, // 200 - { 1, 4, {18,18, 2, 3,-2} }, // 201 - { 1, 3, {18,17, 2, 3, 6} }, // 202 - { 0, 2, {18,18,-2,18, 2} }, // 203 - { 1, 2, {18,17,-2,-1,17} }, // 204 - { 0, 1, {17,-1, 2, 3, 6} }, // 205 - { 0, 2, {18,18,-2,18, 2} }, // 206 - { 0, 2, {18,18,-2, 2, 3} }, // 207 - { 1, 1, {18,18,18, 2, 5} }, // 208 - { 0, 1, {17,17,-2, 2, 3} }, // 209 - { 0, 2, {18,18,-2,18, 2} }, // 210 - { 0, 2, {18,17, 3, 6, 2} }, // 211 - { 0, 2, {18,17,18, 2, 3} }, // 212 - { 0, 3, {18,17,-3,18, 2} }, // 213 - { 0, 1, {18,18,18, 2, 3} }, // 214 - { 0, 1, {18,-2,-3, 2, 6} }, // 215 - { 0, 2, {18,18,-2,18, 2} }, // 216 - { 1, 1, {18,17,18, 2, 5} }, // 217 - { 0, 2, {18,18,-2,18, 2} }, // 218 - { 0, 2, {18,18,-2,18, 2} }, // 219 - { 1, 1, {18,17,18, 2, 5} }, // 220 - { 0, 2, {18,18,-2,18, 2} }, // 221 - { 0, 2, {18,18,-2,18, 2} }, // 222 - { 0, 2, {18,18,-2,18, 2} }, // 223 - { 0, 1, {18,18,18, 2, 3} }, // 224 - { 1, 1, {17,-2,17, 1, 2} }, // 225 - { 1, 1, {17,17, 2,-1, 7} }, // 226 - { 0, 1, {18,17, 4, 3, 1} }, // 227 - { 1, 3, {18,-3,18, 2, 3} }, // 228 - { 0, 1, { 1,18, 3, 2, 5} }, // 229 - { 0, 2, {18,18,-2,18, 2} }, // 230 - { 0, 2, {18,18,-2,18, 2} }, // 231 - { 0, 1, {18,18, 3, 6, 2} }, // 232 - { 0, 1, {17,17, 2,18, 4} }, // 233 - { 0, 1, {17,17, 2,18, 4} }, // 234 - { 0, 2, {18,18,-2,18, 2} }, // 235 - { 0, 2, {18,18,-2,18, 2} }, // 236 - { 0, 2, {18,18,-2,18, 2} }, // 237 - { 1, 2, {18,-2,18, 3, 2} }, // 238 - { 1, 1, {17,-2,17, 1, 2} }, // 239 - { 1, 1, {18,18, 3, 2, 5} }, // 240 - { 0, 1, {18,18,-1, 2, 3} }, // 241 - { 0, 2, {18,18,-2,18, 2} }, // 242 - { 0, 2, {18,18,-2,18, 2} }, // 243 - { 0, 1, {18,17,18, 2, 5} }, // 244 - { 0, 2, {18,18,-2,18, 2} }, // 245 - { 0, 2, {18,18,-2,18, 2} }, // 246 - { 0, 2, {18,18,-2,18, 2} }, // 247 - { 0, 2, {18,18,-2,18, 2} }, // 248 - { 0, 1, { 3,18,18, 2,17} }, // 249 - { 0, 2, {18,18,-2,18, 2} }, // 250 - { 0, 2, {18,18,-2,18, 2} }, // 251 - { 0, 2, {18,18,-2,18, 2} }, // 252 - { 0, 2, {18,18,-2,18, 2} }, // 253 - { 0, 2, {18,18,-2,18, 2} }, // 254 - { 0, 2, {18,18,-2,18, 2} }, // 255 -}; - -static const WavpackDecorrSpec high_specs [] = { - { 1, 2, {18,18,18,-2, 2, 3, 5,-1,17, 4} }, // 0 - { 0, 1, {18,17,-2, 2,18, 3, 7, 2, 5, 4} }, // 1 - { 1, 2, { 1,18, 3, 6,-2,18, 2, 3, 4, 5} }, // 2 - { 0, 2, {18,18,-2, 2,18, 3, 6, 2,17, 4} }, // 3 - { 1, 2, {18,18, 2,18, 3, 2,-1, 4,18, 5} }, // 4 - { 1, 1, { 7, 6, 5, 3, 4, 2, 5, 4, 3, 7} }, // 5 - { 1, 1, {17, 3,18, 7, 2, 6, 1, 4, 3, 5} }, // 6 - { 1, 1, {-2,18,18,18, 3,-2, 6, 5, 2, 1} }, // 7 - { 1, 2, {18,18,-1,18, 2, 3, 6,-2,17, 5} }, // 8 - { 0, 1, {17,17,18, 3, 6, 4, 5, 2,18,-2} }, // 9 - { 1, 2, { 1,18,-2, 3, 5, 2, 4,-1, 6, 1} }, // 10 - { 0, 2, {18,18, 3, 6,18, 2, 4, 8, 5, 3} }, // 11 - { 0, 1, {-2, 1,18, 2,-2, 7,18, 2,-1, 5} }, // 12 - { 1, 1, { 4, 3, 8, 1, 5, 2, 5, 6, 2, 8} }, // 13 - { 1, 1, {17,18, 2, 6, 3, 4,-1, 1, 8, 6} }, // 14 - { 0, 1, {18,18, 3, 6, 3,-2, 2, 5,-1, 1} }, // 15 - { 0, 1, {18,18,17,-1, 2,-2,18, 3, 4, 5} }, // 16 - { 1, 2, {18,17, 2,-2,18, 3, 5, 7, 2, 4} }, // 17 - { 1, 2, {18,18, 3, 6,-2,18, 2, 5, 8, 3} }, // 18 - { 0, 1, {18,17, 2,18,18, 2, 6, 5,17, 7} }, // 19 - { 1, 2, {18,17, 2,18, 3, 2, 6,18,-1, 4} }, // 20 - { 1, 1, { 5, 3, 6, 5, 3, 4, 1, 2, 4, 7} }, // 21 - { 1, 1, { 5, 3, 6, 5, 3, 4, 1, 2, 4, 7} }, // 22 - { 0, 1, {-2,18,18,18,-2, 3, 2, 4, 6, 5} }, // 23 - { 1, 2, {18,17,-3, 3,-1,18, 2, 3, 6, 5} }, // 24 - { 0, 1, {17,18, 7, 3,-2, 7, 1, 2, 4, 5} }, // 25 - { 1, 1, { 2,18,18,-2, 2, 4,-1,18, 3, 6} }, // 26 - { 0, 3, { 1,18, 4, 3, 5, 2, 4,18, 2, 3} }, // 27 - { 0, 1, {-2,18, 2,18, 3, 7,18, 2, 6,-2} }, // 28 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 29 - { 1, 1, {18,18, 5, 4, 6, 4, 5, 1, 4, 3} }, // 30 - { 1, 1, {18, 3, 6, 5, 7, 8, 2, 3, 1,-1} }, // 31 - { 1, 1, {18,18,18, 2,-2, 3, 5,18, 2, 8} }, // 32 - { 0, 2, {18,17,-2, 2, 3,18,-3, 5, 2, 7} }, // 33 - { 1, 1, { 1, 1,-1, 8,17, 3,-2, 2, 6,17} }, // 34 - { 0, 2, {18,18,17, 2,-2, 3, 2, 4,18, 5} }, // 35 - { 1, 1, {17,18, 2,-1, 5, 7,18, 3, 4, 6} }, // 36 - { 1, 1, { 5, 4, 5,17, 3, 6, 3, 4, 7, 2} }, // 37 - { 0, 1, {17, 3, 1, 7, 4, 2, 5,-2,18, 6} }, // 38 - { 0, 1, {17,18, 2,18, 4, 3, 5, 7,-3, 6} }, // 39 - { 1, 2, {17,17,-3,-2, 2, 8,18,-1, 3, 5} }, // 40 - { 0, 1, {17,17,18, 2, 3, 6,-2, 8, 1, 7} }, // 41 - { 1, 1, { 1, 2, 6,-2,18, 2, 5,-3, 7,-2} }, // 42 - { 0, 1, {18,18, 3,18, 6, 8,-2, 2, 3, 5} }, // 43 - { 0, 1, {18,17, 2,18,-2, 3, 7, 6, 2, 4} }, // 44 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 45 - { 1, 1, {18,18, 2,-1, 3, 6, 1, 3, 4, 8} }, // 46 - { 0, 1, {18,18, 3, 6, 5, 3,-2, 2,18,-1} }, // 47 - { 0, 1, {18,17,-3,18, 2, 4,-2, 3, 6,17} }, // 48 - { 1, 3, { 1, 2,17, 3,18, 7,-1, 5, 2, 4} }, // 49 - { 1, 1, {18, 3,18, 6, 8,18,-2, 5, 7, 2} }, // 50 - { 0, 1, {17, 2,18, 6, 3, 2, 5, 4, 8, 1} }, // 51 - { 0, 1, {18,17,-1, 2, 3,18,18, 2, 3,17} }, // 52 - { 1, 1, {18, 7, 6, 5, 5, 3, 1, 4, 2, 4} }, // 53 - { 1, 1, { 6,17, 3, 8, 1, 5, 7,-1, 2, 1} }, // 54 - { 1, 1, {18,-2,18, 3,-2, 2, 7, 4, 6,18} }, // 55 - { 1, 3, {18,-3,18, 2, 3,18,-1, 7, 2, 5} }, // 56 - { 0, 2, {18,-2, 7, 1, 3, 2, 4, 6,-3, 7} }, // 57 - { 1, 1, {18,-2, 2,-3,18,-2,17,-1, 4, 2} }, // 58 - { 0, 3, {17,17, 2, 5, 3, 7,18, 6, 4, 2} }, // 59 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 60 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 61 - { 1, 1, {18,17, 4, 6, 6, 4, 5, 3, 4, 1} }, // 62 - { 0, 1, {18, 5, 3, 6, 2, 3, 8, 1, 3, 7} }, // 63 - { 1, 2, {18,17,-2, 2,18, 3, 5, 7,-1, 2} }, // 64 - { 0, 1, { 1,18,18, 3, 6,-1, 4, 8, 5, 2} }, // 65 - { 1, 1, { 1, 5, 3, 4, 1, 1, 3, 5, 7, 3} }, // 66 - { 0, 1, { 3,18,18, 2,18,18,-1, 2, 3,18} }, // 67 - { 1, 2, {18,18,-1,18, 2, 3, 4, 6,18, 5} }, // 68 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 69 - { 1, 1, {18, 3, 1, 4, 5, 2, 7, 1, 3, 6} }, // 70 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 71 - { 1, 2, {18,18,-1,18, 2, 3, 5,-2, 6, 8} }, // 72 - { 1, 1, {17,18, 4, 8, 3, 2, 5, 2, 7, 6} }, // 73 - { 1, 4, { 1, 2, 5,18,-2, 2, 3, 7,-1, 4} }, // 74 - { 0, 2, {18,17,-1, 3, 6,18, 2, 3, 7, 5} }, // 75 - { 0, 1, {-2,18, 2,-3, 6,18, 4, 3,-2, 5} }, // 76 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 77 - { 0, 1, {17,17, 6, 2, 4, 8, 3, 5,-1,17} }, // 78 - { 1, 1, {18, 3,18, 6, 8,18,-2, 5, 7, 2} }, // 79 - { 1, 2, {17,17,-3, 2,18,-2, 8, 3, 6,-1} }, // 80 - { 1, 1, {18,-2,17,18, 2, 3,-2, 6, 5, 4} }, // 81 - { 1, 2, {18,17,-1, 3,18, 2, 5, 3, 6,-3} }, // 82 - { 0, 1, {18,17, 2,18, 7,18, 2, 4, 3,17} }, // 83 - { 1, 3, {18,18, 5, 6, 4, 3, 4,18, 6, 5} }, // 84 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 85 - { 1, 1, { 7, 6, 5, 3, 4, 2, 5, 4, 3, 7} }, // 86 - { 0, 1, {-2,18,18,18, 3, 6, 4, 2, 5, 2} }, // 87 - { 0, 3, {18,17,-3,18, 3, 2, 5,-1,17, 3} }, // 88 - { 1, 1, {17,18, 7, 3, 1, 7, 4, 2, 6, 5} }, // 89 - { 1, 1, {18, 2,-2,-1,18, 5, 3,-2, 1, 2} }, // 90 - { 0, 3, {18,18,-1, 3, 2, 7, 5,18, 4, 3} }, // 91 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 92 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 93 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 94 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 95 - { 1, 1, {17,18, 2,-2, 4, 8,18, 3, 6, 5} }, // 96 - { 0, 2, {18,17, 3, 5,-2, 7, 2,18, 3,-1} }, // 97 - { 1, 1, {18, 2,-2,-1,18, 5, 3,-2, 1, 2} }, // 98 - { 0, 2, { 3,17,18,18, 2, 5, 7, 6,18, 3} }, // 99 - { 1, 1, {17,18,18, 4, 3, 2,18, 7, 8,-1} }, // 100 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 101 - { 0, 1, {17, 1, 2, 3, 5, 6, 1, 4, 8,17} }, // 102 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 103 - { 0, 2, {18,17,-1,18,-3, 2, 8, 3, 6,17} }, // 104 - { 1, 1, {17,17, 1, 2, 4, 5,-1, 2, 1, 6} }, // 105 - { 1, 1, { 1, 2, 6,-2,18, 2,-3, 3,-2, 5} }, // 106 - { 0, 1, {18, 3,18, 6,18, 5, 2, 4,-1, 8} }, // 107 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 108 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 109 - { 1, 1, {18,18,-1, 2,18, 3, 6, 4,-2, 7} }, // 110 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 111 - { 0, 2, {-1,18,18,18, 2,-2, 4, 7, 2, 3} }, // 112 - { 0, 3, { 3,17,-2, 5, 2, 7,18, 6, 4, 5} }, // 113 - { 0, 1, {17, 6,18, 3, 8, 4, 5, 3, 8,18} }, // 114 - { 0, 2, {18, 2, 6, 2,18, 3, 2, 4, 5, 8} }, // 115 - { 0, 1, { 3,18,18, 2,18,-1, 2,18, 2,17} }, // 116 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 117 - { 0, 1, { 3, 6,17,-2, 5, 1, 2, 7, 4, 8} }, // 118 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 119 - { 1, 3, { 3,18,17, 5, 6, 2, 7,-2, 8,18} }, // 120 - { 1, 1, {18,-1, 3, 1, 7, 2,-1, 4, 6,17} }, // 121 - { 1, 1, {18, 2,-2,-1,18, 5, 3,-2, 1, 2} }, // 122 - { 0, 2, {18, 1, 2,18, 3, 6, 5, 2, 4, 8} }, // 123 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 124 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 125 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 126 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 127 - { 1, 1, {17,-2, 2,18,18, 8, 5, 3, 2, 6} }, // 128 - { 0, 1, {18,17, 2,18, 3, 2, 7,-2,18, 4} }, // 129 - { 1, 2, { 1,18, 2, 3,-1, 5, 6, 4, 7,17} }, // 130 - { 0, 2, {18,17, 3, 6,-2, 2, 3, 8, 5,17} }, // 131 - { 0, 2, {18,18, 3, 2,18,-1, 2, 4, 3,17} }, // 132 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 133 - { 1, 2, {17,-1,18, 2, 3,-2, 5,18, 2, 7} }, // 134 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 135 - { 1, 2, {18,-3,18, 2, 3,-2,18, 5, 6,-3} }, // 136 - { 0, 2, {18,17, 3, 5,-2, 7, 2,18, 3,-1} }, // 137 - { 1, 1, { 1,18,-1, 2, 3, 1,-2, 8, 2, 5} }, // 138 - { 0, 1, {18,18, 3, 6,18, 2, 3, 4, 8, 5} }, // 139 - { 0, 1, {-2, 1,18, 2,-2, 5, 7,18, 2,-1} }, // 140 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 141 - { 1, 1, {17,18,-1, 2, 8, 3, 4, 5, 1, 7} }, // 142 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 143 - { 0, 2, {18,18,-1, 2,18, 3,-2, 5, 4, 2} }, // 144 - { 1, 1, {18,17, 2,18, 3, 8, 5, 2, 7,17} }, // 145 - { 0, 1, {18,18, 3,18, 6, 8,-2, 2, 3, 5} }, // 146 - { 0, 1, {18,18, 2,18, 2, 6,18, 2,17, 7} }, // 147 - { 1, 3, {18,17,18, 2, 8,18, 5,-1, 3, 6} }, // 148 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 149 - { 1, 1, {18, 7, 6, 5, 5, 3, 1, 4, 2, 4} }, // 150 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 151 - { 1, 2, {18,17,-1, 3, 6,18, 2, 5, 8, 3} }, // 152 - { 0, 1, {17,18,18, 4, 7, 2, 3,-2,18, 5} }, // 153 - { 1, 2, {18, 1, 2, 6, 2, 5,18, 2, 4, 8} }, // 154 - { 0, 4, {18, 4, 1, 2, 3, 5, 4, 1, 2, 6} }, // 155 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 156 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 157 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 158 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 159 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 160 - { 0, 2, {18,17, 2,-1,18, 3,-3, 5, 2, 4} }, // 161 - { 0, 1, {17,17, 3, 6, 3, 5,-2, 2,18,-1} }, // 162 - { 0, 2, {18,18, 3,-2,18, 2,-3, 5, 3, 6} }, // 163 - { 1, 1, {17,17, 2, 4, 1, 3, 5, 2, 6,-3} }, // 164 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 165 - { 0, 1, {17, 1, 3, 2, 7, 1, 6, 3, 4, 8} }, // 166 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 167 - { 0, 1, {17,-1,18, 2, 1, 5, 3, 8,-1,-2} }, // 168 - { 1, 1, {17,18,-1, 8, 2, 5, 3, 4, 1, 6} }, // 169 - { 1, 2, { 1,18, 3,-1, 5, 1, 2, 4, 7, 6} }, // 170 - { 0, 1, {18,18, 3, 6, 5, 3,-2, 2,18,-1} }, // 171 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 172 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 173 - { 0, 1, { 1,18,-1, 3, 8, 5, 6, 1, 2, 3} }, // 174 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 175 - { 0, 2, {18,18, 2, 3, 6,18,-1, 4, 2, 3} }, // 176 - { 1, 1, { 1, 3, 5,18, 2, 6, 7, 2, 3, 1} }, // 177 - { 1, 1, { 1, 3, 8,18, 5, 2, 7, 1, 3,-2} }, // 178 - { 0, 2, {17, 2,18, 3, 6, 2, 4, 5, 8, 3} }, // 179 - { 0, 1, {18,17, 2,18, 3, 2, 7,-2,18, 4} }, // 180 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 181 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 182 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 183 - { 1, 2, {18,-3,18,-1, 3,-2, 5, 7, 1, 2} }, // 184 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 185 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 186 - { 0, 3, {18,18, 2, 6,18, 5,18, 2, 3,17} }, // 187 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 188 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 189 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 190 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 191 - { 1, 3, { 1,-1, 1, 3,-2, 2, 5, 7,-3,18} }, // 192 - { 1, 2, {18, 7, 3,-3, 2, 8, 2, 5, 4,17} }, // 193 - { 1, 1, { 1, 4, 5, 1, 3, 4, 6, 7, 8, 3} }, // 194 - { 0, 1, {18,17, 2,18,-1, 2, 3,18, 2, 4} }, // 195 - { 0, 2, {18,18,-2,18, 2, 3, 4, 7, 5,17} }, // 196 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 197 - { 1, 1, {17,18, 2, 1, 3, 2, 5, 1, 2, 3} }, // 198 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 199 - { 0, 2, {18,18,-1, 2, 3, 5, 8, 6, 1,-2} }, // 200 - { 0, 1, {17,18, 8, 3, 4, 6, 5, 2, 8, 7} }, // 201 - { 1, 2, { 1, 3,-2,18, 2, 5, 1, 7,-1,-2} }, // 202 - { 0, 3, {18,17,-1, 3,18, 2, 3, 6, 4,17} }, // 203 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 204 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 205 - { 1, 2, {18,18, 4,18, 6, 7, 8, 3,18, 2} }, // 206 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 207 - { 0, 2, {17,-3,17, 2,-2, 8, 3,18, 4,-3} }, // 208 - { 1, 1, {18,17, 3, 5, 6, 2, 8, 1, 3, 7} }, // 209 - { 0, 1, {18,18, 3, 6, 5, 3,-2, 2,18,-1} }, // 210 - { 0, 3, {18,18, 2, 6,18, 5,18, 2, 3,17} }, // 211 - { 1, 1, {18,18, 5, 4, 6, 4, 5, 1, 4, 3} }, // 212 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 213 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 214 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 215 - { 0, 2, { 3,17,18,-3, 2, 5,18, 6,-1, 7} }, // 216 - { 1, 1, {17,18, 3, 2, 5,-1, 6, 8, 4, 7} }, // 217 - { 1, 1, {18, 1,-2, 3, 2, 1, 7, 6, 3, 4} }, // 218 - { 0, 3, { 1, 2,17, 3,18, 2, 7, 5, 4,-1} }, // 219 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 220 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 221 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 222 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 223 - { 1, 1, {17,-2, 2,18,18, 8, 5, 3, 2, 6} }, // 224 - { 0, 2, {18, 5,18, 2, 3, 7,-2, 1, 6, 8} }, // 225 - { 0, 1, { 2,-1,18,-1, 2, 4,-3, 5,18, 3} }, // 226 - { 0, 1, { 3,17,18, 5, 2,18, 7, 3, 6, 5} }, // 227 - { 1, 4, { 1, 2, 5,18,-2, 2, 3, 7,-1, 4} }, // 228 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 229 - { 0, 1, { 1,18, 2, 1, 3, 4, 1, 5, 2, 7} }, // 230 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 231 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 232 - { 0, 1, {17,17,18, 2, 4, 5,18,-2, 6, 3} }, // 233 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 234 - { 0, 2, {18,18,-1, 3, 5, 6, 8,18, 2, 3} }, // 235 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 236 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 237 - { 0, 1, {18,18, 4, 6, 8,18, 7, 3, 2, 5} }, // 238 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 239 - { 0, 2, {-1,18,18,18, 2, 4,-2, 2, 3, 6} }, // 240 - { 0, 2, {18,-2, 7, 1, 3, 2, 4, 6,-3, 7} }, // 241 - { 1, 1, {17,18, 8, 3, 4, 6,-2, 5, 3, 8} }, // 242 - { 0, 2, {18, 1, 2, 6, 2, 8, 3,18, 5, 4} }, // 243 - { 1, 1, { 3,18,18, 2,18, 2,18, 3, 2,18} }, // 244 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 245 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 246 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 247 - { 1, 1, { 3,17,18, 5, 2, 6, 7, 1, 4, 8} }, // 248 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 249 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 250 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 251 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 252 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 253 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 254 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2, 8} }, // 255 -}; - -static const WavpackDecorrSpec very_high_specs [] = { - { 1, 2, {18,18, 2, 3,-2,18, 2, 4, 7, 5, 3, 6, 8,-1,18, 2} }, // 0 - { 0, 1, {18,18,-1,18, 2, 3, 4, 6, 5, 7,18,-3, 8, 2,-1, 3} }, // 1 - { 1, 2, { 1,18,-2, 4,18, 2, 3, 6,-1, 7, 5,-2,18, 8, 2, 4} }, // 2 - { 0, 1, {17,17, 2, 3, 4,18,-1, 5, 6, 7,18, 2, 8,17, 3,-2} }, // 3 - { 1, 1, {18,18, 2,18, 3, 2,18, 4,-1, 3,18, 2, 6, 8,17, 5} }, // 4 - { 0, 2, {18,17, 2, 3,-2, 5,18,-3, 2, 4, 7, 3, 6, 8, 5,17} }, // 5 - { 1, 1, {18,-2, 2,-3,18, 5,-2,18, 2, 3, 6, 2,17, 4, 7,-1} }, // 6 - { 1, 1, {17, 8,18, 3,-2, 2, 5, 4,18, 6, 3, 8, 7, 2, 5, 4} }, // 7 - { 0, 2, {18,17,-2, 2,18, 3, 2, 5,-3, 4, 7,18, 3, 8, 6, 2} }, // 8 - { 1, 1, { 3, 6, 5, 5, 1, 3, 7, 4, 2, 6, 4,18, 3, 7, 5, 6} }, // 9 - { 1, 2, { 1,18, 3, 2,-2, 1, 5, 4, 6, 2, 7, 1, 8, 3,-1, 1} }, // 10 - { 0, 1, {18,18, 2, 3, 6, 3, 5,-2, 2, 4,18, 3,-2,-1, 6, 7} }, // 11 - { 0, 1, {-2,18, 2,18, 7, 2, 6,-2, 3, 4,18,18, 2,-3, 8, 5} }, // 12 - { 0, 2, {18,18,18, 2, 4, 3,18, 5, 3, 6,-2, 2, 4,18, 8, 7} }, // 13 - { 0, 1, {-2, 1,18, 2,-2,18,-1, 5, 7, 2, 3, 4,18, 2, 6, 2} }, // 14 - { 1, 1, {17,18, 3, 2, 1, 7,-1, 2, 4, 3, 5, 6,-2,18, 7, 8} }, // 15 - { 1, 1, {18,18, 2,18, 3, 4, 6,-2,18, 5, 8, 2, 3, 7, 4,-1} }, // 16 - { 0, 1, {18,18,18,-1, 2, 3, 4, 6, 8,18, 3, 5, 2, 6, 7, 4} }, // 17 - { 1, 1, {17,-2,18,18, 2, 5, 3, 8, 2,-1, 6, 1, 3, 4, 7, 5} }, // 18 - { 0, 1, {17,17,18, 2, 3, 6,-2, 8, 1, 7, 5, 2, 3, 1, 4, 8} }, // 19 - { 1, 1, {17,17, 3, 2, 7, 1, 4, 3, 6, 2, 5,-2, 8, 7,18, 6} }, // 20 - { 0, 1, {18,17,-2, 2,18, 3,-3, 7, 6, 5, 2, 4,-1, 8, 3,17} }, // 21 - { 1, 1, { 2,18,18,-2, 2, 4,-1, 5,18, 3, 8, 6, 2, 7,17, 4} }, // 22 - { 0, 1, {17, 3, 6, 8, 5, 4, 3, 8, 1,18, 7, 2, 4, 5, 6, 3} }, // 23 - { 1, 2, {17,18, 4, 8, 3, 2, 5, 7, 6, 8, 2, 7,-2,18, 3, 4} }, // 24 - { 1, 1, { 6, 5, 5, 3, 4, 7, 3, 2, 4, 6, 3, 7, 1, 5, 2, 4} }, // 25 - { 1, 1, { 1,18,-1, 2, 1, 3, 8,-2, 2, 5, 6, 3, 8, 7,18, 4} }, // 26 - { 0, 1, { 1,17,-1,18, 3, 2, 5, 4, 6, 7, 8, 3, 4, 2, 1,-2} }, // 27 - { 0, 1, {18, 2,18,18, 2,18, 6,-2,18, 7, 5, 4, 3, 2,18,-2} }, // 28 - { 0, 3, { 1, 4,18, 3, 2, 4, 1, 5, 2, 3, 6,18, 8, 7, 2, 4} }, // 29 - { 0, 1, {17,-2, 1,-3, 2,18, 3,-2, 4,18, 3, 6, 7,-3, 2, 8} }, // 30 - { 1, 1, {17,18,18, 4, 2, 3, 7, 6,18, 8, 5,-1, 4, 2, 3,17} }, // 31 - { 1, 2, {18,-1,17,18, 2, 3,-2,18, 5, 8, 2, 4, 3, 7, 6,-1} }, // 32 - { 1, 1, {18,18,18,-2, 4, 2, 3,18, 5, 8, 2, 4, 6, 7,-2, 3} }, // 33 - { 1, 2, {18,18,-2,18,-1, 3, 2, 5,18,-2, 7, 2, 3, 4, 6, 8} }, // 34 - { 0, 1, {17,18,-1, 2, 4,18, 8, 3, 6, 5, 7,-3, 2, 4, 3,17} }, // 35 - { 1, 1, {18,18,17, 2,-1,18, 3, 2,18, 6, 5, 4,18, 7, 2,-1} }, // 36 - { 0, 2, { 1,18,-1,18, 3, 2, 4, 6,-3, 7,-1, 5, 1, 2, 3, 8} }, // 37 - { 1, 1, { 1,17,-2, 2,-3, 6, 3, 5, 1, 2, 7, 6, 8,-2, 4, 1} }, // 38 - { 0, 1, {17,-1, 5, 1, 4, 3, 6, 2,-2,18, 3, 2, 4, 5, 8,-1} }, // 39 - { 0, 2, {18,18,17, 2, 3,-2, 5,18, 2, 4, 7, 8, 6,17, 3, 5} }, // 40 - { 1, 1, { 1, 5, 1, 3, 4, 3, 7, 5, 1, 3, 6, 1, 2, 4, 3, 8} }, // 41 - { 1, 2, { 1,-1, 3, 2,18, 7,-2, 5, 2, 6, 4, 3,-1,18, 8, 7} }, // 42 - { 0, 2, {18,17, 3,18, 2, 5, 4, 3, 6, 2, 7, 8,18, 3, 4, 5} }, // 43 - { 1, 1, { 3, 6,17, 8, 7, 5,18,-1, 1, 2, 3, 4, 2, 6, 8, 1} }, // 44 - { 0, 2, {18,18, 3,-3,18, 2, 6, 5, 3, 7,18, 4,-2, 8, 2, 3} }, // 45 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 46 - { 1, 1, {17, 1, 7, 2, 3,18,-2, 3, 6, 4, 2, 7, 8, 5, 3,17} }, // 47 - { 1, 1, { 3, 6, 5, 5, 1, 3, 7, 4, 2, 6, 4,18, 3, 7, 5, 6} }, // 48 - { 0, 1, {18,18,18, 2, 4,-1,18, 8,-1, 2, 3, 4, 6,-2, 1, 7} }, // 49 - { 1, 1, {18,-2,17,18, 2, 6, 3,-2, 5, 4, 7, 1,-3, 8, 2, 6} }, // 50 - { 0, 1, {17,18,18, 4, 2, 7, 3, 6,-2,18, 8, 4, 5, 2, 7,17} }, // 51 - { 1, 1, {18,18, 5, 4, 6, 4, 1, 5, 4, 3, 2, 5, 6, 1, 4, 5} }, // 52 - { 0, 1, {18,18,-2,18, 2,-3, 3, 8, 5,18, 6, 4, 3,-1, 7, 2} }, // 53 - { 1, 1, {18, 2,-2,-3,18, 5, 2, 3,-2, 4, 6, 1,-3, 2, 7, 8} }, // 54 - { 0, 1, {18, 3, 5, 8, 2, 6, 7, 3, 1, 5, 2,-1, 8, 6, 7, 4} }, // 55 - { 1, 1, { 4, 3, 8, 1, 5, 6, 2, 5, 8,-2, 2, 7, 3,18, 5, 4} }, // 56 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 57 - { 1, 1, {17, 3,18,18, 7, 2, 4,18, 6, 2, 3,-1, 8, 5,18,-3} }, // 58 - { 0, 1, { 3,17,18, 2,18, 6, 7,-3,18, 2, 5, 6, 3, 8, 7,-1} }, // 59 - { 1, 1, {18,18, 2,18,18, 2,-1, 7, 3,18, 5, 2, 6, 4,-1,18} }, // 60 - { 0, 3, {18, 3, 4, 1, 5, 2,18, 4, 2, 3,18, 7, 6, 1, 2, 4} }, // 61 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 62 - { 1, 1, {17, 1,18, 2, 3, 6, 4, 5, 7,18, 3, 8, 2, 4,-2,17} }, // 63 - { 1, 2, {18,17, 2, 3, 5,18, 6,-2, 7, 3, 2, 4,18, 8,-1, 5} }, // 64 - { 0, 2, { 1,18,-1,18, 3, 2, 4, 6,-3, 7,-1, 5, 1, 2, 3, 8} }, // 65 - { 1, 1, { 1,18,-1, 8, 2, 6, 3,-2, 1, 2, 5, 4,-3, 8, 6, 3} }, // 66 - { 0, 1, {18,18, 2,18, 2,18, 7, 6,18, 2,-2, 3, 5, 4,18, 8} }, // 67 - { 1, 2, {18,17, 2, 3,18,-1, 2, 3, 6,18, 5, 4, 3, 7, 2, 8} }, // 68 - { 1, 2, {18,18, 3,-2, 4,18, 5, 7, 6, 2, 4,-3, 8, 5,18, 3} }, // 69 - { 1, 1, {17,-2,18,18, 2, 5, 3, 8, 2,-1, 6, 1, 3, 4, 7, 5} }, // 70 - { 1, 1, { 3,17,18, 5, 7, 2, 4, 6, 1, 8,-1, 3, 7, 4, 1, 2} }, // 71 - { 0, 2, { 1,-2, 2,18, 3, 5, 2, 4, 7,-1, 2, 3, 5,18,-2, 4} }, // 72 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 73 - { 1, 1, { 1, 2,-2, 6,18,-3, 2, 7, 3,-2, 5, 6, 1, 8, 2, 4} }, // 74 - { 0, 1, {18,18,18, 3,-2, 6,18, 2, 4, 3, 5, 8, 7, 6, 2,-2} }, // 75 - { 1, 1, { 1, 5, 1, 3, 4, 3, 7, 5, 1, 3, 6, 1, 2, 4, 3, 8} }, // 76 - { 0, 1, { 3,17,18, 2, 5,18, 6, 7, 5,-2, 2, 4,18, 3, 6, 8} }, // 77 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 78 - { 0, 2, {17,-1,18, 2, 4,-1, 8, 3,18, 7,-3, 4, 5, 1, 2,-2} }, // 79 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 8, 6, 4, 5, 7,-1} }, // 80 - { 1, 1, {18,18, 3, 6, 4, 8,-2, 2, 5, 3, 7,18, 6, 8, 4, 2} }, // 81 - { 1, 1, {17,18,18,-2, 5, 2, 3, 1, 4,-1, 8, 6, 5, 3, 2,18} }, // 82 - { 1, 1, {17,17, 1, 2, 4, 5, 2, 6,-1, 3, 1, 1,-2, 4, 2, 7} }, // 83 - { 1, 1, {17, 1, 7, 2, 3,18,-2, 3, 6, 4, 2, 7, 8, 5, 3,17} }, // 84 - { 0, 1, {18,17,-2,-3, 1, 2, 3, 2, 5, 4, 7,-3, 6,-2, 2, 1} }, // 85 - { 1, 1, { 1, 3, 5,18, 1, 2, 7, 3, 6, 2, 5, 8,-1, 1, 4, 7} }, // 86 - { 1, 1, {17, 3, 6, 8, 1, 4, 5, 3,-2, 7, 2, 8, 5, 6,18, 3} }, // 87 - { 1, 1, {17,18, 2, 4, 8,-2, 3, 1, 5, 6, 7, 1, 2, 3, 4, 7} }, // 88 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 89 - { 1, 1, { 3, 1, 8,18, 5, 2, 3,18, 6, 7,-2, 4, 3, 2, 8,18} }, // 90 - { 0, 1, {18,17, 2,18, 3, 4,-1,18, 7, 6, 2, 8, 4,18,18, 5} }, // 91 - { 0, 1, {18,18, 2,18,18, 2, 7,-2, 6, 5, 4, 3,18, 3, 2,17} }, // 92 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 93 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 94 - { 1, 1, {17, 8,18, 3, 2, 1, 5, 4, 6,-1, 3,-3, 8,18, 7, 2} }, // 95 - { 1, 2, {18,17,18, 2, 3, 5,-2,18, 6,-1, 2, 3, 7, 4, 8,17} }, // 96 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 8, 6, 4, 5, 7,-1} }, // 97 - { 1, 2, {18,18,-2,17, 2,18, 3, 4,18, 8, 7,-1, 2, 4, 5,17} }, // 98 - { 0, 2, {17,-3,17, 3, 2,-2,18, 8, 4,-3, 2,18, 5, 3,-2, 6} }, // 99 - { 0, 1, {18,18, 2,18,18, 2, 7,-2, 6, 5, 4, 3,18, 3, 2,17} }, // 100 - { 0, 2, { 1,18,-1, 3, 5, 2,-3,18, 7, 3,-1, 6, 4, 2,17, 5} }, // 101 - { 1, 1, {17,-2,17, 2,-3, 1, 5,-1, 4, 6, 3, 2, 8, 7,-2, 5} }, // 102 - { 1, 1, { 1,18, 1, 3, 5, 8, 6, 2, 3,-1, 7, 1, 4, 8, 5,-3} }, // 103 - { 0, 2, { 3,18,18, 2,18,-2, 6, 5, 7, 2, 4,18, 3, 6,-3, 5} }, // 104 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 105 - { 1, 1, { 3, 6,17, 8, 7, 5,18,-1, 1, 2, 3, 4, 2, 6, 8, 1} }, // 106 - { 0, 4, {18, 2,17, 3,18,-2, 2, 6,18, 2, 7, 3, 5, 4, 8,18} }, // 107 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 108 - { 0, 1, {18,18, 2, 3, 6, 3, 5,-2, 2, 4,18, 3,-2,-1, 6, 7} }, // 109 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 110 - { 1, 1, {17, 1, 2, 5, 3,-2, 1, 4, 3, 7, 6,-3, 2, 1, 1, 2} }, // 111 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 112 - { 1, 1, {18,18,-2,18,-2, 2, 3, 6,18, 4,-1, 2, 3, 8, 1, 4} }, // 113 - { 1, 1, {17,-2,17, 2,-3, 1, 5,-1, 4, 6, 3, 2, 8, 7,-2, 5} }, // 114 - { 0, 1, {17,17,18, 3, 2,18,18, 6, 8, 2,-2, 3, 5, 4,17,18} }, // 115 - { 1, 1, { 1, 5, 1, 3, 4, 3, 7, 5, 1, 3, 6, 1, 2, 4, 3, 8} }, // 116 - { 1, 1, { 1, 3,-3,18,18, 6, 5,18, 2,-1, 3, 8, 7,-3, 4,17} }, // 117 - { 1, 1, {18, 1, 2, 1, 3, 8, 7, 4, 1, 5, 2,-1,-3,18, 6, 2} }, // 118 - { 0, 1, {18, 3, 5, 2, 6, 8,18, 5, 7, 2, 3,-1, 6, 7, 8, 5} }, // 119 - { 0, 2, {18, 3,-2, 7, 8, 2, 5, 4,-3, 8, 3, 2,18, 5, 4, 6} }, // 120 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 121 - { 1, 3, { 1, 1, 2, 5, 2, 7, 4, 3,-1,18,-2, 8, 2, 1, 6, 7} }, // 122 - { 0, 1, { 3,17,18, 5, 2, 6, 7,18, 4, 5, 3, 6,18, 2, 7, 8} }, // 123 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 124 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 125 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 126 - { 0, 1, { 1,18, 1, 2, 3, 5, 1, 2, 6, 7, 4, 3, 8, 1,17, 5} }, // 127 - { 1, 2, {17,-1,18,-2, 2, 3, 5,18, 2, 4, 6, 7, 3,-1, 5, 8} }, // 128 - { 1, 1, {18,18,-3,18,-2, 2, 3,-2,18, 6, 4, 5, 8, 3,17,-3} }, // 129 - { 1, 1, {18, 7, 6, 5, 5, 3, 1, 4, 2, 7, 3, 4,-3, 6,18, 8} }, // 130 - { 0, 2, {18,18, 2, 3, 5,18, 2, 4, 3, 6,18, 7, 8,-1, 5, 2} }, // 131 - { 0, 1, {18,17,-1, 2,18, 3, 2,18, 4, 3,18, 2, 6, 5, 8,17} }, // 132 - { 0, 2, {18,17, 2, 3,18, 5,-1, 6, 7, 8, 2, 3, 4, 5,18, 6} }, // 133 - { 1, 2, {18,-3,18, 2, 3,-2,-3, 5,18, 7, 6, 2, 4, 3, 8,-2} }, // 134 - { 1, 1, {17,18,18,-2, 2, 3, 5, 4, 8,18,-1, 5, 3, 6,-2, 7} }, // 135 - { 1, 2, {18,17, 2,-2,18, 3,-1, 4,18, 2, 7, 5, 3, 8, 6, 4} }, // 136 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 137 - { 1, 1, { 1, 5, 1, 3, 4, 3, 7, 5, 1, 3, 6, 1, 2, 4, 3, 8} }, // 138 - { 0, 2, {18,18, 3, 3,-2, 2, 5,18, 6, 3,-1, 4, 7,-1, 1, 2} }, // 139 - { 0, 1, {-2, 1,18, 2,-2, 5, 7,18, 3, 2, 6, 2,-1, 4,-2,17} }, // 140 - { 0, 2, {18,18,18, 2, 3,-2,18, 5, 4, 2, 6, 8, 3,-2, 4,18} }, // 141 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 142 - { 1, 1, {17,18,-1, 3, 2, 5, 1, 3, 2, 8, 4, 7, 6, 2,-1, 5} }, // 143 - { 1, 1, {17,18,18, 4, 2, 3, 7, 6,18, 8, 5,-1, 4, 2, 3,17} }, // 144 - { 0, 1, {18,18,-2,18, 2, 3, 4, 5, 6,18, 8, 2, 3, 7,-2, 4} }, // 145 - { 0, 1, {18,-2,18,18,-3,-2, 2, 3, 5, 8, 1, 2, 6, 4, 7,-1} }, // 146 - { 0, 1, {18,17, 2,18, 3,-2, 2, 7, 6, 4,18, 3, 8, 7, 4, 2} }, // 147 - { 1, 1, {17,18,18, 4, 2, 3, 7, 6,18, 8, 5,-1, 4, 2, 3,17} }, // 148 - { 1, 1, {18,17,18, 2, 5, 3,-2,18, 6, 2, 3, 4, 8, 7, 5,-1} }, // 149 - { 0, 1, { 2,-1,18,-1, 2, 4,-3,18, 5, 3, 6,18, 2, 4, 7, 8} }, // 150 - { 1, 1, {17,18, 8, 3, 6, 4,-1, 5, 2, 7, 3, 8, 6, 5,18, 4} }, // 151 - { 0, 2, {18, 3,-2, 7, 8, 2, 5, 4,-3, 8, 3, 2,18, 5, 4, 6} }, // 152 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 153 - { 1, 1, { 1,18,-1, 8, 2, 6, 3,-2, 1, 2, 5, 4,-3, 8, 6, 3} }, // 154 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 155 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 156 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 157 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 158 - { 0, 1, {17,18,18, 4, 2, 7, 3, 6,-2,18, 8, 4, 5, 2, 7,17} }, // 159 - { 1, 2, {18,-1,18, 3,-2,18, 2, 5, 3, 6, 7, 2,-1,18, 8, 4} }, // 160 - { 1, 2, { 1,18,-2, 4,18, 2, 3, 6,-1, 7, 5,-2,18, 8, 2, 4} }, // 161 - { 1, 2, { 1,18,-3, 2, 3,18,-1, 5, 6, 2, 8, 3, 4, 1,-2, 7} }, // 162 - { 0, 1, { 1,17,-1,18, 3, 2, 5, 4, 6, 7, 8, 3, 4, 2, 1,-2} }, // 163 - { 1, 1, {18,17,18, 4, 3, 5, 1, 2, 6, 3, 4, 7, 1, 8, 5, 2} }, // 164 - { 0, 1, {18,-2, 7, 1, 3, 2,-3, 4, 6,-2, 7, 8, 1, 5, 4, 3} }, // 165 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 166 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 167 - { 0, 2, {18,18,18,-2, 2, 5, 3, 7,18, 2, 4,-3, 5, 6, 3, 8} }, // 168 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 169 - { 0, 3, { 3,18,-1, 5, 2, 7,18, 6, 5, 2, 4, 3,-1, 7,18, 6} }, // 170 - { 0, 2, {18,18,18, 4, 3, 2, 6, 4, 8,18, 5, 3, 2, 7,-2, 6} }, // 171 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 172 - { 0, 2, {18,18,18, 2, 3,-2,18, 5, 4, 2, 6, 8, 3,-2, 4,18} }, // 173 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 174 - { 1, 1, {17, 8,18, 3, 2, 1, 5, 4, 6,-1, 3,-3, 8,18, 7, 2} }, // 175 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 176 - { 0, 1, {-1,18,18,18, 2, 4, 6,-2, 2, 8, 3, 4,18, 7,-1, 6} }, // 177 - { 0, 1, {18, 1,-2, 2, 4, 1, 3,-1, 2, 5, 7, 1, 6, 8,-2,17} }, // 178 - { 0, 1, {17,17,18, 2, 5, 4,18, 3, 8, 7, 4, 6, 8, 1, 5, 2} }, // 179 - { 1, 2, {18,18, 5, 4, 6, 3, 4,18, 8, 4,-1, 7, 5, 3, 6, 2} }, // 180 - { 0, 1, {18,18,-3,18, 3, 6, 2, 5, 7,18, 3, 8,-1, 4, 5, 2} }, // 181 - { 1, 1, {18, 2,-2,-3,18, 5, 2,-2, 4, 3, 6,18, 8,-1, 2, 7} }, // 182 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 183 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 184 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 185 - { 1, 1, {17, 1, 7, 2, 3,18,-2, 3, 6, 4, 2, 7, 8, 5, 3,17} }, // 186 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 187 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 188 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 189 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 190 - { 0, 1, {17,18, 3,18, 2, 5, 4, 7,-3, 6, 3, 2,18, 4, 7, 3} }, // 191 - { 1, 1, { 1, 7, 4, 5, 3, 4, 5, 1, 3, 6, 3, 2, 4, 8,-2, 7} }, // 192 - { 0, 1, { 1,18,-1,-2,18, 3, 2,-1, 6, 7, 4, 5, 3,18, 2,-3} }, // 193 - { 1, 1, {18,18,-1, 3, 6,18, 5, 4, 8, 2, 3, 6,18, 7, 4,-2} }, // 194 - { 0, 2, {18,18, 2, 6,18, 2,18, 5, 3,18, 2, 4, 7, 8, 3,18} }, // 195 - { 1, 1, { 3,18,18, 5,18, 6, 2, 4, 7,-2,18, 5, 8, 6, 3, 2} }, // 196 - { 0, 1, {18,-2, 7, 1, 3, 2,-3, 4, 6,-2, 7, 8, 1, 5, 4, 3} }, // 197 - { 1, 1, {18,-2,18, 2, 5,18, 3,-2, 4, 7, 2,-1, 8, 6, 5, 1} }, // 198 - { 1, 1, {17,17, 5,18, 4, 1, 2, 8, 6, 4,-2, 3, 5,-1, 1, 8} }, // 199 - { 0, 2, { 1, 2,17, 3, 7,18, 2,-1, 4, 5,18, 2, 7, 3, 6, 8} }, // 200 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 201 - { 1, 1, { 3, 6,17, 8, 7, 5,18,-1, 1, 2, 3, 4, 2, 6, 8, 1} }, // 202 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 203 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 204 - { 0, 2, {18,18,18, 2,-2, 3, 6, 4, 8,18, 2, 5, 7, 4, 3, 6} }, // 205 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 206 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 207 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 208 - { 1, 1, {18, 1, 8, 3, 5, 6, 4,-1, 8, 3, 7,18, 2, 5, 8, 4} }, // 209 - { 1, 1, {17,18, 5, 2, 4, 3, 1, 6,-2, 1, 3, 2, 4, 5,-1,17} }, // 210 - { 1, 1, {18,17, 2,18, 3,-3, 7, 2, 6, 4, 3, 5,18, 8, 2,-2} }, // 211 - { 1, 1, {18,17,18, 4, 3, 5,-1,18, 2, 7, 8, 4, 6, 3,18, 5} }, // 212 - { 0, 1, {18,17,18,-2, 2,-3, 3, 4, 8, 5, 2,18, 6, 3, 7,-2} }, // 213 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 214 - { 1, 1, {17,18, 8, 3, 4, 6,18, 5,-2, 3, 8, 5, 2, 4, 7, 6} }, // 215 - { 0, 1, {18,-2, 3, 5, 1, 7, 3, 2, 6,-3, 4, 1, 5, 8, 3,-2} }, // 216 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 217 - { 1, 1, { 3,17,18, 5,-1,18, 2, 6, 7,18, 5, 3,-3,-1, 6, 2} }, // 218 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 219 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 220 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 221 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 222 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 223 - { 1, 3, {18,17,-2, 3,-1,18, 2, 5, 3, 7, 6, 2, 4, 8,18, 5} }, // 224 - { 0, 1, {18,-1,18, 2,18, 3, 5,18, 2, 8,18, 5, 4,-1, 6, 2} }, // 225 - { 1, 2, {18,-2,18,18, 2, 3, 4,-3, 2, 5,18, 7, 4, 3, 8, 6} }, // 226 - { 0, 2, {17,-1,18, 2,-1, 1, 7, 3, 8, 5,-2, 4, 1, 2,-3, 6} }, // 227 - { 0, 1, {18,17, 2,18, 2,18, 6, 7, 4, 3,18, 5, 2,-2,17, 8} }, // 228 - { 0, 3, {18,17, 2, 3,-3,-1,18, 2, 4, 5,18, 7, 3, 2,-3, 6} }, // 229 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 230 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 231 - { 0, 2, { 3,18,18,18, 2, 6, 5,18, 7, 2, 4, 6,18, 5, 3, 8} }, // 232 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 233 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 234 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 235 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 236 - { 0, 1, {18,18, 3, 6, 3,-2, 2,18, 5,-1, 7, 3, 4,-2, 2, 6} }, // 237 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 238 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 239 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 240 - { 1, 1, {18,17,18,18,-2, 2, 3,-3,18, 6, 4, 2,-2, 8, 3, 7} }, // 241 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 242 - { 0, 1, {18,18,18, 4, 2, 7, 8,18, 3, 2,-2, 4, 7, 6,17, 5} }, // 243 - { 1, 1, {18,18,-1,-2, 8, 3,18, 6, 3, 5, 8, 2, 4, 7, 1, 6} }, // 244 - { 1, 1, { 1,-3, 3,18,18, 2,-1, 3, 6, 5,18, 4, 7,-2, 8, 3} }, // 245 - { 1, 1, { 1,18, 4, 2, 5,18, 1, 3,-1, 6, 1, 4, 8, 2, 5, 1} }, // 246 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 247 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 248 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 249 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 250 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 251 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 252 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 253 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 254 - { 0, 1, {-1,18,18, 2,18, 3, 5,18, 2,18, 6, 8, 4, 5, 7,-1} }, // 255 -}; - -#define NUM_FAST_SPECS (sizeof (fast_specs) / sizeof (fast_specs [0])) -#define NUM_DEFAULT_SPECS (sizeof (default_specs) / sizeof (default_specs [0])) -#define NUM_HIGH_SPECS (sizeof (high_specs) / sizeof (high_specs [0])) -#define NUM_VERY_HIGH_SPECS (sizeof (very_high_specs) / sizeof (very_high_specs [0])) diff --git a/Frameworks/WavPack/Files/decorr_utils.c b/Frameworks/WavPack/Files/decorr_utils.c deleted file mode 100644 index a76b14ccf..000000000 --- a/Frameworks/WavPack/Files/decorr_utils.c +++ /dev/null @@ -1,204 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// decorr_utils.c - -// This module contains the functions that process metadata blocks that are -// specific to the decorrelator. These would be called any time a WavPack -// block was parsed. These are in a module separate from the actual unpack -// decorrelation code (unpack.c) so that if an application just wants to get -// information from WavPack files (rather than actually decoding audio) then -// less code needs to be linked. - -#include -#include - -#include "wavpack_local.h" - -///////////////////////////// executable code //////////////////////////////// - -// Read decorrelation terms from specified metadata block into the -// decorr_passes array. The terms range from -3 to 8, plus 17 & 18; -// other values are reserved and generate errors for now. The delta -// ranges from 0 to 7 with all values valid. Note that the terms are -// stored in the opposite order in the decorr_passes array compared -// to packing. - -int read_decorr_terms (WavpackStream *wps, WavpackMetadata *wpmd) -{ - int termcnt = wpmd->byte_length; - unsigned char *byteptr = (unsigned char *)wpmd->data; - struct decorr_pass *dpp; - - if (termcnt > MAX_NTERMS) - return FALSE; - - wps->num_terms = termcnt; - - for (dpp = wps->decorr_passes + termcnt - 1; termcnt--; dpp--) { - dpp->term = (int)(*byteptr & 0x1f) - 5; - dpp->delta = (*byteptr++ >> 5) & 0x7; - - if (!dpp->term || dpp->term < -3 || (dpp->term > MAX_TERM && dpp->term < 17) || dpp->term > 18 || - ((wps->wphdr.flags & MONO_DATA) && dpp->term < 0)) - return FALSE; - } - - return TRUE; -} - -// Read decorrelation weights from specified metadata block into the -// decorr_passes array. The weights range +/-1024, but are rounded and -// truncated to fit in signed chars for metadata storage. Weights are -// separate for the two channels and are specified from the "last" term -// (first during encode). Unspecified weights are set to zero. - -int read_decorr_weights (WavpackStream *wps, WavpackMetadata *wpmd) -{ - int termcnt = wpmd->byte_length, tcount; - char *byteptr = (char *)wpmd->data; - struct decorr_pass *dpp; - - if (!(wps->wphdr.flags & MONO_DATA)) - termcnt /= 2; - - if (termcnt > wps->num_terms) - return FALSE; - - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) - dpp->weight_A = dpp->weight_B = 0; - - while (--dpp >= wps->decorr_passes && termcnt--) { - dpp->weight_A = restore_weight (*byteptr++); - - if (!(wps->wphdr.flags & MONO_DATA)) - dpp->weight_B = restore_weight (*byteptr++); - } - - return TRUE; -} - -// Read decorrelation samples from specified metadata block into the -// decorr_passes array. The samples are signed 32-bit values, but are -// converted to signed log2 values for storage in metadata. Values are -// stored for both channels and are specified from the "last" term -// (first during encode) with unspecified samples set to zero. The -// number of samples stored varies with the actual term value, so -// those must obviously come first in the metadata. - -int read_decorr_samples (WavpackStream *wps, WavpackMetadata *wpmd) -{ - unsigned char *byteptr = (unsigned char *)wpmd->data; - unsigned char *endptr = byteptr + wpmd->byte_length; - struct decorr_pass *dpp; - int tcount; - - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) { - CLEAR (dpp->samples_A); - CLEAR (dpp->samples_B); - } - - if (wps->wphdr.version == 0x402 && (wps->wphdr.flags & HYBRID_FLAG)) { - if (byteptr + (wps->wphdr.flags & MONO_DATA ? 2 : 4) > endptr) - return FALSE; - - wps->dc.error [0] = wp_exp2s ((int16_t)(byteptr [0] + (byteptr [1] << 8))); - byteptr += 2; - - if (!(wps->wphdr.flags & MONO_DATA)) { - wps->dc.error [1] = wp_exp2s ((int16_t)(byteptr [0] + (byteptr [1] << 8))); - byteptr += 2; - } - } - - while (dpp-- > wps->decorr_passes && byteptr < endptr) - if (dpp->term > MAX_TERM) { - if (byteptr + (wps->wphdr.flags & MONO_DATA ? 4 : 8) > endptr) - return FALSE; - - dpp->samples_A [0] = wp_exp2s ((int16_t)(byteptr [0] + (byteptr [1] << 8))); - dpp->samples_A [1] = wp_exp2s ((int16_t)(byteptr [2] + (byteptr [3] << 8))); - byteptr += 4; - - if (!(wps->wphdr.flags & MONO_DATA)) { - dpp->samples_B [0] = wp_exp2s ((int16_t)(byteptr [0] + (byteptr [1] << 8))); - dpp->samples_B [1] = wp_exp2s ((int16_t)(byteptr [2] + (byteptr [3] << 8))); - byteptr += 4; - } - } - else if (dpp->term < 0) { - if (byteptr + 4 > endptr) - return FALSE; - - dpp->samples_A [0] = wp_exp2s ((int16_t)(byteptr [0] + (byteptr [1] << 8))); - dpp->samples_B [0] = wp_exp2s ((int16_t)(byteptr [2] + (byteptr [3] << 8))); - byteptr += 4; - } - else { - int m = 0, cnt = dpp->term; - - while (cnt--) { - if (byteptr + (wps->wphdr.flags & MONO_DATA ? 2 : 4) > endptr) - return FALSE; - - dpp->samples_A [m] = wp_exp2s ((int16_t)(byteptr [0] + (byteptr [1] << 8))); - byteptr += 2; - - if (!(wps->wphdr.flags & MONO_DATA)) { - dpp->samples_B [m] = wp_exp2s ((int16_t)(byteptr [0] + (byteptr [1] << 8))); - byteptr += 2; - } - - m++; - } - } - - return byteptr == endptr; -} - -// Read the shaping weights from specified metadata block into the -// WavpackStream structure. Note that there must be two values (even -// for mono streams) and that the values are stored in the same -// manner as decorrelation weights. These would normally be read from -// the "correction" file and are used for lossless reconstruction of -// hybrid data. - -int read_shaping_info (WavpackStream *wps, WavpackMetadata *wpmd) -{ - if (wpmd->byte_length == 2) { - char *byteptr = (char *)wpmd->data; - - wps->dc.shaping_acc [0] = (int32_t) restore_weight (*byteptr++) << 16; - wps->dc.shaping_acc [1] = (int32_t) restore_weight (*byteptr++) << 16; - return TRUE; - } - else if (wpmd->byte_length >= (wps->wphdr.flags & MONO_DATA ? 4 : 8)) { - unsigned char *byteptr = (unsigned char *)wpmd->data; - - wps->dc.error [0] = wp_exp2s ((int16_t)(byteptr [0] + (byteptr [1] << 8))); - wps->dc.shaping_acc [0] = wp_exp2s ((int16_t)(byteptr [2] + (byteptr [3] << 8))); - byteptr += 4; - - if (!(wps->wphdr.flags & MONO_DATA)) { - wps->dc.error [1] = wp_exp2s ((int16_t)(byteptr [0] + (byteptr [1] << 8))); - wps->dc.shaping_acc [1] = wp_exp2s ((int16_t)(byteptr [2] + (byteptr [3] << 8))); - byteptr += 4; - } - - if (wpmd->byte_length == (wps->wphdr.flags & MONO_DATA ? 6 : 12)) { - wps->dc.shaping_delta [0] = wp_exp2s ((int16_t)(byteptr [0] + (byteptr [1] << 8))); - - if (!(wps->wphdr.flags & MONO_DATA)) - wps->dc.shaping_delta [1] = wp_exp2s ((int16_t)(byteptr [2] + (byteptr [3] << 8))); - } - - return TRUE; - } - - return FALSE; -} diff --git a/Frameworks/WavPack/Files/entropy_utils.c b/Frameworks/WavPack/Files/entropy_utils.c deleted file mode 100644 index 3ce91d410..000000000 --- a/Frameworks/WavPack/Files/entropy_utils.c +++ /dev/null @@ -1,378 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// entropy_utils.c - -// This module contains the functions that process metadata blocks that are -// specific to the entropy decoder; these would be called any time a WavPack -// block was parsed. Additionally, it contains tables and functions that are -// common to both entropy coding and decoding. These are in a module separate -// from the actual entropy encoder (write_words.c) and decoder (read_words.c) -// so that if applications that just do a subset of the full WavPack reading -// and writing can link with a subset of the library. - -#include -#include - -#include "wavpack_local.h" - -///////////////////////////// local table storage //////////////////////////// - -const uint32_t bitset [] = { - 1L << 0, 1L << 1, 1L << 2, 1L << 3, - 1L << 4, 1L << 5, 1L << 6, 1L << 7, - 1L << 8, 1L << 9, 1L << 10, 1L << 11, - 1L << 12, 1L << 13, 1L << 14, 1L << 15, - 1L << 16, 1L << 17, 1L << 18, 1L << 19, - 1L << 20, 1L << 21, 1L << 22, 1L << 23, - 1L << 24, 1L << 25, 1L << 26, 1L << 27, - 1L << 28, 1L << 29, 1L << 30, 1L << 31 -}; - -const uint32_t bitmask [] = { - (1L << 0) - 1, (1L << 1) - 1, (1L << 2) - 1, (1L << 3) - 1, - (1L << 4) - 1, (1L << 5) - 1, (1L << 6) - 1, (1L << 7) - 1, - (1L << 8) - 1, (1L << 9) - 1, (1L << 10) - 1, (1L << 11) - 1, - (1L << 12) - 1, (1L << 13) - 1, (1L << 14) - 1, (1L << 15) - 1, - (1L << 16) - 1, (1L << 17) - 1, (1L << 18) - 1, (1L << 19) - 1, - (1L << 20) - 1, (1L << 21) - 1, (1L << 22) - 1, (1L << 23) - 1, - (1L << 24) - 1, (1L << 25) - 1, (1L << 26) - 1, (1L << 27) - 1, - (1L << 28) - 1, (1L << 29) - 1, (1L << 30) - 1, 0x7fffffff -}; - -const char nbits_table [] = { - 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, // 0 - 15 - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, // 16 - 31 - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, // 32 - 47 - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, // 48 - 63 - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 64 - 79 - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 80 - 95 - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 96 - 111 - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 112 - 127 - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, // 128 - 143 - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, // 144 - 159 - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, // 160 - 175 - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, // 176 - 191 - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, // 192 - 207 - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, // 208 - 223 - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, // 224 - 239 - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 // 240 - 255 -}; - -static const unsigned char log2_table [] = { - 0x00, 0x01, 0x03, 0x04, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x14, 0x15, - 0x16, 0x18, 0x19, 0x1a, 0x1c, 0x1d, 0x1e, 0x20, 0x21, 0x22, 0x24, 0x25, 0x26, 0x28, 0x29, 0x2a, - 0x2c, 0x2d, 0x2e, 0x2f, 0x31, 0x32, 0x33, 0x34, 0x36, 0x37, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3e, - 0x3f, 0x41, 0x42, 0x43, 0x44, 0x45, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4d, 0x4e, 0x4f, 0x50, 0x51, - 0x52, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, - 0x64, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x74, 0x75, - 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, - 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb2, - 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc0, - 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcb, 0xcc, 0xcd, 0xce, - 0xcf, 0xd0, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd8, 0xd9, 0xda, 0xdb, - 0xdc, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe4, 0xe5, 0xe6, 0xe7, 0xe7, - 0xe8, 0xe9, 0xea, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xee, 0xef, 0xf0, 0xf1, 0xf1, 0xf2, 0xf3, 0xf4, - 0xf4, 0xf5, 0xf6, 0xf7, 0xf7, 0xf8, 0xf9, 0xf9, 0xfa, 0xfb, 0xfc, 0xfc, 0xfd, 0xfe, 0xff, 0xff -}; - -static const unsigned char exp2_table [] = { - 0x00, 0x01, 0x01, 0x02, 0x03, 0x03, 0x04, 0x05, 0x06, 0x06, 0x07, 0x08, 0x08, 0x09, 0x0a, 0x0b, - 0x0b, 0x0c, 0x0d, 0x0e, 0x0e, 0x0f, 0x10, 0x10, 0x11, 0x12, 0x13, 0x13, 0x14, 0x15, 0x16, 0x16, - 0x17, 0x18, 0x19, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1d, 0x1e, 0x1f, 0x20, 0x20, 0x21, 0x22, 0x23, - 0x24, 0x24, 0x25, 0x26, 0x27, 0x28, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c, 0x3d, - 0x3e, 0x3f, 0x40, 0x41, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x48, 0x49, 0x4a, 0x4b, - 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, - 0x5b, 0x5c, 0x5d, 0x5e, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, - 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, - 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x87, 0x88, 0x89, 0x8a, - 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, - 0x9c, 0x9d, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, - 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, - 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc8, 0xc9, 0xca, 0xcb, 0xcd, 0xce, 0xcf, 0xd0, 0xd2, 0xd3, 0xd4, - 0xd6, 0xd7, 0xd8, 0xd9, 0xdb, 0xdc, 0xdd, 0xde, 0xe0, 0xe1, 0xe2, 0xe4, 0xe5, 0xe6, 0xe8, 0xe9, - 0xea, 0xec, 0xed, 0xee, 0xf0, 0xf1, 0xf2, 0xf4, 0xf5, 0xf6, 0xf8, 0xf9, 0xfa, 0xfc, 0xfd, 0xff -}; - -///////////////////////////// executable code //////////////////////////////// - -// Read the median log2 values from the specified metadata structure, convert -// them back to 32-bit unsigned values and store them. If length is not -// exactly correct then we flag and return an error. - -int read_entropy_vars (WavpackStream *wps, WavpackMetadata *wpmd) -{ - unsigned char *byteptr = (unsigned char *)wpmd->data; - - if (wpmd->byte_length != ((wps->wphdr.flags & MONO_DATA) ? 6 : 12)) - return FALSE; - - wps->w.c [0].median [0] = wp_exp2s (byteptr [0] + (byteptr [1] << 8)); - wps->w.c [0].median [1] = wp_exp2s (byteptr [2] + (byteptr [3] << 8)); - wps->w.c [0].median [2] = wp_exp2s (byteptr [4] + (byteptr [5] << 8)); - - if (!(wps->wphdr.flags & MONO_DATA)) { - wps->w.c [1].median [0] = wp_exp2s (byteptr [6] + (byteptr [7] << 8)); - wps->w.c [1].median [1] = wp_exp2s (byteptr [8] + (byteptr [9] << 8)); - wps->w.c [1].median [2] = wp_exp2s (byteptr [10] + (byteptr [11] << 8)); - } - - return TRUE; -} - -// Read the hybrid related values from the specified metadata structure, convert -// them back to their internal formats and store them. The extended profile -// stuff is not implemented yet, so return an error if we get more data than -// we know what to do with. - -int read_hybrid_profile (WavpackStream *wps, WavpackMetadata *wpmd) -{ - unsigned char *byteptr = (unsigned char *)wpmd->data; - unsigned char *endptr = byteptr + wpmd->byte_length; - - if (wps->wphdr.flags & HYBRID_BITRATE) { - if (byteptr + (wps->wphdr.flags & MONO_DATA ? 2 : 4) > endptr) - return FALSE; - - wps->w.c [0].slow_level = wp_exp2s (byteptr [0] + (byteptr [1] << 8)); - byteptr += 2; - - if (!(wps->wphdr.flags & MONO_DATA)) { - wps->w.c [1].slow_level = wp_exp2s (byteptr [0] + (byteptr [1] << 8)); - byteptr += 2; - } - } - - if (byteptr + (wps->wphdr.flags & MONO_DATA ? 2 : 4) > endptr) - return FALSE; - - wps->w.bitrate_acc [0] = (int32_t)(byteptr [0] + (byteptr [1] << 8)) << 16; - byteptr += 2; - - if (!(wps->wphdr.flags & MONO_DATA)) { - wps->w.bitrate_acc [1] = (int32_t)(byteptr [0] + (byteptr [1] << 8)) << 16; - byteptr += 2; - } - - if (byteptr < endptr) { - if (byteptr + (wps->wphdr.flags & MONO_DATA ? 2 : 4) > endptr) - return FALSE; - - wps->w.bitrate_delta [0] = wp_exp2s ((int16_t)(byteptr [0] + (byteptr [1] << 8))); - byteptr += 2; - - if (!(wps->wphdr.flags & MONO_DATA)) { - wps->w.bitrate_delta [1] = wp_exp2s ((int16_t)(byteptr [0] + (byteptr [1] << 8))); - byteptr += 2; - } - - if (byteptr < endptr) - return FALSE; - } - else - wps->w.bitrate_delta [0] = wps->w.bitrate_delta [1] = 0; - - return TRUE; -} - -// This function is called during both encoding and decoding of hybrid data to -// update the "error_limit" variable which determines the maximum sample error -// allowed in the main bitstream. In the HYBRID_BITRATE mode (which is the only -// currently implemented) this is calculated from the slow_level values and the -// bitrate accumulators. Note that the bitrate accumulators can be changing. - -void update_error_limit (WavpackStream *wps) -{ - int bitrate_0 = (wps->w.bitrate_acc [0] += wps->w.bitrate_delta [0]) >> 16; - - if (wps->wphdr.flags & MONO_DATA) { - if (wps->wphdr.flags & HYBRID_BITRATE) { - int slow_log_0 = (wps->w.c [0].slow_level + SLO) >> SLS; - - if (slow_log_0 - bitrate_0 > -0x100) - wps->w.c [0].error_limit = wp_exp2s (slow_log_0 - bitrate_0 + 0x100); - else - wps->w.c [0].error_limit = 0; - } - else - wps->w.c [0].error_limit = wp_exp2s (bitrate_0); - } - else { - int bitrate_1 = (wps->w.bitrate_acc [1] += wps->w.bitrate_delta [1]) >> 16; - - if (wps->wphdr.flags & HYBRID_BITRATE) { - int slow_log_0 = (wps->w.c [0].slow_level + SLO) >> SLS; - int slow_log_1 = (wps->w.c [1].slow_level + SLO) >> SLS; - - if (wps->wphdr.flags & HYBRID_BALANCE) { - int balance = (slow_log_1 - slow_log_0 + bitrate_1 + 1) >> 1; - - if (balance > bitrate_0) { - bitrate_1 = bitrate_0 * 2; - bitrate_0 = 0; - } - else if (-balance > bitrate_0) { - bitrate_0 = bitrate_0 * 2; - bitrate_1 = 0; - } - else { - bitrate_1 = bitrate_0 + balance; - bitrate_0 = bitrate_0 - balance; - } - } - - if (slow_log_0 - bitrate_0 > -0x100) - wps->w.c [0].error_limit = wp_exp2s (slow_log_0 - bitrate_0 + 0x100); - else - wps->w.c [0].error_limit = 0; - - if (slow_log_1 - bitrate_1 > -0x100) - wps->w.c [1].error_limit = wp_exp2s (slow_log_1 - bitrate_1 + 0x100); - else - wps->w.c [1].error_limit = 0; - } - else { - wps->w.c [0].error_limit = wp_exp2s (bitrate_0); - wps->w.c [1].error_limit = wp_exp2s (bitrate_1); - } - } -} - -// The concept of a base 2 logarithm is used in many parts of WavPack. It is -// a way of sufficiently accurately representing 32-bit signed and unsigned -// values storing only 16 bits (actually fewer). It is also used in the hybrid -// mode for quickly comparing the relative magnitude of large values (i.e. -// division) and providing smooth exponentials using only addition. - -// These are not strict logarithms in that they become linear around zero and -// can therefore represent both zero and negative values. They have 8 bits -// of precision and in "roundtrip" conversions the total error never exceeds 1 -// part in 225 except for the cases of +/-115 and +/-195 (which error by 1). - - -// This function returns the log2 for the specified 32-bit unsigned value. -// The maximum value allowed is about 0xff800000 and returns 8447. - -int FASTCALL wp_log2 (uint32_t avalue) -{ - int dbits; - - if ((avalue += avalue >> 9) < (1 << 8)) { - dbits = nbits_table [avalue]; - return (dbits << 8) + log2_table [(avalue << (9 - dbits)) & 0xff]; - } - else { - if (avalue < (1L << 16)) - dbits = nbits_table [avalue >> 8] + 8; - else if (avalue < (1L << 24)) - dbits = nbits_table [avalue >> 16] + 16; - else - dbits = nbits_table [avalue >> 24] + 24; - - return (dbits << 8) + log2_table [(avalue >> (dbits - 9)) & 0xff]; - } -} - -// This function scans a buffer of longs and accumulates the total log2 value -// of all the samples. This is useful for determining maximum compression -// because the bitstream storage required for entropy coding is proportional -// to the base 2 log of the samples. On some platforms there is an assembly -// version of this. - -#if !defined(OPT_ASM_X86) && !defined(OPT_ASM_X64) - -uint32_t log2buffer (int32_t *samples, uint32_t num_samples, int limit) -{ - uint32_t result = 0, avalue; - int dbits; - - while (num_samples--) { - avalue = abs (*samples++); - - if ((avalue += avalue >> 9) < (1 << 8)) { - dbits = nbits_table [avalue]; - result += (dbits << 8) + log2_table [(avalue << (9 - dbits)) & 0xff]; - } - else { - if (avalue < (1L << 16)) - dbits = nbits_table [avalue >> 8] + 8; - else if (avalue < (1L << 24)) - dbits = nbits_table [avalue >> 16] + 16; - else - dbits = nbits_table [avalue >> 24] + 24; - - result += dbits = (dbits << 8) + log2_table [(avalue >> (dbits - 9)) & 0xff]; - - if (limit && dbits >= limit) - return (uint32_t) -1; - } - } - - return result; -} - -#endif - -// This function returns the log2 for the specified 32-bit signed value. -// All input values are valid and the return values are in the range of -// +/- 8192. - -int wp_log2s (int32_t value) -{ - return (value < 0) ? -wp_log2 (-value) : wp_log2 (value); -} - -// This function returns the original integer represented by the supplied -// logarithm (at least within the provided accuracy). The log is signed, -// but since a full 32-bit value is returned this can be used for unsigned -// conversions as well (i.e. the input range is -8192 to +8447). - -int32_t wp_exp2s (int log) -{ - uint32_t value; - - if (log < 0) - return -wp_exp2s (-log); - - value = exp2_table [log & 0xff] | 0x100; - - if ((log >>= 8) <= 9) - return value >> (9 - log); - else - return value << (log - 9); -} - -// These two functions convert internal weights (which are normally +/-1024) -// to and from an 8-bit signed character version for storage in metadata. The -// weights are clipped here in the case that they are outside that range. - -signed char store_weight (int weight) -{ - if (weight > 1024) - weight = 1024; - else if (weight < -1024) - weight = -1024; - - if (weight > 0) - weight -= (weight + 64) >> 7; - - return (weight + 4) >> 3; -} - -int restore_weight (signed char weight) -{ - int result; - - if ((result = (int) weight << 3) > 0) - result += (result + 64) >> 7; - - return result; -} diff --git a/Frameworks/WavPack/Files/extra1.c b/Frameworks/WavPack/Files/extra1.c deleted file mode 100644 index 39e61d5c2..000000000 --- a/Frameworks/WavPack/Files/extra1.c +++ /dev/null @@ -1,704 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// extra1.c - -// This module handles the "extra" mode for mono files. - -#include -#include -#include -#include - -#include "wavpack_local.h" - -// This flag causes this module to take into account the size of the header -// (which grows with more decorrelation passes) when making decisions about -// adding additional passes (as opposed to just considering the resulting -// magnitude of the residuals). With really long blocks it seems to actually -// hurt compression (for reasons I cannot explain), but with short blocks it -// works okay, so we're enabling it for now. - -#define USE_OVERHEAD - -// If the log2 value of any sample in a buffer being scanned exceeds this value, -// we abandon that configuration. This prevents us from going down paths that -// are wildly unstable. - -#define LOG_LIMIT 6912 - -//#define EXTRA_DUMP // dump generated filter data error_line() - -#ifdef OPT_ASM_X86 - #define PACK_DECORR_MONO_PASS_CONT pack_decorr_mono_pass_cont_x86 -#elif defined(OPT_ASM_X64) && (defined (_WIN64) || defined(__CYGWIN__) || defined(__MINGW64__) || defined(__midipix__)) - #define PACK_DECORR_MONO_PASS_CONT pack_decorr_mono_pass_cont_x64win -#elif defined(OPT_ASM_X64) - #define PACK_DECORR_MONO_PASS_CONT pack_decorr_mono_pass_cont_x64 -#endif - -#ifdef PACK_DECORR_MONO_PASS_CONT - void PACK_DECORR_MONO_PASS_CONT (int32_t *out_buffer, int32_t *in_buffer, struct decorr_pass *dpp, int32_t sample_count); -#endif - -typedef struct { - int32_t *sampleptrs [MAX_NTERMS+2]; - struct decorr_pass dps [MAX_NTERMS]; - int nterms, log_limit; - uint32_t best_bits; -} WavpackExtraInfo; - -static void decorr_mono_pass (int32_t *in_samples, int32_t *out_samples, uint32_t num_samples, struct decorr_pass *dpp, int dir) -{ - int32_t cont_samples = 0; - int m = 0, i; - -#ifdef PACK_DECORR_MONO_PASS_CONT - if (num_samples > 16 && dir > 0) { - int32_t pre_samples = (dpp->term > MAX_TERM) ? 2 : dpp->term; - cont_samples = num_samples - pre_samples; - num_samples = pre_samples; - } -#endif - - dpp->sum_A = 0; - - if (dir < 0) { - out_samples += (num_samples + cont_samples - 1); - in_samples += (num_samples + cont_samples - 1); - dir = -1; - } - else - dir = 1; - - dpp->weight_A = restore_weight (store_weight (dpp->weight_A)); - - for (i = 0; i < 8; ++i) - dpp->samples_A [i] = wp_exp2s (wp_log2s (dpp->samples_A [i])); - - if (dpp->term > MAX_TERM) { - while (num_samples--) { - int32_t left, sam_A; - - if (dpp->term & 1) - sam_A = 2 * dpp->samples_A [0] - dpp->samples_A [1]; - else - sam_A = (3 * dpp->samples_A [0] - dpp->samples_A [1]) >> 1; - - dpp->samples_A [1] = dpp->samples_A [0]; - dpp->samples_A [0] = left = in_samples [0]; - - left -= apply_weight (dpp->weight_A, sam_A); - update_weight (dpp->weight_A, dpp->delta, sam_A, left); - dpp->sum_A += dpp->weight_A; - out_samples [0] = left; - in_samples += dir; - out_samples += dir; - } - } - else if (dpp->term > 0) { - while (num_samples--) { - int k = (m + dpp->term) & (MAX_TERM - 1); - int32_t left, sam_A; - - sam_A = dpp->samples_A [m]; - dpp->samples_A [k] = left = in_samples [0]; - m = (m + 1) & (MAX_TERM - 1); - - left -= apply_weight (dpp->weight_A, sam_A); - update_weight (dpp->weight_A, dpp->delta, sam_A, left); - dpp->sum_A += dpp->weight_A; - out_samples [0] = left; - in_samples += dir; - out_samples += dir; - } - } - - if (m && dpp->term > 0 && dpp->term <= MAX_TERM) { - int32_t temp_A [MAX_TERM]; - int k; - - memcpy (temp_A, dpp->samples_A, sizeof (dpp->samples_A)); - - for (k = 0; k < MAX_TERM; k++) { - dpp->samples_A [k] = temp_A [m]; - m = (m + 1) & (MAX_TERM - 1); - } - } - -#ifdef PACK_DECORR_MONO_PASS_CONT - if (cont_samples) - PACK_DECORR_MONO_PASS_CONT (out_samples, in_samples, dpp, cont_samples); -#endif -} - -static void reverse_mono_decorr (struct decorr_pass *dpp) -{ - if (dpp->term > MAX_TERM) { - int32_t sam_A; - - if (dpp->term & 1) - sam_A = 2 * dpp->samples_A [0] - dpp->samples_A [1]; - else - sam_A = (3 * dpp->samples_A [0] - dpp->samples_A [1]) >> 1; - - dpp->samples_A [1] = dpp->samples_A [0]; - dpp->samples_A [0] = sam_A; - - if (dpp->term & 1) - sam_A = 2 * dpp->samples_A [0] - dpp->samples_A [1]; - else - sam_A = (3 * dpp->samples_A [0] - dpp->samples_A [1]) >> 1; - - dpp->samples_A [1] = sam_A; - } - else if (dpp->term > 1) { - int i = 0, j = dpp->term - 1, cnt = dpp->term / 2; - - while (cnt--) { - i &= (MAX_TERM - 1); - j &= (MAX_TERM - 1); - dpp->samples_A [i] ^= dpp->samples_A [j]; - dpp->samples_A [j] ^= dpp->samples_A [i]; - dpp->samples_A [i++] ^= dpp->samples_A [j--]; - } - -// CLEAR (dpp->samples_A); - } -} - -static void decorr_mono_buffer (int32_t *samples, int32_t *outsamples, uint32_t num_samples, struct decorr_pass *dpp, int tindex) -{ - struct decorr_pass dp, *dppi = dpp + tindex; - int delta = dppi->delta, pre_delta, term = dppi->term; - - if (delta == 7) - pre_delta = 7; - else if (delta < 2) - pre_delta = 3; - else - pre_delta = delta + 1; - - CLEAR (dp); - dp.term = term; - dp.delta = pre_delta; - decorr_mono_pass (samples, outsamples, num_samples > 2048 ? 2048 : num_samples, &dp, -1); - dp.delta = delta; - - if (tindex == 0) - reverse_mono_decorr (&dp); - else - CLEAR (dp.samples_A); - - memcpy (dppi->samples_A, dp.samples_A, sizeof (dp.samples_A)); - dppi->weight_A = dp.weight_A; - - if (delta == 0) { - dp.delta = 1; - decorr_mono_pass (samples, outsamples, num_samples, &dp, 1); - dp.delta = 0; - memcpy (dp.samples_A, dppi->samples_A, sizeof (dp.samples_A)); - dppi->weight_A = dp.weight_A = dp.sum_A / num_samples; - } - -// if (memcmp (dppi, &dp, sizeof (dp))) -// error_line ("decorr_passes don't match, delta = %d", delta); - - decorr_mono_pass (samples, outsamples, num_samples, &dp, 1); -} - -static int log2overhead (int first_term, int num_terms) -{ -#ifdef USE_OVERHEAD - if (first_term > MAX_TERM) - return (4 + num_terms * 2) << 11; - else - return (2 + num_terms * 2) << 11; -#else - return 0; -#endif -} - -static void recurse_mono (WavpackContext *wpc, WavpackExtraInfo *info, int depth, int delta, uint32_t input_bits) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - int term, branches = ((wpc->config.extra_flags & EXTRA_BRANCHES) >> 6) - depth; - int32_t *samples, *outsamples; - uint32_t term_bits [22], bits; - - if (branches < 1 || depth + 1 == info->nterms) - branches = 1; - - CLEAR (term_bits); - samples = info->sampleptrs [depth]; - outsamples = info->sampleptrs [depth + 1]; - - for (term = 1; term <= 18; ++term) { - if (term == 17 && branches == 1 && depth + 1 < info->nterms) - continue; - - if (term > 8 && term < 17) - continue; - - if ((wpc->config.flags & CONFIG_FAST_FLAG) && (term > 4 && term < 17)) - continue; - - info->dps [depth].term = term; - info->dps [depth].delta = delta; - decorr_mono_buffer (samples, outsamples, wps->wphdr.block_samples, info->dps, depth); - bits = LOG2BUFFER (outsamples, wps->wphdr.block_samples, info->log_limit); - - if (bits != (uint32_t) -1) - bits += log2overhead (info->dps [0].term, depth + 1); - - if (bits < info->best_bits) { - info->best_bits = bits; - CLEAR (wps->decorr_passes); - memcpy (wps->decorr_passes, info->dps, sizeof (info->dps [0]) * (depth + 1)); - memcpy (info->sampleptrs [info->nterms + 1], info->sampleptrs [depth + 1], wps->wphdr.block_samples * 4); - } - - term_bits [term + 3] = bits; - } - - while (depth + 1 < info->nterms && branches--) { - uint32_t local_best_bits = input_bits; - int best_term = 0, i; - - for (i = 0; i < 22; ++i) - if (term_bits [i] && term_bits [i] < local_best_bits) { - local_best_bits = term_bits [i]; -// term_bits [i] = 0; - best_term = i - 3; - } - - if (!best_term) - break; - - term_bits [best_term + 3] = 0; - - info->dps [depth].term = best_term; - info->dps [depth].delta = delta; - decorr_mono_buffer (samples, outsamples, wps->wphdr.block_samples, info->dps, depth); - -// if (log2buffer (outsamples, wps->wphdr.block_samples * 2, 0) != local_best_bits) -// error_line ("data doesn't match!"); - - recurse_mono (wpc, info, depth + 1, delta, local_best_bits); - } -} - -static void delta_mono (WavpackContext *wpc, WavpackExtraInfo *info) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - int lower = FALSE, delta, d; - uint32_t bits; - - if (wps->decorr_passes [0].term) - delta = wps->decorr_passes [0].delta; - else - return; - - for (d = delta - 1; d >= 0; --d) { - int i; - - if (!d && (wps->wphdr.flags & HYBRID_FLAG)) - break; - - for (i = 0; i < info->nterms && wps->decorr_passes [i].term; ++i) { - info->dps [i].term = wps->decorr_passes [i].term; - info->dps [i].delta = d; - decorr_mono_buffer (info->sampleptrs [i], info->sampleptrs [i+1], wps->wphdr.block_samples, info->dps, i); - } - - bits = LOG2BUFFER (info->sampleptrs [i], wps->wphdr.block_samples, info->log_limit); - - if (bits != (uint32_t) -1) - bits += log2overhead (wps->decorr_passes [0].term, i); - - if (bits < info->best_bits) { - lower = TRUE; - info->best_bits = bits; - CLEAR (wps->decorr_passes); - memcpy (wps->decorr_passes, info->dps, sizeof (info->dps [0]) * i); - memcpy (info->sampleptrs [info->nterms + 1], info->sampleptrs [i], wps->wphdr.block_samples * 4); - } - else - break; - } - - for (d = delta + 1; !lower && d <= 7; ++d) { - int i; - - for (i = 0; i < info->nterms && wps->decorr_passes [i].term; ++i) { - info->dps [i].term = wps->decorr_passes [i].term; - info->dps [i].delta = d; - decorr_mono_buffer (info->sampleptrs [i], info->sampleptrs [i+1], wps->wphdr.block_samples, info->dps, i); - } - - bits = LOG2BUFFER (info->sampleptrs [i], wps->wphdr.block_samples, info->log_limit); - - if (bits != (uint32_t) -1) - bits += log2overhead (wps->decorr_passes [0].term, i); - - if (bits < info->best_bits) { - info->best_bits = bits; - CLEAR (wps->decorr_passes); - memcpy (wps->decorr_passes, info->dps, sizeof (info->dps [0]) * i); - memcpy (info->sampleptrs [info->nterms + 1], info->sampleptrs [i], wps->wphdr.block_samples * 4); - } - else - break; - } -} - -static void sort_mono (WavpackContext *wpc, WavpackExtraInfo *info) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - int reversed = TRUE; - uint32_t bits; - - while (reversed) { - int ri, i; - - memcpy (info->dps, wps->decorr_passes, sizeof (wps->decorr_passes)); - reversed = FALSE; - - for (ri = 0; ri < info->nterms && wps->decorr_passes [ri].term; ++ri) { - - if (ri + 1 >= info->nterms || !wps->decorr_passes [ri+1].term) - break; - - if (wps->decorr_passes [ri].term == wps->decorr_passes [ri+1].term) { - decorr_mono_buffer (info->sampleptrs [ri], info->sampleptrs [ri+1], wps->wphdr.block_samples, info->dps, ri); - continue; - } - - info->dps [ri] = wps->decorr_passes [ri+1]; - info->dps [ri+1] = wps->decorr_passes [ri]; - - for (i = ri; i < info->nterms && wps->decorr_passes [i].term; ++i) - decorr_mono_buffer (info->sampleptrs [i], info->sampleptrs [i+1], wps->wphdr.block_samples, info->dps, i); - - bits = LOG2BUFFER (info->sampleptrs [i], wps->wphdr.block_samples, info->log_limit); - - if (bits != (uint32_t) -1) - bits += log2overhead (wps->decorr_passes [0].term, i); - - if (bits < info->best_bits) { - reversed = TRUE; - info->best_bits = bits; - CLEAR (wps->decorr_passes); - memcpy (wps->decorr_passes, info->dps, sizeof (info->dps [0]) * i); - memcpy (info->sampleptrs [info->nterms + 1], info->sampleptrs [i], wps->wphdr.block_samples * 4); - } - else { - info->dps [ri] = wps->decorr_passes [ri]; - info->dps [ri+1] = wps->decorr_passes [ri+1]; - decorr_mono_buffer (info->sampleptrs [ri], info->sampleptrs [ri+1], wps->wphdr.block_samples, info->dps, ri); - } - } - } -} - -static const uint32_t xtable [] = { 91, 123, 187, 251 }; - -static void analyze_mono (WavpackContext *wpc, int32_t *samples, int do_samples) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - WavpackExtraInfo info; - int i; - -#ifdef LOG_LIMIT - info.log_limit = (((wps->wphdr.flags & MAG_MASK) >> MAG_LSB) + 4) * 256; - - if (info.log_limit > LOG_LIMIT) - info.log_limit = LOG_LIMIT; -#else - info.log_limit = 0; -#endif - - if (wpc->config.flags & (CONFIG_HIGH_FLAG | CONFIG_VERY_HIGH_FLAG)) - wpc->config.extra_flags = xtable [wpc->config.xmode - 4]; - else - wpc->config.extra_flags = xtable [wpc->config.xmode - 3]; - - info.nterms = wps->num_terms; - - for (i = 0; i < info.nterms + 2; ++i) - info.sampleptrs [i] = malloc (wps->wphdr.block_samples * 4); - - memcpy (info.dps, wps->decorr_passes, sizeof (info.dps)); - memcpy (info.sampleptrs [0], samples, wps->wphdr.block_samples * 4); - - for (i = 0; i < info.nterms && info.dps [i].term; ++i) - decorr_mono_pass (info.sampleptrs [i], info.sampleptrs [i + 1], wps->wphdr.block_samples, info.dps + i, 1); - - info.best_bits = LOG2BUFFER (info.sampleptrs [info.nterms], wps->wphdr.block_samples, 0) * 1; - info.best_bits += log2overhead (info.dps [0].term, i); - memcpy (info.sampleptrs [info.nterms + 1], info.sampleptrs [i], wps->wphdr.block_samples * 4); - - if (wpc->config.extra_flags & EXTRA_BRANCHES) - recurse_mono (wpc, &info, 0, (int) floor (wps->delta_decay + 0.5), - LOG2BUFFER (info.sampleptrs [0], wps->wphdr.block_samples, 0)); - - if (wpc->config.extra_flags & EXTRA_SORT_FIRST) - sort_mono (wpc, &info); - - if (wpc->config.extra_flags & EXTRA_TRY_DELTAS) { - delta_mono (wpc, &info); - - if ((wpc->config.extra_flags & EXTRA_ADJUST_DELTAS) && wps->decorr_passes [0].term) - wps->delta_decay = (float)((wps->delta_decay * 2.0 + wps->decorr_passes [0].delta) / 3.0); - else - wps->delta_decay = 2.0; - } - - if (wpc->config.extra_flags & EXTRA_SORT_LAST) - sort_mono (wpc, &info); - - if (do_samples) - memcpy (samples, info.sampleptrs [info.nterms + 1], wps->wphdr.block_samples * 4); - - for (i = 0; i < info.nterms; ++i) - if (!wps->decorr_passes [i].term) - break; - - wps->num_terms = i; - - for (i = 0; i < info.nterms + 2; ++i) - free (info.sampleptrs [i]); -} - -static void mono_add_noise (WavpackStream *wps, int32_t *lptr, int32_t *rptr) -{ - int shaping_weight, new = wps->wphdr.flags & NEW_SHAPING; - short *shaping_array = wps->dc.shaping_array; - int32_t error = 0, temp, cnt; - - scan_word (wps, rptr, wps->wphdr.block_samples, -1); - cnt = wps->wphdr.block_samples; - - if (wps->wphdr.flags & HYBRID_SHAPE) { - while (cnt--) { - if (shaping_array) - shaping_weight = *shaping_array++; - else - shaping_weight = (wps->dc.shaping_acc [0] += wps->dc.shaping_delta [0]) >> 16; - - temp = -apply_weight (shaping_weight, error); - - if (new && shaping_weight < 0 && temp) { - if (temp == error) - temp = (temp < 0) ? temp + 1 : temp - 1; - - lptr [0] += (error = nosend_word (wps, rptr [0], 0) - rptr [0] + temp); - } - else - lptr [0] += (error = nosend_word (wps, rptr [0], 0) - rptr [0]) + temp; - - lptr++; - rptr++; - } - - if (!shaping_array) - wps->dc.shaping_acc [0] -= wps->dc.shaping_delta [0] * wps->wphdr.block_samples; - } - else - while (cnt--) { - lptr [0] += nosend_word (wps, rptr [0], 0) - rptr [0]; - lptr++; - rptr++; - } -} - -void execute_mono (WavpackContext *wpc, int32_t *samples, int no_history, int do_samples) -{ - int32_t *temp_buffer [2], *best_buffer, *noisy_buffer = NULL; - struct decorr_pass temp_decorr_pass, save_decorr_passes [MAX_NTERMS]; - WavpackStream *wps = wpc->streams [wpc->current_stream]; - int32_t num_samples = wps->wphdr.block_samples; - int32_t buf_size = sizeof (int32_t) * num_samples; - uint32_t best_size = (uint32_t) -1, size; - int log_limit, pi, i; - -#ifdef SKIP_DECORRELATION - CLEAR (wps->decorr_passes); - wps->num_terms = 0; - return; -#endif - - for (i = 0; i < num_samples; ++i) - if (samples [i]) - break; - - if (i == num_samples) { - CLEAR (wps->decorr_passes); - wps->num_terms = 0; - init_words (wps); - return; - } - -#ifdef LOG_LIMIT - log_limit = (((wps->wphdr.flags & MAG_MASK) >> MAG_LSB) + 4) * 256; - - if (log_limit > LOG_LIMIT) - log_limit = LOG_LIMIT; -#else - log_limit = 0; -#endif - - CLEAR (save_decorr_passes); - temp_buffer [0] = malloc (buf_size); - temp_buffer [1] = malloc (buf_size); - best_buffer = malloc (buf_size); - - if (wps->num_passes > 1 && (wps->wphdr.flags & HYBRID_FLAG)) { - CLEAR (temp_decorr_pass); - temp_decorr_pass.delta = 2; - temp_decorr_pass.term = 18; - - decorr_mono_pass (samples, temp_buffer [0], - num_samples > 2048 ? 2048 : num_samples, &temp_decorr_pass, -1); - - reverse_mono_decorr (&temp_decorr_pass); - decorr_mono_pass (samples, temp_buffer [0], num_samples, &temp_decorr_pass, 1); - CLEAR (temp_decorr_pass); - temp_decorr_pass.delta = 2; - temp_decorr_pass.term = 17; - - decorr_mono_pass (temp_buffer [0], temp_buffer [1], - num_samples > 2048 ? 2048 : num_samples, &temp_decorr_pass, -1); - - decorr_mono_pass (temp_buffer [0], temp_buffer [1], num_samples, &temp_decorr_pass, 1); - noisy_buffer = malloc (buf_size); - memcpy (noisy_buffer, samples, buf_size); - mono_add_noise (wps, noisy_buffer, temp_buffer [1]); - no_history = 1; - } - - if (no_history || wps->num_passes >= 7) - wps->best_decorr = wps->mask_decorr = 0; - - for (pi = 0; pi < wps->num_passes;) { - const WavpackDecorrSpec *wpds; - int nterms, c, j; - - if (!pi) - c = wps->best_decorr; - else { - if (wps->mask_decorr == 0) - c = 0; - else - c = (wps->best_decorr & (wps->mask_decorr - 1)) | wps->mask_decorr; - - if (c == wps->best_decorr) { - wps->mask_decorr = wps->mask_decorr ? ((wps->mask_decorr << 1) & (wps->num_decorrs - 1)) : 1; - continue; - } - } - - wpds = &wps->decorr_specs [c]; - nterms = (int) strlen ((char *) wpds->terms); - - while (1) { - memcpy (temp_buffer [0], noisy_buffer ? noisy_buffer : samples, buf_size); - CLEAR (save_decorr_passes); - - for (j = 0; j < nterms; ++j) { - CLEAR (temp_decorr_pass); - temp_decorr_pass.delta = wpds->delta; - temp_decorr_pass.term = wpds->terms [j]; - - if (temp_decorr_pass.term < 0) - temp_decorr_pass.term = 1; - - decorr_mono_pass (temp_buffer [j&1], temp_buffer [~j&1], - num_samples > 2048 ? 2048 : num_samples, &temp_decorr_pass, -1); - - if (j) { - CLEAR (temp_decorr_pass.samples_A); - } - else - reverse_mono_decorr (&temp_decorr_pass); - - memcpy (save_decorr_passes + j, &temp_decorr_pass, sizeof (struct decorr_pass)); - decorr_mono_pass (temp_buffer [j&1], temp_buffer [~j&1], num_samples, &temp_decorr_pass, 1); - } - - size = LOG2BUFFER (temp_buffer [j&1], num_samples, log_limit); - - if (size == (uint32_t) -1 && nterms) - nterms >>= 1; - else - break; - } - - size += log2overhead (wpds->terms [0], nterms); - - if (size < best_size) { - memcpy (best_buffer, temp_buffer [j&1], buf_size); - memcpy (wps->decorr_passes, save_decorr_passes, sizeof (struct decorr_pass) * MAX_NTERMS); - wps->num_terms = nterms; - wps->best_decorr = c; - best_size = size; - } - - if (pi++) - wps->mask_decorr = wps->mask_decorr ? ((wps->mask_decorr << 1) & (wps->num_decorrs - 1)) : 1; - } - - if (wpc->config.xmode > 3) { - if (noisy_buffer) { - analyze_mono (wpc, noisy_buffer, do_samples); - - if (do_samples) - memcpy (samples, noisy_buffer, buf_size); - } - else - analyze_mono (wpc, samples, do_samples); - } - else if (do_samples) - memcpy (samples, best_buffer, buf_size); - - if (no_history || wpc->config.xmode > 3) - scan_word (wps, best_buffer, num_samples, -1); - - if (noisy_buffer) - free (noisy_buffer); - - free (temp_buffer [1]); - free (temp_buffer [0]); - free (best_buffer); - -#ifdef EXTRA_DUMP - if (1) { - char string [256], substring [20]; - int i; - - sprintf (string, "M: terms ="); - - for (i = 0; i < wps->num_terms; ++i) { - if (wps->decorr_passes [i].term) { - if (i && wps->decorr_passes [i-1].delta == wps->decorr_passes [i].delta) - sprintf (substring, " %d", wps->decorr_passes [i].term); - else - sprintf (substring, " %d->%d", wps->decorr_passes [i].term, - wps->decorr_passes [i].delta); - } - else - sprintf (substring, " *"); - - strcat (string, substring); - } - - error_line (string); - } -#endif -} - diff --git a/Frameworks/WavPack/Files/extra2.c b/Frameworks/WavPack/Files/extra2.c deleted file mode 100644 index a2d49bf9c..000000000 --- a/Frameworks/WavPack/Files/extra2.c +++ /dev/null @@ -1,929 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// MMX optimizations (c) 2006 Joachim Henke // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// extra2.c - -// This module handles the "extra" mode for stereo files. - -#include -#include -#include -#include - -#include "wavpack_local.h" - -// This flag causes this module to take into account the size of the header -// (which grows with more decorrelation passes) when making decisions about -// adding additional passes (as opposed to just considering the resulting -// magnitude of the residuals). With really long blocks it seems to actually -// hurt compression (for reasons I cannot explain), but with short blocks it -// works okay, so we're enabling it for now. - -#define USE_OVERHEAD - -// If the log2 value of any sample in a buffer being scanned exceeds this value, -// we abandon that configuration. This prevents us from going down paths that -// are wildly unstable. - -#define LOG_LIMIT 6912 - -//#define EXTRA_DUMP // dump generated filter data to error_line() - -#ifdef OPT_ASM_X86 - #define PACK_DECORR_STEREO_PASS_CONT pack_decorr_stereo_pass_cont_x86 - #define PACK_DECORR_STEREO_PASS_CONT_REV pack_decorr_stereo_pass_cont_rev_x86 - #define PACK_DECORR_STEREO_PASS_CONT_AVAILABLE pack_cpu_has_feature_x86(CPU_FEATURE_MMX) -#elif defined(OPT_ASM_X64) && (defined (_WIN64) || defined(__CYGWIN__) || defined(__MINGW64__) || defined(__midipix__)) - #define PACK_DECORR_STEREO_PASS_CONT pack_decorr_stereo_pass_cont_x64win - #define PACK_DECORR_STEREO_PASS_CONT_REV pack_decorr_stereo_pass_cont_rev_x64win - #define PACK_DECORR_STEREO_PASS_CONT_AVAILABLE 1 -#elif defined(OPT_ASM_X64) - #define PACK_DECORR_STEREO_PASS_CONT pack_decorr_stereo_pass_cont_x64 - #define PACK_DECORR_STEREO_PASS_CONT_REV pack_decorr_stereo_pass_cont_rev_x64 - #define PACK_DECORR_STEREO_PASS_CONT_AVAILABLE 1 -#endif - -#ifdef PACK_DECORR_STEREO_PASS_CONT - void PACK_DECORR_STEREO_PASS_CONT (struct decorr_pass *dpp, int32_t *in_buffer, int32_t *out_buffer, int32_t sample_count); - void PACK_DECORR_STEREO_PASS_CONT_REV (struct decorr_pass *dpp, int32_t *in_buffer, int32_t *out_buffer, int32_t sample_count); -#endif - -typedef struct { - int32_t *sampleptrs [MAX_NTERMS+2]; - struct decorr_pass dps [MAX_NTERMS]; - int nterms, log_limit; - uint32_t best_bits; -} WavpackExtraInfo; - -static void decorr_stereo_pass (int32_t *in_samples, int32_t *out_samples, int32_t num_samples, struct decorr_pass *dpp, int dir) -{ - int32_t cont_samples = 0; - int m = 0, i; - -#ifdef PACK_DECORR_STEREO_PASS_CONT - if (num_samples > 16 && PACK_DECORR_STEREO_PASS_CONT_AVAILABLE) { - int32_t pre_samples = (dpp->term < 0 || dpp->term > MAX_TERM) ? 2 : dpp->term; - cont_samples = num_samples - pre_samples; - num_samples = pre_samples; - } -#endif - - dpp->sum_A = dpp->sum_B = 0; - - if (dir < 0) { - out_samples += (num_samples + cont_samples - 1) * 2; - in_samples += (num_samples + cont_samples - 1) * 2; - dir = -2; - } - else - dir = 2; - - dpp->weight_A = restore_weight (store_weight (dpp->weight_A)); - dpp->weight_B = restore_weight (store_weight (dpp->weight_B)); - - for (i = 0; i < 8; ++i) { - dpp->samples_A [i] = wp_exp2s (wp_log2s (dpp->samples_A [i])); - dpp->samples_B [i] = wp_exp2s (wp_log2s (dpp->samples_B [i])); - } - - switch (dpp->term) { - - case 2: - while (num_samples--) { - int32_t sam, tmp; - - sam = dpp->samples_A [0]; - dpp->samples_A [0] = dpp->samples_A [1]; - out_samples [0] = tmp = (dpp->samples_A [1] = in_samples [0]) - apply_weight (dpp->weight_A, sam); - update_weight (dpp->weight_A, dpp->delta, sam, tmp); - dpp->sum_A += dpp->weight_A; - - sam = dpp->samples_B [0]; - dpp->samples_B [0] = dpp->samples_B [1]; - out_samples [1] = tmp = (dpp->samples_B [1] = in_samples [1]) - apply_weight (dpp->weight_B, sam); - update_weight (dpp->weight_B, dpp->delta, sam, tmp); - dpp->sum_B += dpp->weight_B; - - in_samples += dir; - out_samples += dir; - } - - break; - - case 17: - while (num_samples--) { - int32_t sam, tmp; - - sam = 2 * dpp->samples_A [0] - dpp->samples_A [1]; - dpp->samples_A [1] = dpp->samples_A [0]; - out_samples [0] = tmp = (dpp->samples_A [0] = in_samples [0]) - apply_weight (dpp->weight_A, sam); - update_weight (dpp->weight_A, dpp->delta, sam, tmp); - dpp->sum_A += dpp->weight_A; - - sam = 2 * dpp->samples_B [0] - dpp->samples_B [1]; - dpp->samples_B [1] = dpp->samples_B [0]; - out_samples [1] = tmp = (dpp->samples_B [0] = in_samples [1]) - apply_weight (dpp->weight_B, sam); - update_weight (dpp->weight_B, dpp->delta, sam, tmp); - dpp->sum_B += dpp->weight_B; - - in_samples += dir; - out_samples += dir; - } - - break; - - case 18: - while (num_samples--) { - int32_t sam, tmp; - - sam = dpp->samples_A [0] + ((dpp->samples_A [0] - dpp->samples_A [1]) >> 1); - dpp->samples_A [1] = dpp->samples_A [0]; - out_samples [0] = tmp = (dpp->samples_A [0] = in_samples [0]) - apply_weight (dpp->weight_A, sam); - update_weight (dpp->weight_A, dpp->delta, sam, tmp); - dpp->sum_A += dpp->weight_A; - - sam = dpp->samples_B [0] + ((dpp->samples_B [0] - dpp->samples_B [1]) >> 1); - dpp->samples_B [1] = dpp->samples_B [0]; - out_samples [1] = tmp = (dpp->samples_B [0] = in_samples [1]) - apply_weight (dpp->weight_B, sam); - update_weight (dpp->weight_B, dpp->delta, sam, tmp); - dpp->sum_B += dpp->weight_B; - - in_samples += dir; - out_samples += dir; - } - - break; - - default: { - int k = dpp->term & (MAX_TERM - 1); - - while (num_samples--) { - int32_t sam, tmp; - - sam = dpp->samples_A [m]; - out_samples [0] = tmp = (dpp->samples_A [k] = in_samples [0]) - apply_weight (dpp->weight_A, sam); - update_weight (dpp->weight_A, dpp->delta, sam, tmp); - dpp->sum_A += dpp->weight_A; - - sam = dpp->samples_B [m]; - out_samples [1] = tmp = (dpp->samples_B [k] = in_samples [1]) - apply_weight (dpp->weight_B, sam); - update_weight (dpp->weight_B, dpp->delta, sam, tmp); - dpp->sum_B += dpp->weight_B; - - in_samples += dir; - out_samples += dir; - m = (m + 1) & (MAX_TERM - 1); - k = (k + 1) & (MAX_TERM - 1); - } - - if (m) { - int32_t temp_A [MAX_TERM], temp_B [MAX_TERM]; - int k; - - memcpy (temp_A, dpp->samples_A, sizeof (dpp->samples_A)); - memcpy (temp_B, dpp->samples_B, sizeof (dpp->samples_B)); - - for (k = 0; k < MAX_TERM; k++) { - dpp->samples_A [k] = temp_A [m]; - dpp->samples_B [k] = temp_B [m]; - m = (m + 1) & (MAX_TERM - 1); - } - } - - break; - } - - case -1: - while (num_samples--) { - int32_t sam_A, sam_B, tmp; - - sam_A = dpp->samples_A [0]; - out_samples [0] = tmp = (sam_B = in_samples [0]) - apply_weight (dpp->weight_A, sam_A); - update_weight_clip (dpp->weight_A, dpp->delta, sam_A, tmp); - dpp->sum_A += dpp->weight_A; - - out_samples [1] = tmp = (dpp->samples_A [0] = in_samples [1]) - apply_weight (dpp->weight_B, sam_B); - update_weight_clip (dpp->weight_B, dpp->delta, sam_B, tmp); - dpp->sum_B += dpp->weight_B; - - in_samples += dir; - out_samples += dir; - } - - break; - - case -2: - while (num_samples--) { - int32_t sam_A, sam_B, tmp; - - sam_B = dpp->samples_B [0]; - out_samples [1] = tmp = (sam_A = in_samples [1]) - apply_weight (dpp->weight_B, sam_B); - update_weight_clip (dpp->weight_B, dpp->delta, sam_B, tmp); - dpp->sum_B += dpp->weight_B; - - out_samples [0] = tmp = (dpp->samples_B [0] = in_samples [0]) - apply_weight (dpp->weight_A, sam_A); - update_weight_clip (dpp->weight_A, dpp->delta, sam_A, tmp); - dpp->sum_A += dpp->weight_A; - - in_samples += dir; - out_samples += dir; - } - - break; - - case -3: - while (num_samples--) { - int32_t sam_A, sam_B, tmp; - - sam_A = dpp->samples_A [0]; - sam_B = dpp->samples_B [0]; - - dpp->samples_A [0] = tmp = in_samples [1]; - out_samples [1] = tmp -= apply_weight (dpp->weight_B, sam_B); - update_weight_clip (dpp->weight_B, dpp->delta, sam_B, tmp); - dpp->sum_B += dpp->weight_B; - - dpp->samples_B [0] = tmp = in_samples [0]; - out_samples [0] = tmp -= apply_weight (dpp->weight_A, sam_A); - update_weight_clip (dpp->weight_A, dpp->delta, sam_A, tmp); - dpp->sum_A += dpp->weight_A; - - in_samples += dir; - out_samples += dir; - } - - break; - } - -#ifdef PACK_DECORR_STEREO_PASS_CONT - if (cont_samples) { - if (dir < 0) - PACK_DECORR_STEREO_PASS_CONT_REV (dpp, in_samples, out_samples, cont_samples); - else - PACK_DECORR_STEREO_PASS_CONT (dpp, in_samples, out_samples, cont_samples); - } -#endif -} - -static void reverse_decorr (struct decorr_pass *dpp) -{ - if (dpp->term > MAX_TERM) { - int32_t sam_A, sam_B; - - if (dpp->term & 1) { - sam_A = 2 * dpp->samples_A [0] - dpp->samples_A [1]; - sam_B = 2 * dpp->samples_B [0] - dpp->samples_B [1]; - } - else { - sam_A = (3 * dpp->samples_A [0] - dpp->samples_A [1]) >> 1; - sam_B = (3 * dpp->samples_B [0] - dpp->samples_B [1]) >> 1; - } - - dpp->samples_A [1] = dpp->samples_A [0]; - dpp->samples_B [1] = dpp->samples_B [0]; - dpp->samples_A [0] = sam_A; - dpp->samples_B [0] = sam_B; - - if (dpp->term & 1) { - sam_A = 2 * dpp->samples_A [0] - dpp->samples_A [1]; - sam_B = 2 * dpp->samples_B [0] - dpp->samples_B [1]; - } - else { - sam_A = (3 * dpp->samples_A [0] - dpp->samples_A [1]) >> 1; - sam_B = (3 * dpp->samples_B [0] - dpp->samples_B [1]) >> 1; - } - - dpp->samples_A [1] = sam_A; - dpp->samples_B [1] = sam_B; - } - else if (dpp->term > 1) { - int i = 0, j = dpp->term - 1, cnt = dpp->term / 2; - - while (cnt--) { - i &= (MAX_TERM - 1); - j &= (MAX_TERM - 1); - dpp->samples_A [i] ^= dpp->samples_A [j]; - dpp->samples_A [j] ^= dpp->samples_A [i]; - dpp->samples_A [i] ^= dpp->samples_A [j]; - dpp->samples_B [i] ^= dpp->samples_B [j]; - dpp->samples_B [j] ^= dpp->samples_B [i]; - dpp->samples_B [i++] ^= dpp->samples_B [j--]; - } - } - else if (dpp->term == -1) { - } - else if (dpp->term == -2) { - } - else if (dpp->term == -3) { - } -} - -static void decorr_stereo_buffer (WavpackExtraInfo *info, int32_t *samples, int32_t *outsamples, int32_t num_samples, int tindex) -{ - struct decorr_pass dp, *dppi = info->dps + tindex; - int delta = dppi->delta, pre_delta; - int term = dppi->term; - - if (delta == 7) - pre_delta = 7; - else if (delta < 2) - pre_delta = 3; - else - pre_delta = delta + 1; - - CLEAR (dp); - dp.term = term; - dp.delta = pre_delta; - decorr_stereo_pass (samples, outsamples, num_samples > 2048 ? 2048 : num_samples, &dp, -1); - dp.delta = delta; - - if (tindex == 0) - reverse_decorr (&dp); - else { - CLEAR (dp.samples_A); - CLEAR (dp.samples_B); - } - - memcpy (dppi->samples_A, dp.samples_A, sizeof (dp.samples_A)); - memcpy (dppi->samples_B, dp.samples_B, sizeof (dp.samples_B)); - dppi->weight_A = dp.weight_A; - dppi->weight_B = dp.weight_B; - - if (delta == 0) { - dp.delta = 1; - decorr_stereo_pass (samples, outsamples, num_samples, &dp, 1); - dp.delta = 0; - memcpy (dp.samples_A, dppi->samples_A, sizeof (dp.samples_A)); - memcpy (dp.samples_B, dppi->samples_B, sizeof (dp.samples_B)); - dppi->weight_A = dp.weight_A = dp.sum_A / num_samples; - dppi->weight_B = dp.weight_B = dp.sum_B / num_samples; - } - -// if (memcmp (dppi, &dp, sizeof (dp))) -// error_line ("decorr_passes don't match, delta = %d", delta); - - decorr_stereo_pass (samples, outsamples, num_samples, &dp, 1); -} - -static int log2overhead (int first_term, int num_terms) -{ -#ifdef USE_OVERHEAD - if (first_term > MAX_TERM) - return (8 + num_terms * 3) << 11; - else - return (4 + num_terms * 3) << 11; -#else - return 0; -#endif -} - -static void recurse_stereo (WavpackContext *wpc, WavpackExtraInfo *info, int depth, int delta, uint32_t input_bits) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - int term, branches = ((wpc->config.extra_flags & EXTRA_BRANCHES) >> 6) - depth; - int32_t *samples, *outsamples; - uint32_t term_bits [22], bits; - - if (branches < 1 || depth + 1 == info->nterms) - branches = 1; - - CLEAR (term_bits); - samples = info->sampleptrs [depth]; - outsamples = info->sampleptrs [depth + 1]; - - for (term = -3; term <= 18; ++term) { - if (!term || (term > 8 && term < 17)) - continue; - - if (term == 17 && branches == 1 && depth + 1 < info->nterms) - continue; - - if (term == -1 || term == -2) - if (!(wps->wphdr.flags & CROSS_DECORR)) - continue; - - if ((wpc->config.flags & CONFIG_FAST_FLAG) && (term > 4 && term < 17)) - continue; - - info->dps [depth].term = term; - info->dps [depth].delta = delta; - decorr_stereo_buffer (info, samples, outsamples, wps->wphdr.block_samples, depth); - bits = LOG2BUFFER (outsamples, wps->wphdr.block_samples * 2, info->log_limit); - - if (bits != (uint32_t) -1) - bits += log2overhead (info->dps [0].term, depth + 1); - - if (bits < info->best_bits) { - info->best_bits = bits; - CLEAR (wps->decorr_passes); - memcpy (wps->decorr_passes, info->dps, sizeof (info->dps [0]) * (depth + 1)); - memcpy (info->sampleptrs [info->nterms + 1], info->sampleptrs [depth + 1], wps->wphdr.block_samples * 8); - } - - term_bits [term + 3] = bits; - } - - while (depth + 1 < info->nterms && branches--) { - uint32_t local_best_bits = input_bits; - int best_term = 0, i; - - for (i = 0; i < 22; ++i) - if (term_bits [i] && term_bits [i] < local_best_bits) { - local_best_bits = term_bits [i]; -// term_bits [i] = 0; - best_term = i - 3; - } - - if (!best_term) - break; - - term_bits [best_term + 3] = 0; - - info->dps [depth].term = best_term; - info->dps [depth].delta = delta; - decorr_stereo_buffer (info, samples, outsamples, wps->wphdr.block_samples, depth); - -// if (log2buffer (outsamples, wps->wphdr.block_samples * 2, 0) != local_best_bits) -// error_line ("data doesn't match!"); - - recurse_stereo (wpc, info, depth + 1, delta, local_best_bits); - } -} - -static void delta_stereo (WavpackContext *wpc, WavpackExtraInfo *info) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - int lower = FALSE; - int delta, d; - uint32_t bits; - - if (wps->decorr_passes [0].term) - delta = wps->decorr_passes [0].delta; - else - return; - - for (d = delta - 1; d >= 0; --d) { - int i; - - if (!d && (wps->wphdr.flags & HYBRID_FLAG)) - break; - - for (i = 0; i < info->nterms && wps->decorr_passes [i].term; ++i) { - info->dps [i].term = wps->decorr_passes [i].term; - info->dps [i].delta = d; - decorr_stereo_buffer (info, info->sampleptrs [i], info->sampleptrs [i+1], wps->wphdr.block_samples, i); - } - - bits = LOG2BUFFER (info->sampleptrs [i], wps->wphdr.block_samples * 2, info->log_limit); - - if (bits != (uint32_t) -1) - bits += log2overhead (wps->decorr_passes [0].term, i); - - if (bits < info->best_bits) { - lower = TRUE; - info->best_bits = bits; - CLEAR (wps->decorr_passes); - memcpy (wps->decorr_passes, info->dps, sizeof (info->dps [0]) * i); - memcpy (info->sampleptrs [info->nterms + 1], info->sampleptrs [i], wps->wphdr.block_samples * 8); - } - else - break; - } - - for (d = delta + 1; !lower && d <= 7; ++d) { - int i; - - for (i = 0; i < info->nterms && wps->decorr_passes [i].term; ++i) { - info->dps [i].term = wps->decorr_passes [i].term; - info->dps [i].delta = d; - decorr_stereo_buffer (info, info->sampleptrs [i], info->sampleptrs [i+1], wps->wphdr.block_samples, i); - } - - bits = LOG2BUFFER (info->sampleptrs [i], wps->wphdr.block_samples * 2, info->log_limit); - - if (bits != (uint32_t) -1) - bits += log2overhead (wps->decorr_passes [0].term, i); - - if (bits < info->best_bits) { - info->best_bits = bits; - CLEAR (wps->decorr_passes); - memcpy (wps->decorr_passes, info->dps, sizeof (info->dps [0]) * i); - memcpy (info->sampleptrs [info->nterms + 1], info->sampleptrs [i], wps->wphdr.block_samples * 8); - } - else - break; - } -} - -static void sort_stereo (WavpackContext *wpc, WavpackExtraInfo *info) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - int reversed = TRUE; - uint32_t bits; - - while (reversed) { - int ri, i; - - memcpy (info->dps, wps->decorr_passes, sizeof (wps->decorr_passes)); - reversed = FALSE; - - for (ri = 0; ri < info->nterms && wps->decorr_passes [ri].term; ++ri) { - - if (ri + 1 >= info->nterms || !wps->decorr_passes [ri+1].term) - break; - - if (wps->decorr_passes [ri].term == wps->decorr_passes [ri+1].term) { - decorr_stereo_buffer (info, info->sampleptrs [ri], info->sampleptrs [ri+1], wps->wphdr.block_samples, ri); - continue; - } - - info->dps [ri] = wps->decorr_passes [ri+1]; - info->dps [ri+1] = wps->decorr_passes [ri]; - - for (i = ri; i < info->nterms && wps->decorr_passes [i].term; ++i) - decorr_stereo_buffer (info, info->sampleptrs [i], info->sampleptrs [i+1], wps->wphdr.block_samples, i); - - bits = LOG2BUFFER (info->sampleptrs [i], wps->wphdr.block_samples * 2, info->log_limit); - - if (bits != (uint32_t) -1) - bits += log2overhead (wps->decorr_passes [0].term, i); - - if (bits < info->best_bits) { - reversed = TRUE; - info->best_bits = bits; - CLEAR (wps->decorr_passes); - memcpy (wps->decorr_passes, info->dps, sizeof (info->dps [0]) * i); - memcpy (info->sampleptrs [info->nterms + 1], info->sampleptrs [i], wps->wphdr.block_samples * 8); - } - else { - info->dps [ri] = wps->decorr_passes [ri]; - info->dps [ri+1] = wps->decorr_passes [ri+1]; - decorr_stereo_buffer (info, info->sampleptrs [ri], info->sampleptrs [ri+1], wps->wphdr.block_samples, ri); - } - } - } -} - -static const uint32_t xtable [] = { 91, 123, 187, 251 }; - -static void analyze_stereo (WavpackContext *wpc, int32_t *samples, int do_samples) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - WavpackExtraInfo info; - int i; - -#ifdef LOG_LIMIT - info.log_limit = (((wps->wphdr.flags & MAG_MASK) >> MAG_LSB) + 4) * 256; - - if (info.log_limit > LOG_LIMIT) - info.log_limit = LOG_LIMIT; -#else - info.log_limit = 0; -#endif - - if (wpc->config.flags & (CONFIG_HIGH_FLAG | CONFIG_VERY_HIGH_FLAG)) - wpc->config.extra_flags = xtable [wpc->config.xmode - 4]; - else - wpc->config.extra_flags = xtable [wpc->config.xmode - 3]; - - info.nterms = wps->num_terms; - - for (i = 0; i < info.nterms + 2; ++i) - info.sampleptrs [i] = malloc (wps->wphdr.block_samples * 8); - - memcpy (info.dps, wps->decorr_passes, sizeof (info.dps)); - memcpy (info.sampleptrs [0], samples, wps->wphdr.block_samples * 8); - - for (i = 0; i < info.nterms && info.dps [i].term; ++i) - decorr_stereo_pass (info.sampleptrs [i], info.sampleptrs [i + 1], wps->wphdr.block_samples, info.dps + i, 1); - - info.best_bits = LOG2BUFFER (info.sampleptrs [info.nterms], wps->wphdr.block_samples * 2, 0) * 1; - info.best_bits += log2overhead (info.dps [0].term, i); - memcpy (info.sampleptrs [info.nterms + 1], info.sampleptrs [i], wps->wphdr.block_samples * 8); - - if (wpc->config.extra_flags & EXTRA_BRANCHES) - recurse_stereo (wpc, &info, 0, (int) floor (wps->delta_decay + 0.5), - LOG2BUFFER (info.sampleptrs [0], wps->wphdr.block_samples * 2, 0)); - - if (wpc->config.extra_flags & EXTRA_SORT_FIRST) - sort_stereo (wpc, &info); - - if (wpc->config.extra_flags & EXTRA_TRY_DELTAS) { - delta_stereo (wpc, &info); - - if ((wpc->config.extra_flags & EXTRA_ADJUST_DELTAS) && wps->decorr_passes [0].term) - wps->delta_decay = (float)((wps->delta_decay * 2.0 + wps->decorr_passes [0].delta) / 3.0); - else - wps->delta_decay = 2.0; - } - - if (wpc->config.extra_flags & EXTRA_SORT_LAST) - sort_stereo (wpc, &info); - - if (do_samples) - memcpy (samples, info.sampleptrs [info.nterms + 1], wps->wphdr.block_samples * 8); - - for (i = 0; i < info.nterms; ++i) - if (!wps->decorr_passes [i].term) - break; - - wps->num_terms = i; - - for (i = 0; i < info.nterms + 2; ++i) - free (info.sampleptrs [i]); -} - -static void stereo_add_noise (WavpackStream *wps, int32_t *lptr, int32_t *rptr) -{ - int shaping_weight, new = wps->wphdr.flags & NEW_SHAPING; - short *shaping_array = wps->dc.shaping_array; - int32_t error [2], temp, cnt; - - scan_word (wps, rptr, wps->wphdr.block_samples, -1); - cnt = wps->wphdr.block_samples; - CLEAR (error); - - if (wps->wphdr.flags & HYBRID_SHAPE) { - while (cnt--) { - if (shaping_array) - shaping_weight = *shaping_array++; - else - shaping_weight = (wps->dc.shaping_acc [0] += wps->dc.shaping_delta [0]) >> 16; - - temp = -apply_weight (shaping_weight, error [0]); - - if (new && shaping_weight < 0 && temp) { - if (temp == error [0]) - temp = (temp < 0) ? temp + 1 : temp - 1; - - lptr [0] += (error [0] = nosend_word (wps, rptr [0], 0) - rptr [0] + temp); - } - else - lptr [0] += (error [0] = nosend_word (wps, rptr [0], 0) - rptr [0]) + temp; - - if (!shaping_array) - shaping_weight = (wps->dc.shaping_acc [1] += wps->dc.shaping_delta [1]) >> 16; - - temp = -apply_weight (shaping_weight, error [1]); - - if (new && shaping_weight < 0 && temp) { - if (temp == error [1]) - temp = (temp < 0) ? temp + 1 : temp - 1; - - lptr [1] += (error [1] = nosend_word (wps, rptr [1], 1) - rptr [1] + temp); - } - else - lptr [1] += (error [1] = nosend_word (wps, rptr [1], 1) - rptr [1]) + temp; - - lptr += 2; - rptr += 2; - } - - if (!shaping_array) { - wps->dc.shaping_acc [0] -= wps->dc.shaping_delta [0] * wps->wphdr.block_samples; - wps->dc.shaping_acc [1] -= wps->dc.shaping_delta [1] * wps->wphdr.block_samples; - } - } - else - while (cnt--) { - lptr [0] += nosend_word (wps, rptr [0], 0) - rptr [0]; - lptr [1] += nosend_word (wps, rptr [1], 1) - rptr [1]; - lptr += 2; - rptr += 2; - } -} - -void execute_stereo (WavpackContext *wpc, int32_t *samples, int no_history, int do_samples) -{ - int32_t *temp_buffer [2], *best_buffer, *noisy_buffer = NULL, *js_buffer = NULL; - struct decorr_pass temp_decorr_pass, save_decorr_passes [MAX_NTERMS]; - WavpackStream *wps = wpc->streams [wpc->current_stream]; - int32_t num_samples = wps->wphdr.block_samples; - int32_t buf_size = sizeof (int32_t) * num_samples * 2; - uint32_t best_size = (uint32_t) -1, size; - int log_limit, force_js = 0, force_ts = 0, pi, i; - -#ifdef SKIP_DECORRELATION - CLEAR (wps->decorr_passes); - wps->num_terms = 0; - return; -#endif - - for (i = 0; i < num_samples * 2; ++i) - if (samples [i]) - break; - - if (i == num_samples * 2) { - wps->wphdr.flags &= ~((uint32_t) JOINT_STEREO); - CLEAR (wps->decorr_passes); - wps->num_terms = 0; - init_words (wps); - return; - } - -#ifdef LOG_LIMIT - log_limit = (((wps->wphdr.flags & MAG_MASK) >> MAG_LSB) + 4) * 256; - - if (log_limit > LOG_LIMIT) - log_limit = LOG_LIMIT; -#else - log_limit = 0; -#endif - - if (wpc->config.flags & CONFIG_JOINT_OVERRIDE) { - if (wps->wphdr.flags & JOINT_STEREO) - force_js = 1; - else - force_ts = 1; - } - - CLEAR (save_decorr_passes); - temp_buffer [0] = malloc (buf_size); - temp_buffer [1] = malloc (buf_size); - best_buffer = malloc (buf_size); - - if (wps->num_passes > 1 && (wps->wphdr.flags & HYBRID_FLAG)) { - CLEAR (temp_decorr_pass); - temp_decorr_pass.delta = 2; - temp_decorr_pass.term = 18; - - decorr_stereo_pass (samples, temp_buffer [0], - num_samples > 2048 ? 2048 : num_samples, &temp_decorr_pass, -1); - - reverse_decorr (&temp_decorr_pass); - decorr_stereo_pass (samples, temp_buffer [0], num_samples, &temp_decorr_pass, 1); - CLEAR (temp_decorr_pass); - temp_decorr_pass.delta = 2; - temp_decorr_pass.term = 17; - - decorr_stereo_pass (temp_buffer [0], temp_buffer [1], - num_samples > 2048 ? 2048 : num_samples, &temp_decorr_pass, -1); - - decorr_stereo_pass (temp_buffer [0], temp_buffer [1], num_samples, &temp_decorr_pass, 1); - noisy_buffer = malloc (buf_size); - memcpy (noisy_buffer, samples, buf_size); - stereo_add_noise (wps, noisy_buffer, temp_buffer [1]); - no_history = 1; - } - - if (no_history || wps->num_passes >= 7) - wps->best_decorr = wps->mask_decorr = 0; - - for (pi = 0; pi < wps->num_passes;) { - const WavpackDecorrSpec *wpds; - int nterms, c, j; - - if (!pi) - c = wps->best_decorr; - else { - if (wps->mask_decorr == 0) - c = 0; - else - c = (wps->best_decorr & (wps->mask_decorr - 1)) | wps->mask_decorr; - - if (c == wps->best_decorr) { - wps->mask_decorr = wps->mask_decorr ? ((wps->mask_decorr << 1) & (wps->num_decorrs - 1)) : 1; - continue; - } - } - - wpds = &wps->decorr_specs [c]; - nterms = (int) strlen ((char *) wpds->terms); - - while (1) { - if (force_js || (wpds->joint_stereo && !force_ts)) { - if (!js_buffer) { - int32_t *lptr, cnt = num_samples; - - lptr = js_buffer = malloc (buf_size); - memcpy (js_buffer, noisy_buffer ? noisy_buffer : samples, buf_size); - - while (cnt--) { - lptr [1] += ((lptr [0] -= lptr [1]) >> 1); - lptr += 2; - } - } - - memcpy (temp_buffer [0], js_buffer, buf_size); - } - else - memcpy (temp_buffer [0], noisy_buffer ? noisy_buffer : samples, buf_size); - - CLEAR (save_decorr_passes); - - for (j = 0; j < nterms; ++j) { - CLEAR (temp_decorr_pass); - temp_decorr_pass.delta = wpds->delta; - temp_decorr_pass.term = wpds->terms [j]; - - if (temp_decorr_pass.term < 0 && !(wps->wphdr.flags & CROSS_DECORR)) - temp_decorr_pass.term = -3; - - decorr_stereo_pass (temp_buffer [j&1], temp_buffer [~j&1], - num_samples > 2048 ? 2048 : num_samples, &temp_decorr_pass, -1); - - if (j) { - CLEAR (temp_decorr_pass.samples_A); - CLEAR (temp_decorr_pass.samples_B); - } - else - reverse_decorr (&temp_decorr_pass); - - memcpy (save_decorr_passes + j, &temp_decorr_pass, sizeof (struct decorr_pass)); - decorr_stereo_pass (temp_buffer [j&1], temp_buffer [~j&1], num_samples, &temp_decorr_pass, 1); - } - - size = LOG2BUFFER (temp_buffer [j&1], num_samples * 2, log_limit); - - if (size == (uint32_t) -1 && nterms) - nterms >>= 1; - else - break; - } - - size += log2overhead (wpds->terms [0], nterms); - - if (size < best_size) { - memcpy (best_buffer, temp_buffer [j&1], buf_size); - memcpy (wps->decorr_passes, save_decorr_passes, sizeof (struct decorr_pass) * MAX_NTERMS); - wps->num_terms = nterms; - wps->best_decorr = c; - best_size = size; - } - - if (pi++) - wps->mask_decorr = wps->mask_decorr ? ((wps->mask_decorr << 1) & (wps->num_decorrs - 1)) : 1; - } - - if (force_js || (wps->decorr_specs [wps->best_decorr].joint_stereo && !force_ts)) - wps->wphdr.flags |= JOINT_STEREO; - else - wps->wphdr.flags &= ~((uint32_t) JOINT_STEREO); - - if (wpc->config.xmode > 3) { - if (wps->wphdr.flags & JOINT_STEREO) { - analyze_stereo (wpc, js_buffer, do_samples); - - if (do_samples) - memcpy (samples, js_buffer, buf_size); - } - else if (noisy_buffer) { - analyze_stereo (wpc, noisy_buffer, do_samples); - - if (do_samples) - memcpy (samples, noisy_buffer, buf_size); - } - else - analyze_stereo (wpc, samples, do_samples); - } - else if (do_samples) - memcpy (samples, best_buffer, buf_size); - - if (wpc->config.xmode > 3 || no_history || wps->joint_stereo != wps->decorr_specs [wps->best_decorr].joint_stereo) { - wps->joint_stereo = wps->decorr_specs [wps->best_decorr].joint_stereo; - scan_word (wps, best_buffer, num_samples, -1); - } - - if (noisy_buffer) - free (noisy_buffer); - - if (js_buffer) - free (js_buffer); - - free (temp_buffer [1]); - free (temp_buffer [0]); - free (best_buffer); - -#ifdef EXTRA_DUMP - if (1) { - char string [256], substring [20]; - int i; - - sprintf (string, "%s: terms =", - (wps->wphdr.flags & JOINT_STEREO) ? "JS" : "TS"); - - for (i = 0; i < wps->num_terms; ++i) { - if (wps->decorr_passes [i].term) { - if (i && wps->decorr_passes [i-1].delta == wps->decorr_passes [i].delta) - sprintf (substring, " %d", wps->decorr_passes [i].term); - else - sprintf (substring, " %d->%d", wps->decorr_passes [i].term, - wps->decorr_passes [i].delta); - } - else - sprintf (substring, " *"); - - strcat (string, substring); - } - - error_line (string); - } -#endif -} - diff --git a/Frameworks/WavPack/Files/md5.c b/Frameworks/WavPack/Files/md5.c deleted file mode 100644 index 8d3240b0c..000000000 --- a/Frameworks/WavPack/Files/md5.c +++ /dev/null @@ -1,291 +0,0 @@ -/* - * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc. - * MD5 Message-Digest Algorithm (RFC 1321). - * - * Homepage: - * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5 - * - * Author: - * Alexander Peslyak, better known as Solar Designer - * - * This software was written by Alexander Peslyak in 2001. No copyright is - * claimed, and the software is hereby placed in the public domain. - * In case this attempt to disclaim copyright and place the software in the - * public domain is deemed null and void, then the software is - * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the - * general public under the following terms: - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted. - * - * There's ABSOLUTELY NO WARRANTY, express or implied. - * - * (This is a heavily cut-down "BSD license".) - * - * This differs from Colin Plumb's older public domain implementation in that - * no exactly 32-bit integer data type is required (any 32-bit or wider - * unsigned integer data type will do), there's no compile-time endianness - * configuration, and the function prototypes match OpenSSL's. No code from - * Colin Plumb's implementation has been reused; this comment merely compares - * the properties of the two independent implementations. - * - * The primary goals of this implementation are portability and ease of use. - * It is meant to be fast, but not as fast as possible. Some known - * optimizations are not included to reduce source code size and avoid - * compile-time configuration. - */ - -#ifndef HAVE_LIBCRYPTO - -#include - -#include "md5.h" - -/* - * The basic MD5 functions. - * - * F and G are optimized compared to their RFC 1321 definitions for - * architectures that lack an AND-NOT instruction, just like in Colin Plumb's - * implementation. - */ -#define F(x, y, z) ((z) ^ ((x) & ((y) ^ (z)))) -#define G(x, y, z) ((y) ^ ((z) & ((x) ^ (y)))) -#define H(x, y, z) (((x) ^ (y)) ^ (z)) -#define H2(x, y, z) ((x) ^ ((y) ^ (z))) -#define I(x, y, z) ((y) ^ ((x) | ~(z))) - -/* - * The MD5 transformation for all four rounds. - */ -#define STEP(f, a, b, c, d, x, t, s) \ - (a) += f((b), (c), (d)) + (x) + (t); \ - (a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \ - (a) += (b); - -/* - * SET reads 4 input bytes in little-endian byte order and stores them in a - * properly aligned word in host byte order. - * - * The check for little-endian architectures that tolerate unaligned memory - * accesses is just an optimization. Nothing will break if it fails to detect - * a suitable architecture. - * - * Unfortunately, this optimization may be a C strict aliasing rules violation - * if the caller's data buffer has effective type that cannot be aliased by - * MD5_u32plus. In practice, this problem may occur if these MD5 routines are - * inlined into a calling function, or with future and dangerously advanced - * link-time optimizations. For the time being, keeping these MD5 routines in - * their own translation unit avoids the problem. - */ -#if defined(__i386__) || defined(__x86_64__) || defined(__vax__) -#define SET(n) \ - (*(MD5_u32plus *)&ptr[(n) * 4]) -#define GET(n) \ - SET(n) -#else -#define SET(n) \ - (ctx->block[(n)] = \ - (MD5_u32plus)ptr[(n) * 4] | \ - ((MD5_u32plus)ptr[(n) * 4 + 1] << 8) | \ - ((MD5_u32plus)ptr[(n) * 4 + 2] << 16) | \ - ((MD5_u32plus)ptr[(n) * 4 + 3] << 24)) -#define GET(n) \ - (ctx->block[(n)]) -#endif - -/* - * This processes one or more 64-byte data blocks, but does NOT update the bit - * counters. There are no alignment requirements. - */ -static const void *body(MD5_CTX *ctx, const void *data, unsigned long size) -{ - const unsigned char *ptr; - MD5_u32plus a, b, c, d; - MD5_u32plus saved_a, saved_b, saved_c, saved_d; - - ptr = (const unsigned char *)data; - - a = ctx->a; - b = ctx->b; - c = ctx->c; - d = ctx->d; - - do { - saved_a = a; - saved_b = b; - saved_c = c; - saved_d = d; - -/* Round 1 */ - STEP(F, a, b, c, d, SET(0), 0xd76aa478, 7) - STEP(F, d, a, b, c, SET(1), 0xe8c7b756, 12) - STEP(F, c, d, a, b, SET(2), 0x242070db, 17) - STEP(F, b, c, d, a, SET(3), 0xc1bdceee, 22) - STEP(F, a, b, c, d, SET(4), 0xf57c0faf, 7) - STEP(F, d, a, b, c, SET(5), 0x4787c62a, 12) - STEP(F, c, d, a, b, SET(6), 0xa8304613, 17) - STEP(F, b, c, d, a, SET(7), 0xfd469501, 22) - STEP(F, a, b, c, d, SET(8), 0x698098d8, 7) - STEP(F, d, a, b, c, SET(9), 0x8b44f7af, 12) - STEP(F, c, d, a, b, SET(10), 0xffff5bb1, 17) - STEP(F, b, c, d, a, SET(11), 0x895cd7be, 22) - STEP(F, a, b, c, d, SET(12), 0x6b901122, 7) - STEP(F, d, a, b, c, SET(13), 0xfd987193, 12) - STEP(F, c, d, a, b, SET(14), 0xa679438e, 17) - STEP(F, b, c, d, a, SET(15), 0x49b40821, 22) - -/* Round 2 */ - STEP(G, a, b, c, d, GET(1), 0xf61e2562, 5) - STEP(G, d, a, b, c, GET(6), 0xc040b340, 9) - STEP(G, c, d, a, b, GET(11), 0x265e5a51, 14) - STEP(G, b, c, d, a, GET(0), 0xe9b6c7aa, 20) - STEP(G, a, b, c, d, GET(5), 0xd62f105d, 5) - STEP(G, d, a, b, c, GET(10), 0x02441453, 9) - STEP(G, c, d, a, b, GET(15), 0xd8a1e681, 14) - STEP(G, b, c, d, a, GET(4), 0xe7d3fbc8, 20) - STEP(G, a, b, c, d, GET(9), 0x21e1cde6, 5) - STEP(G, d, a, b, c, GET(14), 0xc33707d6, 9) - STEP(G, c, d, a, b, GET(3), 0xf4d50d87, 14) - STEP(G, b, c, d, a, GET(8), 0x455a14ed, 20) - STEP(G, a, b, c, d, GET(13), 0xa9e3e905, 5) - STEP(G, d, a, b, c, GET(2), 0xfcefa3f8, 9) - STEP(G, c, d, a, b, GET(7), 0x676f02d9, 14) - STEP(G, b, c, d, a, GET(12), 0x8d2a4c8a, 20) - -/* Round 3 */ - STEP(H, a, b, c, d, GET(5), 0xfffa3942, 4) - STEP(H2, d, a, b, c, GET(8), 0x8771f681, 11) - STEP(H, c, d, a, b, GET(11), 0x6d9d6122, 16) - STEP(H2, b, c, d, a, GET(14), 0xfde5380c, 23) - STEP(H, a, b, c, d, GET(1), 0xa4beea44, 4) - STEP(H2, d, a, b, c, GET(4), 0x4bdecfa9, 11) - STEP(H, c, d, a, b, GET(7), 0xf6bb4b60, 16) - STEP(H2, b, c, d, a, GET(10), 0xbebfbc70, 23) - STEP(H, a, b, c, d, GET(13), 0x289b7ec6, 4) - STEP(H2, d, a, b, c, GET(0), 0xeaa127fa, 11) - STEP(H, c, d, a, b, GET(3), 0xd4ef3085, 16) - STEP(H2, b, c, d, a, GET(6), 0x04881d05, 23) - STEP(H, a, b, c, d, GET(9), 0xd9d4d039, 4) - STEP(H2, d, a, b, c, GET(12), 0xe6db99e5, 11) - STEP(H, c, d, a, b, GET(15), 0x1fa27cf8, 16) - STEP(H2, b, c, d, a, GET(2), 0xc4ac5665, 23) - -/* Round 4 */ - STEP(I, a, b, c, d, GET(0), 0xf4292244, 6) - STEP(I, d, a, b, c, GET(7), 0x432aff97, 10) - STEP(I, c, d, a, b, GET(14), 0xab9423a7, 15) - STEP(I, b, c, d, a, GET(5), 0xfc93a039, 21) - STEP(I, a, b, c, d, GET(12), 0x655b59c3, 6) - STEP(I, d, a, b, c, GET(3), 0x8f0ccc92, 10) - STEP(I, c, d, a, b, GET(10), 0xffeff47d, 15) - STEP(I, b, c, d, a, GET(1), 0x85845dd1, 21) - STEP(I, a, b, c, d, GET(8), 0x6fa87e4f, 6) - STEP(I, d, a, b, c, GET(15), 0xfe2ce6e0, 10) - STEP(I, c, d, a, b, GET(6), 0xa3014314, 15) - STEP(I, b, c, d, a, GET(13), 0x4e0811a1, 21) - STEP(I, a, b, c, d, GET(4), 0xf7537e82, 6) - STEP(I, d, a, b, c, GET(11), 0xbd3af235, 10) - STEP(I, c, d, a, b, GET(2), 0x2ad7d2bb, 15) - STEP(I, b, c, d, a, GET(9), 0xeb86d391, 21) - - a += saved_a; - b += saved_b; - c += saved_c; - d += saved_d; - - ptr += 64; - } while (size -= 64); - - ctx->a = a; - ctx->b = b; - ctx->c = c; - ctx->d = d; - - return ptr; -} - -void MD5_Init(MD5_CTX *ctx) -{ - ctx->a = 0x67452301; - ctx->b = 0xefcdab89; - ctx->c = 0x98badcfe; - ctx->d = 0x10325476; - - ctx->lo = 0; - ctx->hi = 0; -} - -void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size) -{ - MD5_u32plus saved_lo; - unsigned long used, available; - - saved_lo = ctx->lo; - if ((ctx->lo = (saved_lo + size) & 0x1fffffff) < saved_lo) - ctx->hi++; - ctx->hi += size >> 29; - - used = saved_lo & 0x3f; - - if (used) { - available = 64 - used; - - if (size < available) { - memcpy(&ctx->buffer[used], data, size); - return; - } - - memcpy(&ctx->buffer[used], data, available); - data = (const unsigned char *)data + available; - size -= available; - body(ctx, ctx->buffer, 64); - } - - if (size >= 64) { - data = body(ctx, data, size & ~(unsigned long)0x3f); - size &= 0x3f; - } - - memcpy(ctx->buffer, data, size); -} - -#define OUT(dst, src) \ - (dst)[0] = (unsigned char)(src); \ - (dst)[1] = (unsigned char)((src) >> 8); \ - (dst)[2] = (unsigned char)((src) >> 16); \ - (dst)[3] = (unsigned char)((src) >> 24); - -void MD5_Final(unsigned char *result, MD5_CTX *ctx) -{ - unsigned long used, available; - - used = ctx->lo & 0x3f; - - ctx->buffer[used++] = 0x80; - - available = 64 - used; - - if (available < 8) { - memset(&ctx->buffer[used], 0, available); - body(ctx, ctx->buffer, 64); - used = 0; - available = 64; - } - - memset(&ctx->buffer[used], 0, available - 8); - - ctx->lo <<= 3; - OUT(&ctx->buffer[56], ctx->lo) - OUT(&ctx->buffer[60], ctx->hi) - - body(ctx, ctx->buffer, 64); - - OUT(&result[0], ctx->a) - OUT(&result[4], ctx->b) - OUT(&result[8], ctx->c) - OUT(&result[12], ctx->d) - - memset(ctx, 0, sizeof(*ctx)); -} - -#endif diff --git a/Frameworks/WavPack/Files/md5.h b/Frameworks/WavPack/Files/md5.h deleted file mode 100644 index d81083043..000000000 --- a/Frameworks/WavPack/Files/md5.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc. - * MD5 Message-Digest Algorithm (RFC 1321). - * - * Homepage: - * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5 - * - * Author: - * Alexander Peslyak, better known as Solar Designer - * - * This software was written by Alexander Peslyak in 2001. No copyright is - * claimed, and the software is hereby placed in the public domain. - * In case this attempt to disclaim copyright and place the software in the - * public domain is deemed null and void, then the software is - * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the - * general public under the following terms: - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted. - * - * There's ABSOLUTELY NO WARRANTY, express or implied. - * - * See md5.c for more information. - */ - -#ifdef HAVE_LIBCRYPTO -#include -#elif !defined(_MD5_H) -#define _MD5_H - -/* Any 32-bit or wider unsigned integer data type will do */ -typedef unsigned int MD5_u32plus; - -typedef struct { - MD5_u32plus lo, hi; - MD5_u32plus a, b, c, d; - unsigned char buffer[64]; - MD5_u32plus block[16]; -} MD5_CTX; - -extern void MD5_Init(MD5_CTX *ctx); -extern void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size); -extern void MD5_Final(unsigned char *result, MD5_CTX *ctx); - -#endif diff --git a/Frameworks/WavPack/Files/open_filename.c b/Frameworks/WavPack/Files/open_filename.c deleted file mode 100644 index cea13e3b9..000000000 --- a/Frameworks/WavPack/Files/open_filename.c +++ /dev/null @@ -1,304 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// open_filename.c - -// This module provides all the code required to open an existing WavPack -// file, by filename, for reading. It does not contain the actual code to -// unpack audio data and this was done so that programs that just want to -// query WavPack files for information (like, for example, taggers) don't -// need to link in a lot of unnecessary code. -// -// To allow opening files by filename, this code provides an interface -// between the reader callback mechanism that WavPack uses internally and -// the standard fstream C library. Note that in applications that do not -// require opening files by filename, this module can be omitted (which -// might make building easier). -// -// For Unicode support on Windows, a flag has been added (OPEN_FILE_UTF8) -// that forces the filename string to be assumed UTF-8 and converted to -// a widechar string suitable for _wfopen(). Without this flag we revert -// to the previous behavior of simply calling fopen() and hoping that the -// local character set works. This is ignored on non-Windows platforms -// (which is okay because they are probably UTF-8 anyway). - -#ifdef _WIN32 -#define WIN32_LEAN_AND_MEAN -#include -#include -#endif - -#include -#include - -#include "wavpack_local.h" - -#include -#include - -#if (defined(__GNUC__) || defined(__sun)) && !defined(_WIN32) -#include -#endif - -#ifdef __OS2__ -#include -#endif - -#ifdef _WIN32 -#define fileno _fileno -static FILE *fopen_utf8 (const char *filename_utf8, const char *mode_utf8); -#if !defined(S_ISREG) && defined(S_IFMT) && defined(S_IFREG) -#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) -#endif -#endif - -#ifdef HAVE_FSEEKO -#define fseek fseeko -#define ftell ftello -#endif - -static int32_t read_bytes (void *id, void *data, int32_t bcount) -{ - return (int32_t) fread (data, 1, bcount, (FILE*) id); -} - -static int64_t get_pos (void *id) -{ -#ifdef _WIN32 - return _ftelli64 ((FILE*) id); -#else - return ftell ((FILE*) id); -#endif -} - -static int set_pos_abs (void *id, int64_t pos) -{ -#ifdef _WIN32 - return _fseeki64 (id, pos, SEEK_SET); -#else - return fseek (id, pos, SEEK_SET); -#endif -} - -static int set_pos_rel (void *id, int64_t delta, int mode) -{ -#ifdef _WIN32 - return _fseeki64 (id, delta, mode); -#else - return fseek (id, delta, mode); -#endif -} - -static int push_back_byte (void *id, int c) -{ - return ungetc (c, id); -} - -#ifdef _WIN32 - -static int64_t get_length (void *id) -{ - LARGE_INTEGER Size; - HANDLE fHandle; - - if (id == NULL) - return 0; - - fHandle = (HANDLE)_get_osfhandle(_fileno((FILE*) id)); - if (fHandle == INVALID_HANDLE_VALUE) - return 0; - - Size.u.LowPart = GetFileSize(fHandle, &Size.u.HighPart); - - if (Size.u.LowPart == INVALID_FILE_SIZE && GetLastError() != NO_ERROR) - return 0; - - return (int64_t)Size.QuadPart; -} - -#else - -static int64_t get_length (void *id) -{ - FILE *file = id; - struct stat statbuf; - - if (!file || fstat (fileno (file), &statbuf) || !S_ISREG(statbuf.st_mode)) - return 0; - - return statbuf.st_size; -} - -#endif - -static int can_seek (void *id) -{ - FILE *file = id; - struct stat statbuf; - - return file && !fstat (fileno (file), &statbuf) && S_ISREG(statbuf.st_mode); -} - -static int32_t write_bytes (void *id, void *data, int32_t bcount) -{ - return (int32_t) fwrite (data, 1, bcount, (FILE*) id); -} - -#ifdef _WIN32 - -static int truncate_here (void *id) -{ - FILE *file = id; - int64_t curr_pos = _ftelli64 (file); - - return _chsize_s (fileno (file), curr_pos); -} - -#else - -static int truncate_here (void *id) -{ - FILE *file = id; - off_t curr_pos = ftell (file); - - return ftruncate (fileno (file), curr_pos); -} - -#endif - -static int close_stream (void *id) -{ - return fclose ((FILE*) id); -} - -// int32_t (*read_bytes)(void *id, void *data, int32_t bcount); -// int32_t (*write_bytes)(void *id, void *data, int32_t bcount); -// int64_t (*get_pos)(void *id); // new signature for large files -// int (*set_pos_abs)(void *id, int64_t pos); // new signature for large files -// int (*set_pos_rel)(void *id, int64_t delta, int mode); // new signature for large files -// int (*push_back_byte)(void *id, int c); -// int64_t (*get_length)(void *id); // new signature for large files -// int (*can_seek)(void *id); -// int (*truncate_here)(void *id); // new function to truncate file at current position -// int (*close)(void *id); // new function to close file - -static WavpackStreamReader64 freader = { - read_bytes, write_bytes, get_pos, set_pos_abs, set_pos_rel, - push_back_byte, get_length, can_seek, truncate_here, close_stream -}; - -// This function attempts to open the specified WavPack file for reading. If -// this fails for any reason then an appropriate message is copied to "error" -// (which must accept 80 characters) and NULL is returned, otherwise a -// pointer to a WavpackContext structure is returned (which is used to call -// all other functions in this module). A filename beginning with "-" is -// assumed to be stdin. The "flags" argument has the following bit mask -// values to specify details of the open operation: - -// OPEN_WVC: attempt to open/read "correction" file -// OPEN_TAGS: attempt to read ID3v1 / APEv2 tags (requires seekable file) -// OPEN_WRAPPER: make audio wrapper available (i.e. RIFF) to caller -// OPEN_2CH_MAX: open only first stream of multichannel file (usually L/R) -// OPEN_NORMALIZE: normalize floating point data to +/- 1.0 (w/ offset exp) -// OPEN_STREAMING: blindly unpacks blocks w/o regard to header file position -// OPEN_EDIT_TAGS: allow editing of tags (file must be writable) -// OPEN_FILE_UTF8: assume infilename is UTF-8 encoded (Windows only) - -// Version 4.2 of the WavPack library adds the OPEN_STREAMING flag. This is -// essentially a "raw" mode where the library will simply decode any blocks -// fed it through the reader callback, regardless of where those blocks came -// from in a stream. The only requirement is that complete WavPack blocks are -// fed to the decoder (and this may require multiple blocks in multichannel -// mode) and that complete blocks are decoded (even if all samples are not -// actually required). All the blocks must contain the same number of channels -// and bit resolution, and the correction data must be either present or not. -// All other parameters may change from block to block (like lossy/lossless). -// Obviously, in this mode any seeking must be performed by the application -// (and again, decoding must start at the beginning of the block containing -// the seek sample). - -WavpackContext *WavpackOpenFileInput (const char *infilename, char *error, int flags, int norm_offset) -{ - char *file_mode = (flags & OPEN_EDIT_TAGS) ? "r+b" : "rb"; - FILE *(*fopen_func)(const char *, const char *) = fopen; - FILE *wv_id, *wvc_id; - -#ifdef _WIN32 - if (flags & OPEN_FILE_UTF8) - fopen_func = fopen_utf8; -#endif - - if (*infilename == '-') { - wv_id = stdin; -#if defined(_WIN32) - _setmode (fileno (stdin), O_BINARY); -#endif -#if defined(__OS2__) - setmode (fileno (stdin), O_BINARY); -#endif - } - else if ((wv_id = fopen_func (infilename, file_mode)) == NULL) { - if (error) strcpy (error, (flags & OPEN_EDIT_TAGS) ? "can't open file for editing" : "can't open file"); - return NULL; - } - - if (*infilename != '-' && (flags & OPEN_WVC)) { - char *in2filename = malloc (strlen (infilename) + 10); - - strcpy (in2filename, infilename); - strcat (in2filename, "c"); - wvc_id = fopen_func (in2filename, "rb"); - free (in2filename); - } - else - wvc_id = NULL; - - return WavpackOpenFileInputEx64 (&freader, wv_id, wvc_id, error, flags, norm_offset); -} - -#ifdef _WIN32 - -// The following code Copyright (c) 2004-2012 LoRd_MuldeR -// (see cli/win32_unicode_support.c for full license) - -static wchar_t *utf8_to_utf16(const char *input) -{ - wchar_t *Buffer; - int BuffSize = 0, Result = 0; - - BuffSize = MultiByteToWideChar(CP_UTF8, 0, input, -1, NULL, 0); - Buffer = (wchar_t*) malloc(sizeof(wchar_t) * BuffSize); - if(Buffer) - { - Result = MultiByteToWideChar(CP_UTF8, 0, input, -1, Buffer, BuffSize); - } - - return ((Result > 0) && (Result <= BuffSize)) ? Buffer : NULL; -} - - -static FILE *fopen_utf8(const char *filename_utf8, const char *mode_utf8) -{ - FILE *ret = NULL; - wchar_t *filename_utf16 = utf8_to_utf16(filename_utf8); - wchar_t *mode_utf16 = utf8_to_utf16(mode_utf8); - - if(filename_utf16 && mode_utf16) - { - ret = _wfopen(filename_utf16, mode_utf16); - } - - if(filename_utf16) free(filename_utf16); - if(mode_utf16) free(mode_utf16); - - return ret; -} - -#endif - - diff --git a/Frameworks/WavPack/Files/open_legacy.c b/Frameworks/WavPack/Files/open_legacy.c deleted file mode 100644 index 1b505d836..000000000 --- a/Frameworks/WavPack/Files/open_legacy.c +++ /dev/null @@ -1,114 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2019 David Bryant. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// open_legacy.c - -// This code provides an interface between the new reader callback mechanism that -// WavPack uses internally and the old reader callback functions that did not -// provide large file support. - -#include -#include - -#include "wavpack_local.h" - -typedef struct { - WavpackStreamReader *reader; - void *id; -} WavpackReaderTranslator; - -static int32_t trans_read_bytes (void *id, void *data, int32_t bcount) -{ - WavpackReaderTranslator *trans = (WavpackReaderTranslator *)id; - return trans->reader->read_bytes (trans->id, data, bcount); -} - -static int32_t trans_write_bytes (void *id, void *data, int32_t bcount) -{ - WavpackReaderTranslator *trans = (WavpackReaderTranslator *)id; - return trans->reader->write_bytes (trans->id, data, bcount); -} - -static int64_t trans_get_pos (void *id) -{ - WavpackReaderTranslator *trans = (WavpackReaderTranslator *)id; - return trans->reader->get_pos (trans->id); -} - -static int trans_set_pos_abs (void *id, int64_t pos) -{ - WavpackReaderTranslator *trans = (WavpackReaderTranslator *)id; - return trans->reader->set_pos_abs (trans->id, (uint32_t) pos); -} - -static int trans_set_pos_rel (void *id, int64_t delta, int mode) -{ - WavpackReaderTranslator *trans = (WavpackReaderTranslator *)id; - return trans->reader->set_pos_rel (trans->id, (int32_t) delta, mode); -} - -static int trans_push_back_byte (void *id, int c) -{ - WavpackReaderTranslator *trans = (WavpackReaderTranslator *)id; - return trans->reader->push_back_byte (trans->id, c); -} - -static int64_t trans_get_length (void *id) -{ - WavpackReaderTranslator *trans = (WavpackReaderTranslator *)id; - return trans->reader->get_length (trans->id); -} - -static int trans_can_seek (void *id) -{ - WavpackReaderTranslator *trans = (WavpackReaderTranslator *)id; - return trans->reader->can_seek (trans->id); -} - -static int trans_close_stream (void *id) -{ - free (id); - return 0; -} - -static WavpackStreamReader64 trans_reader = { - trans_read_bytes, trans_write_bytes, trans_get_pos, trans_set_pos_abs, trans_set_pos_rel, - trans_push_back_byte, trans_get_length, trans_can_seek, NULL, trans_close_stream -}; - -// This function is identical to WavpackOpenFileInput64() except that instead -// of providing the new 64-bit reader callbacks, the old reader callbacks are -// utilized and a translation layer is employed. It is provided as a compatibility -// function for existing applications. To ensure that streaming applications using -// this function continue to work, the OPEN_NO_CHECKSUM flag is forced on when -// the OPEN_STREAMING flag is set. - -WavpackContext *WavpackOpenFileInputEx (WavpackStreamReader *reader, void *wv_id, void *wvc_id, char *error, int flags, int norm_offset) -{ - WavpackReaderTranslator *trans_wv = NULL, *trans_wvc = NULL; - - // this prevents existing streaming applications from failing if they try to pass - // in blocks that have been modified from the original (e.g., Matroska blocks) - - if (flags & OPEN_STREAMING) - flags |= OPEN_NO_CHECKSUM; - - if (wv_id) { - trans_wv = (WavpackReaderTranslator *)malloc (sizeof (WavpackReaderTranslator)); - trans_wv->reader = reader; - trans_wv->id = wv_id; - } - - if (wvc_id) { - trans_wvc = (WavpackReaderTranslator *)malloc (sizeof (WavpackReaderTranslator)); - trans_wvc->reader = reader; - trans_wvc->id = wvc_id; - } - - return WavpackOpenFileInputEx64 (&trans_reader, trans_wv, trans_wvc, error, flags, norm_offset); -} diff --git a/Frameworks/WavPack/Files/open_raw.c b/Frameworks/WavPack/Files/open_raw.c deleted file mode 100644 index 69dc8f396..000000000 --- a/Frameworks/WavPack/Files/open_raw.c +++ /dev/null @@ -1,315 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2019 David Bryant. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// open_raw.c - -// This code provides the ability to decode WavPack frames directly from -// memory for use in a streaming application. It can handle full blocks -// or the headerless block data provided by Matroska and the DirectShow -// WavPack splitter. For information about how Matroska stores WavPack, -// see: https://www.matroska.org/technical/specs/codecid/wavpack.html - -#include -#include - -#include "wavpack_local.h" - -typedef struct { - unsigned char *sptr, *dptr, *eptr, free_required; -} RawSegment; - -typedef struct { - RawSegment *segments; - int num_segments, curr_segment; - unsigned char ungetc_char, ungetc_flag; -} WavpackRawContext; - -static int32_t raw_read_bytes (void *id, void *data, int32_t bcount) -{ - WavpackRawContext *rcxt = id; - unsigned char *outptr = data; - - while (bcount) { - if (rcxt->ungetc_flag) { - *outptr++ = rcxt->ungetc_char; - rcxt->ungetc_flag = 0; - bcount--; - } - else if (rcxt->curr_segment < rcxt->num_segments) { - RawSegment *segptr = rcxt->segments + rcxt->curr_segment; - int bytes_to_copy = (int)(segptr->eptr - segptr->dptr); - - if (bytes_to_copy > bcount) - bytes_to_copy = bcount; - - memcpy (outptr, segptr->dptr, bytes_to_copy); - outptr += bytes_to_copy; - bcount -= bytes_to_copy; - - if ((segptr->dptr += bytes_to_copy) == segptr->eptr) - rcxt->curr_segment++; - } - else - break; - } - - return (int32_t)(outptr - (unsigned char *) data); -} - -static int32_t raw_write_bytes (void *id, void *data, int32_t bcount) -{ - return 0; -} - -static int64_t raw_get_pos (void *id) -{ - return 0; -} - -static int raw_set_pos_abs (void *id, int64_t pos) -{ - return 0; -} - -static int raw_set_pos_rel (void *id, int64_t delta, int mode) -{ - return 0; -} - -static int raw_push_back_byte (void *id, int c) -{ - WavpackRawContext *rcxt = id; - rcxt->ungetc_char = c; - rcxt->ungetc_flag = 1; - return c; -} - -static int64_t raw_get_length (void *id) -{ - return 0; -} - -static int raw_can_seek (void *id) -{ - return 0; -} - -static int raw_close_stream (void *id) -{ - WavpackRawContext *rcxt = id; - int i; - - if (rcxt) { - for (i = 0; i < rcxt->num_segments; ++i) - if (rcxt->segments [i].sptr && rcxt->segments [i].free_required) - free (rcxt->segments [i].sptr); - - if (rcxt->segments) free (rcxt->segments); - free (rcxt); - } - - return 0; -} - -static WavpackStreamReader64 raw_reader = { - raw_read_bytes, raw_write_bytes, raw_get_pos, raw_set_pos_abs, raw_set_pos_rel, - raw_push_back_byte, raw_get_length, raw_can_seek, NULL, raw_close_stream -}; - -// This function is similar to WavpackOpenFileInput() except that instead of -// providing a filename to open, the caller provides pointers to buffered -// WavPack frames (both standard and, optionally, correction data). It -// decodes only a single frame. Note that in this context, a "frame" is a -// collection of WavPack blocks that represent all the channels present. In -// the case of mono or [most] stereo streams, this is the same thing, but -// for multichannel streams each frame consists of several WavPack blocks -// (which can contain only 1 or 2 channels). - -WavpackContext *WavpackOpenRawDecoder ( - void *main_data, int32_t main_size, - void *corr_data, int32_t corr_size, - int16_t version, char *error, int flags, int norm_offset) -{ - WavpackRawContext *raw_wv = NULL, *raw_wvc = NULL; - - // if the WavPack data does not contain headers we assume Matroska-style storage - // and recreate the missing headers - - if (strncmp (main_data, "wvpk", 4)) { - uint32_t multiple_blocks = 0, block_size, block_samples = 0, wphdr_flags, crc; - uint32_t main_bytes = main_size, corr_bytes = corr_size; - unsigned char *mcp = main_data; - unsigned char *ccp = corr_data; - int msi = 0, csi = 0; - - raw_wv = malloc (sizeof (WavpackRawContext)); - memset (raw_wv, 0, sizeof (WavpackRawContext)); - - if (corr_data && corr_size) { - raw_wvc = malloc (sizeof (WavpackRawContext)); - memset (raw_wvc, 0, sizeof (WavpackRawContext)); - } - - while (main_bytes >= 12) { - if (!msi) { - block_samples = *mcp++; - block_samples += *mcp++ << 8; - block_samples += *mcp++ << 16; - block_samples += *mcp++ << 24; - main_bytes -= 4; - } - - wphdr_flags = *mcp++; - wphdr_flags += *mcp++ << 8; - wphdr_flags += *mcp++ << 16; - wphdr_flags += *mcp++ << 24; - main_bytes -= 4; - - // if the first block does not have the FINAL_BLOCK flag set, - // then there are multiple blocks - - if (!msi && !(wphdr_flags & FINAL_BLOCK)) - multiple_blocks = 1; - - crc = *mcp++; - crc += *mcp++ << 8; - crc += *mcp++ << 16; - crc += *mcp++ << 24; - main_bytes -= 4; - - if (multiple_blocks) { - block_size = *mcp++; - block_size += *mcp++ << 8; - block_size += *mcp++ << 16; - block_size += *mcp++ << 24; - main_bytes -= 4; - } - else - block_size = main_bytes; - - if (block_size > main_bytes) { - if (error) strcpy (error, "main block overran available data!"); - raw_close_stream (raw_wv); - raw_close_stream (raw_wvc); - return NULL; - } - else { - WavpackHeader *wphdr = malloc (sizeof (WavpackHeader)); - memset (wphdr, 0, sizeof (WavpackHeader)); - memcpy (wphdr->ckID, "wvpk", 4); - wphdr->ckSize = sizeof (WavpackHeader) - 8 + block_size; - SET_TOTAL_SAMPLES (*wphdr, block_samples); - wphdr->block_samples = block_samples; - wphdr->version = version; - wphdr->flags = wphdr_flags; - wphdr->crc = crc; - WavpackLittleEndianToNative (wphdr, WavpackHeaderFormat); - - raw_wv->num_segments += 2; - raw_wv->segments = realloc (raw_wv->segments, sizeof (RawSegment) * raw_wv->num_segments); - raw_wv->segments [msi].dptr = raw_wv->segments [msi].sptr = (unsigned char *) wphdr; - raw_wv->segments [msi].eptr = raw_wv->segments [msi].dptr + sizeof (WavpackHeader); - raw_wv->segments [msi++].free_required = 1; - raw_wv->segments [msi].dptr = raw_wv->segments [msi].sptr = mcp; - raw_wv->segments [msi].eptr = raw_wv->segments [msi].dptr + block_size; - raw_wv->segments [msi++].free_required = 0; - main_bytes -= block_size; - mcp += block_size; - } - - if (corr_data && corr_bytes >= 4) { - crc = *ccp++; - crc += *ccp++ << 8; - crc += *ccp++ << 16; - crc += *ccp++ << 24; - corr_bytes -= 4; - - if (multiple_blocks) { - block_size = *ccp++; - block_size += *ccp++ << 8; - block_size += *ccp++ << 16; - block_size += *ccp++ << 24; - corr_bytes -= 4; - } - else - block_size = corr_bytes; - - if (block_size > corr_bytes) { - if (error) strcpy (error, "correction block overran available data!"); - raw_close_stream (raw_wv); - raw_close_stream (raw_wvc); - return NULL; - } - else { - WavpackHeader *wphdr = malloc (sizeof (WavpackHeader)); - memset (wphdr, 0, sizeof (WavpackHeader)); - memcpy (wphdr->ckID, "wvpk", 4); - wphdr->ckSize = sizeof (WavpackHeader) - 8 + block_size; - SET_TOTAL_SAMPLES (*wphdr, block_samples); - wphdr->block_samples = block_samples; - wphdr->version = version; - wphdr->flags = wphdr_flags; - wphdr->crc = crc; - WavpackLittleEndianToNative (wphdr, WavpackHeaderFormat); - - raw_wvc->num_segments += 2; - raw_wvc->segments = realloc (raw_wvc->segments, sizeof (RawSegment) * raw_wvc->num_segments); - raw_wvc->segments [csi].dptr = raw_wvc->segments [csi].sptr = (unsigned char *) wphdr; - raw_wvc->segments [csi].eptr = raw_wvc->segments [csi].dptr + sizeof (WavpackHeader); - raw_wvc->segments [csi++].free_required = 1; - raw_wvc->segments [csi].dptr = raw_wvc->segments [csi].sptr = ccp; - raw_wvc->segments [csi].eptr = raw_wvc->segments [csi].dptr + block_size; - raw_wvc->segments [csi++].free_required = 0; - corr_bytes -= block_size; - ccp += block_size; - } - } - } - - if (main_bytes || (corr_data && corr_bytes)) { - if (error) strcpy (error, "leftover multiblock data!"); - raw_close_stream (raw_wv); - raw_close_stream (raw_wvc); - return NULL; - } - } - else { // the case of WavPack blocks with headers is much easier... - if (main_data) { - raw_wv = malloc (sizeof (WavpackRawContext)); - memset (raw_wv, 0, sizeof (WavpackRawContext)); - raw_wv->num_segments = 1; - raw_wv->segments = malloc (sizeof (RawSegment) * raw_wv->num_segments); - raw_wv->segments [0].dptr = raw_wv->segments [0].sptr = main_data; - raw_wv->segments [0].eptr = raw_wv->segments [0].dptr + main_size; - raw_wv->segments [0].free_required = 0; - } - - if (corr_data && corr_size) { - raw_wvc = malloc (sizeof (WavpackRawContext)); - memset (raw_wvc, 0, sizeof (WavpackRawContext)); - raw_wvc->num_segments = 1; - raw_wvc->segments = malloc (sizeof (RawSegment) * raw_wvc->num_segments); - raw_wvc->segments [0].dptr = raw_wvc->segments [0].sptr = corr_data; - raw_wvc->segments [0].eptr = raw_wvc->segments [0].dptr + corr_size; - raw_wvc->segments [0].free_required = 0; - } - } - - return WavpackOpenFileInputEx64 (&raw_reader, raw_wv, raw_wvc, error, flags | OPEN_STREAMING | OPEN_NO_CHECKSUM, norm_offset); -} - -// Return the number of samples represented by the current (and in the raw case, only) frame. - -uint32_t WavpackGetNumSamplesInFrame (WavpackContext *wpc) -{ - if (wpc && wpc->streams && wpc->streams [0]) - return wpc->streams [0]->wphdr.block_samples; - else - return -1; -} - diff --git a/Frameworks/WavPack/Files/open_utils.c b/Frameworks/WavPack/Files/open_utils.c deleted file mode 100644 index dfb7cf632..000000000 --- a/Frameworks/WavPack/Files/open_utils.c +++ /dev/null @@ -1,1284 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2019 David Bryant. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// open_utils.c - -// This module provides all the code required to open an existing WavPack file -// for reading by using a reader callback mechanism (NOT a filename). This -// includes the code required to find and parse WavPack blocks, process any -// included metadata, and queue up the bitstreams containing the encoded audio -// data. It does not the actual code to unpack audio data and this was done so -// that programs that just want to query WavPack files for information (like, -// for example, taggers) don't need to link in a lot of unnecessary code. - -#include -#include - -#include "wavpack_local.h" - -// This function is identical to WavpackOpenFileInput() except that instead -// of providing a filename to open, the caller provides a pointer to a set of -// reader callbacks and instances of up to two streams. The first of these -// streams is required and contains the regular WavPack data stream; the second -// contains the "correction" file if desired. Unlike the standard open -// function which handles the correction file transparently, in this case it -// is the responsibility of the caller to be aware of correction files. - -static int seek_eof_information (WavpackContext *wpc, int64_t *final_index, int get_wrapper); - -WavpackContext *WavpackOpenFileInputEx64 (WavpackStreamReader64 *reader, void *wv_id, void *wvc_id, char *error, int flags, int norm_offset) -{ - WavpackContext *wpc = (WavpackContext *)malloc (sizeof (WavpackContext)); - WavpackStream *wps; - int num_blocks = 0; - unsigned char first_byte; - uint32_t bcount; - - if (!wpc) { - if (error) strcpy (error, "can't allocate memory"); - return NULL; - } - - CLEAR (*wpc); - wpc->wv_in = wv_id; - wpc->wvc_in = wvc_id; - wpc->reader = reader; - wpc->total_samples = -1; - wpc->norm_offset = norm_offset; - wpc->max_streams = OLD_MAX_STREAMS; // use this until overwritten with actual number - wpc->open_flags = flags; - - wpc->filelen = wpc->reader->get_length (wpc->wv_in); - -#ifndef NO_TAGS - if ((flags & (OPEN_TAGS | OPEN_EDIT_TAGS)) && wpc->reader->can_seek (wpc->wv_in)) { - load_tag (wpc); - wpc->reader->set_pos_abs (wpc->wv_in, 0); - - if ((flags & OPEN_EDIT_TAGS) && !editable_tag (&wpc->m_tag)) { - if (error) strcpy (error, "can't edit tags located at the beginning of files!"); - return WavpackCloseFile (wpc); - } - } -#endif - - if (wpc->reader->read_bytes (wpc->wv_in, &first_byte, 1) != 1) { - if (error) strcpy (error, "can't read all of WavPack file!"); - return WavpackCloseFile (wpc); - } - - wpc->reader->push_back_byte (wpc->wv_in, first_byte); - - if (first_byte == 'R') { -#ifdef ENABLE_LEGACY - return open_file3 (wpc, error); -#else - if (error) strcpy (error, "this legacy WavPack file is deprecated, use version 4.80.0 to transcode"); - return WavpackCloseFile (wpc); -#endif - } - - wpc->streams = (WavpackStream **)(malloc ((wpc->num_streams = 1) * sizeof (wpc->streams [0]))); - if (!wpc->streams) { - if (error) strcpy (error, "can't allocate memory"); - return WavpackCloseFile (wpc); - } - - wpc->streams [0] = wps = (WavpackStream *)malloc (sizeof (WavpackStream)); - if (!wps) { - if (error) strcpy (error, "can't allocate memory"); - return WavpackCloseFile (wpc); - } - CLEAR (*wps); - - while (!wps->wphdr.block_samples) { - - wpc->filepos = wpc->reader->get_pos (wpc->wv_in); - bcount = read_next_header (wpc->reader, wpc->wv_in, &wps->wphdr); - - if (bcount == (uint32_t) -1 || - (!wps->wphdr.block_samples && num_blocks++ > 16)) { - if (error) strcpy (error, "not compatible with this version of WavPack file!"); - return WavpackCloseFile (wpc); - } - - wpc->filepos += bcount; - wps->blockbuff = (unsigned char *)malloc (wps->wphdr.ckSize + 8); - if (!wps->blockbuff) { - if (error) strcpy (error, "can't allocate memory"); - return WavpackCloseFile (wpc); - } - memcpy (wps->blockbuff, &wps->wphdr, 32); - - if (wpc->reader->read_bytes (wpc->wv_in, wps->blockbuff + 32, wps->wphdr.ckSize - 24) != wps->wphdr.ckSize - 24) { - if (error) strcpy (error, "can't read all of WavPack file!"); - return WavpackCloseFile (wpc); - } - - // if block does not verify, flag error, free buffer, and continue - if (!WavpackVerifySingleBlock (wps->blockbuff, !(flags & OPEN_NO_CHECKSUM))) { - wps->wphdr.block_samples = 0; - free (wps->blockbuff); - wps->blockbuff = NULL; - wpc->crc_errors++; - continue; - } - - wps->init_done = FALSE; - - if (wps->wphdr.block_samples) { - if (flags & OPEN_STREAMING) - SET_BLOCK_INDEX (wps->wphdr, 0); - else if (wpc->total_samples == -1) { - if (GET_BLOCK_INDEX (wps->wphdr) || GET_TOTAL_SAMPLES (wps->wphdr) == -1) { - wpc->initial_index = GET_BLOCK_INDEX (wps->wphdr); - SET_BLOCK_INDEX (wps->wphdr, 0); - - if (wpc->reader->can_seek (wpc->wv_in)) { - int64_t final_index = -1; - - seek_eof_information (wpc, &final_index, FALSE); - - if (final_index != -1) - wpc->total_samples = final_index - wpc->initial_index; - } - } - else - wpc->total_samples = GET_TOTAL_SAMPLES (wps->wphdr); - } - } - else if (wpc->total_samples == -1 && !GET_BLOCK_INDEX (wps->wphdr) && GET_TOTAL_SAMPLES (wps->wphdr)) - wpc->total_samples = GET_TOTAL_SAMPLES (wps->wphdr); - - if (wpc->wvc_in && wps->wphdr.block_samples && (wps->wphdr.flags & HYBRID_FLAG)) { - unsigned char ch; - - if (wpc->reader->read_bytes (wpc->wvc_in, &ch, 1) == 1) { - wpc->reader->push_back_byte (wpc->wvc_in, ch); - wpc->file2len = wpc->reader->get_length (wpc->wvc_in); - wpc->wvc_flag = TRUE; - } - } - - if (wpc->wvc_flag && !read_wvc_block (wpc)) { - if (error) strcpy (error, "not compatible with this version of correction file!"); - return WavpackCloseFile (wpc); - } - - if (!wps->init_done && !unpack_init (wpc)) { - if (error) strcpy (error, wpc->error_message [0] ? wpc->error_message : - "not compatible with this version of WavPack file!"); - - return WavpackCloseFile (wpc); - } - - if (!wps->wphdr.block_samples) { // free blockbuff if we're going to loop again - free (wps->blockbuff); - wps->blockbuff = NULL; - } - - wps->init_done = TRUE; - } - - wpc->config.flags &= ~0xff; - wpc->config.flags |= wps->wphdr.flags & 0xff; - - if (!wpc->config.num_channels) { - wpc->config.num_channels = (wps->wphdr.flags & MONO_FLAG) ? 1 : 2; - wpc->config.channel_mask = 0x5 - wpc->config.num_channels; - } - - if ((flags & OPEN_2CH_MAX) && !(wps->wphdr.flags & FINAL_BLOCK)) - wpc->reduced_channels = (wps->wphdr.flags & MONO_FLAG) ? 1 : 2; - - if (wps->wphdr.flags & DSD_FLAG) { -#ifdef ENABLE_DSD - if (flags & OPEN_DSD_NATIVE) { - wpc->config.bytes_per_sample = 1; - wpc->config.bits_per_sample = 8; - } - else if (flags & OPEN_DSD_AS_PCM) { - wpc->decimation_context = decimate_dsd_init (wpc->reduced_channels ? - wpc->reduced_channels : wpc->config.num_channels); - - wpc->config.bytes_per_sample = 3; - wpc->config.bits_per_sample = 24; - } - else { - if (error) strcpy (error, "not configured to handle DSD WavPack files!"); - return WavpackCloseFile (wpc); - } -#else - if (error) strcpy (error, "not configured to handle DSD WavPack files!"); - return WavpackCloseFile (wpc); -#endif - } - else { - wpc->config.bytes_per_sample = (wps->wphdr.flags & BYTES_STORED) + 1; - wpc->config.float_norm_exp = wps->float_norm_exp; - - wpc->config.bits_per_sample = (wpc->config.bytes_per_sample * 8) - - ((wps->wphdr.flags & SHIFT_MASK) >> SHIFT_LSB); - } - - if (!wpc->config.sample_rate) { - if (!wps->wphdr.block_samples || (wps->wphdr.flags & SRATE_MASK) == SRATE_MASK) - wpc->config.sample_rate = 44100; - else - wpc->config.sample_rate = sample_rates [(wps->wphdr.flags & SRATE_MASK) >> SRATE_LSB]; - } - - return wpc; -} - -// This function returns the major version number of the WavPack program -// (or library) that created the open file. Currently, this can be 1 to 5. -// Minor versions are not recorded in WavPack files. - -int WavpackGetVersion (WavpackContext *wpc) -{ - if (wpc) { -#ifdef ENABLE_LEGACY - if (wpc->stream3) - return get_version3 (wpc); -#endif - return wpc->version_five ? 5 : 4; - } - - return 0; -} - -// Return the file format specified in the call to WavpackSetFileInformation() -// when the file was created. For all files created prior to WavPack 5.0 this -// will 0 (WP_FORMAT_WAV). - -unsigned char WavpackGetFileFormat (WavpackContext *wpc) -{ - return wpc->file_format; -} - -// Return a string representing the recommended file extension for the open -// WavPack file. For all files created prior to WavPack 5.0 this will be "wav", -// even for raw files with no RIFF into. This string is specified in the -// call to WavpackSetFileInformation() when the file was created. - -char *WavpackGetFileExtension (WavpackContext *wpc) -{ - if (wpc && wpc->file_extension [0]) - return wpc->file_extension; - else - return "wav"; -} - -// This function initializes everything required to unpack a WavPack block -// and must be called before unpack_samples() is called to obtain audio data. -// It is assumed that the WavpackHeader has been read into the wps->wphdr -// (in the current WavpackStream) and that the entire block has been read at -// wps->blockbuff. If a correction file is available (wpc->wvc_flag = TRUE) -// then the corresponding correction block must be read into wps->block2buff -// and its WavpackHeader has overwritten the header at wps->wphdr. This is -// where all the metadata blocks are scanned including those that contain -// bitstream data. - -static int read_metadata_buff (WavpackMetadata *wpmd, unsigned char *blockbuff, unsigned char **buffptr); -static int process_metadata (WavpackContext *wpc, WavpackMetadata *wpmd); -static void bs_open_read (Bitstream *bs, void *buffer_start, void *buffer_end); - -int unpack_init (WavpackContext *wpc) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - unsigned char *blockptr, *block2ptr; - WavpackMetadata wpmd; - - wps->num_terms = 0; - wps->mute_error = FALSE; - wps->crc = wps->crc_x = 0xffffffff; - wps->dsd.ready = 0; - CLEAR (wps->wvbits); - CLEAR (wps->wvcbits); - CLEAR (wps->wvxbits); - CLEAR (wps->decorr_passes); - CLEAR (wps->dc); - CLEAR (wps->w); - - if (!(wps->wphdr.flags & MONO_FLAG) && wpc->config.num_channels && wps->wphdr.block_samples && - (wpc->reduced_channels == 1 || wpc->config.num_channels == 1)) { - wps->mute_error = TRUE; - return FALSE; - } - - if ((wps->wphdr.flags & UNKNOWN_FLAGS) || (wps->wphdr.flags & MONO_DATA) == MONO_DATA) { - wps->mute_error = TRUE; - return FALSE; - } - - blockptr = wps->blockbuff + sizeof (WavpackHeader); - - while (read_metadata_buff (&wpmd, wps->blockbuff, &blockptr)) - if (!process_metadata (wpc, &wpmd)) { - wps->mute_error = TRUE; - return FALSE; - } - - if (wps->wphdr.block_samples && wpc->wvc_flag && wps->block2buff) { - block2ptr = wps->block2buff + sizeof (WavpackHeader); - - while (read_metadata_buff (&wpmd, wps->block2buff, &block2ptr)) - if (!process_metadata (wpc, &wpmd)) { - wps->mute_error = TRUE; - return FALSE; - } - } - - if (wps->wphdr.block_samples && ((wps->wphdr.flags & DSD_FLAG) ? !wps->dsd.ready : !bs_is_open (&wps->wvbits))) { - if (bs_is_open (&wps->wvcbits)) - strcpy (wpc->error_message, "can't unpack correction files alone!"); - - wps->mute_error = TRUE; - return FALSE; - } - - if (wps->wphdr.block_samples && !bs_is_open (&wps->wvxbits)) { - if ((wps->wphdr.flags & INT32_DATA) && wps->int32_sent_bits) - wpc->lossy_blocks = TRUE; - - if ((wps->wphdr.flags & FLOAT_DATA) && - wps->float_flags & (FLOAT_EXCEPTIONS | FLOAT_ZEROS_SENT | FLOAT_SHIFT_SENT | FLOAT_SHIFT_SAME)) - wpc->lossy_blocks = TRUE; - } - - if (wps->wphdr.block_samples) - wps->sample_index = GET_BLOCK_INDEX (wps->wphdr); - - return TRUE; -} - -//////////////////////////////// matadata handlers /////////////////////////////// - -// These functions handle specific metadata types and are called directly -// during WavPack block parsing by process_metadata() at the bottom. - -// This function initializes the main bitstream for audio samples, which must -// be in the "wv" file. - -static int init_wv_bitstream (WavpackStream *wps, WavpackMetadata *wpmd) -{ - if (!wpmd->byte_length || (wpmd->byte_length & 1)) - return FALSE; - - bs_open_read (&wps->wvbits, wpmd->data, (unsigned char *) wpmd->data + wpmd->byte_length); - return TRUE; -} - -// This function initializes the "correction" bitstream for audio samples, -// which currently must be in the "wvc" file. - -static int init_wvc_bitstream (WavpackStream *wps, WavpackMetadata *wpmd) -{ - if (!wpmd->byte_length || (wpmd->byte_length & 1)) - return FALSE; - - bs_open_read (&wps->wvcbits, wpmd->data, (unsigned char *) wpmd->data + wpmd->byte_length); - return TRUE; -} - -// This function initializes the "extra" bitstream for audio samples which -// contains the information required to losslessly decompress 32-bit float data -// or integer data that exceeds 24 bits. This bitstream is in the "wv" file -// for pure lossless data or the "wvc" file for hybrid lossless. This data -// would not be used for hybrid lossy mode. There is also a 32-bit CRC stored -// in the first 4 bytes of these blocks. - -static int init_wvx_bitstream (WavpackStream *wps, WavpackMetadata *wpmd) -{ - unsigned char *cp = (unsigned char *)wpmd->data; - - if (wpmd->byte_length <= 4 || (wpmd->byte_length & 1)) - return FALSE; - - wps->crc_wvx = *cp++; - wps->crc_wvx |= (int32_t) *cp++ << 8; - wps->crc_wvx |= (int32_t) *cp++ << 16; - wps->crc_wvx |= (int32_t) *cp++ << 24; - - bs_open_read (&wps->wvxbits, cp, (unsigned char *) wpmd->data + wpmd->byte_length); - return TRUE; -} - -// Read the int32 data from the specified metadata into the specified stream. -// This data is used for integer data that has more than 24 bits of magnitude -// or, in some cases, used to eliminate redundant bits from any audio stream. - -static int read_int32_info (WavpackStream *wps, WavpackMetadata *wpmd) -{ - int bytecnt = wpmd->byte_length; - char *byteptr = (char *)wpmd->data; - - if (bytecnt != 4) - return FALSE; - - wps->int32_sent_bits = *byteptr++; - wps->int32_zeros = *byteptr++; - wps->int32_ones = *byteptr++; - wps->int32_dups = *byteptr; - - return TRUE; -} - -static int read_float_info (WavpackStream *wps, WavpackMetadata *wpmd) -{ - int bytecnt = wpmd->byte_length; - char *byteptr = (char *)wpmd->data; - - if (bytecnt != 4) - return FALSE; - - wps->float_flags = *byteptr++; - wps->float_shift = *byteptr++; - wps->float_max_exp = *byteptr++; - wps->float_norm_exp = *byteptr; - return TRUE; -} - -// Read multichannel information from metadata. The first byte is the total -// number of channels and the following bytes represent the channel_mask -// as described for Microsoft WAVEFORMATEX. - -static int read_channel_info (WavpackContext *wpc, WavpackMetadata *wpmd) -{ - int bytecnt = wpmd->byte_length, shift = 0, mask_bits; - unsigned char *byteptr = (unsigned char *)wpmd->data; - uint32_t mask = 0; - - if (!bytecnt || bytecnt > 7) - return FALSE; - - if (!wpc->config.num_channels) { - - // if bytecnt is 6 or 7 we are using new configuration with "unlimited" streams - - if (bytecnt >= 6) { - wpc->config.num_channels = (byteptr [0] | ((byteptr [2] & 0xf) << 8)) + 1; - wpc->max_streams = (byteptr [1] | ((byteptr [2] & 0xf0) << 4)) + 1; - - if (wpc->config.num_channels < wpc->max_streams) - return FALSE; - - byteptr += 3; - mask = *byteptr++; - mask |= (uint32_t) *byteptr++ << 8; - mask |= (uint32_t) *byteptr++ << 16; - - if (bytecnt == 7) // this was introduced in 5.0 - mask |= (uint32_t) *byteptr << 24; - } - else { - wpc->config.num_channels = *byteptr++; - - while (--bytecnt) { - mask |= (uint32_t) *byteptr++ << shift; - shift += 8; - } - } - - if (wpc->config.num_channels > wpc->max_streams * 2) - return FALSE; - - wpc->config.channel_mask = mask; - - for (mask_bits = 0; mask; mask >>= 1) - if ((mask & 1) && ++mask_bits > wpc->config.num_channels) - return FALSE; - } - - return TRUE; -} - -// Read multichannel identity information from metadata. Data is an array of -// unsigned characters representing any channels in the file that DO NOT -// match one the 18 Microsoft standard channels (and are represented in the -// channel mask). A value of 0 is not allowed and 0xff means an unknown or -// undefined channel identity. - -static int read_channel_identities (WavpackContext *wpc, WavpackMetadata *wpmd) -{ - if (!wpc->channel_identities) { - wpc->channel_identities = (unsigned char *)malloc (wpmd->byte_length + 1); - memcpy (wpc->channel_identities, wpmd->data, wpmd->byte_length); - wpc->channel_identities [wpmd->byte_length] = 0; - } - - return TRUE; -} - -// Read configuration information from metadata. - -static int read_config_info (WavpackContext *wpc, WavpackMetadata *wpmd) -{ - int bytecnt = wpmd->byte_length; - unsigned char *byteptr = (unsigned char *)wpmd->data; - - if (bytecnt >= 3) { - wpc->config.flags &= 0xff; - wpc->config.flags |= (int32_t) *byteptr++ << 8; - wpc->config.flags |= (int32_t) *byteptr++ << 16; - wpc->config.flags |= (int32_t) *byteptr++ << 24; - bytecnt -= 3; - - if (bytecnt && (wpc->config.flags & CONFIG_EXTRA_MODE)) { - wpc->config.xmode = *byteptr++; - bytecnt--; - } - - // we used an extra config byte here for the 5.0.0 alpha, so still - // honor it now (but this has been replaced with NEW_CONFIG) - - if (bytecnt) { - wpc->config.qmode = (wpc->config.qmode & ~0xff) | *byteptr; - wpc->version_five = 1; - } - } - - return TRUE; -} - -// Read "new" configuration information from metadata. - -static int read_new_config_info (WavpackContext *wpc, WavpackMetadata *wpmd) -{ - int bytecnt = wpmd->byte_length; - unsigned char *byteptr = (unsigned char *)wpmd->data; - - wpc->version_five = 1; // just having this block signals version 5.0 - - wpc->file_format = wpc->config.qmode = wpc->channel_layout = 0; - - if (wpc->channel_reordering) { - free (wpc->channel_reordering); - wpc->channel_reordering = NULL; - } - - // if there's any data, the first two bytes are file_format and qmode flags - - if (bytecnt >= 2) { - wpc->file_format = *byteptr++; - wpc->config.qmode = (wpc->config.qmode & ~0xff) | *byteptr++; - bytecnt -= 2; - - // another byte indicates a channel layout - - if (bytecnt) { - int nchans, i; - - wpc->channel_layout = (int32_t) *byteptr++ << 16; - bytecnt--; - - // another byte means we have a channel count for the layout and maybe a reordering - - if (bytecnt) { - wpc->channel_layout += nchans = *byteptr++; - bytecnt--; - - // any more means there's a reordering string - - if (bytecnt) { - if (bytecnt > nchans) - return FALSE; - - wpc->channel_reordering = (unsigned char *)malloc (nchans); - - // note that redundant reordering info is not stored, so we fill in the rest - - if (wpc->channel_reordering) { - for (i = 0; i < nchans; ++i) - if (bytecnt) { - wpc->channel_reordering [i] = *byteptr++; - - if (wpc->channel_reordering [i] >= nchans) // make sure index is in range - wpc->channel_reordering [i] = 0; - - bytecnt--; - } - else - wpc->channel_reordering [i] = i; - } - } - } - else - wpc->channel_layout += wpc->config.num_channels; - } - } - - return TRUE; -} - -// Read non-standard sampling rate from metadata. - -static int read_sample_rate (WavpackContext *wpc, WavpackMetadata *wpmd) -{ - int bytecnt = wpmd->byte_length; - unsigned char *byteptr = (unsigned char *)wpmd->data; - - if (bytecnt == 3 || bytecnt == 4) { - wpc->config.sample_rate = (int32_t) *byteptr++; - wpc->config.sample_rate |= (int32_t) *byteptr++ << 8; - wpc->config.sample_rate |= (int32_t) *byteptr++ << 16; - - // for sampling rates > 16777215 (non-audio probably, or ...) - - if (bytecnt == 4) - wpc->config.sample_rate |= (int32_t) (*byteptr & 0x7f) << 24; - } - - return TRUE; -} - -// Read wrapper data from metadata. Currently, this consists of the RIFF -// header and trailer that wav files contain around the audio data but could -// be used for other formats as well. Because WavPack files contain all the -// information required for decoding and playback, this data can probably -// be ignored except when an exact wavefile restoration is needed. - -static int read_wrapper_data (WavpackContext *wpc, WavpackMetadata *wpmd) -{ - if ((wpc->open_flags & OPEN_WRAPPER) && wpc->wrapper_bytes < MAX_WRAPPER_BYTES && wpmd->byte_length) { - wpc->wrapper_data = (unsigned char *)realloc (wpc->wrapper_data, wpc->wrapper_bytes + wpmd->byte_length); - if (!wpc->wrapper_data) - return FALSE; - memcpy (wpc->wrapper_data + wpc->wrapper_bytes, wpmd->data, wpmd->byte_length); - wpc->wrapper_bytes += wpmd->byte_length; - } - - return TRUE; -} - -static int read_metadata_buff (WavpackMetadata *wpmd, unsigned char *blockbuff, unsigned char **buffptr) -{ - WavpackHeader *wphdr = (WavpackHeader *) blockbuff; - unsigned char *buffend = blockbuff + wphdr->ckSize + 8; - - if (buffend - *buffptr < 2) - return FALSE; - - wpmd->id = *(*buffptr)++; - wpmd->byte_length = *(*buffptr)++ << 1; - - if (wpmd->id & ID_LARGE) { - wpmd->id &= ~ID_LARGE; - - if (buffend - *buffptr < 2) - return FALSE; - - wpmd->byte_length += *(*buffptr)++ << 9; - wpmd->byte_length += *(*buffptr)++ << 17; - } - - if (wpmd->id & ID_ODD_SIZE) { - if (!wpmd->byte_length) // odd size and zero length makes no sense - return FALSE; - wpmd->id &= ~ID_ODD_SIZE; - wpmd->byte_length--; - } - - if (wpmd->byte_length) { - if (buffend - *buffptr < wpmd->byte_length + (wpmd->byte_length & 1)) { - wpmd->data = NULL; - return FALSE; - } - - wpmd->data = *buffptr; - (*buffptr) += wpmd->byte_length + (wpmd->byte_length & 1); - } - else - wpmd->data = NULL; - - return TRUE; -} - -static int process_metadata (WavpackContext *wpc, WavpackMetadata *wpmd) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - - switch (wpmd->id) { - case ID_DUMMY: - return TRUE; - - case ID_DECORR_TERMS: - return read_decorr_terms (wps, wpmd); - - case ID_DECORR_WEIGHTS: - return read_decorr_weights (wps, wpmd); - - case ID_DECORR_SAMPLES: - return read_decorr_samples (wps, wpmd); - - case ID_ENTROPY_VARS: - return read_entropy_vars (wps, wpmd); - - case ID_HYBRID_PROFILE: - return read_hybrid_profile (wps, wpmd); - - case ID_SHAPING_WEIGHTS: - return read_shaping_info (wps, wpmd); - - case ID_FLOAT_INFO: - return read_float_info (wps, wpmd); - - case ID_INT32_INFO: - return read_int32_info (wps, wpmd); - - case ID_CHANNEL_INFO: - return read_channel_info (wpc, wpmd); - - case ID_CHANNEL_IDENTITIES: - return read_channel_identities (wpc, wpmd); - - case ID_CONFIG_BLOCK: - return read_config_info (wpc, wpmd); - - case ID_NEW_CONFIG_BLOCK: - return read_new_config_info (wpc, wpmd); - - case ID_SAMPLE_RATE: - return read_sample_rate (wpc, wpmd); - - case ID_WV_BITSTREAM: - return init_wv_bitstream (wps, wpmd); - - case ID_WVC_BITSTREAM: - return init_wvc_bitstream (wps, wpmd); - - case ID_WVX_BITSTREAM: - return init_wvx_bitstream (wps, wpmd); - - case ID_DSD_BLOCK: -#ifdef ENABLE_DSD - return init_dsd_block (wpc, wpmd); -#else - strcpy (wpc->error_message, "not configured to handle DSD WavPack files!"); - return FALSE; -#endif - - case ID_ALT_HEADER: case ID_ALT_TRAILER: - if (!(wpc->open_flags & OPEN_ALT_TYPES)) - return TRUE; - - case ID_RIFF_HEADER: case ID_RIFF_TRAILER: - return read_wrapper_data (wpc, wpmd); - - case ID_ALT_MD5_CHECKSUM: - if (!(wpc->open_flags & OPEN_ALT_TYPES)) - return TRUE; - - case ID_MD5_CHECKSUM: - if (wpmd->byte_length == 16) { - memcpy (wpc->config.md5_checksum, wpmd->data, 16); - wpc->config.flags |= CONFIG_MD5_CHECKSUM; - wpc->config.md5_read = 1; - } - - return TRUE; - - case ID_ALT_EXTENSION: - if (wpmd->byte_length && wpmd->byte_length < sizeof (wpc->file_extension)) { - memcpy (wpc->file_extension, wpmd->data, wpmd->byte_length); - wpc->file_extension [wpmd->byte_length] = 0; - } - - return TRUE; - - // we don't actually verify the checksum here (it's done right after the - // block is read), but it's a good indicator of version 5 files - - case ID_BLOCK_CHECKSUM: - wpc->version_five = 1; - return TRUE; - - default: - return (wpmd->id & ID_OPTIONAL_DATA) ? TRUE : FALSE; - } -} - -//////////////////////////////// bitstream management /////////////////////////////// - -// Open the specified BitStream and associate with the specified buffer. - -static void bs_read (Bitstream *bs); - -static void bs_open_read (Bitstream *bs, void *buffer_start, void *buffer_end) -{ - bs->error = bs->sr = bs->bc = 0; - bs->ptr = (bs->buf = buffer_start) - 1; - bs->end = buffer_end; - bs->wrap = bs_read; -} - -// This function is only called from the getbit() and getbits() macros when -// the BitStream has been exhausted and more data is required. Sinve these -// bistreams no longer access files, this function simple sets an error and -// resets the buffer. - -static void bs_read (Bitstream *bs) -{ - bs->ptr = bs->buf; - bs->error = 1; -} - -// This function is called to close the bitstream. It returns the number of -// full bytes actually read as bits. - -uint32_t bs_close_read (Bitstream *bs) -{ - uint32_t bytes_read; - - if (bs->bc < sizeof (*(bs->ptr)) * 8) - bs->ptr++; - - bytes_read = (uint32_t)(bs->ptr - bs->buf) * sizeof (*(bs->ptr)); - - if (!(bytes_read & 1)) - ++bytes_read; - - CLEAR (*bs); - return bytes_read; -} - -// Normally the trailing wrapper will not be available when a WavPack file is first -// opened for reading because it is stored in the final block of the file. This -// function forces a seek to the end of the file to pick up any trailing wrapper -// stored there (then use WavPackGetWrapper**() to obtain). This can obviously only -// be used for seekable files (not pipes) and is not available for pre-4.0 WavPack -// files. - -void WavpackSeekTrailingWrapper (WavpackContext *wpc) -{ - if ((wpc->open_flags & OPEN_WRAPPER) && - wpc->reader->can_seek (wpc->wv_in) && !wpc->stream3) - seek_eof_information (wpc, NULL, TRUE); -} - -// Get any MD5 checksum stored in the metadata (should be called after reading -// last sample or an extra seek will occur). A return value of FALSE indicates -// that no MD5 checksum was stored. - -int WavpackGetMD5Sum (WavpackContext *wpc, unsigned char data [16]) -{ - if (wpc->config.flags & CONFIG_MD5_CHECKSUM) { - if (!wpc->config.md5_read && wpc->reader->can_seek (wpc->wv_in)) - seek_eof_information (wpc, NULL, FALSE); - - if (wpc->config.md5_read) { - memcpy (data, wpc->config.md5_checksum, 16); - return TRUE; - } - } - - return FALSE; -} - -// Read from current file position until a valid 32-byte WavPack 4.0 header is -// found and read into the specified pointer. The number of bytes skipped is -// returned. If no WavPack header is found within 1 meg, then a -1 is returned -// to indicate the error. No additional bytes are read past the header and it -// is returned in the processor's native endian mode. Seeking is not required. - -uint32_t read_next_header (WavpackStreamReader64 *reader, void *id, WavpackHeader *wphdr) -{ - unsigned char buffer [sizeof (*wphdr)], *sp = buffer + sizeof (*wphdr), *ep = sp; - uint32_t bytes_skipped = 0; - int bleft; - - while (1) { - if (sp < ep) { - bleft = (int)(ep - sp); - memmove (buffer, sp, bleft); - } - else - bleft = 0; - - if (reader->read_bytes (id, buffer + bleft, sizeof (*wphdr) - bleft) != sizeof (*wphdr) - bleft) - return -1; - - sp = buffer; - - if (*sp++ == 'w' && *sp == 'v' && *++sp == 'p' && *++sp == 'k' && - !(*++sp & 1) && sp [2] < 16 && !sp [3] && (sp [2] || sp [1] || *sp >= 24) && sp [5] == 4 && - sp [4] >= (MIN_STREAM_VERS & 0xff) && sp [4] <= (MAX_STREAM_VERS & 0xff) && sp [18] < 3 && !sp [19]) { - memcpy (wphdr, buffer, sizeof (*wphdr)); - WavpackLittleEndianToNative (wphdr, WavpackHeaderFormat); - return bytes_skipped; - } - - while (sp < ep && *sp != 'w') - sp++; - - if ((bytes_skipped += (uint32_t)(sp - buffer)) > 1024 * 1024) - return -1; - } -} - -// Compare the regular wv file block header to a potential matching wvc -// file block header and return action code based on analysis: -// -// 0 = use wvc block (assuming rest of block is readable) -// 1 = bad match; try to read next wvc block -// -1 = bad match; ignore wvc file for this block and backup fp (if -// possible) and try to use this block next time - -static int match_wvc_header (WavpackHeader *wv_hdr, WavpackHeader *wvc_hdr) -{ - if (GET_BLOCK_INDEX (*wv_hdr) == GET_BLOCK_INDEX (*wvc_hdr) && - wv_hdr->block_samples == wvc_hdr->block_samples) { - int wvi = 0, wvci = 0; - - if (wv_hdr->flags == wvc_hdr->flags) - return 0; - - if (wv_hdr->flags & INITIAL_BLOCK) - wvi -= 1; - - if (wv_hdr->flags & FINAL_BLOCK) - wvi += 1; - - if (wvc_hdr->flags & INITIAL_BLOCK) - wvci -= 1; - - if (wvc_hdr->flags & FINAL_BLOCK) - wvci += 1; - - return (wvci - wvi < 0) ? 1 : -1; - } - - if (((GET_BLOCK_INDEX (*wvc_hdr) - GET_BLOCK_INDEX (*wv_hdr)) << 24) < 0) - return 1; - else - return -1; -} - -// Read the wvc block that matches the regular wv block that has been -// read for the current stream. If an exact match is not found then -// we either keep reading or back up and (possibly) use the block -// later. The skip_wvc flag is set if not matching wvc block is found -// so that we can still decode using only the lossy version (although -// we flag this as an error). A return of FALSE indicates a serious -// error (not just that we missed one wvc block). - -int read_wvc_block (WavpackContext *wpc) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - int64_t bcount, file2pos; - WavpackHeader orig_wphdr; - WavpackHeader wphdr; - int compare_result; - - while (1) { - file2pos = wpc->reader->get_pos (wpc->wvc_in); - bcount = read_next_header (wpc->reader, wpc->wvc_in, &wphdr); - - if (bcount == (uint32_t) -1) { - wps->wvc_skip = TRUE; - wpc->crc_errors++; - return FALSE; - } - - memcpy (&orig_wphdr, &wphdr, 32); // save original header for verify step - - if (wpc->open_flags & OPEN_STREAMING) - SET_BLOCK_INDEX (wphdr, wps->sample_index = 0); - else - SET_BLOCK_INDEX (wphdr, GET_BLOCK_INDEX (wphdr) - wpc->initial_index); - - if (wphdr.flags & INITIAL_BLOCK) - wpc->file2pos = file2pos + bcount; - - compare_result = match_wvc_header (&wps->wphdr, &wphdr); - - if (!compare_result) { - wps->block2buff = (unsigned char *)malloc (wphdr.ckSize + 8); - if (!wps->block2buff) - return FALSE; - - if (wpc->reader->read_bytes (wpc->wvc_in, wps->block2buff + 32, wphdr.ckSize - 24) != - wphdr.ckSize - 24) { - free (wps->block2buff); - wps->block2buff = NULL; - wps->wvc_skip = TRUE; - wpc->crc_errors++; - return FALSE; - } - - memcpy (wps->block2buff, &orig_wphdr, 32); - - // don't use corrupt blocks - if (!WavpackVerifySingleBlock (wps->block2buff, !(wpc->open_flags & OPEN_NO_CHECKSUM))) { - free (wps->block2buff); - wps->block2buff = NULL; - wps->wvc_skip = TRUE; - wpc->crc_errors++; - return TRUE; - } - - wps->wvc_skip = FALSE; - memcpy (wps->block2buff, &wphdr, 32); - memcpy (&wps->wphdr, &wphdr, 32); - return TRUE; - } - else if (compare_result == -1) { - wps->wvc_skip = TRUE; - wpc->reader->set_pos_rel (wpc->wvc_in, -32, SEEK_CUR); - wpc->crc_errors++; - return TRUE; - } - } -} - -// This function is used to seek to end of a file to obtain certain information -// that is stored there at the file creation time because it is not known at -// the start. This includes the MD5 sum and and trailing part of the file -// wrapper, and in some rare cases may include the total number of samples in -// the file (although we usually try to back up and write that at the front of -// the file). Note this function restores the file position to its original -// location (and obviously requires a seekable file). The normal return value -// is TRUE indicating no errors, although this does not actually mean that any -// information was retrieved. An error return of FALSE usually means the file -// terminated unexpectedly. Note that this could be used to get all three -// types of information in one go, but it's not actually used that way now. - -static int seek_eof_information (WavpackContext *wpc, int64_t *final_index, int get_wrapper) -{ - int64_t restore_pos, last_pos = -1; - WavpackStreamReader64 *reader = wpc->reader; - int alt_types = wpc->open_flags & OPEN_ALT_TYPES; - uint32_t blocks = 0, audio_blocks = 0; - void *id = wpc->wv_in; - WavpackHeader wphdr; - - restore_pos = reader->get_pos (id); // we restore file position when done - - // start 1MB from the end-of-file, or from the start if the file is not that big - - if (reader->get_length (id) > (int64_t) 1048576) - reader->set_pos_rel (id, -1048576, SEEK_END); - else - reader->set_pos_abs (id, 0); - - // Note that we go backward (without parsing inside blocks) until we find a block - // with audio (careful to not get stuck in a loop). Only then do we go forward - // parsing all blocks in their entirety. - - while (1) { - uint32_t bcount = read_next_header (reader, id, &wphdr); - int64_t current_pos = reader->get_pos (id); - - // if we just got to the same place as last time, we're stuck and need to give up - - if (current_pos == last_pos) { - reader->set_pos_abs (id, restore_pos); - return FALSE; - } - - last_pos = current_pos; - - // We enter here if we just read 1 MB without seeing any WavPack block headers. - // Since WavPack blocks are < 1 MB, that means we're in a big APE tag, or we got - // to the end-of-file. - - if (bcount == (uint32_t) -1) { - - // if we have not seen any blocks at all yet, back up almost 2 MB (or to the - // beginning of the file) and try again - - if (!blocks) { - if (current_pos > (int64_t) 2000000) - reader->set_pos_rel (id, -2000000, SEEK_CUR); - else - reader->set_pos_abs (id, 0); - - continue; - } - - // if we have seen WavPack blocks, then this means we've done all we can do here - - reader->set_pos_abs (id, restore_pos); - return TRUE; - } - - blocks++; - - // If the block has audio samples, calculate a final index, although this is not - // final since this may not be the last block with audio. On the other hand, if - // this block does not have audio, and we haven't seen one with audio, we have - // to go back some more. - - if (wphdr.block_samples) { - if (final_index) - *final_index = GET_BLOCK_INDEX (wphdr) + wphdr.block_samples; - - audio_blocks++; - } - else if (!audio_blocks) { - if (current_pos > (int64_t) 1048576) - reader->set_pos_rel (id, -1048576, SEEK_CUR); - else - reader->set_pos_abs (id, 0); - - continue; - } - - // at this point we have seen at least one block with audio, so we parse the - // entire block looking for MD5 metadata or (conditionally) trailing wrappers - - bcount = wphdr.ckSize - sizeof (WavpackHeader) + 8; - - while (bcount >= 2) { - unsigned char meta_id, c1, c2; - uint32_t meta_bc, meta_size; - - if (reader->read_bytes (id, &meta_id, 1) != 1 || - reader->read_bytes (id, &c1, 1) != 1) { - reader->set_pos_abs (id, restore_pos); - return FALSE; - } - - meta_bc = c1 << 1; - bcount -= 2; - - if (meta_id & ID_LARGE) { - if (bcount < 2 || reader->read_bytes (id, &c1, 1) != 1 || - reader->read_bytes (id, &c2, 1) != 1) { - reader->set_pos_abs (id, restore_pos); - return FALSE; - } - - meta_bc += ((uint32_t) c1 << 9) + ((uint32_t) c2 << 17); - bcount -= 2; - } - - meta_size = (meta_id & ID_ODD_SIZE) ? meta_bc - 1 : meta_bc; - meta_id &= ID_UNIQUE; - - if (get_wrapper && (meta_id == ID_RIFF_TRAILER || (alt_types && meta_id == ID_ALT_TRAILER)) && meta_bc) { - wpc->wrapper_data = (unsigned char *)realloc (wpc->wrapper_data, wpc->wrapper_bytes + meta_bc); - - if (!wpc->wrapper_data) { - reader->set_pos_abs (id, restore_pos); - return FALSE; - } - - if (reader->read_bytes (id, wpc->wrapper_data + wpc->wrapper_bytes, meta_bc) == meta_bc) - wpc->wrapper_bytes += meta_size; - else { - reader->set_pos_abs (id, restore_pos); - return FALSE; - } - } - else if (meta_id == ID_MD5_CHECKSUM || (alt_types && meta_id == ID_ALT_MD5_CHECKSUM)) { - if (meta_bc == 16 && bcount >= 16) { - if (reader->read_bytes (id, wpc->config.md5_checksum, 16) == 16) - wpc->config.md5_read = TRUE; - else { - reader->set_pos_abs (id, restore_pos); - return FALSE; - } - } - else - reader->set_pos_rel (id, meta_bc, SEEK_CUR); - } - else - reader->set_pos_rel (id, meta_bc, SEEK_CUR); - - bcount -= meta_bc; - } - } -} - -// Quickly verify the referenced block. It is assumed that the WavPack header has been converted -// to native endian format. If a block checksum is performed, that is done in little-endian -// (file) format. It is also assumed that the caller has made sure that the block length -// indicated in the header is correct (we won't overflow the buffer). If a checksum is present, -// then it is checked, otherwise we just check that all the metadata blocks are formatted -// correctly (without looking at their contents). Returns FALSE for bad block. - -int WavpackVerifySingleBlock (unsigned char *buffer, int verify_checksum) -{ - WavpackHeader *wphdr = (WavpackHeader *) buffer; - uint32_t checksum_passed = 0, bcount, meta_bc; - unsigned char *dp, meta_id, c1, c2; - - if (strncmp (wphdr->ckID, "wvpk", 4) || wphdr->ckSize + 8 < sizeof (WavpackHeader)) - return FALSE; - - bcount = wphdr->ckSize - sizeof (WavpackHeader) + 8; - dp = (unsigned char *)(wphdr + 1); - - while (bcount >= 2) { - meta_id = *dp++; - c1 = *dp++; - - meta_bc = c1 << 1; - bcount -= 2; - - if (meta_id & ID_LARGE) { - if (bcount < 2) - return FALSE; - - c1 = *dp++; - c2 = *dp++; - meta_bc += ((uint32_t) c1 << 9) + ((uint32_t) c2 << 17); - bcount -= 2; - } - - if (bcount < meta_bc) - return FALSE; - - if (verify_checksum && (meta_id & ID_UNIQUE) == ID_BLOCK_CHECKSUM) { -#ifdef BITSTREAM_SHORTS - uint16_t *csptr = (uint16_t*) buffer; -#else - unsigned char *csptr = buffer; -#endif - int wcount = (int)(dp - 2 - buffer) >> 1; - uint32_t csum = (uint32_t) -1; - - if ((meta_id & ID_ODD_SIZE) || meta_bc < 2 || meta_bc > 4) - return FALSE; - -#ifdef BITSTREAM_SHORTS - while (wcount--) - csum = (csum * 3) + *csptr++; -#else - WavpackNativeToLittleEndian ((WavpackHeader *) buffer, WavpackHeaderFormat); - - while (wcount--) { - csum = (csum * 3) + csptr [0] + (csptr [1] << 8); - csptr += 2; - } - - WavpackLittleEndianToNative ((WavpackHeader *) buffer, WavpackHeaderFormat); -#endif - - if (meta_bc == 4) { - if (*dp != (csum & 0xff) || dp[1] != ((csum >> 8) & 0xff) || dp[2] != ((csum >> 16) & 0xff) || dp[3] != ((csum >> 24) & 0xff)) - return FALSE; - } - else { - csum ^= csum >> 16; - - if (*dp != (csum & 0xff) || dp[1] != ((csum >> 8) & 0xff)) - return FALSE; - } - - checksum_passed++; - } - - bcount -= meta_bc; - dp += meta_bc; - } - - return (bcount == 0) && (!verify_checksum || !(wphdr->flags & HAS_CHECKSUM) || checksum_passed); -} diff --git a/Frameworks/WavPack/Files/pack.c b/Frameworks/WavPack/Files/pack.c deleted file mode 100644 index c9257f5f5..000000000 --- a/Frameworks/WavPack/Files/pack.c +++ /dev/null @@ -1,1726 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// MMX optimizations (c) 2006 Joachim Henke // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// pack.c - -// This module actually handles the compression of the audio data, except for -// the entropy encoding which is handled by the write_words.c module. For better -// efficiency, the conversion is isolated to tight loops that handle an entire -// buffer. - -#include -#include -#include - -#include "wavpack_local.h" -#include "decorr_tables.h" // contains data, only include from this module! - -///////////////////////////// executable code //////////////////////////////// - -// This function initializes everything required to pack WavPack bitstreams -// and must be called BEFORE any other function in this module. - -void pack_init (WavpackContext *wpc) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - - wps->sample_index = 0; - wps->delta_decay = 2.0; - CLEAR (wps->decorr_passes); - CLEAR (wps->dc); - -#ifdef SKIP_DECORRELATION - wpc->config.xmode = 0; -#endif - - /* although we set the term and delta values here for clarity, they're - * actually hardcoded in the analysis function for speed - */ - - CLEAR (wps->analysis_pass); - wps->analysis_pass.term = 18; - wps->analysis_pass.delta = 2; - - if (wpc->config.flags & CONFIG_AUTO_SHAPING) { - if (wpc->config.flags & CONFIG_OPTIMIZE_WVC) - wps->dc.shaping_acc [0] = wps->dc.shaping_acc [1] = -(512L << 16); - else if (wpc->config.sample_rate >= 64000) - wps->dc.shaping_acc [0] = wps->dc.shaping_acc [1] = 1024L << 16; - else - wpc->config.flags |= CONFIG_DYNAMIC_SHAPING; - } - else { - int32_t weight = (int32_t) floor (wpc->config.shaping_weight * 1024.0 + 0.5); - - if (weight <= -1000) - weight = -1000; - - wps->dc.shaping_acc [0] = wps->dc.shaping_acc [1] = weight << 16; - } - - if (wpc->config.flags & CONFIG_DYNAMIC_SHAPING) - wps->dc.shaping_data = malloc (wpc->max_samples * sizeof (*wps->dc.shaping_data)); - - if (!wpc->config.xmode) - wps->num_passes = 0; - else if (wpc->config.xmode == 1) - wps->num_passes = 2; - else if (wpc->config.xmode == 2) - wps->num_passes = 4; - else - wps->num_passes = 9; - - if (wpc->config.flags & CONFIG_VERY_HIGH_FLAG) { - wps->num_decorrs = NUM_VERY_HIGH_SPECS; - wps->decorr_specs = very_high_specs; - } - else if (wpc->config.flags & CONFIG_HIGH_FLAG) { - wps->num_decorrs = NUM_HIGH_SPECS; - wps->decorr_specs = high_specs; - } - else if (wpc->config.flags & CONFIG_FAST_FLAG) { - wps->num_decorrs = NUM_FAST_SPECS; - wps->decorr_specs = fast_specs; - } - else { - wps->num_decorrs = NUM_DEFAULT_SPECS; - wps->decorr_specs = default_specs; - } - - init_words (wps); -} - -// Allocate room for and copy the decorrelation terms from the decorr_passes -// array into the specified metadata structure. Both the actual term id and -// the delta are packed into single characters. - -static void write_decorr_terms (WavpackStream *wps, WavpackMetadata *wpmd) -{ - int tcount = wps->num_terms; - struct decorr_pass *dpp; - char *byteptr; - - byteptr = wpmd->data = malloc (tcount + 1); - wpmd->id = ID_DECORR_TERMS; - - for (dpp = wps->decorr_passes; tcount--; ++dpp) - *byteptr++ = ((dpp->term + 5) & 0x1f) | ((dpp->delta << 5) & 0xe0); - - wpmd->byte_length = (int32_t)(byteptr - (char *) wpmd->data); -} - -// Allocate room for and copy the decorrelation term weights from the -// decorr_passes array into the specified metadata structure. The weights -// range +/-1024, but are rounded and truncated to fit in signed chars for -// metadata storage. Weights are separate for the two channels - -static void write_decorr_weights (WavpackStream *wps, WavpackMetadata *wpmd) -{ - struct decorr_pass *dpp = wps->decorr_passes; - int tcount = wps->num_terms, i; - char *byteptr; - - byteptr = wpmd->data = malloc ((tcount * 2) + 1); - wpmd->id = ID_DECORR_WEIGHTS; - - for (i = wps->num_terms - 1; i >= 0; --i) - if (store_weight (dpp [i].weight_A) || - (!(wps->wphdr.flags & MONO_DATA) && store_weight (dpp [i].weight_B))) - break; - - tcount = i + 1; - - for (i = 0; i < wps->num_terms; ++i) { - if (i < tcount) { - dpp [i].weight_A = restore_weight (*byteptr++ = store_weight (dpp [i].weight_A)); - - if (!(wps->wphdr.flags & MONO_DATA)) - dpp [i].weight_B = restore_weight (*byteptr++ = store_weight (dpp [i].weight_B)); - } - else - dpp [i].weight_A = dpp [i].weight_B = 0; - } - - wpmd->byte_length = (int32_t)(byteptr - (char *) wpmd->data); -} - -// Allocate room for and copy the decorrelation samples from the decorr_passes -// array into the specified metadata structure. The samples are signed 32-bit -// values, but are converted to signed log2 values for storage in metadata. -// Values are stored for both channels and are specified from the first term -// with unspecified samples set to zero. The number of samples stored varies -// with the actual term value, so those must obviously be specified before -// these in the metadata list. Any number of terms can have their samples -// specified from no terms to all the terms, however I have found that -// sending more than the first term's samples is a waste. The "wcount" -// variable can be set to the number of terms to have their samples stored. - -static void write_decorr_samples (WavpackStream *wps, WavpackMetadata *wpmd) -{ - int tcount = wps->num_terms, wcount = 1, temp; - struct decorr_pass *dpp; - unsigned char *byteptr; - - byteptr = wpmd->data = malloc (256); - wpmd->id = ID_DECORR_SAMPLES; - - for (dpp = wps->decorr_passes; tcount--; ++dpp) - if (wcount) { - if (dpp->term > MAX_TERM) { - dpp->samples_A [0] = wp_exp2s (temp = wp_log2s (dpp->samples_A [0])); - *byteptr++ = temp; - *byteptr++ = temp >> 8; - dpp->samples_A [1] = wp_exp2s (temp = wp_log2s (dpp->samples_A [1])); - *byteptr++ = temp; - *byteptr++ = temp >> 8; - - if (!(wps->wphdr.flags & MONO_DATA)) { - dpp->samples_B [0] = wp_exp2s (temp = wp_log2s (dpp->samples_B [0])); - *byteptr++ = temp; - *byteptr++ = temp >> 8; - dpp->samples_B [1] = wp_exp2s (temp = wp_log2s (dpp->samples_B [1])); - *byteptr++ = temp; - *byteptr++ = temp >> 8; - } - } - else if (dpp->term < 0) { - dpp->samples_A [0] = wp_exp2s (temp = wp_log2s (dpp->samples_A [0])); - *byteptr++ = temp; - *byteptr++ = temp >> 8; - dpp->samples_B [0] = wp_exp2s (temp = wp_log2s (dpp->samples_B [0])); - *byteptr++ = temp; - *byteptr++ = temp >> 8; - } - else { - int m = 0, cnt = dpp->term; - - while (cnt--) { - dpp->samples_A [m] = wp_exp2s (temp = wp_log2s (dpp->samples_A [m])); - *byteptr++ = temp; - *byteptr++ = temp >> 8; - - if (!(wps->wphdr.flags & MONO_DATA)) { - dpp->samples_B [m] = wp_exp2s (temp = wp_log2s (dpp->samples_B [m])); - *byteptr++ = temp; - *byteptr++ = temp >> 8; - } - - m++; - } - } - - wcount--; - } - else { - CLEAR (dpp->samples_A); - CLEAR (dpp->samples_B); - } - - wpmd->byte_length = (int32_t)(byteptr - (unsigned char *) wpmd->data); -} - -// Allocate room for and copy the noise shaping info into the specified -// metadata structure. These would normally be written to the -// "correction" file and are used for lossless reconstruction of -// hybrid data. The "delta" parameter is not yet used in encoding as it -// will be part of the "quality" mode. - -static void write_shaping_info (WavpackStream *wps, WavpackMetadata *wpmd) -{ - char *byteptr; - int temp; - - byteptr = wpmd->data = malloc (12); - wpmd->id = ID_SHAPING_WEIGHTS; - - wps->dc.error [0] = wp_exp2s (temp = wp_log2s (wps->dc.error [0])); - *byteptr++ = temp; - *byteptr++ = temp >> 8; - wps->dc.shaping_acc [0] = wp_exp2s (temp = wp_log2s (wps->dc.shaping_acc [0])); - *byteptr++ = temp; - *byteptr++ = temp >> 8; - - if (!(wps->wphdr.flags & MONO_DATA)) { - wps->dc.error [1] = wp_exp2s (temp = wp_log2s (wps->dc.error [1])); - *byteptr++ = temp; - *byteptr++ = temp >> 8; - wps->dc.shaping_acc [1] = wp_exp2s (temp = wp_log2s (wps->dc.shaping_acc [1])); - *byteptr++ = temp; - *byteptr++ = temp >> 8; - } - - if (wps->dc.shaping_delta [0] | wps->dc.shaping_delta [1]) { - wps->dc.shaping_delta [0] = wp_exp2s (temp = wp_log2s (wps->dc.shaping_delta [0])); - *byteptr++ = temp; - *byteptr++ = temp >> 8; - - if (!(wps->wphdr.flags & MONO_DATA)) { - wps->dc.shaping_delta [1] = wp_exp2s (temp = wp_log2s (wps->dc.shaping_delta [1])); - *byteptr++ = temp; - *byteptr++ = temp >> 8; - } - } - - wpmd->byte_length = (int32_t)(byteptr - (char *) wpmd->data); -} - -// Allocate room for and copy the int32 data values into the specified -// metadata structure. This data is used for integer data that has more -// than 24 bits of magnitude or, in some cases, it's used to eliminate -// redundant bits from any audio stream. - -static void write_int32_info (WavpackStream *wps, WavpackMetadata *wpmd) -{ - char *byteptr; - - byteptr = wpmd->data = malloc (4); - wpmd->id = ID_INT32_INFO; - *byteptr++ = wps->int32_sent_bits; - *byteptr++ = wps->int32_zeros; - *byteptr++ = wps->int32_ones; - *byteptr++ = wps->int32_dups; - wpmd->byte_length = (int32_t)(byteptr - (char *) wpmd->data); -} - -static void write_float_info (WavpackStream *wps, WavpackMetadata *wpmd) -{ - char *byteptr; - - byteptr = wpmd->data = malloc (4); - wpmd->id = ID_FLOAT_INFO; - *byteptr++ = wps->float_flags; - *byteptr++ = wps->float_shift; - *byteptr++ = wps->float_max_exp; - *byteptr++ = wps->float_norm_exp; - wpmd->byte_length = (int32_t)(byteptr - (char *) wpmd->data); -} - -// Allocate room for and copy the multichannel information into the specified -// metadata structure. The first byte is the total number of channels and the -// following bytes represent the channel_mask as described for Microsoft -// WAVEFORMATEX. - -static void write_channel_info (WavpackContext *wpc, WavpackMetadata *wpmd) -{ - uint32_t mask = wpc->config.channel_mask; - char *byteptr = wpmd->data = malloc (8); - - wpmd->id = ID_CHANNEL_INFO; - - if (wpc->num_streams > OLD_MAX_STREAMS) { // if > 8 streams, use 6 or 7 bytes (breaks old decoders - *byteptr++ = wpc->config.num_channels - 1; // that could only handle 8 streams) and allow (in theory) - *byteptr++ = wpc->num_streams - 1; // up to 4096 channels - *byteptr++ = (((wpc->num_streams - 1) >> 4) & 0xf0) | (((wpc->config.num_channels - 1) >> 8) & 0xf); - *byteptr++ = mask; - *byteptr++ = (mask >> 8); - *byteptr++ = (mask >> 16); - - if (mask & 0xff000000) // this will break versions < 5.0, but is RF64-specific - *byteptr++ = (mask >> 24); - } - else { // otherwise use only 1 to 5 bytes - *byteptr++ = wpc->config.num_channels; - - while (mask) { - *byteptr++ = mask; - mask >>= 8; - } - } - - wpmd->byte_length = (int32_t)(byteptr - (char *) wpmd->data); -} - -// Allocate room for and copy the multichannel identities into the specified -// metadata structure. Data is an array of unsigned characters representing -// any channels in the file that DO NOT match one the 18 Microsoft standard -// channels (and are represented in the channel mask). A value of 0 is not -// allowed and 0xff means an unknown or undefined channel identity. - -static void write_channel_identities_info (WavpackContext *wpc, WavpackMetadata *wpmd) -{ - wpmd->byte_length = (int) strlen ((char *) wpc->channel_identities); - wpmd->data = strdup ((char *) wpc->channel_identities); - wpmd->id = ID_CHANNEL_IDENTITIES; -} - -// Allocate room for and copy the configuration information into the specified -// metadata structure. Currently, we just store the upper 3 bytes of -// config.flags and only in the first block of audio data. Note that this is -// for informational purposes not required for playback or decoding (like -// whether high or fast mode was specified). - -static void write_config_info (WavpackContext *wpc, WavpackMetadata *wpmd) -{ - char *byteptr; - - byteptr = wpmd->data = malloc (8); - wpmd->id = ID_CONFIG_BLOCK; - *byteptr++ = (char) (wpc->config.flags >> 8); - *byteptr++ = (char) (wpc->config.flags >> 16); - *byteptr++ = (char) (wpc->config.flags >> 24); - - if (wpc->config.flags & CONFIG_EXTRA_MODE) - *byteptr++ = (char) wpc->config.xmode; - - // for the 5.0.0 alpha, we wrote the qmode flags here, but this - // has been replaced with the new_config block - // *byteptr++ = (char) wpc->config.qmode; - - wpmd->byte_length = (int32_t)(byteptr - (char *) wpmd->data); -} - -// Allocate room for and copy the "new" configuration information into the -// specified metadata structure. This is all the stuff introduced with version -// 5.0 and includes the qmode flags (big-endian, etc.) and CAF extended -// channel layouts (including optional reordering). Even if there is no new -// configuration, we still send the empty metadata block to signal a 5.0 file. - -static void write_new_config_info (WavpackContext *wpc, WavpackMetadata *wpmd) -{ - char *byteptr = wpmd->data = malloc (260); - - wpmd->id = ID_NEW_CONFIG_BLOCK; - - if (wpc->file_format || (wpc->config.qmode & 0xff) || wpc->channel_layout) { - *byteptr++ = (char) wpc->file_format; - *byteptr++ = (char) wpc->config.qmode; - - if (wpc->channel_layout) { - int nchans = wpc->channel_layout & 0xff; - - *byteptr++ = (char) ((wpc->channel_layout & 0xff0000) >> 16); - - if (wpc->channel_reordering || nchans != wpc->config.num_channels) - *byteptr++ = (char) nchans; - - if (wpc->channel_reordering) { - int i, num_to_send = 0; - - // to save space, don't send redundant reorder string bytes - - for (i = 0; i < nchans; ++i) - if (wpc->channel_reordering [i] != i) - num_to_send = i + 1; - - if (num_to_send) { - memcpy (byteptr, wpc->channel_reordering, num_to_send); - byteptr += num_to_send; - } - } - } - } - - wpmd->byte_length = (int32_t)(byteptr - (char *) wpmd->data); -} - -// Allocate room for and copy the non-standard sampling rate into the specified -// metadata structure. We normally store the lower 3 bytes of the sampling rate, -// unless 4 bytes are required (introduced in version 5). Note that this would -// only be used when the sampling rate was not included in the table of 15 -// "standard" values. - -static void write_sample_rate (WavpackContext *wpc, WavpackMetadata *wpmd) -{ - char *byteptr; - - byteptr = wpmd->data = malloc (4); - wpmd->id = ID_SAMPLE_RATE; - *byteptr++ = (char) (wpc->config.sample_rate); - *byteptr++ = (char) (wpc->config.sample_rate >> 8); - *byteptr++ = (char) (wpc->config.sample_rate >> 16); - - // handle 4-byte sampling rates for scientific applications, etc. - - if (wpc->config.sample_rate & 0x7f000000) - *byteptr++ = (char) (wpc->config.sample_rate >> 24) & 0x7f; - - wpmd->byte_length = (int32_t)(byteptr - (char *) wpmd->data); -} - -// Pack an entire block of samples (either mono or stereo) into a completed -// WavPack block. This function is actually a shell for pack_samples() and -// performs tasks like handling any shift required by the format, preprocessing -// of floating point data or integer data over 24 bits wide, and implementing -// the "extra" mode (via the extra?.c modules). It is assumed that there is -// sufficient space for the completed block at "wps->blockbuff" and that -// "wps->blockend" points to the end of the available space. A return value of -// FALSE indicates an error. - -static int scan_int32_data (WavpackStream *wps, int32_t *values, int32_t num_values); -static void scan_int32_quick (WavpackStream *wps, int32_t *values, int32_t num_values); -static void send_int32_data (WavpackStream *wps, int32_t *values, int32_t num_values); -static int scan_redundancy (int32_t *values, int32_t num_values); -static int pack_samples (WavpackContext *wpc, int32_t *buffer); -static void bs_open_write (Bitstream *bs, void *buffer_start, void *buffer_end); -static uint32_t bs_close_write (Bitstream *bs); - -int pack_block (WavpackContext *wpc, int32_t *buffer) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - uint32_t flags = wps->wphdr.flags, sflags = wps->wphdr.flags; - int32_t sample_count = wps->wphdr.block_samples, *orig_data = NULL; - int dynamic_shaping_done = FALSE; - - // This is done first because this code can potentially change the size of the block about to - // be encoded. This can happen because the dynamic noise shaping algorithm wants to send a - // shorter block because the desired noise-shaping profile is changing quickly. It can also - // be that the --merge-blocks feature wants to create a longer block because it combines areas - // with equal redundancy. These are not applicable for anything besides the first stream of - // the file and they are not applicable with float data or >24-bit data. - - if (!wpc->current_stream && !(flags & FLOAT_DATA) && (flags & MAG_MASK) >> MAG_LSB < 24) { - if ((wpc->config.flags & CONFIG_DYNAMIC_SHAPING) && !wpc->config.block_samples) { - dynamic_noise_shaping (wpc, buffer, TRUE); - sample_count = wps->wphdr.block_samples; - dynamic_shaping_done = TRUE; - } - else if (wpc->block_boundary && sample_count >= (int32_t) wpc->block_boundary * 2) { - int bc = sample_count / wpc->block_boundary, chans = (flags & MONO_DATA) ? 1 : 2; - int res = scan_redundancy (buffer, wpc->block_boundary * chans), i; - - for (i = 1; i < bc; ++i) - if (res != scan_redundancy (buffer + (i * wpc->block_boundary * chans), - wpc->block_boundary * chans)) { - sample_count = wps->wphdr.block_samples = wpc->block_boundary * i; - break; - } - } - } - - // This code scans stereo data to check whether it can be stored as mono data - // (i.e., all L/R samples identical). Only available with MAX_STREAM_VERS. - - if (!(flags & MONO_FLAG) && wpc->stream_version == MAX_STREAM_VERS) { - int32_t lor = 0, diff = 0; - int32_t *sptr, *dptr, i; - - for (sptr = buffer, i = 0; i < (int32_t) sample_count; sptr += 2, i++) { - lor |= sptr [0] | sptr [1]; - diff |= sptr [0] - sptr [1]; - - if (lor && diff) - break; - } - - if (i == sample_count && lor && !diff) { - flags &= ~(JOINT_STEREO | CROSS_DECORR | HYBRID_BALANCE); - wps->wphdr.flags = flags |= FALSE_STEREO; - dptr = buffer; - sptr = buffer; - - for (i = sample_count; i--; sptr++) - *dptr++ = *sptr++; - - if (!wps->false_stereo) { - wps->false_stereo = 1; - wps->num_terms = 0; - init_words (wps); - } - } - else if (wps->false_stereo) { - wps->false_stereo = 0; - wps->num_terms = 0; - init_words (wps); - } - } - - // This is where we handle any fixed shift which occurs when the integer size does not evenly fit - // in bytes (like 12-bit or 20-bit) and is the same for the entire file (not based on scanning) - - if (flags & SHIFT_MASK) { - int shift = (flags & SHIFT_MASK) >> SHIFT_LSB; - int mag = (flags & MAG_MASK) >> MAG_LSB; - uint32_t cnt = sample_count; - int32_t *ptr = buffer; - - if (flags & MONO_DATA) - while (cnt--) - *ptr++ >>= shift; - else - while (cnt--) { - *ptr++ >>= shift; - *ptr++ >>= shift; - } - - if ((mag -= shift) < 0) - flags &= ~MAG_MASK; - else - flags -= (1 << MAG_LSB) * shift; - - wps->wphdr.flags = flags; - } - - // The regular WavPack decorrelation and entropy encoding can handle up to 24-bit integer data. If - // we have float data or integers larger than 24-bit, then we have to potentially do extra processing. - // For lossy encoding, we can simply convert this data in-place to 24-bit data and encode and sent - // that, along with some metadata about how to restore the original format (even if the restoration - // is not exact). However, for lossless operation we must make a copy of the original data that will - // be used to create a "extension stream" that will allow verbatim restoration of the original data. - // In the hybrid mode that extension goes in the correction file, otherwise it goes in the mail file. - - if ((flags & FLOAT_DATA) || (flags & MAG_MASK) >> MAG_LSB >= 24) { // if float data or >24-bit integers... - - // if lossless we have to copy the data to use later... - - if ((!(flags & HYBRID_FLAG) || wpc->wvc_flag) && !(wpc->config.flags & CONFIG_SKIP_WVX)) { - orig_data = malloc (sizeof (f32) * ((flags & MONO_DATA) ? sample_count : sample_count * 2)); - memcpy (orig_data, buffer, sizeof (f32) * ((flags & MONO_DATA) ? sample_count : sample_count * 2)); - - if (flags & FLOAT_DATA) { // if lossless float data come here - wps->float_norm_exp = wpc->config.float_norm_exp; - - if (!scan_float_data (wps, (f32 *) buffer, (flags & MONO_DATA) ? sample_count : sample_count * 2)) { - free (orig_data); - orig_data = NULL; - } - } - else { // otherwise lossless > 24-bit integers - if (!scan_int32_data (wps, buffer, (flags & MONO_DATA) ? sample_count : sample_count * 2)) { - free (orig_data); - orig_data = NULL; - } - } - } - else { // otherwise, we're lossy, so no copy - if (flags & FLOAT_DATA) { - wps->float_norm_exp = wpc->config.float_norm_exp; - - if (scan_float_data (wps, (f32 *) buffer, (flags & MONO_DATA) ? sample_count : sample_count * 2)) - wpc->lossy_blocks = TRUE; - } - else if (scan_int32_data (wps, buffer, (flags & MONO_DATA) ? sample_count : sample_count * 2)) - wpc->lossy_blocks = TRUE; - } - - // if there's any chance of magnitude change, clear the noise-shaping error term - // and also reset the entropy encoder (which this does) - - wps->dc.error [0] = wps->dc.error [1] = 0; - wps->num_terms = 0; - } - // if 24-bit integers or less we do a "quick" scan which just scans for redundancy and does NOT set the flag's "magnitude" value - else { - scan_int32_quick (wps, buffer, (flags & MONO_DATA) ? sample_count : sample_count * 2); - - if (wps->shift != wps->int32_zeros + wps->int32_ones + wps->int32_dups) { // detect a change in any redundancy shifting here - wps->shift = wps->int32_zeros + wps->int32_ones + wps->int32_dups; - wps->dc.error [0] = wps->dc.error [1] = 0; // on a change, clear the noise-shaping error term and - wps->num_terms = 0; // also reset the entropy encoder (which this does) - } - } - - if ((wpc->config.flags & CONFIG_DYNAMIC_SHAPING) && !dynamic_shaping_done) // calculate dynamic noise profile - dynamic_noise_shaping (wpc, buffer, FALSE); - - // In some cases we need to start the decorrelation and entropy encoding from scratch. This - // could be because we switched from stereo to mono encoding or because the magnitude of - // the data changed, or just because this is the first block. - - if (!wps->num_passes && !wps->num_terms) { - wps->num_passes = 1; - - if (flags & MONO_DATA) - execute_mono (wpc, buffer, 1, 0); - else - execute_stereo (wpc, buffer, 1, 0); - - wps->num_passes = 0; - } - - // actually pack the block here and return on an error (which pretty much can only be a block buffer overrun) - - if (!pack_samples (wpc, buffer)) { - wps->wphdr.flags = sflags; - - if (orig_data) - free (orig_data); - - return FALSE; - } - else - wps->wphdr.flags = sflags; - - // potentially move any unused dynamic noise shaping profile data to use next time - - if (wps->dc.shaping_data) { - if (wps->dc.shaping_samples != sample_count) - memmove (wps->dc.shaping_data, wps->dc.shaping_data + sample_count, - (wps->dc.shaping_samples - sample_count) * sizeof (*wps->dc.shaping_data)); - - wps->dc.shaping_samples -= sample_count; - } - - // finally, if we're doing lossless float data or lossless >24-bit integers, this is where we take the - // original data that we saved earlier and create the "extension" stream containing the information - // required to refine the "lossy" 24-bit data into the lossless original - - if (orig_data) { - uint32_t data_count; - unsigned char *cptr; - - if (wpc->wvc_flag) - cptr = wps->block2buff + ((WavpackHeader *) wps->block2buff)->ckSize + 8; - else - cptr = wps->blockbuff + ((WavpackHeader *) wps->blockbuff)->ckSize + 8; - - bs_open_write (&wps->wvxbits, cptr + 8, wpc->wvc_flag ? wps->block2end : wps->blockend); - - if (flags & FLOAT_DATA) - send_float_data (wps, (f32*) orig_data, (flags & MONO_DATA) ? sample_count : sample_count * 2); - else - send_int32_data (wps, orig_data, (flags & MONO_DATA) ? sample_count : sample_count * 2); - - data_count = bs_close_write (&wps->wvxbits); - free (orig_data); - - if (data_count) { - if (data_count != (uint32_t) -1) { - *cptr++ = ID_WVX_BITSTREAM | ID_LARGE; - *cptr++ = (data_count += 4) >> 1; - *cptr++ = data_count >> 9; - *cptr++ = data_count >> 17; - *cptr++ = wps->crc_x; - *cptr++ = wps->crc_x >> 8; - *cptr++ = wps->crc_x >> 16; - *cptr = wps->crc_x >> 24; - - if (wpc->wvc_flag) - ((WavpackHeader *) wps->block2buff)->ckSize += data_count + 4; - else - ((WavpackHeader *) wps->blockbuff)->ckSize += data_count + 4; - } - else - return FALSE; - } - } - - return TRUE; -} - -// Quickly scan a buffer of long integer data and determine whether any -// redundancy in the LSBs can be used to reduce the data's magnitude. If yes, -// then the INT32_DATA flag is set and the int32 parameters are set. This -// version is designed to terminate as soon as it figures out that no -// redundancy is available so that it can be used for all files. - -static void scan_int32_quick (WavpackStream *wps, int32_t *values, int32_t num_values) -{ - uint32_t magdata = 0, ordata = 0, xordata = 0, anddata = ~0; - int total_shift = 0; - int32_t *dp, count; - - wps->int32_sent_bits = wps->int32_zeros = wps->int32_ones = wps->int32_dups = 0; - - for (dp = values, count = num_values; count--; dp++) { - magdata |= (*dp < 0) ? ~*dp : *dp; - xordata |= *dp ^ -(*dp & 1); - anddata &= *dp; - ordata |= *dp; - - if ((ordata & 1) && !(anddata & 1) && (xordata & 2)) - return; - } - - wps->wphdr.flags &= ~MAG_MASK; - - while (magdata) { - wps->wphdr.flags += 1 << MAG_LSB; - magdata >>= 1; - } - - if (!(wps->wphdr.flags & MAG_MASK)) - return; - - if (!(ordata & 1)) - while (!(ordata & 1)) { - wps->wphdr.flags -= 1 << MAG_LSB; - wps->int32_zeros++; - total_shift++; - ordata >>= 1; - } - else if (anddata & 1) - while (anddata & 1) { - wps->wphdr.flags -= 1 << MAG_LSB; - wps->int32_ones++; - total_shift++; - anddata >>= 1; - } - else if (!(xordata & 2)) - while (!(xordata & 2)) { - wps->wphdr.flags -= 1 << MAG_LSB; - wps->int32_dups++; - total_shift++; - xordata >>= 1; - } - - if (total_shift) { - wps->wphdr.flags |= INT32_DATA; - - for (dp = values, count = num_values; count--; dp++) - *dp >>= total_shift; - } -} - -static int scan_redundancy (int32_t *values, int32_t num_values) -{ - uint32_t ordata = 0, xordata = 0, anddata = ~0; - int redundant_bits = 0; - int32_t *dp, count; - - for (dp = values, count = num_values; count--; dp++) { - xordata |= *dp ^ -(*dp & 1); - anddata &= *dp; - ordata |= *dp; - - if ((ordata & 1) && !(anddata & 1) && (xordata & 2)) - return 0; - } - - if (!ordata || anddata == ~0 || !xordata) - return 0; - - if (!(ordata & 1)) - while (!(ordata & 1)) { - redundant_bits++; - ordata >>= 1; - } - else if (anddata & 1) - while (anddata & 1) { - redundant_bits = (redundant_bits + 1) | 0x40; - anddata >>= 1; - } - else if (!(xordata & 2)) - while (!(xordata & 2)) { - redundant_bits = (redundant_bits + 1) | 0x80; - redundant_bits++; - xordata >>= 1; - } - - return redundant_bits; -} - -// Scan a buffer of long integer data and determine whether any redundancy in -// the LSBs can be used to reduce the data's magnitude. If yes, then the -// INT32_DATA flag is set and the int32 parameters are set. If bits must still -// be transmitted literally to get down to 24 bits (which is all the integer -// compression code can handle) then we return TRUE to indicate that a wvx -// stream must be created in either lossless mode. - -static int scan_int32_data (WavpackStream *wps, int32_t *values, int32_t num_values) -{ - uint32_t magdata = 0, ordata = 0, xordata = 0, anddata = ~0; - uint32_t crc = 0xffffffff; - int total_shift = 0; - int32_t *dp, count; - - wps->int32_sent_bits = wps->int32_zeros = wps->int32_ones = wps->int32_dups = 0; - - for (dp = values, count = num_values; count--; dp++) { - crc = crc * 9 + (*dp & 0xffff) * 3 + ((*dp >> 16) & 0xffff); - magdata |= (*dp < 0) ? ~*dp : *dp; - xordata |= *dp ^ -(*dp & 1); - anddata &= *dp; - ordata |= *dp; - } - - wps->crc_x = crc; - wps->wphdr.flags &= ~MAG_MASK; - - while (magdata) { - wps->wphdr.flags += 1 << MAG_LSB; - magdata >>= 1; - } - - if (!((wps->wphdr.flags & MAG_MASK) >> MAG_LSB)) { - wps->wphdr.flags &= ~INT32_DATA; - return FALSE; - } - - if (!(ordata & 1)) - while (!(ordata & 1)) { - wps->wphdr.flags -= 1 << MAG_LSB; - wps->int32_zeros++; - total_shift++; - ordata >>= 1; - } - else if (anddata & 1) - while (anddata & 1) { - wps->wphdr.flags -= 1 << MAG_LSB; - wps->int32_ones++; - total_shift++; - anddata >>= 1; - } - else if (!(xordata & 2)) - while (!(xordata & 2)) { - wps->wphdr.flags -= 1 << MAG_LSB; - wps->int32_dups++; - total_shift++; - xordata >>= 1; - } - - if (((wps->wphdr.flags & MAG_MASK) >> MAG_LSB) > 23) { - wps->int32_sent_bits = (unsigned char)(((wps->wphdr.flags & MAG_MASK) >> MAG_LSB) - 23); - total_shift += wps->int32_sent_bits; - wps->wphdr.flags &= ~MAG_MASK; - wps->wphdr.flags += 23 << MAG_LSB; - } - - if (total_shift) { - wps->wphdr.flags |= INT32_DATA; - - for (dp = values, count = num_values; count--; dp++) - *dp >>= total_shift; - } - - return wps->int32_sent_bits; -} - -// For the specified buffer values and the int32 parameters stored in "wps", -// send the literal bits required to the "wvxbits" bitstream. - -static void send_int32_data (WavpackStream *wps, int32_t *values, int32_t num_values) -{ - int sent_bits = wps->int32_sent_bits, pre_shift; - int32_t mask = (1 << sent_bits) - 1; - int32_t count, value, *dp; - - pre_shift = wps->int32_zeros + wps->int32_ones + wps->int32_dups; - - if (sent_bits) - for (dp = values, count = num_values; count--; dp++) { - value = (*dp >> pre_shift) & mask; - putbits (value, sent_bits, &wps->wvxbits); - } -} - -void send_general_metadata (WavpackContext *wpc) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - uint32_t flags = wps->wphdr.flags; - WavpackMetadata wpmd; - - if ((flags & SRATE_MASK) == SRATE_MASK && wpc->config.sample_rate != 44100) { - write_sample_rate (wpc, &wpmd); - copy_metadata (&wpmd, wps->blockbuff, wps->blockend); - free_metadata (&wpmd); - } - - if ((flags & INITIAL_BLOCK) && - (wpc->config.num_channels > 2 || - wpc->config.channel_mask != 0x5 - wpc->config.num_channels)) { - write_channel_info (wpc, &wpmd); - copy_metadata (&wpmd, wps->blockbuff, wps->blockend); - free_metadata (&wpmd); - - if (wpc->channel_identities) { - write_channel_identities_info (wpc, &wpmd); - copy_metadata (&wpmd, wps->blockbuff, wps->blockend); - free_metadata (&wpmd); - } - } - - if ((flags & INITIAL_BLOCK) && !wps->sample_index) { - write_config_info (wpc, &wpmd); - copy_metadata (&wpmd, wps->blockbuff, wps->blockend); - free_metadata (&wpmd); - } - - if (flags & INITIAL_BLOCK) { - write_new_config_info (wpc, &wpmd); - copy_metadata (&wpmd, wps->blockbuff, wps->blockend); - free_metadata (&wpmd); - } -} - -// Pack an entire block of samples (either mono or stereo) into a completed -// WavPack block. It is assumed that there is sufficient space for the -// completed block at "wps->blockbuff" and that "wps->blockend" points to the -// end of the available space. A return value of FALSE indicates an error. -// Any unsent metadata is transmitted first, then required metadata for this -// block is sent, and finally the compressed integer data is sent. If a "wpx" -// stream is required for floating point data or large integer data, then this -// must be handled outside this function. To find out how much data was written -// the caller must look at the ckSize field of the written WavpackHeader, NOT -// the one in the WavpackStream. - -#ifdef OPT_ASM_X86 - #define DECORR_STEREO_PASS(a,b,c) do { \ - if (pack_cpu_has_feature_x86 (CPU_FEATURE_MMX)) \ - pack_decorr_stereo_pass_x86 (a, b, c); \ - else decorr_stereo_pass (a, b, c); } while (0) - #define DECORR_MONO_BUFFER pack_decorr_mono_buffer_x86 - #define SCAN_MAX_MAGNITUDE(a,b) \ - (pack_cpu_has_feature_x86 (CPU_FEATURE_MMX) ? \ - scan_max_magnitude_x86 (a, b) : \ - scan_max_magnitude (a, b)) -#elif defined(OPT_ASM_X64) && (defined (_WIN64) || defined(__CYGWIN__) || defined(__MINGW64__) || defined(__midipix__)) - #define DECORR_STEREO_PASS pack_decorr_stereo_pass_x64win - #define DECORR_MONO_BUFFER pack_decorr_mono_buffer_x64win - #define SCAN_MAX_MAGNITUDE scan_max_magnitude_x64win -#elif defined(OPT_ASM_X64) - #define DECORR_STEREO_PASS pack_decorr_stereo_pass_x64 - #define DECORR_MONO_BUFFER pack_decorr_mono_buffer_x64 - #define SCAN_MAX_MAGNITUDE scan_max_magnitude_x64 -#else - #define DECORR_STEREO_PASS decorr_stereo_pass - #define DECORR_MONO_BUFFER decorr_mono_buffer - #define SCAN_MAX_MAGNITUDE scan_max_magnitude -#endif - -uint32_t DECORR_MONO_BUFFER (int32_t *buffer, struct decorr_pass *decorr_passes, int32_t num_terms, int32_t sample_count); - -#ifdef OPT_ASM_X86 -void decorr_stereo_pass (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count); -void pack_decorr_stereo_pass_x86 (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count); -uint32_t scan_max_magnitude (int32_t *values, int32_t num_values); -uint32_t scan_max_magnitude_x86 (int32_t *values, int32_t num_values); -#else -void DECORR_STEREO_PASS (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count); -uint32_t SCAN_MAX_MAGNITUDE (int32_t *values, int32_t num_values); -#endif - -// This macro controls the "repack" function where a block of samples will be repacked with -// fewer terms if a single residual exceeds the specified magnitude threshold. - -#define REPACK_SAFE_NUM_TERMS 5 // 5 terms is always okay (and we truncate to this) - -static int pack_samples (WavpackContext *wpc, int32_t *buffer) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream], saved_stream; - uint32_t flags = wps->wphdr.flags, repack_possible, data_count, crc, crc2, i; - uint32_t sample_count = wps->wphdr.block_samples, repack_mask; - int32_t *bptr, *saved_buffer = NULL; - struct decorr_pass *dpp; - WavpackMetadata wpmd; - - crc = crc2 = 0xffffffff; - - if (!(flags & HYBRID_FLAG) && (flags & MONO_DATA)) { - int32_t *eptr = buffer + sample_count; - - for (bptr = buffer; bptr < eptr;) - crc += (crc << 1) + *bptr++; - - if (wps->num_passes) - execute_mono (wpc, buffer, !wps->num_terms, 1); - } - else if (!(flags & HYBRID_FLAG) && !(flags & MONO_DATA)) { - int32_t *eptr = buffer + (sample_count * 2); - - for (bptr = buffer; bptr < eptr; bptr += 2) - crc += (crc << 3) + (bptr [0] << 1) + bptr [0] + bptr [1]; - - if (wps->num_passes) { - execute_stereo (wpc, buffer, !wps->num_terms, 1); - flags = wps->wphdr.flags; - } - } - else if ((flags & HYBRID_FLAG) && (flags & MONO_DATA)) { - if (wps->num_passes) - execute_mono (wpc, buffer, !wps->num_terms, 0); - } - else if ((flags & HYBRID_FLAG) && !(flags & MONO_DATA)) { - if (wps->num_passes) { - execute_stereo (wpc, buffer, !wps->num_terms, 0); - flags = wps->wphdr.flags; - } - } - - wps->wphdr.ckSize = sizeof (WavpackHeader) - 8; - memcpy (wps->blockbuff, &wps->wphdr, sizeof (WavpackHeader)); - - if (wpc->metacount) { - WavpackMetadata *wpmdp = wpc->metadata; - - while (wpc->metacount) { - copy_metadata (wpmdp, wps->blockbuff, wps->blockend); - wpc->metabytes -= wpmdp->byte_length; - free_metadata (wpmdp++); - wpc->metacount--; - } - - free (wpc->metadata); - wpc->metadata = NULL; - } - - if (!sample_count) - return TRUE; - - memcpy (&wps->wphdr, wps->blockbuff, sizeof (WavpackHeader)); - repack_possible = !wps->num_passes && wps->num_terms > REPACK_SAFE_NUM_TERMS; - repack_mask = (flags & MAG_MASK) >> MAG_LSB >= 16 ? 0xF0000000 : 0xFFF00000; - saved_stream = *wps; - - if (repack_possible && !(flags & HYBRID_FLAG)) { - saved_buffer = malloc (sample_count * sizeof (int32_t) * (flags & MONO_DATA ? 1 : 2)); - memcpy (saved_buffer, buffer, sample_count * sizeof (int32_t) * (flags & MONO_DATA ? 1 : 2)); - } - - // This code is written as a loop, but in the overwhelming majority of cases it executes only once. - // If one of the higher modes is being used and a residual exceeds a certain threshold, then the - // block will be repacked using fewer decorrelation terms. Note that this has only been triggered - // by pathological audio samples designed to trigger it...in practice this might never happen. Note - // that this only applies to the "high" and "very high" modes and only when packing directly - // (i.e. without the "extra" modes that will have already checked magnitude). - - do { - short *shaping_array = wps->dc.shaping_array; - int tcount, lossy = FALSE, m = 0; - double noise_acc = 0.0, noise; - uint32_t max_magnitude = 0; - - write_decorr_terms (wps, &wpmd); - copy_metadata (&wpmd, wps->blockbuff, wps->blockend); - free_metadata (&wpmd); - - write_decorr_weights (wps, &wpmd); - copy_metadata (&wpmd, wps->blockbuff, wps->blockend); - free_metadata (&wpmd); - - write_decorr_samples (wps, &wpmd); - copy_metadata (&wpmd, wps->blockbuff, wps->blockend); - free_metadata (&wpmd); - - write_entropy_vars (wps, &wpmd); - copy_metadata (&wpmd, wps->blockbuff, wps->blockend); - free_metadata (&wpmd); - - if (flags & HYBRID_FLAG) { - write_hybrid_profile (wps, &wpmd); - copy_metadata (&wpmd, wps->blockbuff, wps->blockend); - free_metadata (&wpmd); - } - - if (flags & FLOAT_DATA) { - write_float_info (wps, &wpmd); - copy_metadata (&wpmd, wps->blockbuff, wps->blockend); - free_metadata (&wpmd); - } - - if (flags & INT32_DATA) { - write_int32_info (wps, &wpmd); - copy_metadata (&wpmd, wps->blockbuff, wps->blockend); - free_metadata (&wpmd); - } - - send_general_metadata (wpc); - bs_open_write (&wps->wvbits, wps->blockbuff + ((WavpackHeader *) wps->blockbuff)->ckSize + 12, wps->blockend); - - if (wpc->wvc_flag) { - wps->wphdr.ckSize = sizeof (WavpackHeader) - 8; - memcpy (wps->block2buff, &wps->wphdr, sizeof (WavpackHeader)); - - if (flags & HYBRID_SHAPE) { - write_shaping_info (wps, &wpmd); - copy_metadata (&wpmd, wps->block2buff, wps->block2end); - free_metadata (&wpmd); - } - - bs_open_write (&wps->wvcbits, wps->block2buff + ((WavpackHeader *) wps->block2buff)->ckSize + 12, wps->block2end); - } - - /////////////////////// handle lossless mono mode ///////////////////////// - - if (!(flags & HYBRID_FLAG) && (flags & MONO_DATA)) { - if (!wps->num_passes) { - max_magnitude = DECORR_MONO_BUFFER (buffer, wps->decorr_passes, wps->num_terms, sample_count); - m = sample_count & (MAX_TERM - 1); - } - - send_words_lossless (wps, buffer, sample_count); - } - - //////////////////// handle the lossless stereo mode ////////////////////// - - else if (!(flags & HYBRID_FLAG) && !(flags & MONO_DATA)) { - if (!wps->num_passes) { - if (flags & JOINT_STEREO) { - int32_t *eptr = buffer + (sample_count * 2); - - for (bptr = buffer; bptr < eptr; bptr += 2) - bptr [1] += ((bptr [0] -= bptr [1]) >> 1); - } - - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount-- ; dpp++) - DECORR_STEREO_PASS (dpp, buffer, sample_count); - - m = sample_count & (MAX_TERM - 1); - - if (repack_possible) - max_magnitude = SCAN_MAX_MAGNITUDE (buffer, sample_count * 2); - } - - send_words_lossless (wps, buffer, sample_count); - } - - /////////////////// handle the lossy/hybrid mono mode ///////////////////// - - else if ((flags & HYBRID_FLAG) && (flags & MONO_DATA)) - for (bptr = buffer, i = 0; i < sample_count; ++i) { - int32_t code, temp; - int shaping_weight; - - crc2 += (crc2 << 1) + (code = *bptr++); - - if (flags & HYBRID_SHAPE) { - if (shaping_array) - shaping_weight = *shaping_array++; - else - shaping_weight = (wps->dc.shaping_acc [0] += wps->dc.shaping_delta [0]) >> 16; - - temp = -apply_weight (shaping_weight, wps->dc.error [0]); - - if ((flags & NEW_SHAPING) && shaping_weight < 0 && temp) { - if (temp == wps->dc.error [0]) - temp = (temp < 0) ? temp + 1 : temp - 1; - - wps->dc.error [0] = -code; - code += temp; - } - else - wps->dc.error [0] = -(code += temp); - } - - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount-- ; dpp++) - if (dpp->term > MAX_TERM) { - if (dpp->term & 1) - dpp->samples_A [2] = 2 * dpp->samples_A [0] - dpp->samples_A [1]; - else - dpp->samples_A [2] = (3 * dpp->samples_A [0] - dpp->samples_A [1]) >> 1; - - code -= (dpp->aweight_A = apply_weight (dpp->weight_A, dpp->samples_A [2])); - } - else - code -= (dpp->aweight_A = apply_weight (dpp->weight_A, dpp->samples_A [m])); - - max_magnitude |= (code < 0 ? ~code : code); - code = send_word (wps, code, 0); - - while (--dpp >= wps->decorr_passes) { - if (dpp->term > MAX_TERM) { - update_weight (dpp->weight_A, dpp->delta, dpp->samples_A [2], code); - dpp->samples_A [1] = dpp->samples_A [0]; - dpp->samples_A [0] = (code += dpp->aweight_A); - } - else { - int32_t sam = dpp->samples_A [m]; - - update_weight (dpp->weight_A, dpp->delta, sam, code); - dpp->samples_A [(m + dpp->term) & (MAX_TERM - 1)] = (code += dpp->aweight_A); - } - } - - wps->dc.error [0] += code; - m = (m + 1) & (MAX_TERM - 1); - - if ((crc += (crc << 1) + code) != crc2) - lossy = TRUE; - - if (wpc->config.flags & CONFIG_CALC_NOISE) { - noise = code - bptr [-1]; - - noise_acc += noise *= noise; - wps->dc.noise_ave = (wps->dc.noise_ave * 0.99) + (noise * 0.01); - - if (wps->dc.noise_ave > wps->dc.noise_max) - wps->dc.noise_max = wps->dc.noise_ave; - } - } - - /////////////////// handle the lossy/hybrid stereo mode /////////////////// - - else if ((flags & HYBRID_FLAG) && !(flags & MONO_DATA)) - for (bptr = buffer, i = 0; i < sample_count; ++i) { - int32_t left, right, temp; - int shaping_weight; - - left = *bptr++; - crc2 += (crc2 << 3) + (left << 1) + left + (right = *bptr++); - - if (flags & HYBRID_SHAPE) { - if (shaping_array) - shaping_weight = *shaping_array++; - else - shaping_weight = (wps->dc.shaping_acc [0] += wps->dc.shaping_delta [0]) >> 16; - - temp = -apply_weight (shaping_weight, wps->dc.error [0]); - - if ((flags & NEW_SHAPING) && shaping_weight < 0 && temp) { - if (temp == wps->dc.error [0]) - temp = (temp < 0) ? temp + 1 : temp - 1; - - wps->dc.error [0] = -left; - left += temp; - } - else - wps->dc.error [0] = -(left += temp); - - if (!shaping_array) - shaping_weight = (wps->dc.shaping_acc [1] += wps->dc.shaping_delta [1]) >> 16; - - temp = -apply_weight (shaping_weight, wps->dc.error [1]); - - if ((flags & NEW_SHAPING) && shaping_weight < 0 && temp) { - if (temp == wps->dc.error [1]) - temp = (temp < 0) ? temp + 1 : temp - 1; - - wps->dc.error [1] = -right; - right += temp; - } - else - wps->dc.error [1] = -(right += temp); - } - - if (flags & JOINT_STEREO) - right += ((left -= right) >> 1); - - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount-- ; dpp++) - if (dpp->term > MAX_TERM) { - if (dpp->term & 1) { - dpp->samples_A [2] = 2 * dpp->samples_A [0] - dpp->samples_A [1]; - dpp->samples_B [2] = 2 * dpp->samples_B [0] - dpp->samples_B [1]; - } - else { - dpp->samples_A [2] = (3 * dpp->samples_A [0] - dpp->samples_A [1]) >> 1; - dpp->samples_B [2] = (3 * dpp->samples_B [0] - dpp->samples_B [1]) >> 1; - } - - left -= (dpp->aweight_A = apply_weight (dpp->weight_A, dpp->samples_A [2])); - right -= (dpp->aweight_B = apply_weight (dpp->weight_B, dpp->samples_B [2])); - } - else if (dpp->term > 0) { - left -= (dpp->aweight_A = apply_weight (dpp->weight_A, dpp->samples_A [m])); - right -= (dpp->aweight_B = apply_weight (dpp->weight_B, dpp->samples_B [m])); - } - else { - if (dpp->term == -1) - dpp->samples_B [0] = left; - else if (dpp->term == -2) - dpp->samples_A [0] = right; - - left -= (dpp->aweight_A = apply_weight (dpp->weight_A, dpp->samples_A [0])); - right -= (dpp->aweight_B = apply_weight (dpp->weight_B, dpp->samples_B [0])); - } - - max_magnitude |= (left < 0 ? ~left : left) | (right < 0 ? ~right : right); - left = send_word (wps, left, 0); - right = send_word (wps, right, 1); - - while (--dpp >= wps->decorr_passes) - if (dpp->term > MAX_TERM) { - update_weight (dpp->weight_A, dpp->delta, dpp->samples_A [2], left); - update_weight (dpp->weight_B, dpp->delta, dpp->samples_B [2], right); - - dpp->samples_A [1] = dpp->samples_A [0]; - dpp->samples_B [1] = dpp->samples_B [0]; - - dpp->samples_A [0] = (left += dpp->aweight_A); - dpp->samples_B [0] = (right += dpp->aweight_B); - } - else if (dpp->term > 0) { - int k = (m + dpp->term) & (MAX_TERM - 1); - - update_weight (dpp->weight_A, dpp->delta, dpp->samples_A [m], left); - dpp->samples_A [k] = (left += dpp->aweight_A); - - update_weight (dpp->weight_B, dpp->delta, dpp->samples_B [m], right); - dpp->samples_B [k] = (right += dpp->aweight_B); - } - else { - if (dpp->term == -1) { - dpp->samples_B [0] = left + dpp->aweight_A; - dpp->aweight_B = apply_weight (dpp->weight_B, dpp->samples_B [0]); - } - else if (dpp->term == -2) { - dpp->samples_A [0] = right + dpp->aweight_B; - dpp->aweight_A = apply_weight (dpp->weight_A, dpp->samples_A [0]); - } - - update_weight_clip (dpp->weight_A, dpp->delta, dpp->samples_A [0], left); - update_weight_clip (dpp->weight_B, dpp->delta, dpp->samples_B [0], right); - dpp->samples_B [0] = (left += dpp->aweight_A); - dpp->samples_A [0] = (right += dpp->aweight_B); - } - - if (flags & JOINT_STEREO) - left += (right -= (left >> 1)); - - wps->dc.error [0] += left; - wps->dc.error [1] += right; - m = (m + 1) & (MAX_TERM - 1); - - if ((crc += (crc << 3) + (left << 1) + left + right) != crc2) - lossy = TRUE; - - if (wpc->config.flags & CONFIG_CALC_NOISE) { - noise = (double)(left - bptr [-2]) * (left - bptr [-2]); - noise += (double)(right - bptr [-1]) * (right - bptr [-1]); - - noise_acc += noise /= 2.0; - wps->dc.noise_ave = (wps->dc.noise_ave * 0.99) + (noise * 0.01); - - if (wps->dc.noise_ave > wps->dc.noise_max) - wps->dc.noise_max = wps->dc.noise_ave; - } - } - - if (m) - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) - if (dpp->term > 0 && dpp->term <= MAX_TERM) { - int32_t temp_A [MAX_TERM], temp_B [MAX_TERM]; - int k; - - memcpy (temp_A, dpp->samples_A, sizeof (dpp->samples_A)); - memcpy (temp_B, dpp->samples_B, sizeof (dpp->samples_B)); - - for (k = 0; k < MAX_TERM; k++) { - dpp->samples_A [k] = temp_A [m]; - dpp->samples_B [k] = temp_B [m]; - m = (m + 1) & (MAX_TERM - 1); - } - } - - if (wpc->config.flags & CONFIG_CALC_NOISE) - wps->dc.noise_sum += noise_acc; - - flush_word (wps); - data_count = bs_close_write (&wps->wvbits); - - if (data_count) { - if (data_count != (uint32_t) -1) { - unsigned char *cptr = wps->blockbuff + ((WavpackHeader *) wps->blockbuff)->ckSize + 8; - - *cptr++ = ID_WV_BITSTREAM | ID_LARGE; - *cptr++ = data_count >> 1; - *cptr++ = data_count >> 9; - *cptr++ = data_count >> 17; - ((WavpackHeader *) wps->blockbuff)->ckSize += data_count + 4; - } - else - return FALSE; - } - - ((WavpackHeader *) wps->blockbuff)->crc = crc; - - if (wpc->wvc_flag) { - data_count = bs_close_write (&wps->wvcbits); - - if (data_count && lossy) { - if (data_count != (uint32_t) -1) { - unsigned char *cptr = wps->block2buff + ((WavpackHeader *) wps->block2buff)->ckSize + 8; - - *cptr++ = ID_WVC_BITSTREAM | ID_LARGE; - *cptr++ = data_count >> 1; - *cptr++ = data_count >> 9; - *cptr++ = data_count >> 17; - ((WavpackHeader *) wps->block2buff)->ckSize += data_count + 4; - } - else - return FALSE; - } - - ((WavpackHeader *) wps->block2buff)->crc = crc2; - } - else if (lossy) - wpc->lossy_blocks = TRUE; - - // we're done with the entire block, so now we check if our threshold for a "repack" was hit - - if (repack_possible && wps->num_terms > REPACK_SAFE_NUM_TERMS && (max_magnitude & repack_mask)) { - *wps = saved_stream; - wps->num_terms = REPACK_SAFE_NUM_TERMS; - memcpy (wps->blockbuff, &wps->wphdr, sizeof (WavpackHeader)); - - if (saved_buffer) - memcpy (buffer, saved_buffer, sample_count * sizeof (int32_t) * (flags & MONO_DATA ? 1 : 2)); - - if (flags & HYBRID_FLAG) - crc = crc2 = 0xffffffff; - } - else { - // if we actually did repack the block with fewer terms, we detect that here - // and clean up so that we return to the original term count...otherwise we just - // free the saved_buffer (if allocated) and break out of the loop - if (wps->num_terms != saved_stream.num_terms) { - int ti; - - for (ti = wps->num_terms; ti < saved_stream.num_terms; ++ti) { - wps->decorr_passes [ti].weight_A = wps->decorr_passes [ti].weight_B = 0; - CLEAR (wps->decorr_passes [ti].samples_A); - CLEAR (wps->decorr_passes [ti].samples_B); - } - - wps->num_terms = saved_stream.num_terms; - } - - if (saved_buffer) - free (saved_buffer); - - break; - } - - } while (1); - - wps->sample_index += sample_count; - return TRUE; -} - -#if !defined(OPT_ASM_X64) - -// This is the "C" version of the stereo decorrelation pass function. There -// are assembly optimized versions of this that can be used if available. -// It performs a single pass of stereo decorrelation, in place, as specified -// by the decorr_pass structure. Note that this function does NOT return the -// dpp->samples_X[] values in the "normalized" positions for terms 1-8, so if -// the number of samples is not a multiple of MAX_TERM, these must be moved if -// they are to be used somewhere else. - -void decorr_stereo_pass (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count) -{ - int32_t *bptr, *eptr = buffer + (sample_count * 2); - int m, k; - - switch (dpp->term) { - case 17: - for (bptr = buffer; bptr < eptr; bptr += 2) { - int32_t sam, tmp; - - sam = 2 * dpp->samples_A [0] - dpp->samples_A [1]; - dpp->samples_A [1] = dpp->samples_A [0]; - bptr [0] = tmp = (dpp->samples_A [0] = bptr [0]) - apply_weight (dpp->weight_A, sam); - update_weight (dpp->weight_A, dpp->delta, sam, tmp); - - sam = 2 * dpp->samples_B [0] - dpp->samples_B [1]; - dpp->samples_B [1] = dpp->samples_B [0]; - bptr [1] = tmp = (dpp->samples_B [0] = bptr [1]) - apply_weight (dpp->weight_B, sam); - update_weight (dpp->weight_B, dpp->delta, sam, tmp); - } - - break; - - case 18: - for (bptr = buffer; bptr < eptr; bptr += 2) { - int32_t sam, tmp; - - sam = dpp->samples_A [0] + ((dpp->samples_A [0] - dpp->samples_A [1]) >> 1); - dpp->samples_A [1] = dpp->samples_A [0]; - bptr [0] = tmp = (dpp->samples_A [0] = bptr [0]) - apply_weight (dpp->weight_A, sam); - update_weight (dpp->weight_A, dpp->delta, sam, tmp); - - sam = dpp->samples_B [0] + ((dpp->samples_B [0] - dpp->samples_B [1]) >> 1); - dpp->samples_B [1] = dpp->samples_B [0]; - bptr [1] = tmp = (dpp->samples_B [0] = bptr [1]) - apply_weight (dpp->weight_B, sam); - update_weight (dpp->weight_B, dpp->delta, sam, tmp); - } - - break; - - default: - for (m = 0, k = dpp->term & (MAX_TERM - 1), bptr = buffer; bptr < eptr; bptr += 2) { - int32_t sam, tmp; - - sam = dpp->samples_A [m]; - bptr [0] = tmp = (dpp->samples_A [k] = bptr [0]) - apply_weight (dpp->weight_A, sam); - update_weight (dpp->weight_A, dpp->delta, sam, tmp); - - sam = dpp->samples_B [m]; - bptr [1] = tmp = (dpp->samples_B [k] = bptr [1]) - apply_weight (dpp->weight_B, sam); - update_weight (dpp->weight_B, dpp->delta, sam, tmp); - - m = (m + 1) & (MAX_TERM - 1); - k = (k + 1) & (MAX_TERM - 1); - } - - break; - - case -1: - for (bptr = buffer; bptr < eptr; bptr += 2) { - int32_t sam_A, sam_B, tmp; - - sam_A = dpp->samples_A [0]; - bptr [0] = tmp = (sam_B = bptr [0]) - apply_weight (dpp->weight_A, sam_A); - update_weight_clip (dpp->weight_A, dpp->delta, sam_A, tmp); - - bptr [1] = tmp = (dpp->samples_A [0] = bptr [1]) - apply_weight (dpp->weight_B, sam_B); - update_weight_clip (dpp->weight_B, dpp->delta, sam_B, tmp); - } - - break; - - case -2: - for (bptr = buffer; bptr < eptr; bptr += 2) { - int32_t sam_A, sam_B, tmp; - - sam_B = dpp->samples_B [0]; - bptr [1] = tmp = (sam_A = bptr [1]) - apply_weight (dpp->weight_B, sam_B); - update_weight_clip (dpp->weight_B, dpp->delta, sam_B, tmp); - - bptr [0] = tmp = (dpp->samples_B [0] = bptr [0]) - apply_weight (dpp->weight_A, sam_A); - update_weight_clip (dpp->weight_A, dpp->delta, sam_A, tmp); - } - - break; - - case -3: - for (bptr = buffer; bptr < eptr; bptr += 2) { - int32_t sam_A, sam_B, tmp; - - sam_A = dpp->samples_A [0]; - sam_B = dpp->samples_B [0]; - - dpp->samples_A [0] = tmp = bptr [1]; - bptr [1] = tmp -= apply_weight (dpp->weight_B, sam_B); - update_weight_clip (dpp->weight_B, dpp->delta, sam_B, tmp); - - dpp->samples_B [0] = tmp = bptr [0]; - bptr [0] = tmp -= apply_weight (dpp->weight_A, sam_A); - update_weight_clip (dpp->weight_A, dpp->delta, sam_A, tmp); - } - - break; - } -} - -// This is the "C" version of the magnitude scanning function. There are -// assembly optimized versions of this that can be used if available. This -// function scans a buffer of signed 32-bit ints and returns the magnitude -// of the largest sample, with a power-of-two resolution. It might be more -// useful to return the actual maximum absolute value (and this function -// could do that without breaking anything), but that implementation would -// likely be slower. Instead, this simply returns the "or" of all the -// values "xor"d with their own sign. - -uint32_t scan_max_magnitude (int32_t *values, int32_t num_values) -{ - uint32_t magnitude = 0; - - while (num_values--) - magnitude |= (*values < 0) ? ~*values++ : *values++; - - return magnitude; -} - -#endif - -#if !defined(OPT_ASM_X86) && !defined(OPT_ASM_X64) - -// This is the "C" version of the mono decorrelation pass function. There -// are assembly optimized versions of this that are be used if available. -// It decorrelates a buffer of mono samples, in place, as specified by the array -// of decorr_pass structures. Note that this function does NOT return the -// dpp->samples_X[] values in the "normalized" positions for terms 1-8, so if -// the number of samples is not a multiple of MAX_TERM, these must be moved if -// they are to be used somewhere else. The magnitude of the output samples is -// accumulated and returned (see scan_max_magnitude() for more details). - -uint32_t decorr_mono_buffer (int32_t *buffer, struct decorr_pass *decorr_passes, int32_t num_terms, int32_t sample_count) -{ - uint32_t max_magnitude = 0; - struct decorr_pass *dpp; - int tcount, i; - - for (i = 0; i < sample_count; ++i) { - int32_t code = *buffer; - - for (tcount = num_terms, dpp = decorr_passes; tcount--; dpp++) { - int32_t sam; - - if (dpp->term > MAX_TERM) { - if (dpp->term & 1) - sam = 2 * dpp->samples_A [0] - dpp->samples_A [1]; - else - sam = (3 * dpp->samples_A [0] - dpp->samples_A [1]) >> 1; - - dpp->samples_A [1] = dpp->samples_A [0]; - dpp->samples_A [0] = code; - } - else { - sam = dpp->samples_A [i & (MAX_TERM - 1)]; - dpp->samples_A [(i + dpp->term) & (MAX_TERM - 1)] = code; - } - - code -= apply_weight (dpp->weight_A, sam); - update_weight (dpp->weight_A, dpp->delta, sam, code); - } - - *buffer++ = code; - max_magnitude |= (code < 0) ? ~code : code; - } - - return max_magnitude; -} - -#endif - -////////////////////////////////////////////////////////////////////////////// -// This function returns the accumulated RMS noise as a double if the // -// CALC_NOISE bit was set in the WavPack header. The peak noise can also be // -// returned if desired. See wavpack.c for the calculations required to // -// convert this into decibels of noise below full scale. // -////////////////////////////////////////////////////////////////////////////// - -double WavpackGetEncodedNoise (WavpackContext *wpc, double *peak) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - - if (peak) - *peak = wps->dc.noise_max; - - return wps->dc.noise_sum; -} - -// Open the specified BitStream using the specified buffer pointers. It is -// assumed that enough buffer space has been allocated for all data that will -// be written, otherwise an error will be generated. - -static void bs_write (Bitstream *bs); - -static void bs_open_write (Bitstream *bs, void *buffer_start, void *buffer_end) -{ - bs->error = bs->sr = bs->bc = 0; - bs->ptr = bs->buf = buffer_start; - bs->end = buffer_end; - bs->wrap = bs_write; -} - -// This function is only called from the putbit() and putbits() macros when -// the buffer is full, which is now flagged as an error. - -static void bs_write (Bitstream *bs) -{ - bs->ptr = bs->buf; - bs->error = 1; -} - -// This function forces a flushing write of the specified BitStream, and -// returns the total number of bytes written into the buffer. - -static uint32_t bs_close_write (Bitstream *bs) -{ - uint32_t bytes_written; - - if (bs->error) - return (uint32_t) -1; - - while (1) { - while (bs->bc) - putbit_1 (bs); - - bytes_written = (uint32_t)(bs->ptr - bs->buf) * sizeof (*(bs->ptr)); - - if (bytes_written & 1) { - putbit_1 (bs); - } - else - break; - }; - - CLEAR (*bs); - return bytes_written; -} diff --git a/Frameworks/WavPack/Files/pack_dns.c b/Frameworks/WavPack/Files/pack_dns.c deleted file mode 100644 index 2c6f3c8f1..000000000 --- a/Frameworks/WavPack/Files/pack_dns.c +++ /dev/null @@ -1,191 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// pack_dns.c - -// This module handles the implementation of "dynamic noise shaping" which is -// designed to move the spectrum of the quantization noise introduced by lossy -// compression up or down in frequency so that it is more likely to be masked -// by the source material. - -#include -#include -#include - -#include "wavpack_local.h" - -static void best_floating_line (short *values, int num_values, double *initial_y, double *final_y, short *max_error); - -void dynamic_noise_shaping (WavpackContext *wpc, int32_t *buffer, int shortening_allowed) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - int32_t sample_count = wps->wphdr.block_samples; - struct decorr_pass *ap = &wps->analysis_pass; - uint32_t flags = wps->wphdr.flags; - int32_t *bptr, temp, sam; - short *swptr; - int sc; - - if (!wps->num_terms && sample_count > 8) { - if (flags & MONO_DATA) - for (bptr = buffer + sample_count - 3, sc = sample_count - 2; sc--;) { - sam = (3 * bptr [1] - bptr [2]) >> 1; - temp = *bptr-- - apply_weight (ap->weight_A, sam); - update_weight (ap->weight_A, 2, sam, temp); - } - else - for (bptr = buffer + (sample_count - 3) * 2 + 1, sc = sample_count - 2; sc--;) { - sam = (3 * bptr [2] - bptr [4]) >> 1; - temp = *bptr-- - apply_weight (ap->weight_B, sam); - update_weight (ap->weight_B, 2, sam, temp); - sam = (3 * bptr [2] - bptr [4]) >> 1; - temp = *bptr-- - apply_weight (ap->weight_A, sam); - update_weight (ap->weight_A, 2, sam, temp); - } - } - - if (sample_count > wps->dc.shaping_samples) { - sc = sample_count - wps->dc.shaping_samples; - swptr = wps->dc.shaping_data + wps->dc.shaping_samples; - bptr = buffer + wps->dc.shaping_samples * ((flags & MONO_DATA) ? 1 : 2); - - if (flags & MONO_DATA) - while (sc--) { - sam = (3 * ap->samples_A [0] - ap->samples_A [1]) >> 1; - temp = *bptr - apply_weight (ap->weight_A, sam); - update_weight (ap->weight_A, 2, sam, temp); - ap->samples_A [1] = ap->samples_A [0]; - ap->samples_A [0] = *bptr++; - *swptr++ = (ap->weight_A < 256) ? 1024 : 1536 - ap->weight_A * 2; - } - else - while (sc--) { - sam = (3 * ap->samples_A [0] - ap->samples_A [1]) >> 1; - temp = *bptr - apply_weight (ap->weight_A, sam); - update_weight (ap->weight_A, 2, sam, temp); - ap->samples_A [1] = ap->samples_A [0]; - ap->samples_A [0] = *bptr++; - - sam = (3 * ap->samples_B [0] - ap->samples_B [1]) >> 1; - temp = *bptr - apply_weight (ap->weight_B, sam); - update_weight (ap->weight_B, 2, sam, temp); - ap->samples_B [1] = ap->samples_B [0]; - ap->samples_B [0] = *bptr++; - - *swptr++ = (ap->weight_A + ap->weight_B < 512) ? 1024 : 1536 - ap->weight_A - ap->weight_B; - } - - wps->dc.shaping_samples = sample_count; - } - - if (wpc->wvc_flag) { - int max_allowed_error = 1000000 / wpc->ave_block_samples; - short max_error, trial_max_error; - double initial_y, final_y; - - if (max_allowed_error < 128) - max_allowed_error = 128; - - best_floating_line (wps->dc.shaping_data, sample_count, &initial_y, &final_y, &max_error); - - if (shortening_allowed && max_error > max_allowed_error) { - int min_samples = 0, max_samples = sample_count, trial_count; - double trial_initial_y, trial_final_y; - - while (1) { - trial_count = (min_samples + max_samples) / 2; - - best_floating_line (wps->dc.shaping_data, trial_count, &trial_initial_y, - &trial_final_y, &trial_max_error); - - if (trial_max_error < max_allowed_error) { - max_error = trial_max_error; - min_samples = trial_count; - initial_y = trial_initial_y; - final_y = trial_final_y; - } - else - max_samples = trial_count; - - if (min_samples > 10000 || max_samples - min_samples < 2) - break; - } - - sample_count = min_samples; - } - - if (initial_y < -512) initial_y = -512; - else if (initial_y > 1024) initial_y = 1024; - - if (final_y < -512) final_y = -512; - else if (final_y > 1024) final_y = 1024; -#if 0 - error_line ("%.2f sec, sample count = %5d, max error = %3d, range = %5d, %5d, actual = %5d, %5d", - (double) wps->sample_index / wpc->config.sample_rate, sample_count, max_error, - (int) floor (initial_y), (int) floor (final_y), - wps->dc.shaping_data [0], wps->dc.shaping_data [sample_count-1]); -#endif - if (sample_count != wps->wphdr.block_samples) - wps->wphdr.block_samples = sample_count; - - if (wpc->wvc_flag) { - wps->dc.shaping_acc [0] = wps->dc.shaping_acc [1] = (int32_t) floor (initial_y * 65536.0 + 0.5); - - wps->dc.shaping_delta [0] = wps->dc.shaping_delta [1] = - (int32_t) floor ((final_y - initial_y) / (sample_count - 1) * 65536.0 + 0.5); - - wps->dc.shaping_array = NULL; - } - else - wps->dc.shaping_array = wps->dc.shaping_data; - } - else - wps->dc.shaping_array = wps->dc.shaping_data; -} - -// Given an array of integer data (in shorts), find the linear function that most closely -// represents it (based on minimum sum of absolute errors). This is returned as the double -// precision initial & final Y values of the best-fit line. The function can also optionally -// compute and return a maximum error value (as a short). Note that the ends of the resulting -// line may fall way outside the range of input values, so some sort of clipping may be -// needed. - -static void best_floating_line (short *values, int num_values, double *initial_y, double *final_y, short *max_error) -{ - double left_sum = 0.0, right_sum = 0.0, center_x = (num_values - 1) / 2.0, center_y, m; - int i; - - for (i = 0; i < num_values >> 1; ++i) { - right_sum += values [num_values - i - 1]; - left_sum += values [i]; - } - - if (num_values & 1) { - right_sum += values [num_values >> 1] * 0.5; - left_sum += values [num_values >> 1] * 0.5; - } - - center_y = (right_sum + left_sum) / num_values; - m = (right_sum - left_sum) / ((double) num_values * num_values) * 4.0; - - if (initial_y) - *initial_y = center_y - m * center_x; - - if (final_y) - *final_y = center_y + m * center_x; - - if (max_error) { - double max = 0.0; - - for (i = 0; i < num_values; ++i) - if (fabs (values [i] - (center_y + (i - center_x) * m)) > max) - max = fabs (values [i] - (center_y + (i - center_x) * m)); - - *max_error = (short) floor (max + 0.5); - } -} diff --git a/Frameworks/WavPack/Files/pack_dsd.c b/Frameworks/WavPack/Files/pack_dsd.c deleted file mode 100644 index 2ffa2855f..000000000 --- a/Frameworks/WavPack/Files/pack_dsd.c +++ /dev/null @@ -1,668 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** DSDPACK **** // -// Lossless DSD (Direct Stream Digital) Audio Compressor // -// Copyright (c) 2013 - 2016 David Bryant. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// pack_dsd.c - -// This module actually handles the compression of the DSD audio data. - -#ifdef ENABLE_DSD - -#include -#include -#include - -#include "wavpack_local.h" - -///////////////////////////// executable code //////////////////////////////// - -// This function initializes everything required to pack WavPack DSD bitstreams -// and must be called BEFORE any other function in this module. - -void pack_dsd_init (WavpackContext *wpc) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - - wps->sample_index = 0; -} - -// Pack an entire block of samples (either mono or stereo) into a completed -// WavPack block. This function is actually a shell for pack_samples() and -// performs tasks like handling any shift required by the format, preprocessing -// of floating point data or integer data over 24 bits wide, and implementing -// the "extra" mode (via the extra?.c modules). It is assumed that there is -// sufficient space for the completed block at "wps->blockbuff" and that -// "wps->blockend" points to the end of the available space. A return value of -// FALSE indicates an error. - -// Pack an entire block of samples (either mono or stereo) into a completed -// WavPack block. It is assumed that there is sufficient space for the -// completed block at "wps->blockbuff" and that "wps->blockend" points to the -// end of the available space. A return value of FALSE indicates an error. -// Any unsent metadata is transmitted first, then required metadata for this -// block is sent, and finally the compressed integer data is sent. If a "wpx" -// stream is required for floating point data or large integer data, then this -// must be handled outside this function. To find out how much data was written -// the caller must look at the ckSize field of the written WavpackHeader, NOT -// the one in the WavpackStream. - -static int encode_buffer_high (WavpackStream *wps, int32_t *buffer, int num_samples, unsigned char *destination); -static int encode_buffer_fast (WavpackStream *wps, int32_t *buffer, int num_samples, unsigned char *destination); - -int pack_dsd_block (WavpackContext *wpc, int32_t *buffer) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - uint32_t flags = wps->wphdr.flags, mult = wpc->dsd_multiplier, data_count; - uint32_t sample_count = wps->wphdr.block_samples; - unsigned char *dsd_encoding, dsd_power = 0; - int32_t res; - - // This code scans stereo data to check whether it can be stored as mono data - // (i.e., all L/R samples identical). - - if (!(flags & MONO_FLAG)) { - int32_t *sptr, *dptr, i; - - for (sptr = buffer, i = 0; i < (int32_t) sample_count; sptr += 2, i++) - if ((sptr [0] ^ sptr [1]) & 0xff) - break; - - if (i == sample_count) { - wps->wphdr.flags = flags |= FALSE_STEREO; - dptr = buffer; - sptr = buffer; - - for (i = sample_count; i--; sptr++) - *dptr++ = *sptr++; - } - else - wps->wphdr.flags = flags &= ~FALSE_STEREO; - } - - wps->wphdr.ckSize = sizeof (WavpackHeader) - 8; - memcpy (wps->blockbuff, &wps->wphdr, sizeof (WavpackHeader)); - - if (wpc->metacount) { - WavpackMetadata *wpmdp = wpc->metadata; - - while (wpc->metacount) { - copy_metadata (wpmdp, wps->blockbuff, wps->blockend); - wpc->metabytes -= wpmdp->byte_length; - free_metadata (wpmdp++); - wpc->metacount--; - } - - free (wpc->metadata); - wpc->metadata = NULL; - } - - if (!sample_count) - return TRUE; - - send_general_metadata (wpc); - memcpy (&wps->wphdr, wps->blockbuff, sizeof (WavpackHeader)); - - dsd_encoding = wps->blockbuff + ((WavpackHeader *) wps->blockbuff)->ckSize + 12; - - while (mult >>= 1) - dsd_power++; - - *dsd_encoding++ = dsd_power; - - if (wpc->config.flags & CONFIG_HIGH_FLAG) { - int fast_res = encode_buffer_fast (wps, buffer, sample_count, dsd_encoding); - - res = encode_buffer_high (wps, buffer, sample_count, dsd_encoding); - - if ((fast_res != -1) && (res == -1 || res > fast_res)) - res = encode_buffer_fast (wps, buffer, sample_count, dsd_encoding); - } - else - res = encode_buffer_fast (wps, buffer, sample_count, dsd_encoding); - - if (res == -1) { - int num_samples = sample_count * ((flags & MONO_DATA) ? 1 : 2); - uint32_t crc = 0xffffffff; - - *dsd_encoding++ = 0; - - data_count = num_samples + 2; - - while (num_samples--) - crc += (crc << 1) + (*dsd_encoding++ = *buffer++); - - ((WavpackHeader *) wps->blockbuff)->crc = crc; - } - else - data_count = res + 1; - - if (data_count) { - unsigned char *cptr = wps->blockbuff + ((WavpackHeader *) wps->blockbuff)->ckSize + 8; - - if (data_count & 1) { - cptr [data_count + 4] = 0; - *cptr++ = ID_DSD_BLOCK | ID_LARGE | ID_ODD_SIZE; - data_count++; - } - else - *cptr++ = ID_DSD_BLOCK | ID_LARGE; - - *cptr++ = data_count >> 1; - *cptr++ = data_count >> 9; - *cptr++ = data_count >> 17; - ((WavpackHeader *) wps->blockbuff)->ckSize += data_count + 4; - } - - wps->sample_index += sample_count; - return TRUE; -} - -/*------------------------------------------------------------------------------------------------------------------------*/ - -// #define DSD_BYTE_READY(low,high) (((low) >> 24) == ((high) >> 24)) -// #define DSD_BYTE_READY(low,high) (!(((low) ^ (high)) >> 24)) -#define DSD_BYTE_READY(low,high) (!(((low) ^ (high)) & 0xff000000)) - -#define MAX_PROBABILITY 0xa0 // set to 0xff to disable RLE encoding for probabilities table - -#if (MAX_PROBABILITY < 0xff) - -static int rle_encode (unsigned char *src, int bcount, unsigned char *destination) -{ - int max_rle_zeros = 0xff - MAX_PROBABILITY; - unsigned char *dp = destination; - int zcount = 0; - - while (bcount--) { - if (*src) { - while (zcount) { - *dp++ = MAX_PROBABILITY + (zcount > max_rle_zeros ? max_rle_zeros : zcount); - zcount -= (zcount > max_rle_zeros ? max_rle_zeros : zcount); - } - - *dp++ = *src++; - } - else { - zcount++; - src++; - } - } - - while (zcount) { - *dp++ = MAX_PROBABILITY + (zcount > max_rle_zeros ? max_rle_zeros : zcount); - zcount -= (zcount > max_rle_zeros ? max_rle_zeros : zcount); - } - - *dp++ = 0; - - return (int)(dp - destination); -} - -#endif - -static void calculate_probabilities (int hist [256], unsigned char probs [256], unsigned short prob_sums [256]) -{ - int divisor, min_value, max_value, sum_values; - int min_hits = 0x7fffffff, max_hits = 0, i; - - for (i = 0; i < 256; ++i) { - if (hist [i] < min_hits) min_hits = hist [i]; - if (hist [i] > max_hits) max_hits = hist [i]; - } - - if (max_hits == 0) { - memset (probs, 0, sizeof (*probs) * 256); - memset (prob_sums, 0, sizeof (*prob_sums) * 256); - return; - } - -// fprintf (stderr, "process_histogram(): hits = %d to %d\n", min_hits, max_hits); - - if (max_hits > MAX_PROBABILITY) - divisor = ((max_hits << 8) + (MAX_PROBABILITY >> 1)) / MAX_PROBABILITY; - else - divisor = 0; - - while (1) { - min_value = 0x7fffffff; max_value = 0; sum_values = 0; - - for (i = 0; i < 256; ++i) { - int value; - - if (hist [i]) { - if (divisor) { - if (!(value = ((hist [i] << 8) + (divisor >> 1)) / divisor)) - value = 1; - } - else - value = hist [i]; - - if (value < min_value) min_value = value; - if (value > max_value) max_value = value; - } - else - value = 0; - - prob_sums [i] = sum_values += value; - probs [i] = value; - } - - if (max_value > MAX_PROBABILITY) { - divisor++; - continue; - } - -#if 0 // this code reduces probability values when they are completely redundant (i.e., common divisor), but - // this doesn't really happen often enough to make it worthwhile - - if (min_value > 1) { - for (i = 0; i < 256; ++i) - if (probs [i] % min_value) - break; - - if (i == 256) { - for (i = 0; i < 256; ++i) { - prob_sums [i] /= min_value; - probs [i] /= min_value; - } - - // fprintf (stderr, "fixed min_value = %d, divisor = %d, probs_sum = %d\n", min_value, divisor, prob_sums [255]); - } - } -#endif - - break; - } -} - -static int encode_buffer_fast (WavpackStream *wps, int32_t *buffer, int num_samples, unsigned char *destination) -{ - uint32_t flags = wps->wphdr.flags, crc = 0xffffffff; - unsigned int low = 0, high = 0xffffffff, mult; - unsigned short (*summed_probabilities) [256]; - unsigned char (*probabilities) [256]; - unsigned char *dp = destination, *ep; - int history_bins, bc, p0 = 0, p1 = 0; - int total_summed_probabilities = 0; - int (*histogram) [256]; - int32_t *bp = buffer; - char history_bits; - - if (!(flags & MONO_DATA)) - num_samples *= 2; - - if (num_samples < 280) - return -1; - else if (num_samples < 560) - history_bits = 0; - else if (num_samples < 1725) - history_bits = 1; - else if (num_samples < 5000) - history_bits = 2; - else if (num_samples < 14000) - history_bits = 3; - else if (num_samples < 28000) - history_bits = 4; - else if (num_samples < 76000) - history_bits = 5; - else if (num_samples < 130000) - history_bits = 6; - else if (num_samples < 300000) - history_bits = 7; - else - history_bits = 8; - - if (history_bits > MAX_HISTORY_BITS) - history_bits = MAX_HISTORY_BITS; - - history_bins = 1 << history_bits; - histogram = malloc (sizeof (*histogram) * history_bins); - memset (histogram, 0, sizeof (*histogram) * history_bins); - probabilities = malloc (sizeof (*probabilities) * history_bins); - summed_probabilities = malloc (sizeof (*summed_probabilities) * history_bins); - - bc = num_samples; - - if (flags & MONO_DATA) - while (bc--) { - crc += (crc << 1) + (*bp & 0xff); - histogram [p0] [*bp & 0xff]++; - p0 = *bp++ & (history_bins-1); - } - else - while (bc--) { - crc += (crc << 1) + (*bp & 0xff); - histogram [p0] [*bp & 0xff]++; - p0 = p1; - p1 = *bp++ & (history_bins-1); - } - - for (p0 = 0; p0 < history_bins; p0++) { - calculate_probabilities (histogram [p0], probabilities [p0], summed_probabilities [p0]); - total_summed_probabilities += summed_probabilities [p0] [255]; - } - - ((WavpackHeader *) wps->blockbuff)->crc = crc; - - // This code detects the case where the required value lookup tables grow silly big and cuts them back down. This would - // normally only happen with large blocks or poorly compressible data. The target is to guarantee that the total memory - // required for all three decode tables will be 2K bytes per history bin. - - while (total_summed_probabilities > history_bins * MAX_BYTES_PER_BIN) { - int max_sum = 0, sum_values = 0, largest_bin = 0; - - for (p0 = 0; p0 < history_bins; ++p0) - if (summed_probabilities [p0] [255] > max_sum) { - max_sum = summed_probabilities [p0] [255]; - largest_bin = p0; - } - - total_summed_probabilities -= max_sum; - p0 = largest_bin; - - for (p1 = 0; p1 < 256; ++p1) - summed_probabilities [p0] [p1] = sum_values += probabilities [p0] [p1] = (probabilities [p0] [p1] + 1) >> 1; - - total_summed_probabilities += summed_probabilities [p0] [255]; - // fprintf (stderr, "processed bin 0x%02x, bin: %d --> %d, new sum = %d\n", - // p0, max_sum, summed_probabilities [p0] [255], total_summed_probabilities); - } - - free (histogram); - bp = buffer; - bc = num_samples; - *dp++ = 1; - *dp++ = history_bits; - *dp++ = MAX_PROBABILITY; - ep = destination + num_samples - 10; - -#if (MAX_PROBABILITY < 0xff) - dp += rle_encode ((unsigned char *) probabilities, sizeof (*probabilities) * history_bins, dp); -#else - memcpy (dp, probabilities, sizeof (*probabilities) * history_bins); - dp += sizeof (*probabilities) * history_bins; -#endif - - p0 = p1 = 0; - - while (dp < ep && bc--) { - - mult = (high - low) / summed_probabilities [p0] [255]; - - if (!mult) { - high = low; - - while (DSD_BYTE_READY (high, low)) { - *dp++ = high >> 24; - high = (high << 8) | 0xff; - low <<= 8; - } - - mult = (high - low) / summed_probabilities [p0] [255]; - } - - if (*bp & 0xff) - low += summed_probabilities [p0] [(*bp & 0xff)-1] * mult; - - high = low + probabilities [p0] [*bp & 0xff] * mult - 1; - - while (DSD_BYTE_READY (high, low)) { - *dp++ = high >> 24; - high = (high << 8) | 0xff; - low <<= 8; - } - - if (flags & MONO_DATA) - p0 = *bp++ & (history_bins-1); - else { - p0 = p1; - p1 = *bp++ & (history_bins-1); - } - } - - high = low; - - while (DSD_BYTE_READY (high, low)) { - *dp++ = high >> 24; - high = (high << 8) | 0xff; - low <<= 8; - } - - free (summed_probabilities); - free (probabilities); - - if (dp < ep) - return (int)(dp - destination); - else - return -1; -} - -/*------------------------------------------------------------------------------------------------------------------------*/ - -#define PTABLE_BITS 8 -#define PTABLE_BINS (1<> 8; c--;) - value += (DOWN - value) >> DECAY; - - for (i = 0; i < PTABLE_BINS/2; ++i) { - table [i] = value; - table [PTABLE_BINS-1-i] = 0x100ffff - value; - - if (value > 0x010000) { - rate += (rate * rate_s + 128) >> 8; - - for (c = (rate + 64) >> 7; c--;) - value += (DOWN - value) >> DECAY; - } - } -} - -static int normalize_ptable (int *ptable) -{ - int rate = 0, min_error, error_sum, i; - int ntable [PTABLE_BINS]; - - init_ptable (ntable, rate, RATE_S); - - for (min_error = i = 0; i < PTABLE_BINS; ++i) - min_error += abs (ptable [i] - ntable [i]) >> 8; - - while (1) { - init_ptable (ntable, ++rate, RATE_S); - - for (error_sum = i = 0; i < PTABLE_BINS; ++i) - error_sum += abs (ptable [i] - ntable [i]) >> 8; - - if (error_sum < min_error) - min_error = error_sum; - else - break; - } - - return rate - 1; -} - -static int encode_buffer_high (WavpackStream *wps, int32_t *buffer, int num_samples, unsigned char *destination) -{ - int channel, stereo = (wps->wphdr.flags & MONO_DATA) ? 0 : 1; - uint32_t crc = 0xffffffff, high = 0xffffffff, low = 0; - unsigned char *dp = destination, *ep; - DSDfilters *sp; - - if (num_samples * (stereo + 1) < 280) - return -1; - - *dp++ = 3; - ep = destination + num_samples * (stereo + 1) - 10; - - if (!wps->sample_index) { - if (!wps->dsd.ptable) - wps->dsd.ptable = malloc (PTABLE_BINS * sizeof (*wps->dsd.ptable)); - - init_ptable (wps->dsd.ptable, INITIAL_TERM, RATE_S); - - for (channel = 0; channel < 2; ++channel) { - sp = wps->dsd.filters + channel; - - sp->filter1 = sp->filter2 = sp->filter3 = sp->filter4 = sp->filter5 = VALUE_ONE / 2; - sp->filter6 = sp->factor = 0; - } - - *dp++ = INITIAL_TERM; - *dp++ = RATE_S; - } - else { - int rate = normalize_ptable (wps->dsd.ptable); - init_ptable (wps->dsd.ptable, rate, RATE_S); - *dp++ = rate; - *dp++ = RATE_S; - } - - for (channel = 0; channel <= stereo; ++channel) { - sp = wps->dsd.filters + channel; - - *dp = sp->filter1 >> (PRECISION - 8); - sp->filter1 = *dp++ << (PRECISION - 8); - - *dp = sp->filter2 >> (PRECISION - 8); - sp->filter2 = *dp++ << (PRECISION - 8); - - *dp = sp->filter3 >> (PRECISION - 8); - sp->filter3 = *dp++ << (PRECISION - 8); - - *dp = sp->filter4 >> (PRECISION - 8); - sp->filter4 = *dp++ << (PRECISION - 8); - - *dp = sp->filter5 >> (PRECISION - 8); - sp->filter5 = *dp++ << (PRECISION - 8); - - *dp++ = sp->factor; - *dp++ = sp->factor >> 8; - sp->filter6 = 0; - sp->factor = (sp->factor << 16) >> 16; - } - - sp = wps->dsd.filters; - - while (dp < ep && num_samples--) { - int bitcount = 8; - - crc += (crc << 1) + (sp->byte = *buffer++ & 0xff); - sp [0].value = sp [0].filter1 - sp [0].filter5 + ((sp [0].filter6 * sp [0].factor) >> 2); - - if (stereo) { - crc += (crc << 1) + (sp [1].byte = *buffer++ & 0xff); - sp [1].value = sp [1].filter1 - sp [1].filter5 + ((sp [1].filter6 * sp [1].factor) >> 2); - } - - while (bitcount--) { - int32_t *pp = wps->dsd.ptable + ((sp [0].value >> (PRECISION - PRECISION_USE)) & PTABLE_MASK); - - if (sp [0].byte & 0x80) { - high = low + ((high - low) >> 8) * (*pp >> 16); - *pp += (UP - *pp) >> DECAY; - sp [0].filter0 = -1; - } - else { - low += 1 + ((high - low) >> 8) * (*pp >> 16); - *pp += (DOWN - *pp) >> DECAY; - sp [0].filter0 = 0; - } - - while (DSD_BYTE_READY (high, low)) { - *dp++ = high >> 24; - high = (high << 8) | 0xff; - low <<= 8; - } - - sp [0].value += sp [0].filter6 << 3; - sp [0].factor += (((sp [0].value ^ sp [0].filter0) >> 31) | 1) & ((sp [0].value ^ (sp [0].value - (sp [0].filter6 << 4))) >> 31); - sp [0].filter1 += ((sp [0].filter0 & VALUE_ONE) - sp [0].filter1) >> 6; - sp [0].filter2 += ((sp [0].filter0 & VALUE_ONE) - sp [0].filter2) >> 4; - sp [0].filter3 += (sp [0].filter2 - sp [0].filter3) >> 4; - sp [0].filter4 += (sp [0].filter3 - sp [0].filter4) >> 4; - sp [0].value = (sp [0].filter4 - sp [0].filter5) >> 4; - sp [0].filter5 += sp [0].value; - sp [0].filter6 += (sp [0].value - sp [0].filter6) >> 3; - sp [0].value = sp [0].filter1 - sp [0].filter5 + ((sp [0].filter6 * sp [0].factor) >> 2); - sp [0].byte <<= 1; - - if (!stereo) - continue; - - pp = wps->dsd.ptable + ((sp [1].value >> (PRECISION - PRECISION_USE)) & PTABLE_MASK); - - if (sp [1].byte & 0x80) { - high = low + ((high - low) >> 8) * (*pp >> 16); - *pp += (UP - *pp) >> DECAY; - sp [1].filter0 = -1; - } - else { - low += 1 + ((high - low) >> 8) * (*pp >> 16); - *pp += (DOWN - *pp) >> DECAY; - sp [1].filter0 = 0; - } - - while (DSD_BYTE_READY (high, low)) { - *dp++ = high >> 24; - high = (high << 8) | 0xff; - low <<= 8; - } - - sp [1].value += sp [1].filter6 << 3; - sp [1].factor += (((sp [1].value ^ sp [1].filter0) >> 31) | 1) & ((sp [1].value ^ (sp [1].value - (sp [1].filter6 << 4))) >> 31); - sp [1].filter1 += ((sp [1].filter0 & VALUE_ONE) - sp [1].filter1) >> 6; - sp [1].filter2 += ((sp [1].filter0 & VALUE_ONE) - sp [1].filter2) >> 4; - sp [1].filter3 += (sp [1].filter2 - sp [1].filter3) >> 4; - sp [1].filter4 += (sp [1].filter3 - sp [1].filter4) >> 4; - sp [1].value = (sp [1].filter4 - sp [1].filter5) >> 4; - sp [1].filter5 += sp [1].value; - sp [1].filter6 += (sp [1].value - sp [1].filter6) >> 3; - sp [1].value = sp [1].filter1 - sp [1].filter5 + ((sp [1].filter6 * sp [1].factor) >> 2); - sp [1].byte <<= 1; - } - - sp [0].factor -= (sp->factor + 512) >> 10; - - if (stereo) - sp [1].factor -= (sp [1].factor + 512) >> 10; - } - - ((WavpackHeader *) wps->blockbuff)->crc = crc; - high = low; - - while (DSD_BYTE_READY (high, low)) { - *dp++ = high >> 24; - high = (high << 8) | 0xff; - low <<= 8; - } - - if (dp < ep) - return (int)(dp - destination); - else - return -1; -} - -#endif // ENABLE_DSD diff --git a/Frameworks/WavPack/Files/pack_floats.c b/Frameworks/WavPack/Files/pack_floats.c deleted file mode 100644 index eca1dbc6b..000000000 --- a/Frameworks/WavPack/Files/pack_floats.c +++ /dev/null @@ -1,270 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// pack_floats.c - -// This module deals with the compression of floating-point data. Note that no -// floating point math is involved here...the values are only processed with -// the macros that directly access the mantissa, exponent, and sign fields. -// That's why we use the f32 type instead of the built-in float type. - -#include - -#include "wavpack_local.h" - -//#define DISPLAY_DIAGNOSTICS - -// Scan the provided buffer of floating-point values and (1) convert the -// significant portion of the data to integers for compression using the -// regular WavPack algorithms (which only operate on integers) and (2) -// determine whether the data requires a second stream for lossless -// storage (which will usually be the case except when the floating-point -// data was originally integer data). The converted integers are returned -// "in-place" and a return value of TRUE indicates that a second stream -// is required. - -int scan_float_data (WavpackStream *wps, f32 *values, int32_t num_values) -{ - int32_t shifted_ones = 0, shifted_zeros = 0, shifted_both = 0; - int32_t false_zeros = 0, neg_zeros = 0; -#ifdef DISPLAY_DIAGNOSTICS - int32_t true_zeros = 0, denormals = 0, exceptions = 0; -#endif - uint32_t ordata = 0, crc = 0xffffffff; - int32_t count, value, shift_count; - int max_mag = 0, max_exp = 0; - f32 *dp; - - wps->float_shift = wps->float_flags = 0; - - // First loop goes through all the data and (1) calculates the CRC and (2) finds the - // max magnitude that does not have an exponent of 255 (reserved for +/-inf and NaN). - for (dp = values, count = num_values; count--; dp++) { - crc = crc * 27 + get_mantissa (*dp) * 9 + get_exponent (*dp) * 3 + get_sign (*dp); - - if (get_exponent (*dp) < 255 && get_magnitude (*dp) > max_mag) - max_mag = get_magnitude (*dp); - } - - wps->crc_x = crc; - - // round up the magnitude so that when we convert the floating-point values to integers, - // they will be (at most) just over 24-bits signed precision - if (get_exponent (max_mag)) - max_exp = get_exponent (max_mag + 0x7F0000); - - for (dp = values, count = num_values; count--; dp++) { - // Exponent of 255 is reserved for +/-inf (mantissa = 0) or NaN (mantissa != 0). - // we use a value one greater than 24-bits unsigned for this. - if (get_exponent (*dp) == 255) { -#ifdef DISPLAY_DIAGNOSTICS - exceptions++; -#endif - wps->float_flags |= FLOAT_EXCEPTIONS; - value = 0x1000000; - shift_count = 0; - } - // This is the regular case. We generate a 24-bit unsigned value with the implied - // '1' MSB set and calculate a shift that will make it line up with the biggest - // samples in this block (although that shift would obviously shift out real data). - else if (get_exponent (*dp)) { - shift_count = max_exp - get_exponent (*dp); - value = 0x800000 + get_mantissa (*dp); - } - // Zero exponent means either +/- zero (mantissa = 0) or denormals (mantissa != 0). - // shift_count is set so that denormals (without an implied '1') will line up with - // regular values (with their implied '1' added at bit 23). Trust me. We don't care - // about the shift with zero. - else { - shift_count = max_exp ? max_exp - 1 : 0; - value = get_mantissa (*dp); - -#ifdef DISPLAY_DIAGNOSTICS - if (get_mantissa (*dp)) - denormals++; -#endif - } - - if (shift_count < 25) - value >>= shift_count; // perform the shift if there could be anything left - else - value = 0; // else just zero the value - - // If we are going to encode an integer zero, then this might be a "false zero" which - // means that there are significant bits but they're completely shifted out, or a - // "negative zero" which is simply a floating point value that we have to encode - // (and converting it to a positive zero would be an error). - if (!value) { - if (get_exponent (*dp) || get_mantissa (*dp)) - ++false_zeros; - else if (get_sign (*dp)) - ++neg_zeros; -#ifdef DISPLAY_DIAGNOSTICS - else - ++true_zeros; -#endif - } - // If we are going to shift something (but not everything) out of our integer before - // encoding, then we generate a mask corresponding to the bits that will be shifted - // out and increment the counter for the 3 possible cases of (1) all zeros, (2) all - // ones, and (3) a mix of ones and zeros. - else if (shift_count) { - int32_t mask = (1 << shift_count) - 1; - - if (!(get_mantissa (*dp) & mask)) - shifted_zeros++; - else if ((get_mantissa (*dp) & mask) == mask) - shifted_ones++; - else - shifted_both++; - } - - // "or" all the integer values together, and store the final integer with applied sign - - ordata |= value; - * (int32_t *) dp = (get_sign (*dp)) ? -value : value; - } - - wps->float_max_exp = max_exp; // on decode, we use this to calculate actual exponent - - // Now, based on our various counts, we determine the scheme required to encode the bits - // shifted out. Usually these will simply have to be sent literally, but in some rare cases - // we can get away with always assuming ones shifted out, or assuming all the bits shifted - // out in each value are the same (which means we only have to send a single bit). - if (shifted_both) - wps->float_flags |= FLOAT_SHIFT_SENT; - else if (shifted_ones && !shifted_zeros) - wps->float_flags |= FLOAT_SHIFT_ONES; - else if (shifted_ones && shifted_zeros) - wps->float_flags |= FLOAT_SHIFT_SAME; - // Another case is that we only shift out zeros (or maybe nothing), and in that case we - // check to see if our data actually has less than 24 or 25 bits of resolution, which means - // that we reduce can the magnitude of the integers we are encoding (which saves all those - // bits). The number of bits of reduced resolution is stored in float_shift. - else if (ordata && !(ordata & 1)) { - while (!(ordata & 1)) { - wps->float_shift++; - ordata >>= 1; - } - - // here we shift out all those zeros in the integer data we will encode - for (dp = values, count = num_values; count--; dp++) - * (int32_t *) dp >>= wps->float_shift; - } - - // Here we calculate the actual magnitude used by our integer data, although this is just - // used for informational purposes during encode/decode to possibly use faster math. - - wps->wphdr.flags &= ~MAG_MASK; - - while (ordata) { - wps->wphdr.flags += 1 << MAG_LSB; - ordata >>= 1; - } - - // Finally, we have to set some flags that guide how we encode various types of "zeros". - // If none of these are set (which is the most common situation), then every integer - // zero in the decoded data will simply become a floating-point zero. - - if (false_zeros || neg_zeros) - wps->float_flags |= FLOAT_ZEROS_SENT; - - if (neg_zeros) - wps->float_flags |= FLOAT_NEG_ZEROS; - -#ifdef DISPLAY_DIAGNOSTICS - { - int32_t *ip, min = 0x7fffffff, max = 0x80000000; - for (ip = (int32_t *) values, count = num_values; count--; ip++) { - if (*ip < min) min = *ip; - if (*ip > max) max = *ip; - } - - fprintf (stderr, "integer range = %d to %d\n", min, max); - } - - fprintf (stderr, "samples = %d, max exp = %d, pre-shift = %d, denormals = %d, exceptions = %d, max_mag = %x\n", - num_values, max_exp, wps->float_shift, denormals, exceptions, max_mag); - fprintf (stderr, "shifted ones/zeros/both = %d/%d/%d, true/neg/false zeros = %d/%d/%d\n", - shifted_ones, shifted_zeros, shifted_both, true_zeros, neg_zeros, false_zeros); -#endif - - return wps->float_flags & (FLOAT_EXCEPTIONS | FLOAT_ZEROS_SENT | FLOAT_SHIFT_SENT | FLOAT_SHIFT_SAME); -} - -// Given a buffer of float data, convert the data to integers (which is what the WavPack compression -// algorithms require) and write the other data required for lossless compression (which includes -// significant bits shifted out of the integers, plus information about +/- zeros and exceptions -// like NaN and +/- infinities) into the wvxbits stream (which is assumed to be opened). Note that -// for this work correctly, scan_float_data() must have been called on the original data to set -// the appropriate flags in float_flags and max_exp. - -void send_float_data (WavpackStream *wps, f32 *values, int32_t num_values) -{ - int max_exp = wps->float_max_exp; - int32_t count, value, shift_count; - f32 *dp; - - for (dp = values, count = num_values; count--; dp++) { - if (get_exponent (*dp) == 255) { - if (get_mantissa (*dp)) { - putbit_1 (&wps->wvxbits); - putbits (get_mantissa (*dp), 23, &wps->wvxbits); - } - else { - putbit_0 (&wps->wvxbits); - } - - value = 0x1000000; - shift_count = 0; - } - else if (get_exponent (*dp)) { - shift_count = max_exp - get_exponent (*dp); - value = 0x800000 + get_mantissa (*dp); - } - else { - shift_count = max_exp ? max_exp - 1 : 0; - value = get_mantissa (*dp); - } - - if (shift_count < 25) - value >>= shift_count; - else - value = 0; - - if (!value) { - if (wps->float_flags & FLOAT_ZEROS_SENT) { - if (get_exponent (*dp) || get_mantissa (*dp)) { - putbit_1 (&wps->wvxbits); - putbits (get_mantissa (*dp), 23, &wps->wvxbits); - - if (max_exp >= 25) { - putbits (get_exponent (*dp), 8, &wps->wvxbits); - } - - putbit (get_sign (*dp), &wps->wvxbits); - } - else { - putbit_0 (&wps->wvxbits); - - if (wps->float_flags & FLOAT_NEG_ZEROS) - putbit (get_sign (*dp), &wps->wvxbits); - } - } - } - else if (shift_count) { - if (wps->float_flags & FLOAT_SHIFT_SENT) { - int32_t data = get_mantissa (*dp) & ((1 << shift_count) - 1); - putbits (data, shift_count, &wps->wvxbits); - } - else if (wps->float_flags & FLOAT_SHIFT_SAME) { - putbit (get_mantissa (*dp) & 1, &wps->wvxbits); - } - } - } -} diff --git a/Frameworks/WavPack/Files/pack_utils.c b/Frameworks/WavPack/Files/pack_utils.c deleted file mode 100644 index d74e6397a..000000000 --- a/Frameworks/WavPack/Files/pack_utils.c +++ /dev/null @@ -1,1445 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// pack_utils.c - -// This module provides the high-level API for creating WavPack files from -// audio data. It manages the buffers used to deinterleave the data passed -// in from the application into the individual streams and it handles the -// generation of riff headers and the "fixup" on the first WavPack block -// header for the case where the number of samples was unknown (or wrong). -// The actual audio stream compression is handled in the pack.c module. - -#include -#include -#include - -#include "wavpack_local.h" - -///////////////////////////// executable code //////////////////////////////// - -// Open context for writing WavPack files. The returned context pointer is used -// in all following calls to the library. The "blockout" function will be used -// to store the actual completed WavPack blocks and will be called with the id -// pointers containing user defined data (one for the wv file and one for the -// wvc file). A return value of NULL indicates that memory could not be -// allocated for the context. - -WavpackContext *WavpackOpenFileOutput (WavpackBlockOutput blockout, void *wv_id, void *wvc_id) -{ - WavpackContext *wpc = malloc (sizeof (WavpackContext)); - - if (!wpc) - return NULL; - - CLEAR (*wpc); - wpc->total_samples = -1; - wpc->stream_version = CUR_STREAM_VERS; - wpc->blockout = blockout; - wpc->wv_out = wv_id; - wpc->wvc_out = wvc_id; - return wpc; -} - -static int add_to_metadata (WavpackContext *wpc, void *data, uint32_t bcount, unsigned char id); - -// New for version 5.0, this function allows the application to store a file extension and a -// file_format identification. The extension would be used by the unpacker if the user had not -// specified the target filename, and specifically handles the case where the original file -// had the "wrong" extension for the file format (e.g., a Wave64 file having a "wav" extension) -// or an alternative (e.g., "bwf") or where the file format is not known. Specifying a file -// format besides the default WP_FORMAT_WAV will ensure that old decoders will not be able to -// see the non-wav wrapper provided with WavpackAddWrapper() (which they would end up putting -// on a file with a .wav extension). - -void WavpackSetFileInformation (WavpackContext *wpc, char *file_extension, unsigned char file_format) -{ - if (file_extension && strlen (file_extension) < sizeof (wpc->file_extension)) { - add_to_metadata (wpc, file_extension, (uint32_t) strlen (file_extension), ID_ALT_EXTENSION); - strcpy (wpc->file_extension, file_extension); - } - - wpc->file_format = file_format; -} - -// Set configuration for writing WavPack files. This must be done before -// sending any actual samples, however it is okay to send wrapper or other -// metadata before calling this. The "config" structure contains the following -// required information: - -// config->bytes_per_sample see WavpackGetBytesPerSample() for info -// config->bits_per_sample see WavpackGetBitsPerSample() for info -// config->channel_mask Microsoft standard (mono = 4, stereo = 3) -// config->num_channels self evident -// config->sample_rate self evident - -// In addition, the following fields and flags may be set: - -// config->flags: -// -------------- -// o CONFIG_HYBRID_FLAG select hybrid mode (must set bitrate) -// o CONFIG_JOINT_STEREO select joint stereo (must set override also) -// o CONFIG_JOINT_OVERRIDE override default joint stereo selection -// o CONFIG_HYBRID_SHAPE select hybrid noise shaping (set override & -// shaping_weight != 0.0) -// o CONFIG_SHAPE_OVERRIDE override default hybrid noise shaping -// (set CONFIG_HYBRID_SHAPE and shaping_weight) -// o CONFIG_FAST_FLAG "fast" compression mode -// o CONFIG_HIGH_FLAG "high" compression mode -// o CONFIG_BITRATE_KBPS hybrid bitrate is kbps, not bits / sample -// o CONFIG_CREATE_WVC create correction file -// o CONFIG_OPTIMIZE_WVC maximize bybrid compression (-cc option) -// o CONFIG_CALC_NOISE calc noise in hybrid mode -// o CONFIG_EXTRA_MODE extra processing mode (slow!) -// o CONFIG_SKIP_WVX no wvx stream for floats & large ints -// o CONFIG_MD5_CHECKSUM specify if you plan to store MD5 signature -// o CONFIG_CREATE_EXE specify if you plan to prepend sfx module -// o CONFIG_OPTIMIZE_MONO detect and optimize for mono files posing as -// stereo (uses a more recent stream format that -// is not compatible with decoders < 4.3) - -// config->bitrate hybrid bitrate in either bits/sample or kbps -// config->shaping_weight hybrid noise shaping coefficient override -// config->block_samples force samples per WavPack block (0 = use deflt) -// config->float_norm_exp select floating-point data (127 for +/-1.0) -// config->xmode extra mode processing value override - -// If the number of samples to be written is known then it should be passed -// here. If the duration is not known then pass -1. In the case that the size -// is not known (or the writing is terminated early) then it is suggested that -// the application retrieve the first block written and let the library update -// the total samples indication. A function is provided to do this update and -// it should be done to the "correction" file also. If this cannot be done -// (because a pipe is being used, for instance) then a valid WavPack will still -// be created, but when applications want to access that file they will have -// to seek all the way to the end to determine the actual duration. Also, if -// a RIFF header has been included then it should be updated as well or the -// WavPack file will not be directly unpackable to a valid wav file (although -// it will still be usable by itself). A return of FALSE indicates an error. -// -// The enhanced version of this function now allows setting the identities of -// any channels that are NOT standard Microsoft channels and are therefore not -// represented in the channel mask. WavPack files require that all the Microsoft -// channels come first (and in Microsoft order) and these are followed by any -// other channels (which can be in any order). -// -// The identities are provided in a NULL-terminated string (0x00 is not an allowed -// channel ID). The Microsoft channels may be provided as well (and will be checked) -// but it is really only necessary to provide the "unknown" channels. Any truly -// unknown channels are indicated with a 0xFF. -// -// The channel IDs so far reserved are listed here: -// -// 0: not allowed / terminator -// 1 - 18: Microsoft standard channels -// 30, 31: Stereo mix from RF64 (not really recommended, but RF64 specifies this) -// 33 - 44: Core Audio channels (see Core Audio specification) -// 127 - 128: Amio LeftHeight, Amio RightHeight -// 138 - 142: Amio BottomFrontLeft/Center/Right, Amio ProximityLeft/Right -// 200 - 207: Core Audio channels (see Core Audio specification) -// 221 - 224: Core Audio channels 301 - 305 (offset by 80) -// 255: Present but unknown or unused channel -// -// All other channel IDs are reserved. Ask if something you need is missing. - -// Table of channels that will automatically "pair" into a single stereo stream - -static const struct { unsigned char a, b; } stereo_pairs [] = { - { 1, 2 }, // FL, FR - { 5, 6 }, // BL, BR - { 7, 8 }, // FLC, FRC - { 10, 11 }, // SL, SR - { 13, 15 }, // TFL, TFR - { 16, 18 }, // TBL, TBR - { 30, 31 }, // stereo mix L,R (RF64) - { 33, 34 }, // Rls, Rrs - { 35, 36 }, // Lw, Rw - { 38, 39 }, // Lt, Rt - { 127, 128 }, // Lh, Rh - { 138, 140 }, // Bfl, Bfr - { 141, 142 }, // Pl, Pr - { 200, 201 }, // Amb_W, Amb_X - { 202, 203 }, // Amb_Y, Amb_Z - { 204, 205 }, // MS_Mid, MS_Side - { 206, 207 }, // XY_X, XY_Y - { 221, 222 }, // Hph_L, Hph_R -}; - -#define NUM_STEREO_PAIRS (sizeof (stereo_pairs) / sizeof (stereo_pairs [0])) - -// Legacy version of this function for compatibility with existing applications. Note that this version -// also generates older streams to be compatible with all decoders back to 4.0, but of course cannot be -// used with > 2^32 samples or non-Microsoft channels. The older stream version only differs in that it -// does not support the "mono optimization" feature where stereo blocks containing identical audio data -// in both channels are encoded in mono for better efficiency. - -int WavpackSetConfiguration (WavpackContext *wpc, WavpackConfig *config, uint32_t total_samples) -{ - config->flags |= CONFIG_COMPATIBLE_WRITE; // write earlier version streams - - if (total_samples == (uint32_t) -1) - return WavpackSetConfiguration64 (wpc, config, -1, NULL); - else - return WavpackSetConfiguration64 (wpc, config, total_samples, NULL); -} - -int WavpackSetConfiguration64 (WavpackContext *wpc, WavpackConfig *config, int64_t total_samples, const unsigned char *chan_ids) -{ - uint32_t flags, bps = 0; - uint32_t chan_mask = config->channel_mask; - int num_chans = config->num_channels; - int i; - - if (!config->sample_rate) { - strcpy (wpc->error_message, "sample rate cannot be zero!"); - return FALSE; - } - - if (!num_chans) { - strcpy (wpc->error_message, "channel count cannot be zero!"); - return FALSE; - } - - wpc->stream_version = (config->flags & CONFIG_COMPATIBLE_WRITE) ? CUR_STREAM_VERS : MAX_STREAM_VERS; - - if ((config->qmode & QMODE_DSD_AUDIO) && config->bytes_per_sample == 1 && config->bits_per_sample == 8) { -#ifdef ENABLE_DSD - wpc->dsd_multiplier = 1; - flags = DSD_FLAG; - - for (i = 14; i >= 0; --i) - if (config->sample_rate % sample_rates [i] == 0) { - int divisor = config->sample_rate / sample_rates [i]; - - if (divisor && (divisor & (divisor - 1)) == 0) { - config->sample_rate /= divisor; - wpc->dsd_multiplier = divisor; - break; - } - } - - // most options that don't apply to DSD we can simply ignore for now, but NOT hybrid mode! - if (config->flags & CONFIG_HYBRID_FLAG) { - strcpy (wpc->error_message, "hybrid mode not available for DSD!"); - return FALSE; - } - - // with DSD, very few PCM options work (or make sense), so only allow those that do - config->flags &= (CONFIG_HIGH_FLAG | CONFIG_MD5_CHECKSUM | CONFIG_PAIR_UNDEF_CHANS); - config->float_norm_exp = config->xmode = 0; -#else - strcpy (wpc->error_message, "libwavpack not configured for DSD!"); - return FALSE; -#endif - } - else - flags = config->bytes_per_sample - 1; - - wpc->total_samples = total_samples; - wpc->config.sample_rate = config->sample_rate; - wpc->config.num_channels = config->num_channels; - wpc->config.channel_mask = config->channel_mask; - wpc->config.bits_per_sample = config->bits_per_sample; - wpc->config.bytes_per_sample = config->bytes_per_sample; - wpc->config.block_samples = config->block_samples; - wpc->config.flags = config->flags; - wpc->config.qmode = config->qmode; - - if (config->flags & CONFIG_VERY_HIGH_FLAG) - wpc->config.flags |= CONFIG_HIGH_FLAG; - - for (i = 0; i < 15; ++i) - if (wpc->config.sample_rate == sample_rates [i]) - break; - - flags |= i << SRATE_LSB; - - // all of this stuff only applies to PCM - - if (!(flags & DSD_FLAG)) { - if (config->float_norm_exp) { - if (config->bytes_per_sample != 4 || config->bits_per_sample != 32) { - strcpy (wpc->error_message, "incorrect bits/bytes configuration for float data!"); - return FALSE; - } - - wpc->config.float_norm_exp = config->float_norm_exp; - wpc->config.flags |= CONFIG_FLOAT_DATA; - flags |= FLOAT_DATA; - } - else { - if (config->bytes_per_sample < 1 || config->bytes_per_sample > 4) { - strcpy (wpc->error_message, "invalid bytes per sample!"); - return FALSE; - } - - if (config->bits_per_sample < 1 || config->bits_per_sample > config->bytes_per_sample * 8) { - strcpy (wpc->error_message, "invalid bits per sample!"); - return FALSE; - } - - flags |= ((config->bytes_per_sample * 8) - config->bits_per_sample) << SHIFT_LSB; - } - - if (config->flags & CONFIG_HYBRID_FLAG) { - flags |= HYBRID_FLAG | HYBRID_BITRATE | HYBRID_BALANCE; - - if (!(wpc->config.flags & CONFIG_SHAPE_OVERRIDE)) { - wpc->config.flags |= CONFIG_HYBRID_SHAPE | CONFIG_AUTO_SHAPING; - flags |= HYBRID_SHAPE | NEW_SHAPING; - } - else if (wpc->config.flags & CONFIG_HYBRID_SHAPE) { - wpc->config.shaping_weight = config->shaping_weight; - flags |= HYBRID_SHAPE | NEW_SHAPING; - } - - if (wpc->config.flags & (CONFIG_CROSS_DECORR | CONFIG_OPTIMIZE_WVC)) - flags |= CROSS_DECORR; - - if (config->flags & CONFIG_BITRATE_KBPS) { - bps = (uint32_t) floor (config->bitrate * 256000.0 / config->sample_rate / config->num_channels + 0.5); - - if (bps > (64 << 8)) - bps = 64 << 8; - } - else - bps = (uint32_t) floor (config->bitrate * 256.0 + 0.5); - } - else - flags |= CROSS_DECORR; - - if (!(config->flags & CONFIG_JOINT_OVERRIDE) || (config->flags & CONFIG_JOINT_STEREO)) - flags |= JOINT_STEREO; - - if (config->flags & CONFIG_CREATE_WVC) - wpc->wvc_flag = TRUE; - } - - // if a channel-identities string was specified, process that here, otherwise all channels - // not present in the channel mask are considered "unassigned" - - if (chan_ids) { - int lastchan = 0, mask_copy = chan_mask; - - if ((int) strlen ((char *) chan_ids) > num_chans) { // can't be more than num channels! - strcpy (wpc->error_message, "chan_ids longer than num channels!"); - return FALSE; - } - - // skip past channels that are specified in the channel mask (no reason to store those) - - while (*chan_ids) - if (*chan_ids <= 32 && *chan_ids > lastchan && (mask_copy & (1 << (*chan_ids-1)))) { - mask_copy &= ~(1 << (*chan_ids-1)); - lastchan = *chan_ids++; - } - else - break; - - // now scan the string for an actually defined channel (and don't store if there aren't any) - - for (i = 0; chan_ids [i]; i++) - if (chan_ids [i] != 0xff) { - wpc->channel_identities = (unsigned char *) strdup ((char *) chan_ids); - break; - } - } - - // This loop goes through all the channels and creates the Wavpack "streams" for them to go in. - // A stream can hold either one or two channels, so we have several rules to determine how many - // channels will go in each stream. - - for (wpc->current_stream = 0; num_chans; wpc->current_stream++) { - WavpackStream *wps = malloc (sizeof (WavpackStream)); - unsigned char left_chan_id = 0, right_chan_id = 0; - int pos, chans = 1; - - // allocate the stream and initialize the pointer to it - wpc->streams = realloc (wpc->streams, (wpc->current_stream + 1) * sizeof (wpc->streams [0])); - wpc->streams [wpc->current_stream] = wps; - CLEAR (*wps); - - // if there are any bits [still] set in the channel_mask, get the next one or two IDs from there - if (chan_mask) - for (pos = 0; pos < 32; ++pos) - if (chan_mask & (1 << pos)) { - if (left_chan_id) { - right_chan_id = pos + 1; - break; - } - else { - chan_mask &= ~(1 << pos); - left_chan_id = pos + 1; - } - } - - // next check for any channels identified in the channel-identities string - while (!right_chan_id && chan_ids && *chan_ids) - if (left_chan_id) - right_chan_id = *chan_ids; - else - left_chan_id = *chan_ids++; - - // assume anything we did not get is "unassigned" - if (!left_chan_id) - left_chan_id = right_chan_id = 0xff; - else if (!right_chan_id) - right_chan_id = 0xff; - - // if we have 2 channels, this is where we decide if we can combine them into one stream: - // 1. they are "unassigned" and we've been told to combine unassigned pairs, or - // 2. they appear together in the valid "pairings" list - if (num_chans >= 2) { - if ((config->flags & CONFIG_PAIR_UNDEF_CHANS) && left_chan_id == 0xff && right_chan_id == 0xff) - chans = 2; - else - for (i = 0; i < NUM_STEREO_PAIRS; ++i) - if ((left_chan_id == stereo_pairs [i].a && right_chan_id == stereo_pairs [i].b) || - (left_chan_id == stereo_pairs [i].b && right_chan_id == stereo_pairs [i].a)) { - if (right_chan_id <= 32 && (chan_mask & (1 << (right_chan_id-1)))) - chan_mask &= ~(1 << (right_chan_id-1)); - else if (chan_ids && *chan_ids == right_chan_id) - chan_ids++; - - chans = 2; - break; - } - } - - num_chans -= chans; - - if (num_chans && wpc->current_stream == NEW_MAX_STREAMS - 1) - break; - - memcpy (wps->wphdr.ckID, "wvpk", 4); - wps->wphdr.ckSize = sizeof (WavpackHeader) - 8; - SET_TOTAL_SAMPLES (wps->wphdr, wpc->total_samples); - wps->wphdr.version = wpc->stream_version; - wps->wphdr.flags = flags; - wps->bits = bps; - - if (!wpc->current_stream) - wps->wphdr.flags |= INITIAL_BLOCK; - - if (!num_chans) - wps->wphdr.flags |= FINAL_BLOCK; - - if (chans == 1) { - wps->wphdr.flags &= ~(JOINT_STEREO | CROSS_DECORR | HYBRID_BALANCE); - wps->wphdr.flags |= MONO_FLAG; - } - } - - wpc->num_streams = wpc->current_stream; - wpc->current_stream = 0; - - if (num_chans) { - strcpy (wpc->error_message, "too many channels!"); - return FALSE; - } - - if (config->flags & CONFIG_EXTRA_MODE) - wpc->config.xmode = config->xmode ? config->xmode : 1; - - return TRUE; -} - -// This function allows setting the Core Audio File channel layout, many of which do not -// conform to the Microsoft ordering standard that Wavpack requires internally (at least for -// those channels present in the "channel mask"). In addition to the layout tag, this function -// allows a reordering string to be stored in the file to allow the unpacker to reorder the -// channels back to the specified layout (if it is aware of this feature and wants to restore -// the CAF order). The number of channels in the layout is specified in the lower nybble of -// the layout word, and if a reorder string is specified it must be that long. Note that all -// the reordering is actually done outside of this library, and that if reordering is done -// then the appropriate qmode bit must be set to ensure that any MD5 sum is stored with a new -// ID so that old decoders don't try to verify it (and to let the decoder know that a reorder -// might be required). -// -// Note: This function should only be used to encode Core Audio files in such a way that a -// verbatim archive can be created. Applications can just include the chan_ids parameter in -// the call to WavpackSetConfiguration64() if there are non-Microsoft channels to specify, -// or do nothing special if only Microsoft channels are present (the vast majority of cases). - -int WavpackSetChannelLayout (WavpackContext *wpc, uint32_t layout_tag, const unsigned char *reorder) -{ - int nchans = layout_tag & 0xff; - - if ((layout_tag & 0xff00ff00) || nchans > wpc->config.num_channels) - return FALSE; - - wpc->channel_layout = layout_tag; - - if (wpc->channel_reordering) { - free (wpc->channel_reordering); - wpc->channel_reordering = NULL; - } - - if (nchans && reorder) { - int min_index = 256, i; - - for (i = 0; i < nchans; ++i) - if (reorder [i] < min_index) - min_index = reorder [i]; - - wpc->channel_reordering = malloc (nchans); - - if (wpc->channel_reordering) - for (i = 0; i < nchans; ++i) - wpc->channel_reordering [i] = reorder [i] - min_index; - } - - return TRUE; -} - -// Prepare to actually pack samples by determining the size of the WavPack -// blocks and allocating sample buffers and initializing each stream. Call -// after WavpackSetConfiguration() and before WavpackPackSamples(). A return -// of FALSE indicates an error. - -static int write_metadata_block (WavpackContext *wpc); - -int WavpackPackInit (WavpackContext *wpc) -{ - if (wpc->metabytes > 16384) // 16384 bytes still leaves plenty of room for audio - write_metadata_block (wpc); // in this block (otherwise write a special one) - - // The default block size is a compromise. Longer blocks provide better encoding efficiency, - // but longer blocks adversely affect memory requirements and seeking performance. For WavPack - // version 5.0, the default block sizes have been reduced by half from the previous version, - // but the difference in encoding efficiency will generally be less than 0.1 percent. - - if (wpc->dsd_multiplier) { - wpc->block_samples = (wpc->config.sample_rate % 7) ? 48000 : 44100; - - if (wpc->config.flags & CONFIG_HIGH_FLAG) - wpc->block_samples /= 2; - - if (wpc->config.num_channels == 1) - wpc->block_samples *= 2; - - while (wpc->block_samples > 12000 && wpc->block_samples * wpc->config.num_channels > 300000) - wpc->block_samples /= 2; - } - else { - int divisor = (wpc->config.flags & CONFIG_HIGH_FLAG) ? 2 : 4; - - while (wpc->config.sample_rate % divisor) - divisor--; - - wpc->block_samples = wpc->config.sample_rate / divisor; - - while (wpc->block_samples > 12000 && wpc->block_samples * wpc->config.num_channels > 75000) - wpc->block_samples /= 2; - - while (wpc->block_samples * wpc->config.num_channels < 20000) - wpc->block_samples *= 2; - } - - if (wpc->config.block_samples) { - if ((wpc->config.flags & CONFIG_MERGE_BLOCKS) && - wpc->block_samples > (uint32_t) wpc->config.block_samples) { - wpc->block_boundary = wpc->config.block_samples; - wpc->block_samples /= wpc->config.block_samples; - wpc->block_samples *= wpc->config.block_samples; - } - else - wpc->block_samples = wpc->config.block_samples; - } - - wpc->ave_block_samples = wpc->block_samples; - wpc->max_samples = wpc->block_samples + (wpc->block_samples >> 1); - - for (wpc->current_stream = 0; wpc->current_stream < wpc->num_streams; wpc->current_stream++) { - WavpackStream *wps = wpc->streams [wpc->current_stream]; - - wps->sample_buffer = malloc (wpc->max_samples * (wps->wphdr.flags & MONO_FLAG ? 4 : 8)); - -#ifdef ENABLE_DSD - if (wps->wphdr.flags & DSD_FLAG) - pack_dsd_init (wpc); - else -#endif - pack_init (wpc); - } - - return TRUE; -} - -// Pack the specified samples. Samples must be stored in longs in the native -// endian format of the executing processor. The number of samples specified -// indicates composite samples (sometimes called "frames"). So, the actual -// number of data points would be this "sample_count" times the number of -// channels. Note that samples are accumulated here until enough exist to -// create a complete WavPack block (or several blocks for multichannel audio). -// If an application wants to break a block at a specific sample, then it must -// simply call WavpackFlushSamples() to force an early termination. Completed -// WavPack blocks are send to the function provided in the initial call to -// WavpackOpenFileOutput(). A return of FALSE indicates an error. - -static int pack_streams (WavpackContext *wpc, uint32_t block_samples); -static int create_riff_header (WavpackContext *wpc, int64_t total_samples, void *outbuffer); - -int WavpackPackSamples (WavpackContext *wpc, int32_t *sample_buffer, uint32_t sample_count) -{ - int nch = wpc->config.num_channels; - - while (sample_count) { - int32_t *source_pointer = sample_buffer; - unsigned int samples_to_copy; - - if (!wpc->riff_header_added && !wpc->riff_header_created && !wpc->file_format) { - char riff_header [128]; - - if (!add_to_metadata (wpc, riff_header, create_riff_header (wpc, wpc->total_samples, riff_header), ID_RIFF_HEADER)) - return FALSE; - } - - if (wpc->acc_samples + sample_count > wpc->max_samples) - samples_to_copy = wpc->max_samples - wpc->acc_samples; - else - samples_to_copy = sample_count; - - for (wpc->current_stream = 0; wpc->current_stream < wpc->num_streams; wpc->current_stream++) { - WavpackStream *wps = wpc->streams [wpc->current_stream]; - int32_t *dptr, *sptr, cnt; - - dptr = wps->sample_buffer + wpc->acc_samples * (wps->wphdr.flags & MONO_FLAG ? 1 : 2); - sptr = source_pointer; - cnt = samples_to_copy; - - // This code used to just copy the 32-bit samples regardless of the actual size with the - // assumption that the caller had properly sign-extended the values (if they were smaller - // than 32 bits). However, several people have discovered that if the data isn't properly - // sign extended then ugly things happen (e.g. CRC errors that show up only on decode). - // To prevent this, we now explicitly sign-extend samples smaller than 32-bit when we - // copy, and the performance hit from doing this is very small (generally < 1%). - - if (wps->wphdr.flags & MONO_FLAG) { - switch (wpc->config.bytes_per_sample) { - case 1: - while (cnt--) { - *dptr++ = (signed char) *sptr; - sptr += nch; - } - - break; - - case 2: - while (cnt--) { - *dptr++ = (int16_t) *sptr; - sptr += nch; - } - - break; - - case 3: - while (cnt--) { - *dptr++ = (*sptr << 8) >> 8; - sptr += nch; - } - - break; - - default: - while (cnt--) { - *dptr++ = *sptr; - sptr += nch; - } - } - - source_pointer++; - } - else { - switch (wpc->config.bytes_per_sample) { - case 1: - while (cnt--) { - *dptr++ = (signed char) sptr [0]; - *dptr++ = (signed char) sptr [1]; - sptr += nch; - } - - break; - - case 2: - while (cnt--) { - *dptr++ = (int16_t) sptr [0]; - *dptr++ = (int16_t) sptr [1]; - sptr += nch; - } - - break; - - case 3: - while (cnt--) { - *dptr++ = (sptr [0] << 8) >> 8; - *dptr++ = (sptr [1] << 8) >> 8; - sptr += nch; - } - - break; - - default: - while (cnt--) { - *dptr++ = sptr [0]; - *dptr++ = sptr [1]; - sptr += nch; - } - } - - source_pointer += 2; - } - } - - sample_buffer += samples_to_copy * nch; - sample_count -= samples_to_copy; - - if ((wpc->acc_samples += samples_to_copy) == wpc->max_samples && - !pack_streams (wpc, wpc->block_samples)) - return FALSE; - } - - return TRUE; -} - -// Flush all accumulated samples into WavPack blocks. This is normally called -// after all samples have been sent to WavpackPackSamples(), but can also be -// called to terminate a WavPack block at a specific sample (in other words it -// is possible to continue after this operation). This is also called to -// dump non-audio blocks like those holding metadata for various purposes. -// A return of FALSE indicates an error. - -int WavpackFlushSamples (WavpackContext *wpc) -{ - while (wpc->acc_samples) { - uint32_t block_samples; - - if (wpc->acc_samples > wpc->block_samples) - block_samples = wpc->acc_samples / 2; - else - block_samples = wpc->acc_samples; - - if (!pack_streams (wpc, block_samples)) - return FALSE; - } - - if (wpc->metacount) - write_metadata_block (wpc); - - return TRUE; -} - -// Note: The following function is no longer required because a proper wav -// header is now automatically generated for the application. However, if the -// application wants to generate its own header or wants to include additional -// chunks, then this function can still be used in which case the automatic -// wav header generation is suppressed. - -// Add wrapper (currently RIFF only) to WavPack blocks. This should be called -// before sending any audio samples for the RIFF header or after all samples -// have been sent for any RIFF trailer. WavpackFlushSamples() should be called -// between sending the last samples and calling this for trailer data to make -// sure that headers and trailers don't get mixed up in very short files. If -// the exact contents of the RIFF header are not known because, for example, -// the file duration is uncertain or trailing chunks are possible, simply write -// a "dummy" header of the correct length. When all data has been written it -// will be possible to read the first block written and update the header -// directly. An example of this can be found in the Audition filter. A -// return of FALSE indicates an error. - -int WavpackAddWrapper (WavpackContext *wpc, void *data, uint32_t bcount) -{ - int64_t index = WavpackGetSampleIndex64 (wpc); - unsigned char meta_id; - - if (!index || index == -1) { - wpc->riff_header_added = TRUE; - meta_id = wpc->file_format ? ID_ALT_HEADER : ID_RIFF_HEADER; - } - else { - wpc->riff_trailer_bytes += bcount; - meta_id = wpc->file_format ? ID_ALT_TRAILER : ID_RIFF_TRAILER; - } - - return add_to_metadata (wpc, data, bcount, meta_id); -} - -// Store computed MD5 sum in WavPack metadata. Note that the user must compute -// the 16 byte sum; it is not done here. A return of FALSE indicates an error. -// If any of the lower 8 bits of qmode are set, then this MD5 is stored with -// a metadata ID that old decoders do not recognize (because they would not -// interpret the qmode and would therefore fail the verification). - -int WavpackStoreMD5Sum (WavpackContext *wpc, unsigned char data [16]) -{ - return add_to_metadata (wpc, data, 16, (wpc->config.qmode & 0xff) ? ID_ALT_MD5_CHECKSUM : ID_MD5_CHECKSUM); -} - -#pragma pack(push,4) - -typedef struct { - char ckID [4]; - uint64_t chunkSize64; -} CS64Chunk; - -typedef struct { - uint64_t riffSize64, dataSize64, sampleCount64; - uint32_t tableLength; -} DS64Chunk; - -typedef struct { - char ckID [4]; - uint32_t ckSize; - char junk [28]; -} JunkChunk; - -#pragma pack(pop) - -#define DS64ChunkFormat "DDDL" - -static int create_riff_header (WavpackContext *wpc, int64_t total_samples, void *outbuffer) -{ - int do_rf64 = 0, write_junk = 1; - ChunkHeader ds64hdr, datahdr, fmthdr; - char *outptr = outbuffer; - RiffChunkHeader riffhdr; - DS64Chunk ds64_chunk; - JunkChunk junkchunk; - WaveHeader wavhdr; - - int64_t total_data_bytes, total_riff_bytes; - int32_t channel_mask = wpc->config.channel_mask; - int32_t sample_rate = wpc->config.sample_rate; - int bytes_per_sample = wpc->config.bytes_per_sample; - int bits_per_sample = wpc->config.bits_per_sample; - int format = (wpc->config.float_norm_exp) ? 3 : 1; - int num_channels = wpc->config.num_channels; - int wavhdrsize = 16; - - wpc->riff_header_created = TRUE; - - if (format == 3 && wpc->config.float_norm_exp != 127) { - strcpy (wpc->error_message, "can't create valid RIFF wav header for non-normalized floating data!"); - return FALSE; - } - - if (total_samples == -1) - total_samples = 0x7ffff000 / (bytes_per_sample * num_channels); - - total_data_bytes = total_samples * bytes_per_sample * num_channels; - - if (total_data_bytes > 0xff000000) { - write_junk = 0; - do_rf64 = 1; - } - - CLEAR (wavhdr); - - wavhdr.FormatTag = format; - wavhdr.NumChannels = num_channels; - wavhdr.SampleRate = sample_rate; - wavhdr.BytesPerSecond = sample_rate * num_channels * bytes_per_sample; - wavhdr.BlockAlign = bytes_per_sample * num_channels; - wavhdr.BitsPerSample = bits_per_sample; - - if (num_channels > 2 || channel_mask != 0x5 - num_channels) { - wavhdrsize = sizeof (wavhdr); - wavhdr.cbSize = 22; - wavhdr.ValidBitsPerSample = bits_per_sample; - wavhdr.SubFormat = format; - wavhdr.ChannelMask = channel_mask; - wavhdr.FormatTag = 0xfffe; - wavhdr.BitsPerSample = bytes_per_sample * 8; - wavhdr.GUID [4] = 0x10; - wavhdr.GUID [6] = 0x80; - wavhdr.GUID [9] = 0xaa; - wavhdr.GUID [11] = 0x38; - wavhdr.GUID [12] = 0x9b; - wavhdr.GUID [13] = 0x71; - } - - memcpy (riffhdr.ckID, do_rf64 ? "RF64" : "RIFF", sizeof (riffhdr.ckID)); - memcpy (riffhdr.formType, "WAVE", sizeof (riffhdr.formType)); - total_riff_bytes = sizeof (riffhdr) + wavhdrsize + sizeof (datahdr) + total_data_bytes + wpc->riff_trailer_bytes; - if (do_rf64) total_riff_bytes += sizeof (ds64hdr) + sizeof (ds64_chunk); - if (write_junk) total_riff_bytes += sizeof (junkchunk); - memcpy (fmthdr.ckID, "fmt ", sizeof (fmthdr.ckID)); - memcpy (datahdr.ckID, "data", sizeof (datahdr.ckID)); - fmthdr.ckSize = wavhdrsize; - - if (write_junk) { - CLEAR (junkchunk); - memcpy (junkchunk.ckID, "junk", sizeof (junkchunk.ckID)); - junkchunk.ckSize = sizeof (junkchunk) - 8; - WavpackNativeToLittleEndian (&junkchunk, ChunkHeaderFormat); - } - - if (do_rf64) { - memcpy (ds64hdr.ckID, "ds64", sizeof (ds64hdr.ckID)); - ds64hdr.ckSize = sizeof (ds64_chunk); - CLEAR (ds64_chunk); - ds64_chunk.riffSize64 = total_riff_bytes; - ds64_chunk.dataSize64 = total_data_bytes; - ds64_chunk.sampleCount64 = total_samples; - riffhdr.ckSize = (uint32_t) -1; - datahdr.ckSize = (uint32_t) -1; - WavpackNativeToLittleEndian (&ds64hdr, ChunkHeaderFormat); - WavpackNativeToLittleEndian (&ds64_chunk, DS64ChunkFormat); - } - else { - riffhdr.ckSize = (uint32_t) total_riff_bytes; - datahdr.ckSize = (uint32_t) total_data_bytes; - } - - WavpackNativeToLittleEndian (&riffhdr, ChunkHeaderFormat); - WavpackNativeToLittleEndian (&fmthdr, ChunkHeaderFormat); - WavpackNativeToLittleEndian (&wavhdr, WaveHeaderFormat); - WavpackNativeToLittleEndian (&datahdr, ChunkHeaderFormat); - - // write the RIFF chunks up to just before the data starts - - outptr = (char *) memcpy (outptr, &riffhdr, sizeof (riffhdr)) + sizeof (riffhdr); - - if (do_rf64) { - outptr = (char *) memcpy (outptr, &ds64hdr, sizeof (ds64hdr)) + sizeof (ds64hdr); - outptr = (char *) memcpy (outptr, &ds64_chunk, sizeof (ds64_chunk)) + sizeof (ds64_chunk); - } - - if (write_junk) - outptr = (char *) memcpy (outptr, &junkchunk, sizeof (junkchunk)) + sizeof (junkchunk); - - outptr = (char *) memcpy (outptr, &fmthdr, sizeof (fmthdr)) + sizeof (fmthdr); - outptr = (char *) memcpy (outptr, &wavhdr, wavhdrsize) + wavhdrsize; - outptr = (char *) memcpy (outptr, &datahdr, sizeof (datahdr)) + sizeof (datahdr); - - return (int)(outptr - (char *) outbuffer); -} - -static int block_add_checksum (unsigned char *buffer_start, unsigned char *buffer_end, int bytes); - -static int pack_streams (WavpackContext *wpc, uint32_t block_samples) -{ - uint32_t max_blocksize, max_chans = 1, bcount; - unsigned char *outbuff, *outend, *out2buff, *out2end; - int result = TRUE, i; - - // for calculating output (block) buffer size, first see if any streams are stereo - - for (i = 0; i < wpc->num_streams; i++) - if (!(wpc->streams [i]->wphdr.flags & MONO_FLAG)) { - max_chans = 2; - break; - } - - // then calculate maximum size based on bytes / sample - - max_blocksize = block_samples * max_chans * ((wpc->streams [0]->wphdr.flags & BYTES_STORED) + 1); - - // add margin based on how much "negative" compression is possible with pathological audio - - if ((wpc->config.flags & CONFIG_FLOAT_DATA) && !(wpc->config.flags & CONFIG_SKIP_WVX)) - max_blocksize += max_blocksize; // 100% margin for lossless float data - else - max_blocksize += max_blocksize >> 2; // otherwise 25% margin for everything else - - max_blocksize += wpc->metabytes + 1024; // finally, add metadata & another 1K margin - max_blocksize += max_blocksize & 1; // and make sure it's even so we detect overflow - - out2buff = (wpc->wvc_flag) ? malloc (max_blocksize) : NULL; - out2end = out2buff + max_blocksize; - outbuff = malloc (max_blocksize); - outend = outbuff + max_blocksize; - - for (wpc->current_stream = 0; wpc->current_stream < wpc->num_streams; wpc->current_stream++) { - WavpackStream *wps = wpc->streams [wpc->current_stream]; - uint32_t flags = wps->wphdr.flags; - - flags &= ~MAG_MASK; - flags += (1 << MAG_LSB) * ((flags & BYTES_STORED) * 8 + 7); - - SET_BLOCK_INDEX (wps->wphdr, wps->sample_index); - wps->wphdr.block_samples = block_samples; - wps->wphdr.flags = flags; - wps->block2buff = out2buff; - wps->block2end = out2end; - wps->blockbuff = outbuff; - wps->blockend = outend; - -#ifdef ENABLE_DSD - if (flags & DSD_FLAG) - result = pack_dsd_block (wpc, wps->sample_buffer); - else -#endif - result = pack_block (wpc, wps->sample_buffer); - - if (result) { - result = block_add_checksum (outbuff, outend, (flags & HYBRID_FLAG) ? 2 : 4); - - if (result && out2buff) - result = block_add_checksum (out2buff, out2end, 2); - } - - wps->blockbuff = wps->block2buff = NULL; - - if (wps->wphdr.block_samples != block_samples) - block_samples = wps->wphdr.block_samples; - - if (!result) { - strcpy (wpc->error_message, "output buffer overflowed!"); - break; - } - - bcount = ((WavpackHeader *) outbuff)->ckSize + 8; - WavpackNativeToLittleEndian ((WavpackHeader *) outbuff, WavpackHeaderFormat); - result = wpc->blockout (wpc->wv_out, outbuff, bcount); - - if (!result) { - strcpy (wpc->error_message, "can't write WavPack data, disk probably full!"); - break; - } - - wpc->filelen += bcount; - - if (out2buff) { - bcount = ((WavpackHeader *) out2buff)->ckSize + 8; - WavpackNativeToLittleEndian ((WavpackHeader *) out2buff, WavpackHeaderFormat); - result = wpc->blockout (wpc->wvc_out, out2buff, bcount); - - if (!result) { - strcpy (wpc->error_message, "can't write WavPack data, disk probably full!"); - break; - } - - wpc->file2len += bcount; - } - - if (wpc->acc_samples != block_samples) - memmove (wps->sample_buffer, wps->sample_buffer + block_samples * (flags & MONO_FLAG ? 1 : 2), - (wpc->acc_samples - block_samples) * sizeof (int32_t) * (flags & MONO_FLAG ? 1 : 2)); - } - - wpc->current_stream = 0; - wpc->ave_block_samples = (wpc->ave_block_samples * 0x7 + block_samples + 0x4) >> 3; - wpc->acc_samples -= block_samples; - free (outbuff); - - if (out2buff) - free (out2buff); - - return result; -} - -// Given the pointer to the first block written (to either a .wv or .wvc file), -// update the block with the actual number of samples written. If the wav -// header was generated by the library, then it is updated also. This should -// be done if WavpackSetConfiguration() was called with an incorrect number -// of samples (or -1). It is the responsibility of the application to read and -// rewrite the block. An example of this can be found in the Audition filter. - -static void block_update_checksum (unsigned char *buffer_start); - -void WavpackUpdateNumSamples (WavpackContext *wpc, void *first_block) -{ - uint32_t wrapper_size; - - WavpackLittleEndianToNative (first_block, WavpackHeaderFormat); - SET_TOTAL_SAMPLES (* (WavpackHeader *) first_block, WavpackGetSampleIndex64 (wpc)); - - if (wpc->riff_header_created && WavpackGetWrapperLocation (first_block, &wrapper_size)) { - unsigned char riff_header [128]; - - if (wrapper_size == create_riff_header (wpc, WavpackGetSampleIndex64 (wpc), riff_header)) - memcpy (WavpackGetWrapperLocation (first_block, NULL), riff_header, wrapper_size); - } - - block_update_checksum (first_block); - WavpackNativeToLittleEndian (first_block, WavpackHeaderFormat); -} - -// Note: The following function is no longer required because the wav header -// automatically generated for the application will also be updated by -// WavpackUpdateNumSamples (). However, if the application wants to generate -// its own header or wants to include additional chunks, then this function -// still must be used to update the application generated header. - -// Given the pointer to the first block written to a WavPack file, this -// function returns the location of the stored RIFF header that was originally -// written with WavpackAddWrapper(). This would normally be used to update -// the wav header to indicate that a different number of samples was actually -// written or if additional RIFF chunks are written at the end of the file. -// The "size" parameter can be set to non-NULL to obtain the exact size of the -// RIFF header, and the function will return FALSE if the header is not found -// in the block's metadata (or it is not a valid WavPack block). It is the -// responsibility of the application to read and rewrite the block. An example -// of this can be found in the Audition filter. - -static void *find_metadata (void *wavpack_block, int desired_id, uint32_t *size); - -void *WavpackGetWrapperLocation (void *first_block, uint32_t *size) -{ - void *loc; - - WavpackLittleEndianToNative (first_block, WavpackHeaderFormat); - loc = find_metadata (first_block, ID_RIFF_HEADER, size); - - if (!loc) - loc = find_metadata (first_block, ID_ALT_HEADER, size); - - WavpackNativeToLittleEndian (first_block, WavpackHeaderFormat); - - return loc; -} - -static void *find_metadata (void *wavpack_block, int desired_id, uint32_t *size) -{ - WavpackHeader *wphdr = wavpack_block; - unsigned char *dp, meta_id, c1, c2; - int32_t bcount, meta_bc; - - if (strncmp (wphdr->ckID, "wvpk", 4)) - return NULL; - - bcount = wphdr->ckSize - sizeof (WavpackHeader) + 8; - dp = (unsigned char *)(wphdr + 1); - - while (bcount >= 2) { - meta_id = *dp++; - c1 = *dp++; - - meta_bc = c1 << 1; - bcount -= 2; - - if (meta_id & ID_LARGE) { - if (bcount < 2) - break; - - c1 = *dp++; - c2 = *dp++; - meta_bc += ((uint32_t) c1 << 9) + ((uint32_t) c2 << 17); - bcount -= 2; - } - - if ((meta_id & ID_UNIQUE) == desired_id) { - if ((bcount - meta_bc) >= 0) { - if (size) - *size = meta_bc - ((meta_id & ID_ODD_SIZE) ? 1 : 0); - - return dp; - } - else - return NULL; - } - - bcount -= meta_bc; - dp += meta_bc; - } - - return NULL; -} - -int copy_metadata (WavpackMetadata *wpmd, unsigned char *buffer_start, unsigned char *buffer_end) -{ - uint32_t mdsize = wpmd->byte_length + (wpmd->byte_length & 1); - WavpackHeader *wphdr = (WavpackHeader *) buffer_start; - - mdsize += (wpmd->byte_length > 510) ? 4 : 2; - buffer_start += wphdr->ckSize + 8; - - if (buffer_start + mdsize >= buffer_end) - return FALSE; - - buffer_start [0] = wpmd->id | (wpmd->byte_length & 1 ? ID_ODD_SIZE : 0); - buffer_start [1] = (wpmd->byte_length + 1) >> 1; - - if (wpmd->byte_length > 510) { - buffer_start [0] |= ID_LARGE; - buffer_start [2] = (wpmd->byte_length + 1) >> 9; - buffer_start [3] = (wpmd->byte_length + 1) >> 17; - } - - if (wpmd->data && wpmd->byte_length) { - memcpy (buffer_start + (wpmd->byte_length > 510 ? 4 : 2), wpmd->data, wpmd->byte_length); - - if (wpmd->byte_length & 1) // if size is odd, make sure pad byte is a zero - buffer_start [mdsize - 1] = 0; - } - - wphdr->ckSize += mdsize; - return TRUE; -} - -static int add_to_metadata (WavpackContext *wpc, void *data, uint32_t bcount, unsigned char id) -{ - WavpackMetadata *mdp; - unsigned char *src = data; - - while (bcount) { - if (wpc->metacount) { - uint32_t bc = bcount; - - mdp = wpc->metadata + wpc->metacount - 1; - - if (mdp->id == id) { - if (wpc->metabytes + bcount > 1000000) - bc = 1000000 - wpc->metabytes; - - mdp->data = realloc (mdp->data, mdp->byte_length + bc); - memcpy ((char *) mdp->data + mdp->byte_length, src, bc); - mdp->byte_length += bc; - wpc->metabytes += bc; - bcount -= bc; - src += bc; - - if (wpc->metabytes >= 1000000 && !write_metadata_block (wpc)) - return FALSE; - } - } - - if (bcount) { - wpc->metadata = realloc (wpc->metadata, (wpc->metacount + 1) * sizeof (WavpackMetadata)); - mdp = wpc->metadata + wpc->metacount++; - mdp->byte_length = 0; - mdp->data = NULL; - mdp->id = id; - } - } - - return TRUE; -} - -static char *write_metadata (WavpackMetadata *wpmd, char *outdata) -{ - unsigned char id = wpmd->id, wordlen [3]; - - wordlen [0] = (wpmd->byte_length + 1) >> 1; - wordlen [1] = (wpmd->byte_length + 1) >> 9; - wordlen [2] = (wpmd->byte_length + 1) >> 17; - - if (wpmd->byte_length & 1) - id |= ID_ODD_SIZE; - - if (wordlen [1] || wordlen [2]) - id |= ID_LARGE; - - *outdata++ = id; - *outdata++ = wordlen [0]; - - if (id & ID_LARGE) { - *outdata++ = wordlen [1]; - *outdata++ = wordlen [2]; - } - - if (wpmd->data && wpmd->byte_length) { - memcpy (outdata, wpmd->data, wpmd->byte_length); - outdata += wpmd->byte_length; - - if (wpmd->byte_length & 1) - *outdata++ = 0; - } - - return outdata; -} - -static int write_metadata_block (WavpackContext *wpc) -{ - char *block_buff, *block_ptr; - WavpackHeader *wphdr; - - if (wpc->metacount) { - int metacount = wpc->metacount, block_size = sizeof (WavpackHeader); - WavpackMetadata *wpmdp = wpc->metadata; - - while (metacount--) { - block_size += wpmdp->byte_length + (wpmdp->byte_length & 1); - block_size += (wpmdp->byte_length > 510) ? 4 : 2; - wpmdp++; - } - - // allocate 6 extra bytes for 4-byte checksum (which we add last) - wphdr = (WavpackHeader *) (block_buff = malloc (block_size + 6)); - - CLEAR (*wphdr); - memcpy (wphdr->ckID, "wvpk", 4); - SET_TOTAL_SAMPLES (*wphdr, wpc->total_samples); - wphdr->version = wpc->stream_version; - wphdr->ckSize = block_size - 8; - wphdr->block_samples = 0; - - block_ptr = (char *)(wphdr + 1); - - wpmdp = wpc->metadata; - - while (wpc->metacount) { - block_ptr = write_metadata (wpmdp, block_ptr); - wpc->metabytes -= wpmdp->byte_length; - free_metadata (wpmdp++); - wpc->metacount--; - } - - free (wpc->metadata); - wpc->metadata = NULL; - // add a 4-byte checksum here (increases block size by 6) - block_add_checksum ((unsigned char *) block_buff, (unsigned char *) block_buff + (block_size += 6), 4); - WavpackNativeToLittleEndian ((WavpackHeader *) block_buff, WavpackHeaderFormat); - - if (!wpc->blockout (wpc->wv_out, block_buff, block_size)) { - free (block_buff); - strcpy (wpc->error_message, "can't write WavPack data, disk probably full!"); - return FALSE; - } - - free (block_buff); - } - - return TRUE; -} - -void free_metadata (WavpackMetadata *wpmd) -{ - if (wpmd->data) { - free (wpmd->data); - wpmd->data = NULL; - } -} - -// These two functions add or update the block checksums that were introduced in WavPack 5.0. -// The presence of the checksum is indicated by a flag in the wavpack header (HAS_CHECKSUM) -// and the actual metadata item should be the last one in the block, and can be either 2 or 4 -// bytes. Of course, older versions of the decoder will simply ignore both of these. - -static int block_add_checksum (unsigned char *buffer_start, unsigned char *buffer_end, int bytes) -{ - WavpackHeader *wphdr = (WavpackHeader *) buffer_start; -#ifdef BITSTREAM_SHORTS - uint16_t *csptr = (uint16_t*) buffer_start; -#else - unsigned char *csptr = buffer_start; -#endif - int bcount = wphdr->ckSize + 8, wcount; - uint32_t csum = (uint32_t) -1; - - if (bytes != 2 && bytes != 4) - return FALSE; - - if (bcount < sizeof (WavpackHeader) || (bcount & 1) || buffer_start + bcount + 2 + bytes > buffer_end) - return FALSE; - - wphdr->flags |= HAS_CHECKSUM; - wphdr->ckSize += 2 + bytes; - wcount = bcount >> 1; - -#ifdef BITSTREAM_SHORTS - while (wcount--) - csum = (csum * 3) + *csptr++; -#else - WavpackNativeToLittleEndian ((WavpackHeader *) buffer_start, WavpackHeaderFormat); - - while (wcount--) { - csum = (csum * 3) + csptr [0] + (csptr [1] << 8); - csptr += 2; - } - - WavpackLittleEndianToNative ((WavpackHeader *) buffer_start, WavpackHeaderFormat); -#endif - - buffer_start += bcount; - *buffer_start++ = ID_BLOCK_CHECKSUM; - *buffer_start++ = bytes >> 1; - - if (bytes == 4) { - *buffer_start++ = csum; - *buffer_start++ = csum >> 8; - *buffer_start++ = csum >> 16; - *buffer_start++ = csum >> 24; - } - else { - csum ^= csum >> 16; - *buffer_start++ = csum; - *buffer_start++ = csum >> 8; - } - - return TRUE; -} - -static void block_update_checksum (unsigned char *buffer_start) -{ - WavpackHeader *wphdr = (WavpackHeader *) buffer_start; - unsigned char *dp, meta_id, c1, c2; - uint32_t bcount, meta_bc; - - if (!(wphdr->flags & HAS_CHECKSUM)) - return; - - bcount = wphdr->ckSize - sizeof (WavpackHeader) + 8; - dp = (unsigned char *)(wphdr + 1); - - while (bcount >= 2) { - meta_id = *dp++; - c1 = *dp++; - - meta_bc = c1 << 1; - bcount -= 2; - - if (meta_id & ID_LARGE) { - if (bcount < 2) - return; - - c1 = *dp++; - c2 = *dp++; - meta_bc += ((uint32_t) c1 << 9) + ((uint32_t) c2 << 17); - bcount -= 2; - } - - if (bcount < meta_bc) - return; - - if ((meta_id & ID_UNIQUE) == ID_BLOCK_CHECKSUM) { -#ifdef BITSTREAM_SHORTS - uint16_t *csptr = (uint16_t*) buffer_start; -#else - unsigned char *csptr = buffer_start; -#endif - int wcount = (int)(dp - 2 - buffer_start) >> 1; - uint32_t csum = (uint32_t) -1; - - if ((meta_id & ID_ODD_SIZE) || meta_bc < 2 || meta_bc > 4) - return; - -#ifdef BITSTREAM_SHORTS - while (wcount--) - csum = (csum * 3) + *csptr++; -#else - WavpackNativeToLittleEndian ((WavpackHeader *) buffer_start, WavpackHeaderFormat); - - while (wcount--) { - csum = (csum * 3) + csptr [0] + (csptr [1] << 8); - csptr += 2; - } - - WavpackLittleEndianToNative ((WavpackHeader *) buffer_start, WavpackHeaderFormat); -#endif - - if (meta_bc == 4) { - *dp++ = csum; - *dp++ = csum >> 8; - *dp++ = csum >> 16; - *dp++ = csum >> 24; - return; - } - else { - csum ^= csum >> 16; - *dp++ = csum; - *dp++ = csum >> 8; - return; - } - } - - bcount -= meta_bc; - dp += meta_bc; - } -} diff --git a/Frameworks/WavPack/Files/read_words.c b/Frameworks/WavPack/Files/read_words.c deleted file mode 100644 index 0fed03cfa..000000000 --- a/Frameworks/WavPack/Files/read_words.c +++ /dev/null @@ -1,614 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// read_words.c - -// This module provides entropy word decoding functions using -// a variation on the Rice method. This was introduced in version 3.93 -// because it allows splitting the data into a "lossy" stream and a -// "correction" stream in a very efficient manner and is therefore ideal -// for the "hybrid" mode. For 4.0, the efficiency of this method was -// significantly improved by moving away from the normal Rice restriction of -// using powers of two for the modulus divisions and now the method can be -// used for both hybrid and pure lossless encoding. - -// Samples are divided by median probabilities at 5/7 (71.43%), 10/49 (20.41%), -// and 20/343 (5.83%). Each zone has 3.5 times fewer samples than the -// previous. Using standard Rice coding on this data would result in 1.4 -// bits per sample average (not counting sign bit). However, there is a -// very simple encoding that is over 99% efficient with this data and -// results in about 1.22 bits per sample. - -#include -#include - -#include "wavpack_local.h" - -#if defined (HAVE___BUILTIN_CTZ) || defined (_WIN64) -#define USE_CTZ_OPTIMIZATION // use ctz intrinsic (or Windows equivalent) to count trailing ones -#else -#define USE_NEXT8_OPTIMIZATION // optimization using a table to count trailing ones -#endif - -#define USE_BITMASK_TABLES // use tables instead of shifting for certain masking operations - -///////////////////////////// local table storage //////////////////////////// - -#ifdef USE_NEXT8_OPTIMIZATION -static const char ones_count_table [] = { - 0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5, - 0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6, - 0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5, - 0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7, - 0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5, - 0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6, - 0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5, - 0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,8 -}; -#endif - -///////////////////////////// executable code //////////////////////////////// - -static uint32_t __inline read_code (Bitstream *bs, uint32_t maxcode); - -// Read the next word from the bitstream "wvbits" and return the value. This -// function can be used for hybrid or lossless streams, but since an -// optimized version is available for lossless this function would normally -// be used for hybrid only. If a hybrid lossless stream is being read then -// the "correction" offset is written at the specified pointer. A return value -// of WORD_EOF indicates that the end of the bitstream was reached (all 1s) or -// some other error occurred. - -int32_t FASTCALL get_word (WavpackStream *wps, int chan, int32_t *correction) -{ - struct entropy_data *c = wps->w.c + chan; - uint32_t ones_count, low, mid, high; - int32_t value; - int sign; - - if (!wps->wvbits.ptr) - return WORD_EOF; - - if (correction) - *correction = 0; - - if (!(wps->w.c [0].median [0] & ~1) && !wps->w.holding_zero && !wps->w.holding_one && !(wps->w.c [1].median [0] & ~1)) { - uint32_t mask; - int cbits; - - if (wps->w.zeros_acc) { - if (--wps->w.zeros_acc) { - c->slow_level -= (c->slow_level + SLO) >> SLS; - return 0; - } - } - else { - for (cbits = 0; cbits < 33 && getbit (&wps->wvbits); ++cbits); - - if (cbits == 33) - return WORD_EOF; - - if (cbits < 2) - wps->w.zeros_acc = cbits; - else { - for (mask = 1, wps->w.zeros_acc = 0; --cbits; mask <<= 1) - if (getbit (&wps->wvbits)) - wps->w.zeros_acc |= mask; - - wps->w.zeros_acc |= mask; - } - - if (wps->w.zeros_acc) { - c->slow_level -= (c->slow_level + SLO) >> SLS; - CLEAR (wps->w.c [0].median); - CLEAR (wps->w.c [1].median); - return 0; - } - } - } - - if (wps->w.holding_zero) - ones_count = wps->w.holding_zero = 0; - else { -#ifdef USE_CTZ_OPTIMIZATION - while (wps->wvbits.bc < LIMIT_ONES) { - if (++(wps->wvbits.ptr) == wps->wvbits.end) - wps->wvbits.wrap (&wps->wvbits); - - wps->wvbits.sr |= *(wps->wvbits.ptr) << wps->wvbits.bc; - wps->wvbits.bc += sizeof (*(wps->wvbits.ptr)) * 8; - } - -#ifdef _MSC_VER - { unsigned long res; _BitScanForward (&res, (unsigned long)~wps->wvbits.sr); ones_count = (uint32_t) res; } -#else - ones_count = __builtin_ctz (~wps->wvbits.sr); -#endif - - if (ones_count >= LIMIT_ONES) { - wps->wvbits.bc -= ones_count; - wps->wvbits.sr >>= ones_count; - - for (; ones_count < (LIMIT_ONES + 1) && getbit (&wps->wvbits); ++ones_count); - - if (ones_count == (LIMIT_ONES + 1)) - return WORD_EOF; - - if (ones_count == LIMIT_ONES) { - uint32_t mask; - int cbits; - - for (cbits = 0; cbits < 33 && getbit (&wps->wvbits); ++cbits); - - if (cbits == 33) - return WORD_EOF; - - if (cbits < 2) - ones_count = cbits; - else { - for (mask = 1, ones_count = 0; --cbits; mask <<= 1) - if (getbit (&wps->wvbits)) - ones_count |= mask; - - ones_count |= mask; - } - - ones_count += LIMIT_ONES; - } - } - else { - wps->wvbits.bc -= ones_count + 1; - wps->wvbits.sr >>= ones_count + 1; - } -#elif defined (USE_NEXT8_OPTIMIZATION) - int next8; - - if (wps->wvbits.bc < 8) { - if (++(wps->wvbits.ptr) == wps->wvbits.end) - wps->wvbits.wrap (&wps->wvbits); - - next8 = (wps->wvbits.sr |= *(wps->wvbits.ptr) << wps->wvbits.bc) & 0xff; - wps->wvbits.bc += sizeof (*(wps->wvbits.ptr)) * 8; - } - else - next8 = wps->wvbits.sr & 0xff; - - if (next8 == 0xff) { - wps->wvbits.bc -= 8; - wps->wvbits.sr >>= 8; - - for (ones_count = 8; ones_count < (LIMIT_ONES + 1) && getbit (&wps->wvbits); ++ones_count); - - if (ones_count == (LIMIT_ONES + 1)) - return WORD_EOF; - - if (ones_count == LIMIT_ONES) { - uint32_t mask; - int cbits; - - for (cbits = 0; cbits < 33 && getbit (&wps->wvbits); ++cbits); - - if (cbits == 33) - return WORD_EOF; - - if (cbits < 2) - ones_count = cbits; - else { - for (mask = 1, ones_count = 0; --cbits; mask <<= 1) - if (getbit (&wps->wvbits)) - ones_count |= mask; - - ones_count |= mask; - } - - ones_count += LIMIT_ONES; - } - } - else { - wps->wvbits.bc -= (ones_count = ones_count_table [next8]) + 1; - wps->wvbits.sr >>= ones_count + 1; - } -#else - for (ones_count = 0; ones_count < (LIMIT_ONES + 1) && getbit (&wps->wvbits); ++ones_count); - - if (ones_count >= LIMIT_ONES) { - uint32_t mask; - int cbits; - - if (ones_count == (LIMIT_ONES + 1)) - return WORD_EOF; - - for (cbits = 0; cbits < 33 && getbit (&wps->wvbits); ++cbits); - - if (cbits == 33) - return WORD_EOF; - - if (cbits < 2) - ones_count = cbits; - else { - for (mask = 1, ones_count = 0; --cbits; mask <<= 1) - if (getbit (&wps->wvbits)) - ones_count |= mask; - - ones_count |= mask; - } - - ones_count += LIMIT_ONES; - } -#endif - - if (wps->w.holding_one) { - wps->w.holding_one = ones_count & 1; - ones_count = (ones_count >> 1) + 1; - } - else { - wps->w.holding_one = ones_count & 1; - ones_count >>= 1; - } - - wps->w.holding_zero = ~wps->w.holding_one & 1; - } - - if ((wps->wphdr.flags & HYBRID_FLAG) && !chan) - update_error_limit (wps); - - if (ones_count == 0) { - low = 0; - high = GET_MED (0) - 1; - DEC_MED0 (); - } - else { - low = GET_MED (0); - INC_MED0 (); - - if (ones_count == 1) { - high = low + GET_MED (1) - 1; - DEC_MED1 (); - } - else { - low += GET_MED (1); - INC_MED1 (); - - if (ones_count == 2) { - high = low + GET_MED (2) - 1; - DEC_MED2 (); - } - else { - low += (ones_count - 2) * GET_MED (2); - high = low + GET_MED (2) - 1; - INC_MED2 (); - } - } - } - - low &= 0x7fffffff; - high &= 0x7fffffff; - - if (low > high) // make sure high and low make sense - high = low; - - mid = (high + low + 1) >> 1; - - if (!c->error_limit) - mid = read_code (&wps->wvbits, high - low) + low; - else while (high - low > c->error_limit) { - if (getbit (&wps->wvbits)) - mid = (high + (low = mid) + 1) >> 1; - else - mid = ((high = mid - 1) + low + 1) >> 1; - } - - sign = getbit (&wps->wvbits); - - if (bs_is_open (&wps->wvcbits) && c->error_limit) { - value = read_code (&wps->wvcbits, high - low) + low; - - if (correction) - *correction = sign ? (mid - value) : (value - mid); - } - - if (wps->wphdr.flags & HYBRID_BITRATE) { - c->slow_level -= (c->slow_level + SLO) >> SLS; - c->slow_level += wp_log2 (mid); - } - - return sign ? ~mid : mid; -} - -// This is an optimized version of get_word() that is used for lossless only -// (error_limit == 0). Also, rather than obtaining a single sample, it can be -// used to obtain an entire buffer of either mono or stereo samples. - -int32_t get_words_lossless (WavpackStream *wps, int32_t *buffer, int32_t nsamples) -{ - struct entropy_data *c = wps->w.c; - uint32_t ones_count, low, high; - Bitstream *bs = &wps->wvbits; - int32_t csamples; -#ifdef USE_NEXT8_OPTIMIZATION - int32_t next8; -#endif - - if (nsamples && !bs->ptr) { - memset (buffer, 0, (wps->wphdr.flags & MONO_DATA) ? nsamples * 4 : nsamples * 8); - return nsamples; - } - - if (!(wps->wphdr.flags & MONO_DATA)) - nsamples *= 2; - - for (csamples = 0; csamples < nsamples; ++csamples) { - if (!(wps->wphdr.flags & MONO_DATA)) - c = wps->w.c + (csamples & 1); - - if (wps->w.holding_zero) { - wps->w.holding_zero = 0; - low = read_code (bs, GET_MED (0) - 1); - DEC_MED0 (); - buffer [csamples] = (getbit (bs)) ? ~low : low; - - if (++csamples == nsamples) - break; - - if (!(wps->wphdr.flags & MONO_DATA)) - c = wps->w.c + (csamples & 1); - } - - if (wps->w.c [0].median [0] < 2 && !wps->w.holding_one && wps->w.c [1].median [0] < 2) { - uint32_t mask; - int cbits; - - if (wps->w.zeros_acc) { - if (--wps->w.zeros_acc) { - buffer [csamples] = 0; - continue; - } - } - else { - for (cbits = 0; cbits < 33 && getbit (bs); ++cbits); - - if (cbits == 33) - break; - - if (cbits < 2) - wps->w.zeros_acc = cbits; - else { - for (mask = 1, wps->w.zeros_acc = 0; --cbits; mask <<= 1) - if (getbit (bs)) - wps->w.zeros_acc |= mask; - - wps->w.zeros_acc |= mask; - } - - if (wps->w.zeros_acc) { - CLEAR (wps->w.c [0].median); - CLEAR (wps->w.c [1].median); - buffer [csamples] = 0; - continue; - } - } - } - -#ifdef USE_CTZ_OPTIMIZATION - while (bs->bc < LIMIT_ONES) { - if (++(bs->ptr) == bs->end) - bs->wrap (bs); - - bs->sr |= *(bs->ptr) << bs->bc; - bs->bc += sizeof (*(bs->ptr)) * 8; - } - -#ifdef _MSC_VER - { unsigned long res; _BitScanForward (&res, (unsigned long)~wps->wvbits.sr); ones_count = (uint32_t) res; } -#else - ones_count = __builtin_ctz (~wps->wvbits.sr); -#endif - - if (ones_count >= LIMIT_ONES) { - bs->bc -= ones_count; - bs->sr >>= ones_count; - - for (; ones_count < (LIMIT_ONES + 1) && getbit (bs); ++ones_count); - - if (ones_count == (LIMIT_ONES + 1)) - break; - - if (ones_count == LIMIT_ONES) { - uint32_t mask; - int cbits; - - for (cbits = 0; cbits < 33 && getbit (bs); ++cbits); - - if (cbits == 33) - break; - - if (cbits < 2) - ones_count = cbits; - else { - for (mask = 1, ones_count = 0; --cbits; mask <<= 1) - if (getbit (bs)) - ones_count |= mask; - - ones_count |= mask; - } - - ones_count += LIMIT_ONES; - } - } - else { - bs->bc -= ones_count + 1; - bs->sr >>= ones_count + 1; - } -#elif defined (USE_NEXT8_OPTIMIZATION) - if (bs->bc < 8) { - if (++(bs->ptr) == bs->end) - bs->wrap (bs); - - next8 = (bs->sr |= *(bs->ptr) << bs->bc) & 0xff; - bs->bc += sizeof (*(bs->ptr)) * 8; - } - else - next8 = bs->sr & 0xff; - - if (next8 == 0xff) { - bs->bc -= 8; - bs->sr >>= 8; - - for (ones_count = 8; ones_count < (LIMIT_ONES + 1) && getbit (bs); ++ones_count); - - if (ones_count == (LIMIT_ONES + 1)) - break; - - if (ones_count == LIMIT_ONES) { - uint32_t mask; - int cbits; - - for (cbits = 0; cbits < 33 && getbit (bs); ++cbits); - - if (cbits == 33) - break; - - if (cbits < 2) - ones_count = cbits; - else { - for (mask = 1, ones_count = 0; --cbits; mask <<= 1) - if (getbit (bs)) - ones_count |= mask; - - ones_count |= mask; - } - - ones_count += LIMIT_ONES; - } - } - else { - bs->bc -= (ones_count = ones_count_table [next8]) + 1; - bs->sr >>= ones_count + 1; - } -#else - for (ones_count = 0; ones_count < (LIMIT_ONES + 1) && getbit (bs); ++ones_count); - - if (ones_count >= LIMIT_ONES) { - uint32_t mask; - int cbits; - - if (ones_count == (LIMIT_ONES + 1)) - break; - - for (cbits = 0; cbits < 33 && getbit (bs); ++cbits); - - if (cbits == 33) - break; - - if (cbits < 2) - ones_count = cbits; - else { - for (mask = 1, ones_count = 0; --cbits; mask <<= 1) - if (getbit (bs)) - ones_count |= mask; - - ones_count |= mask; - } - - ones_count += LIMIT_ONES; - } -#endif - - low = wps->w.holding_one; - wps->w.holding_one = ones_count & 1; - wps->w.holding_zero = ~ones_count & 1; - ones_count = (ones_count >> 1) + low; - - if (ones_count == 0) { - low = 0; - high = GET_MED (0) - 1; - DEC_MED0 (); - } - else { - low = GET_MED (0); - INC_MED0 (); - - if (ones_count == 1) { - high = low + GET_MED (1) - 1; - DEC_MED1 (); - } - else { - low += GET_MED (1); - INC_MED1 (); - - if (ones_count == 2) { - high = low + GET_MED (2) - 1; - DEC_MED2 (); - } - else { - low += (ones_count - 2) * GET_MED (2); - high = low + GET_MED (2) - 1; - INC_MED2 (); - } - } - } - - low += read_code (bs, high - low); - buffer [csamples] = (getbit (bs)) ? ~low : low; - } - - return (wps->wphdr.flags & MONO_DATA) ? csamples : (csamples / 2); -} - -// Read a single unsigned value from the specified bitstream with a value -// from 0 to maxcode. If there are exactly a power of two number of possible -// codes then this will read a fixed number of bits; otherwise it reads the -// minimum number of bits and then determines whether another bit is needed -// to define the code. - -static uint32_t __inline read_code (Bitstream *bs, uint32_t maxcode) -{ - unsigned long local_sr; - uint32_t extras, code; - int bitcount; - - if (maxcode < 2) - return maxcode ? getbit (bs) : 0; - - bitcount = count_bits (maxcode); -#ifdef USE_BITMASK_TABLES - extras = bitset [bitcount] - maxcode - 1; -#else - extras = (1 << bitcount) - maxcode - 1; -#endif - - local_sr = bs->sr; - - while (bs->bc < bitcount) { - if (++(bs->ptr) == bs->end) - bs->wrap (bs); - - local_sr |= (long)*(bs->ptr) << bs->bc; - bs->bc += sizeof (*(bs->ptr)) * 8; - } - -#ifdef USE_BITMASK_TABLES - if ((code = local_sr & bitmask [bitcount - 1]) >= extras) -#else - if ((code = local_sr & ((1 << (bitcount - 1)) - 1)) >= extras) -#endif - code = (code << 1) - extras + ((local_sr >> (bitcount - 1)) & 1); - else - bitcount--; - - if (sizeof (local_sr) < 8 && bs->bc > sizeof (local_sr) * 8) { - bs->bc -= bitcount; - bs->sr = *(bs->ptr) >> (sizeof (*(bs->ptr)) * 8 - bs->bc); - } - else { - bs->bc -= bitcount; - bs->sr = local_sr >> bitcount; - } - - return code; -} diff --git a/Frameworks/WavPack/Files/tag_utils.c b/Frameworks/WavPack/Files/tag_utils.c deleted file mode 100644 index 2040e1c40..000000000 --- a/Frameworks/WavPack/Files/tag_utils.c +++ /dev/null @@ -1,597 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// tag_utils.c - -// This module provides the high-level API for creating, reading and editing -// APEv2 tags on WavPack files. Read-only support is also provided for ID3v1 -// tags, but their use is not recommended. - -#include -#include - -#include "wavpack_local.h" - -#ifdef _WIN32 -#define stricmp(x,y) _stricmp(x,y) -#else -#define stricmp strcasecmp -#endif - -static int get_ape_tag_item (M_Tag *m_tag, const char *item, char *value, int size, int type); -static int get_id3_tag_item (M_Tag *m_tag, const char *item, char *value, int size); -static int get_ape_tag_item_indexed (M_Tag *m_tag, int index, char *item, int size, int type); -static int get_id3_tag_item_indexed (M_Tag *m_tag, int index, char *item, int size); -static int append_ape_tag_item (WavpackContext *wpc, const char *item, const char *value, int vsize, int type); -static int write_tag_blockout (WavpackContext *wpc); -static int write_tag_reader (WavpackContext *wpc); -static void tagcpy (char *dest, char *src, int tag_size); -static int tagdata (char *src, int tag_size); - -//////////////////// Global functions part of external API ///////////////////////// - -// Count and return the total number of tag items in the specified file. - -int WavpackGetNumTagItems (WavpackContext *wpc) -{ - int i = 0; - - while (WavpackGetTagItemIndexed (wpc, i, NULL, 0)) - ++i; - - return i; -} - -// Count and return the total number of binary tag items in the specified file. This applies -// only to APEv2 tags and was implemented as a separate function to avoid breaking the old API. - -int WavpackGetNumBinaryTagItems (WavpackContext *wpc) -{ - int i = 0; - - while (WavpackGetBinaryTagItemIndexed (wpc, i, NULL, 0)) - ++i; - - return i; -} - -// Attempt to get the specified item from the specified file's ID3v1 or APEv2 -// tag. The "size" parameter specifies the amount of space available at "value", -// if the desired item will not fit in this space then ellipses (...) will -// be appended and the string terminated. Only text data are supported. The -// actual length of the string is returned (or 0 if no matching value found). -// Note that with APEv2 tags the length might not be the same as the number of -// characters because UTF-8 encoding is used. Also, APEv2 tags can have multiple -// (NULL separated) strings for a single value (this is why the length is -// returned). If this function is called with a NULL "value" pointer (or a -// zero "length") then only the actual length of the value data is returned -// (not counting the terminating NULL). This can be used to determine the -// actual memory to be allocated beforehand. - -int WavpackGetTagItem (WavpackContext *wpc, const char *item, char *value, int size) -{ - M_Tag *m_tag = &wpc->m_tag; - - if (value && size) - *value = 0; - - if (m_tag->ape_tag_hdr.ID [0] == 'A') - return get_ape_tag_item (m_tag, item, value, size, APE_TAG_TYPE_TEXT); - else if (m_tag->id3_tag.tag_id [0] == 'T') - return get_id3_tag_item (m_tag, item, value, size); - else - return 0; -} - -// Attempt to get the specified binary item from the specified file's APEv2 -// tag. The "size" parameter specifies the amount of space available at "value". -// If the desired item will not fit in this space then nothing will be copied -// and 0 will be returned, otherwise the actual size will be returned. If this -// function is called with a NULL "value" pointer (or a zero "length") then only -// the actual length of the value data is returned and can be used to determine -// the actual memory to be allocated beforehand. - -int WavpackGetBinaryTagItem (WavpackContext *wpc, const char *item, char *value, int size) -{ - M_Tag *m_tag = &wpc->m_tag; - - if (value && size) - *value = 0; - - if (m_tag->ape_tag_hdr.ID [0] == 'A') - return get_ape_tag_item (m_tag, item, value, size, APE_TAG_TYPE_BINARY); - else - return 0; -} - -// This function looks up the tag item name by index and is used when the -// application wants to access all the items in the file's ID3v1 or APEv2 tag. -// Note that this function accesses only the item's name; WavpackGetTagItem() -// still must be called to get the actual value. The "size" parameter specifies -// the amount of space available at "item", if the desired item will not fit in -// this space then ellipses (...) will be appended and the string terminated. -// The actual length of the string is returned (or 0 if no item exists for -// index). If this function is called with a NULL "value" pointer (or a -// zero "length") then only the actual length of the item name is returned -// (not counting the terminating NULL). This can be used to determine the -// actual memory to be allocated beforehand. For binary tag values use the -// otherwise identical WavpackGetBinaryTagItemIndexed (); - -int WavpackGetTagItemIndexed (WavpackContext *wpc, int index, char *item, int size) -{ - M_Tag *m_tag = &wpc->m_tag; - - if (item && size) - *item = 0; - - if (m_tag->ape_tag_hdr.ID [0] == 'A') - return get_ape_tag_item_indexed (m_tag, index, item, size, APE_TAG_TYPE_TEXT); - else if (m_tag->id3_tag.tag_id [0] == 'T') - return get_id3_tag_item_indexed (m_tag, index, item, size); - else - return 0; -} - -int WavpackGetBinaryTagItemIndexed (WavpackContext *wpc, int index, char *item, int size) -{ - M_Tag *m_tag = &wpc->m_tag; - - if (item && size) - *item = 0; - - if (m_tag->ape_tag_hdr.ID [0] == 'A') - return get_ape_tag_item_indexed (m_tag, index, item, size, APE_TAG_TYPE_BINARY); - else - return 0; -} - -// These two functions are used to append APEv2 tags to WavPack files; one is -// for text values (UTF-8 encoded) and the other is for binary values. If no tag -// has been started, then an empty one will be allocated first. When finished, -// use WavpackWriteTag() to write the completed tag to the file. The purpose of -// the passed size parameter is obvious for binary values, but might not be for -// text values. Keep in mind that APEv2 text values can have multiple values -// that are NULL separated, so the size is required to know the extent of the -// value (although the final terminating NULL is not included in the passed -// size). If the specified item already exists, it will be replaced with the -// new value. ID3v1 tags are not supported. - -int WavpackAppendTagItem (WavpackContext *wpc, const char *item, const char *value, int vsize) -{ - while (WavpackDeleteTagItem (wpc, item)); - return append_ape_tag_item (wpc, item, value, vsize, APE_TAG_TYPE_TEXT); -} - -int WavpackAppendBinaryTagItem (WavpackContext *wpc, const char *item, const char *value, int vsize) -{ - while (WavpackDeleteTagItem (wpc, item)); - return append_ape_tag_item (wpc, item, value, vsize, APE_TAG_TYPE_BINARY); -} - -// Delete the specified tag item from the APEv2 tag on the specified WavPack file -// (fields cannot be deleted from ID3v1 tags). A return value of TRUE indicates -// that the item was found and successfully deleted. - -int WavpackDeleteTagItem (WavpackContext *wpc, const char *item) -{ - M_Tag *m_tag = &wpc->m_tag; - - if (m_tag->ape_tag_hdr.ID [0] == 'A') { - unsigned char *p = m_tag->ape_tag_data; - unsigned char *q = p + m_tag->ape_tag_hdr.length - sizeof (APE_Tag_Hdr); - int i; - - for (i = 0; i < m_tag->ape_tag_hdr.item_count; ++i) { - int vsize, isize; - - vsize = p[0] + (p[1] << 8) + (p[2] << 16) + (p[3] << 24); p += 8; // skip flags because we don't need them - for (isize = 0; p[isize] && p + isize < q; ++isize); - - if (vsize < 0 || vsize > m_tag->ape_tag_hdr.length || p + isize + vsize + 1 > q) - break; - - if (isize && vsize && !stricmp (item, (char *) p)) { - unsigned char *d = p - 8; - - p += isize + vsize + 1; - - while (p < q) - *d++ = *p++; - - m_tag->ape_tag_hdr.length = (int32_t)(d - m_tag->ape_tag_data) + sizeof (APE_Tag_Hdr); - m_tag->ape_tag_hdr.item_count--; - return 1; - } - else - p += isize + vsize + 1; - } - } - - return 0; -} - -// Once a APEv2 tag has been created with WavpackAppendTag(), this function is -// used to write the completed tag to the end of the WavPack file. Note that -// this function uses the same "blockout" function that is used to write -// regular WavPack blocks, although that's where the similarity ends. It is also -// used to write tags that have been edited on existing files. - -int WavpackWriteTag (WavpackContext *wpc) -{ - if (wpc->blockout) // this is the case for creating fresh WavPack files - return write_tag_blockout (wpc); - else // otherwise we are editing existing tags (OPEN_EDIT_TAGS) - return write_tag_reader (wpc); -} - -////////////////////////// local static functions ///////////////////////////// - -static int get_ape_tag_item (M_Tag *m_tag, const char *item, char *value, int size, int type) -{ - unsigned char *p = m_tag->ape_tag_data; - unsigned char *q = p + m_tag->ape_tag_hdr.length - sizeof (APE_Tag_Hdr); - int i; - - for (i = 0; i < m_tag->ape_tag_hdr.item_count && q - p > 8; ++i) { - int vsize, flags, isize; - - vsize = p[0] + (p[1] << 8) + (p[2] << 16) + (p[3] << 24); p += 4; - flags = p[0] + (p[1] << 8) + (p[2] << 16) + (p[3] << 24); p += 4; - for (isize = 0; p[isize] && p + isize < q; ++isize); - - if (vsize < 0 || vsize > m_tag->ape_tag_hdr.length || p + isize + vsize + 1 > q) - break; - - if (isize && vsize && !stricmp (item, (char *) p) && ((flags & 6) >> 1) == type) { - - if (!value || !size) - return vsize; - - if (type == APE_TAG_TYPE_BINARY) { - if (vsize <= size) { - memcpy (value, p + isize + 1, vsize); - return vsize; - } - else - return 0; - } - else if (vsize < size) { - memcpy (value, p + isize + 1, vsize); - value [vsize] = 0; - return vsize; - } - else if (size >= 4) { - memcpy (value, p + isize + 1, size - 1); - value [size - 4] = value [size - 3] = value [size - 2] = '.'; - value [size - 1] = 0; - return size - 1; - } - else - return 0; - } - else - p += isize + vsize + 1; - } - - return 0; -} - -static int get_id3_tag_item (M_Tag *m_tag, const char *item, char *value, int size) -{ - char lvalue [64]; - int len; - - lvalue [0] = 0; - - if (!stricmp (item, "title")) - tagcpy (lvalue, m_tag->id3_tag.title, sizeof (m_tag->id3_tag.title)); - else if (!stricmp (item, "artist")) - tagcpy (lvalue, m_tag->id3_tag.artist, sizeof (m_tag->id3_tag.artist)); - else if (!stricmp (item, "album")) - tagcpy (lvalue, m_tag->id3_tag.album, sizeof (m_tag->id3_tag.album)); - else if (!stricmp (item, "year")) - tagcpy (lvalue, m_tag->id3_tag.year, sizeof (m_tag->id3_tag.year)); - else if (!stricmp (item, "comment")) - tagcpy (lvalue, m_tag->id3_tag.comment, sizeof (m_tag->id3_tag.comment)); - else if (!stricmp (item, "track") && m_tag->id3_tag.comment [29] && !m_tag->id3_tag.comment [28]) - sprintf (lvalue, "%d", m_tag->id3_tag.comment [29]); - else - return 0; - - len = (int) strlen (lvalue); - - if (!value || !size) - return len; - - if (len < size) { - strcpy (value, lvalue); - return len; - } - else if (size >= 4) { - strncpy (value, lvalue, size - 1); - value [size - 4] = value [size - 3] = value [size - 2] = '.'; - value [size - 1] = 0; - return size - 1; - } - else - return 0; -} - -static int get_ape_tag_item_indexed (M_Tag *m_tag, int index, char *item, int size, int type) -{ - unsigned char *p = m_tag->ape_tag_data; - unsigned char *q = p + m_tag->ape_tag_hdr.length - sizeof (APE_Tag_Hdr); - int i; - - for (i = 0; i < m_tag->ape_tag_hdr.item_count && index >= 0 && q - p > 8; ++i) { - int vsize, flags, isize; - - vsize = p[0] + (p[1] << 8) + (p[2] << 16) + (p[3] << 24); p += 4; - flags = p[0] + (p[1] << 8) + (p[2] << 16) + (p[3] << 24); p += 4; - for (isize = 0; p[isize] && p + isize < q; ++isize); - - if (vsize < 0 || vsize > m_tag->ape_tag_hdr.length || p + isize + vsize + 1 > q) - break; - - if (isize && vsize && ((flags & 6) >> 1) == type && !index--) { - - if (!item || !size) - return isize; - - if (isize < size) { - memcpy (item, p, isize); - item [isize] = 0; - return isize; - } - else if (size >= 4) { - memcpy (item, p, size - 1); - item [size - 4] = item [size - 3] = item [size - 2] = '.'; - item [size - 1] = 0; - return size - 1; - } - else - return 0; - } - else - p += isize + vsize + 1; - } - - return 0; -} - -static int get_id3_tag_item_indexed (M_Tag *m_tag, int index, char *item, int size) -{ - char lvalue [16]; - int len; - - lvalue [0] = 0; - - if (tagdata (m_tag->id3_tag.title, sizeof (m_tag->id3_tag.title)) && !index--) - strcpy (lvalue, "Title"); - else if (tagdata (m_tag->id3_tag.artist, sizeof (m_tag->id3_tag.artist)) && !index--) - strcpy (lvalue, "Artist"); - else if (tagdata (m_tag->id3_tag.album, sizeof (m_tag->id3_tag.album)) && !index--) - strcpy (lvalue, "Album"); - else if (tagdata (m_tag->id3_tag.year, sizeof (m_tag->id3_tag.year)) && !index--) - strcpy (lvalue, "Year"); - else if (tagdata (m_tag->id3_tag.comment, sizeof (m_tag->id3_tag.comment)) && !index--) - strcpy (lvalue, "Comment"); - else if (m_tag->id3_tag.comment [29] && !m_tag->id3_tag.comment [28] && !index--) - strcpy (lvalue, "Track"); - else - return 0; - - len = (int) strlen (lvalue); - - if (!item || !size) - return len; - - if (len < size) { - strcpy (item, lvalue); - return len; - } - else if (size >= 4) { - strncpy (item, lvalue, size - 1); - item [size - 4] = item [size - 3] = item [size - 2] = '.'; - item [size - 1] = 0; - return size - 1; - } - else - return 0; -} - -static int append_ape_tag_item (WavpackContext *wpc, const char *item, const char *value, int vsize, int type) -{ - M_Tag *m_tag = &wpc->m_tag; - int isize = (int) strlen (item); - - if (!m_tag->ape_tag_hdr.ID [0]) { - memcpy (m_tag->ape_tag_hdr.ID, "APETAGEX", sizeof (m_tag->ape_tag_hdr.ID)); - m_tag->ape_tag_hdr.version = 2000; - m_tag->ape_tag_hdr.length = sizeof (m_tag->ape_tag_hdr); - m_tag->ape_tag_hdr.item_count = 0; - m_tag->ape_tag_hdr.flags = APE_TAG_CONTAINS_HEADER; // we will include header on tags we originate - } - - if (m_tag->ape_tag_hdr.ID [0] == 'A') { - int new_item_len = vsize + isize + 9, flags = type << 1; - unsigned char *p; - - if (m_tag->ape_tag_hdr.length + new_item_len > APE_TAG_MAX_LENGTH) { - strcpy (wpc->error_message, "APEv2 tag exceeds maximum allowed length!"); - return FALSE; - } - - m_tag->ape_tag_hdr.item_count++; - m_tag->ape_tag_hdr.length += new_item_len; - p = m_tag->ape_tag_data = (unsigned char*)realloc (m_tag->ape_tag_data, m_tag->ape_tag_hdr.length); - p += m_tag->ape_tag_hdr.length - sizeof (APE_Tag_Hdr) - new_item_len; - - *p++ = (unsigned char) vsize; - *p++ = (unsigned char) (vsize >> 8); - *p++ = (unsigned char) (vsize >> 16); - *p++ = (unsigned char) (vsize >> 24); - - *p++ = (unsigned char) flags; - *p++ = (unsigned char) (flags >> 8); - *p++ = (unsigned char) (flags >> 16); - *p++ = (unsigned char) (flags >> 24); - - strcpy ((char *) p, item); - p += isize + 1; - memcpy (p, value, vsize); - - return TRUE; - } - else - return FALSE; -} - -// Append the stored APEv2 tag to the file being created using the "blockout" function callback. - -static int write_tag_blockout (WavpackContext *wpc) -{ - M_Tag *m_tag = &wpc->m_tag; - int result = TRUE; - - if (m_tag->ape_tag_hdr.ID [0] == 'A' && m_tag->ape_tag_hdr.item_count) { - - // only write header if it's specified in the flags - - if (m_tag->ape_tag_hdr.flags & APE_TAG_CONTAINS_HEADER) { - m_tag->ape_tag_hdr.flags |= APE_TAG_THIS_IS_HEADER; - WavpackNativeToLittleEndian (&m_tag->ape_tag_hdr, APE_Tag_Hdr_Format); - result = wpc->blockout (wpc->wv_out, &m_tag->ape_tag_hdr, sizeof (m_tag->ape_tag_hdr)); - WavpackLittleEndianToNative (&m_tag->ape_tag_hdr, APE_Tag_Hdr_Format); - } - - if (m_tag->ape_tag_hdr.length > sizeof (m_tag->ape_tag_hdr)) - result = wpc->blockout (wpc->wv_out, m_tag->ape_tag_data, m_tag->ape_tag_hdr.length - sizeof (m_tag->ape_tag_hdr)); - - m_tag->ape_tag_hdr.flags &= ~APE_TAG_THIS_IS_HEADER; // this is NOT header - WavpackNativeToLittleEndian (&m_tag->ape_tag_hdr, APE_Tag_Hdr_Format); - result = wpc->blockout (wpc->wv_out, &m_tag->ape_tag_hdr, sizeof (m_tag->ape_tag_hdr)); - WavpackLittleEndianToNative (&m_tag->ape_tag_hdr, APE_Tag_Hdr_Format); - } - - if (!result) - strcpy (wpc->error_message, "can't write WavPack data, disk probably full!"); - - return result; -} - -// Write the [potentially] edited tag to the existing WavPack file using the reader callback functions. - -static int write_tag_reader (WavpackContext *wpc) -{ - M_Tag *m_tag = &wpc->m_tag; - int32_t tag_size = 0; - int result; - - // before we write an edited (or new) tag into an existing file, make sure it's safe and possible - - if (m_tag->tag_begins_file) { - strcpy (wpc->error_message, "can't edit tags located at the beginning of files!"); - return FALSE; - } - - if (!wpc->reader->can_seek (wpc->wv_in)) { - strcpy (wpc->error_message, "can't edit tags on pipes or unseekable files!"); - return FALSE; - } - - if (!(wpc->open_flags & OPEN_EDIT_TAGS)) { - strcpy (wpc->error_message, "can't edit tags without OPEN_EDIT_TAGS flag!"); - return FALSE; - } - - if (m_tag->ape_tag_hdr.ID [0] == 'A' && m_tag->ape_tag_hdr.item_count && - m_tag->ape_tag_hdr.length > sizeof (m_tag->ape_tag_hdr)) - tag_size = m_tag->ape_tag_hdr.length; - - // only write header if it's specified in the flags - - if (tag_size && (m_tag->ape_tag_hdr.flags & APE_TAG_CONTAINS_HEADER)) - tag_size += sizeof (m_tag->ape_tag_hdr); - - result = !wpc->reader->set_pos_rel (wpc->wv_in, m_tag->tag_file_pos, SEEK_END); - - if (result && tag_size < -m_tag->tag_file_pos && !wpc->reader->truncate_here) { - int nullcnt = (int) (-m_tag->tag_file_pos - tag_size); - char zero [1] = { 0 }; - - while (nullcnt--) - wpc->reader->write_bytes (wpc->wv_in, &zero, 1); - } - - if (result && tag_size) { - if (m_tag->ape_tag_hdr.flags & APE_TAG_CONTAINS_HEADER) { - m_tag->ape_tag_hdr.flags |= APE_TAG_THIS_IS_HEADER; - WavpackNativeToLittleEndian (&m_tag->ape_tag_hdr, APE_Tag_Hdr_Format); - result = (wpc->reader->write_bytes (wpc->wv_in, &m_tag->ape_tag_hdr, sizeof (m_tag->ape_tag_hdr)) == sizeof (m_tag->ape_tag_hdr)); - WavpackLittleEndianToNative (&m_tag->ape_tag_hdr, APE_Tag_Hdr_Format); - } - - result = (wpc->reader->write_bytes (wpc->wv_in, m_tag->ape_tag_data, m_tag->ape_tag_hdr.length - sizeof (m_tag->ape_tag_hdr)) == sizeof (m_tag->ape_tag_hdr)); - m_tag->ape_tag_hdr.flags &= ~APE_TAG_THIS_IS_HEADER; // this is NOT header - WavpackNativeToLittleEndian (&m_tag->ape_tag_hdr, APE_Tag_Hdr_Format); - result = (wpc->reader->write_bytes (wpc->wv_in, &m_tag->ape_tag_hdr, sizeof (m_tag->ape_tag_hdr)) == sizeof (m_tag->ape_tag_hdr)); - WavpackLittleEndianToNative (&m_tag->ape_tag_hdr, APE_Tag_Hdr_Format); - } - - if (result && tag_size < -m_tag->tag_file_pos && wpc->reader->truncate_here) - result = !wpc->reader->truncate_here (wpc->wv_in); - - if (!result) - strcpy (wpc->error_message, "can't write WavPack data, disk probably full!"); - - return result; -} - -// Copy the specified ID3v1 tag value (with specified field size) from the -// source pointer to the destination, eliminating leading spaces and trailing -// spaces and nulls. - -static void tagcpy (char *dest, char *src, int tag_size) -{ - char *s1 = src, *s2 = src + tag_size - 1; - - if (*s2 && !s2 [-1]) - s2--; - - while (s1 <= s2) - if (*s1 == ' ') - ++s1; - else if (!*s2 || *s2 == ' ') - --s2; - else - break; - - while (*s1 && s1 <= s2) - *dest++ = *s1++; - - *dest = 0; -} - -static int tagdata (char *src, int tag_size) -{ - char *s1 = src, *s2 = src + tag_size - 1; - - if (*s2 && !s2 [-1]) - s2--; - - while (s1 <= s2) - if (*s1 == ' ') - ++s1; - else if (!*s2 || *s2 == ' ') - --s2; - else - break; - - return (*s1 && s1 <= s2); -} diff --git a/Frameworks/WavPack/Files/tags.c b/Frameworks/WavPack/Files/tags.c deleted file mode 100644 index bbde21aed..000000000 --- a/Frameworks/WavPack/Files/tags.c +++ /dev/null @@ -1,179 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// tags.c - -// This module provides support for reading metadata tags (either ID3v1 or -// APEv2) from WavPack files. No actual creation or manipulation of the tags -// is done in this module; this is just internal code to load the tags into -// memory. The high-level API functions are in the tag_utils.c module. - -#include -#include - -#include "wavpack_local.h" - -// This function attempts to load an ID3v1 or APEv2 tag from the specified -// file into the specified M_Tag structure. The ID3 tag fits in completely, -// but an APEv2 tag is variable length and so space must be allocated here -// to accommodate the data, and this will need to be freed later. A return -// value of TRUE indicates a valid tag was found and loaded. Note that the -// file pointer is undefined when this function exits. - -int load_tag (WavpackContext *wpc) -{ - int ape_tag_length, ape_tag_items; - M_Tag *m_tag = &wpc->m_tag; - - CLEAR (*m_tag); - - // This is a loop because we can try up to three times to look for an APEv2 tag. In order, we look: - // - // 1. At the end of the file for a APEv2 footer (this is the preferred location) - // 2. If there's instead an ID3v1 tag at the end of the file, try looking for an APEv2 footer right before that - // 3. If all else fails, look for an APEv2 header the the beginning of the file (use is strongly discouraged) - - while (1) { - - // seek based on specific location that we are looking for tag (see above list) - - if (m_tag->tag_begins_file) // case #3 - wpc->reader->set_pos_abs (wpc->wv_in, 0); - else if (m_tag->id3_tag.tag_id [0] == 'T') // case #2 - wpc->reader->set_pos_rel (wpc->wv_in, -(int32_t)(sizeof (APE_Tag_Hdr) + sizeof (ID3_Tag)), SEEK_END); - else // case #1 - wpc->reader->set_pos_rel (wpc->wv_in, -(int32_t)sizeof (APE_Tag_Hdr), SEEK_END); - - // read a possible APEv2 tag header/footer and see if there's one there... - - if (wpc->reader->read_bytes (wpc->wv_in, &m_tag->ape_tag_hdr, sizeof (APE_Tag_Hdr)) == sizeof (APE_Tag_Hdr) && - !strncmp (m_tag->ape_tag_hdr.ID, "APETAGEX", 8)) { - - WavpackLittleEndianToNative (&m_tag->ape_tag_hdr, APE_Tag_Hdr_Format); - - if (m_tag->ape_tag_hdr.version == 2000 && m_tag->ape_tag_hdr.item_count && - m_tag->ape_tag_hdr.length > sizeof (m_tag->ape_tag_hdr) && - m_tag->ape_tag_hdr.length <= APE_TAG_MAX_LENGTH && - (m_tag->ape_tag_data = (unsigned char *)malloc (m_tag->ape_tag_hdr.length)) != NULL) { - - ape_tag_items = m_tag->ape_tag_hdr.item_count; - ape_tag_length = m_tag->ape_tag_hdr.length; - - // If this is a APEv2 footer (which is normal if we are searching at the end of the file)... - - if (!(m_tag->ape_tag_hdr.flags & APE_TAG_THIS_IS_HEADER)) { - - if (m_tag->id3_tag.tag_id [0] == 'T') - m_tag->tag_file_pos = -(int32_t)sizeof (ID3_Tag); - else - m_tag->tag_file_pos = 0; - - m_tag->tag_file_pos -= ape_tag_length; - - // if the footer claims there is a header present also, we will read that and use it - // instead of the footer (after verifying it, of course) for enhanced robustness - - if (m_tag->ape_tag_hdr.flags & APE_TAG_CONTAINS_HEADER) - m_tag->tag_file_pos -= sizeof (APE_Tag_Hdr); - - wpc->reader->set_pos_rel (wpc->wv_in, m_tag->tag_file_pos, SEEK_END); - - if (m_tag->ape_tag_hdr.flags & APE_TAG_CONTAINS_HEADER) { - if (wpc->reader->read_bytes (wpc->wv_in, &m_tag->ape_tag_hdr, sizeof (APE_Tag_Hdr)) != - sizeof (APE_Tag_Hdr) || strncmp (m_tag->ape_tag_hdr.ID, "APETAGEX", 8)) { - free (m_tag->ape_tag_data); - CLEAR (*m_tag); - return FALSE; // something's wrong... - } - - WavpackLittleEndianToNative (&m_tag->ape_tag_hdr, APE_Tag_Hdr_Format); - - if (m_tag->ape_tag_hdr.version != 2000 || m_tag->ape_tag_hdr.item_count != ape_tag_items || - m_tag->ape_tag_hdr.length != ape_tag_length) { - free (m_tag->ape_tag_data); - CLEAR (*m_tag); - return FALSE; // something's wrong... - } - } - } - - if (wpc->reader->read_bytes (wpc->wv_in, m_tag->ape_tag_data, - ape_tag_length - sizeof (APE_Tag_Hdr)) != ape_tag_length - sizeof (APE_Tag_Hdr)) { - free (m_tag->ape_tag_data); - CLEAR (*m_tag); - return FALSE; // something's wrong... - } - else { - CLEAR (m_tag->id3_tag); // ignore ID3v1 tag if we found APEv2 tag - return TRUE; - } - } - } - - // we come here if the search for the APEv2 tag failed (otherwise we would have returned with it) - - if (m_tag->id3_tag.tag_id [0] == 'T') { // settle for the ID3v1 tag that we found - CLEAR (m_tag->ape_tag_hdr); - return TRUE; - } - - // if this was the search for the APEv2 tag at the beginning of the file (which is our - // last resort) then we have nothing, so return failure - - if (m_tag->tag_begins_file) { - CLEAR (*m_tag); - return FALSE; - } - - // If we get here, then we have failed the first APEv2 tag search (at end of file) and so now we - // look for an ID3v1 tag at the same position. If that succeeds, then we'll loop back and look for - // an APEv2 tag immediately before the ID3v1 tag, otherwise our last resort is to look for an - // APEv2 tag at the beginning of the file. These are strongly discouraged (and not editable) but - // they have been seen in the wild so we attempt to handle them here (at least well enough to - // allow a proper transcoding). - - m_tag->tag_file_pos = -(int32_t)sizeof (ID3_Tag); - wpc->reader->set_pos_rel (wpc->wv_in, m_tag->tag_file_pos, SEEK_END); - - if (wpc->reader->read_bytes (wpc->wv_in, &m_tag->id3_tag, sizeof (ID3_Tag)) != sizeof (ID3_Tag) || - strncmp (m_tag->id3_tag.tag_id, "TAG", 3)) { - m_tag->tag_begins_file = 1; // failed ID3v1, so look for APEv2 at beginning of file - CLEAR (m_tag->id3_tag); - } - } -} - -// Return TRUE is a valid ID3v1 or APEv2 tag has been loaded. - -int valid_tag (M_Tag *m_tag) -{ - if (m_tag->ape_tag_hdr.ID [0] == 'A') - return 'A'; - else if (m_tag->id3_tag.tag_id [0] == 'T') - return 'T'; - else - return 0; -} - -// Return FALSE if a valid APEv2 tag was only found at the beginning of the file (these are read-only -// because they cannot be edited without possibly shifting the entire file) - -int editable_tag (M_Tag *m_tag) -{ - return !m_tag->tag_begins_file; -} - -// Free the data for any APEv2 tag that was allocated. - -void free_tag (M_Tag *m_tag) -{ - if (m_tag->ape_tag_data) { - free (m_tag->ape_tag_data); - m_tag->ape_tag_data = NULL; - } -} diff --git a/Frameworks/WavPack/Files/unpack.c b/Frameworks/WavPack/Files/unpack.c deleted file mode 100644 index 883a8dc96..000000000 --- a/Frameworks/WavPack/Files/unpack.c +++ /dev/null @@ -1,817 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// unpack.c - -// This module actually handles the decompression of the audio data, except for -// the entropy decoding which is handled by the read_words.c module. For better -// efficiency, the conversion is isolated to tight loops that handle an entire -// buffer. - -#include -#include - -#include "wavpack_local.h" - -#ifdef OPT_ASM_X86 - #define DECORR_STEREO_PASS_CONT unpack_decorr_stereo_pass_cont_x86 - #define DECORR_STEREO_PASS_CONT_AVAILABLE unpack_cpu_has_feature_x86(CPU_FEATURE_MMX) - #define DECORR_MONO_PASS_CONT unpack_decorr_mono_pass_cont_x86 -#elif defined(OPT_ASM_X64) && (defined (_WIN64) || defined(__CYGWIN__) || defined(__MINGW64__) || defined(__midipix__)) - #define DECORR_STEREO_PASS_CONT unpack_decorr_stereo_pass_cont_x64win - #define DECORR_STEREO_PASS_CONT_AVAILABLE 1 - #define DECORR_MONO_PASS_CONT unpack_decorr_mono_pass_cont_x64win -#elif defined(OPT_ASM_X64) - #define DECORR_STEREO_PASS_CONT unpack_decorr_stereo_pass_cont_x64 - #define DECORR_STEREO_PASS_CONT_AVAILABLE 1 - #define DECORR_MONO_PASS_CONT unpack_decorr_mono_pass_cont_x64 -#elif defined(OPT_ASM_ARM) - #define DECORR_STEREO_PASS_CONT unpack_decorr_stereo_pass_cont_armv7 - #define DECORR_STEREO_PASS_CONT_AVAILABLE 1 - #define DECORR_MONO_PASS_CONT unpack_decorr_mono_pass_cont_armv7 -#endif - -#ifdef DECORR_STEREO_PASS_CONT -extern void DECORR_STEREO_PASS_CONT (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count, int32_t long_math); -extern void DECORR_MONO_PASS_CONT (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count, int32_t long_math); -#endif - -// This flag provides the functionality of terminating the decoding and muting -// the output when a lossy sample appears to be corrupt. This is automatic -// for lossless files because a corrupt sample is unambigious, but for lossy -// data it might be possible for this to falsely trigger (although I have never -// seen it). - -#define LOSSY_MUTE - -///////////////////////////// executable code //////////////////////////////// - -// This monster actually unpacks the WavPack bitstream(s) into the specified -// buffer as 32-bit integers or floats (depending on original data). Lossy -// samples will be clipped to their original limits (i.e. 8-bit samples are -// clipped to -128/+127) but are still returned in longs. It is up to the -// caller to potentially reformat this for the final output including any -// multichannel distribution, block alignment or endian compensation. The -// function unpack_init() must have been called and the entire WavPack block -// must still be visible (although wps->blockbuff will not be accessed again). -// For maximum clarity, the function is broken up into segments that handle -// various modes. This makes for a few extra infrequent flag checks, but -// makes the code easier to follow because the nesting does not become so -// deep. For maximum efficiency, the conversion is isolated to tight loops -// that handle an entire buffer. The function returns the total number of -// samples unpacked, which can be less than the number requested if an error -// occurs or the end of the block is reached. - -static void decorr_stereo_pass (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count); -static void decorr_mono_pass (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count); -static void fixup_samples (WavpackContext *wpc, int32_t *buffer, uint32_t sample_count); - -int32_t unpack_samples (WavpackContext *wpc, int32_t *buffer, uint32_t sample_count) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - uint32_t flags = wps->wphdr.flags, crc = wps->crc, i; - int32_t mute_limit = (1L << ((flags & MAG_MASK) >> MAG_LSB)) + 2; - int32_t correction [2], read_word, *bptr; - struct decorr_pass *dpp; - int tcount, m = 0; - - // don't attempt to decode past the end of the block, but watch out for overflow! - - if (wps->sample_index + sample_count > GET_BLOCK_INDEX (wps->wphdr) + wps->wphdr.block_samples && - (uint32_t) (GET_BLOCK_INDEX (wps->wphdr) + wps->wphdr.block_samples - wps->sample_index) < sample_count) - sample_count = (uint32_t) (GET_BLOCK_INDEX (wps->wphdr) + wps->wphdr.block_samples - wps->sample_index); - - if (GET_BLOCK_INDEX (wps->wphdr) > wps->sample_index || wps->wphdr.block_samples < sample_count) - wps->mute_error = TRUE; - - if (wps->mute_error) { - if (wpc->reduced_channels == 1 || wpc->config.num_channels == 1 || (flags & MONO_FLAG)) - memset (buffer, 0, sample_count * 4); - else - memset (buffer, 0, sample_count * 8); - - wps->sample_index += sample_count; - return sample_count; - } - - if ((flags & HYBRID_FLAG) && !wps->block2buff) - mute_limit = (mute_limit * 2) + 128; - - //////////////// handle lossless or hybrid lossy mono data ///////////////// - - if (!wps->block2buff && (flags & MONO_DATA)) { - int32_t *eptr = buffer + sample_count; - - if (flags & HYBRID_FLAG) { - i = sample_count; - - for (bptr = buffer; bptr < eptr;) - if ((*bptr++ = get_word (wps, 0, NULL)) == WORD_EOF) { - i = (uint32_t)(bptr - buffer); - break; - } - } - else - i = get_words_lossless (wps, buffer, sample_count); - -#ifdef DECORR_MONO_PASS_CONT - if (sample_count < 16) - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) - decorr_mono_pass (dpp, buffer, sample_count); - else - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) { - int pre_samples = (dpp->term > MAX_TERM) ? 2 : dpp->term; - - decorr_mono_pass (dpp, buffer, pre_samples); - - DECORR_MONO_PASS_CONT (dpp, buffer + pre_samples, sample_count - pre_samples, - ((flags & MAG_MASK) >> MAG_LSB) > 15); - } -#else - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) - decorr_mono_pass (dpp, buffer, sample_count); -#endif - -#ifndef LOSSY_MUTE - if (!(flags & HYBRID_FLAG)) -#endif - for (bptr = buffer; bptr < eptr; ++bptr) { - if (labs (bptr [0]) > mute_limit) { - i = (uint32_t)(bptr - buffer); - break; - } - - crc = crc * 3 + bptr [0]; - } -#ifndef LOSSY_MUTE - else - for (bptr = buffer; bptr < eptr; ++bptr) - crc = crc * 3 + bptr [0]; -#endif - } - - /////////////// handle lossless or hybrid lossy stereo data /////////////// - - else if (!wps->block2buff && !(flags & MONO_DATA)) { - int32_t *eptr = buffer + (sample_count * 2); - - if (flags & HYBRID_FLAG) { - i = sample_count; - - for (bptr = buffer; bptr < eptr; bptr += 2) - if ((bptr [0] = get_word (wps, 0, NULL)) == WORD_EOF || - (bptr [1] = get_word (wps, 1, NULL)) == WORD_EOF) { - i = (uint32_t)(bptr - buffer) / 2; - break; - } - } - else - i = get_words_lossless (wps, buffer, sample_count); - -#ifdef DECORR_STEREO_PASS_CONT - if (sample_count < 16 || !DECORR_STEREO_PASS_CONT_AVAILABLE) { - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) - decorr_stereo_pass (dpp, buffer, sample_count); - - m = sample_count & (MAX_TERM - 1); - } - else - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) { - int pre_samples = (dpp->term < 0 || dpp->term > MAX_TERM) ? 2 : dpp->term; - - decorr_stereo_pass (dpp, buffer, pre_samples); - - DECORR_STEREO_PASS_CONT (dpp, buffer + pre_samples * 2, sample_count - pre_samples, - ((flags & MAG_MASK) >> MAG_LSB) >= 16); - } -#else - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) - decorr_stereo_pass (dpp, buffer, sample_count); - - m = sample_count & (MAX_TERM - 1); -#endif - - if (flags & JOINT_STEREO) - for (bptr = buffer; bptr < eptr; bptr += 2) { - bptr [0] += (bptr [1] -= (bptr [0] >> 1)); - crc += (crc << 3) + (bptr [0] << 1) + bptr [0] + bptr [1]; - } - else - for (bptr = buffer; bptr < eptr; bptr += 2) - crc += (crc << 3) + (bptr [0] << 1) + bptr [0] + bptr [1]; - -#ifndef LOSSY_MUTE - if (!(flags & HYBRID_FLAG)) -#endif - for (bptr = buffer; bptr < eptr; bptr += 16) - if (labs (bptr [0]) > mute_limit || labs (bptr [1]) > mute_limit) { - i = (uint32_t)(bptr - buffer) / 2; - break; - } - } - - /////////////////// handle hybrid lossless mono data //////////////////// - - else if ((flags & HYBRID_FLAG) && (flags & MONO_DATA)) - for (bptr = buffer, i = 0; i < sample_count; ++i) { - - if ((read_word = get_word (wps, 0, correction)) == WORD_EOF) - break; - - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) { - int32_t sam, temp; - int k; - - if (dpp->term > MAX_TERM) { - if (dpp->term & 1) - sam = 2 * dpp->samples_A [0] - dpp->samples_A [1]; - else - sam = (3 * dpp->samples_A [0] - dpp->samples_A [1]) >> 1; - - dpp->samples_A [1] = dpp->samples_A [0]; - k = 0; - } - else { - sam = dpp->samples_A [m]; - k = (m + dpp->term) & (MAX_TERM - 1); - } - - temp = apply_weight (dpp->weight_A, sam) + read_word; - update_weight (dpp->weight_A, dpp->delta, sam, read_word); - dpp->samples_A [k] = read_word = temp; - } - - m = (m + 1) & (MAX_TERM - 1); - - if (flags & HYBRID_SHAPE) { - int shaping_weight = (wps->dc.shaping_acc [0] += wps->dc.shaping_delta [0]) >> 16; - int32_t temp = -apply_weight (shaping_weight, wps->dc.error [0]); - - if ((flags & NEW_SHAPING) && shaping_weight < 0 && temp) { - if (temp == wps->dc.error [0]) - temp = (temp < 0) ? temp + 1 : temp - 1; - - wps->dc.error [0] = temp - correction [0]; - } - else - wps->dc.error [0] = -correction [0]; - - read_word += correction [0] - temp; - } - else - read_word += correction [0]; - - crc += (crc << 1) + read_word; - - if (labs (read_word) > mute_limit) - break; - - *bptr++ = read_word; - } - - //////////////////// handle hybrid lossless stereo data /////////////////// - - else if (wps->block2buff && !(flags & MONO_DATA)) - for (bptr = buffer, i = 0; i < sample_count; ++i) { - int32_t left, right, left2, right2; - int32_t left_c = 0, right_c = 0; - - if ((left = get_word (wps, 0, correction)) == WORD_EOF || - (right = get_word (wps, 1, correction + 1)) == WORD_EOF) - break; - - if (flags & CROSS_DECORR) { - left_c = left + correction [0]; - right_c = right + correction [1]; - - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) { - int32_t sam_A, sam_B; - - if (dpp->term > 0) { - if (dpp->term > MAX_TERM) { - if (dpp->term & 1) { - sam_A = 2 * dpp->samples_A [0] - dpp->samples_A [1]; - sam_B = 2 * dpp->samples_B [0] - dpp->samples_B [1]; - } - else { - sam_A = (3 * dpp->samples_A [0] - dpp->samples_A [1]) >> 1; - sam_B = (3 * dpp->samples_B [0] - dpp->samples_B [1]) >> 1; - } - } - else { - sam_A = dpp->samples_A [m]; - sam_B = dpp->samples_B [m]; - } - - left_c += apply_weight (dpp->weight_A, sam_A); - right_c += apply_weight (dpp->weight_B, sam_B); - } - else if (dpp->term == -1) { - left_c += apply_weight (dpp->weight_A, dpp->samples_A [0]); - right_c += apply_weight (dpp->weight_B, left_c); - } - else { - right_c += apply_weight (dpp->weight_B, dpp->samples_B [0]); - - if (dpp->term == -3) - left_c += apply_weight (dpp->weight_A, dpp->samples_A [0]); - else - left_c += apply_weight (dpp->weight_A, right_c); - } - } - - if (flags & JOINT_STEREO) - left_c += (right_c -= (left_c >> 1)); - } - - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) { - int32_t sam_A, sam_B; - - if (dpp->term > 0) { - int k; - - if (dpp->term > MAX_TERM) { - if (dpp->term & 1) { - sam_A = 2 * dpp->samples_A [0] - dpp->samples_A [1]; - sam_B = 2 * dpp->samples_B [0] - dpp->samples_B [1]; - } - else { - sam_A = (3 * dpp->samples_A [0] - dpp->samples_A [1]) >> 1; - sam_B = (3 * dpp->samples_B [0] - dpp->samples_B [1]) >> 1; - } - - dpp->samples_A [1] = dpp->samples_A [0]; - dpp->samples_B [1] = dpp->samples_B [0]; - k = 0; - } - else { - sam_A = dpp->samples_A [m]; - sam_B = dpp->samples_B [m]; - k = (m + dpp->term) & (MAX_TERM - 1); - } - - left2 = apply_weight (dpp->weight_A, sam_A) + left; - right2 = apply_weight (dpp->weight_B, sam_B) + right; - - update_weight (dpp->weight_A, dpp->delta, sam_A, left); - update_weight (dpp->weight_B, dpp->delta, sam_B, right); - - dpp->samples_A [k] = left = left2; - dpp->samples_B [k] = right = right2; - } - else if (dpp->term == -1) { - left2 = left + apply_weight (dpp->weight_A, dpp->samples_A [0]); - update_weight_clip (dpp->weight_A, dpp->delta, dpp->samples_A [0], left); - left = left2; - right2 = right + apply_weight (dpp->weight_B, left2); - update_weight_clip (dpp->weight_B, dpp->delta, left2, right); - dpp->samples_A [0] = right = right2; - } - else { - right2 = right + apply_weight (dpp->weight_B, dpp->samples_B [0]); - update_weight_clip (dpp->weight_B, dpp->delta, dpp->samples_B [0], right); - right = right2; - - if (dpp->term == -3) { - right2 = dpp->samples_A [0]; - dpp->samples_A [0] = right; - } - - left2 = left + apply_weight (dpp->weight_A, right2); - update_weight_clip (dpp->weight_A, dpp->delta, right2, left); - dpp->samples_B [0] = left = left2; - } - } - - m = (m + 1) & (MAX_TERM - 1); - - if (!(flags & CROSS_DECORR)) { - left_c = left + correction [0]; - right_c = right + correction [1]; - - if (flags & JOINT_STEREO) - left_c += (right_c -= (left_c >> 1)); - } - - if (flags & JOINT_STEREO) - left += (right -= (left >> 1)); - - if (flags & HYBRID_SHAPE) { - int shaping_weight; - int32_t temp; - - correction [0] = left_c - left; - shaping_weight = (wps->dc.shaping_acc [0] += wps->dc.shaping_delta [0]) >> 16; - temp = -apply_weight (shaping_weight, wps->dc.error [0]); - - if ((flags & NEW_SHAPING) && shaping_weight < 0 && temp) { - if (temp == wps->dc.error [0]) - temp = (temp < 0) ? temp + 1 : temp - 1; - - wps->dc.error [0] = temp - correction [0]; - } - else - wps->dc.error [0] = -correction [0]; - - left = left_c - temp; - correction [1] = right_c - right; - shaping_weight = (wps->dc.shaping_acc [1] += wps->dc.shaping_delta [1]) >> 16; - temp = -apply_weight (shaping_weight, wps->dc.error [1]); - - if ((flags & NEW_SHAPING) && shaping_weight < 0 && temp) { - if (temp == wps->dc.error [1]) - temp = (temp < 0) ? temp + 1 : temp - 1; - - wps->dc.error [1] = temp - correction [1]; - } - else - wps->dc.error [1] = -correction [1]; - - right = right_c - temp; - } - else { - left = left_c; - right = right_c; - } - - if (labs (left) > mute_limit || labs (right) > mute_limit) - break; - - crc += (crc << 3) + (left << 1) + left + right; - *bptr++ = left; - *bptr++ = right; - } - else - i = 0; /* this line can't execute, but suppresses compiler warning */ - - if (i != sample_count) { - memset (buffer, 0, sample_count * (flags & MONO_FLAG ? 4 : 8)); - wps->mute_error = TRUE; - i = sample_count; - - if (bs_is_open (&wps->wvxbits)) - bs_close_read (&wps->wvxbits); - } - - if (m) - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) - if (dpp->term > 0 && dpp->term <= MAX_TERM) { - int32_t temp_A [MAX_TERM], temp_B [MAX_TERM]; - int k; - - memcpy (temp_A, dpp->samples_A, sizeof (dpp->samples_A)); - memcpy (temp_B, dpp->samples_B, sizeof (dpp->samples_B)); - - for (k = 0; k < MAX_TERM; k++) { - dpp->samples_A [k] = temp_A [m]; - dpp->samples_B [k] = temp_B [m]; - m = (m + 1) & (MAX_TERM - 1); - } - } - - fixup_samples (wpc, buffer, i); - - if ((flags & FLOAT_DATA) && (wpc->open_flags & OPEN_NORMALIZE)) - WavpackFloatNormalize (buffer, (flags & MONO_DATA) ? i : i * 2, - 127 - wps->float_norm_exp + wpc->norm_offset); - - if (flags & FALSE_STEREO) { - int32_t *dptr = buffer + i * 2; - int32_t *sptr = buffer + i; - int32_t c = i; - - while (c--) { - *--dptr = *--sptr; - *--dptr = *sptr; - } - } - - wps->sample_index += i; - wps->crc = crc; - - return i; -} - -// General function to perform mono decorrelation pass on specified buffer -// (although since this is the reverse function it might technically be called -// "correlation" instead). This version handles all sample resolutions and -// weight deltas. The dpp->samples_X[] data is returned normalized for term -// values 1-8. - -static void decorr_mono_pass (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count) -{ - int32_t delta = dpp->delta, weight_A = dpp->weight_A; - int32_t *bptr, *eptr = buffer + sample_count, sam_A; - int m, k; - - switch (dpp->term) { - - case 17: - for (bptr = buffer; bptr < eptr; bptr++) { - sam_A = 2 * dpp->samples_A [0] - dpp->samples_A [1]; - dpp->samples_A [1] = dpp->samples_A [0]; - dpp->samples_A [0] = apply_weight (weight_A, sam_A) + bptr [0]; - update_weight (weight_A, delta, sam_A, bptr [0]); - bptr [0] = dpp->samples_A [0]; - } - - break; - - case 18: - for (bptr = buffer; bptr < eptr; bptr++) { - sam_A = (3 * dpp->samples_A [0] - dpp->samples_A [1]) >> 1; - dpp->samples_A [1] = dpp->samples_A [0]; - dpp->samples_A [0] = apply_weight (weight_A, sam_A) + bptr [0]; - update_weight (weight_A, delta, sam_A, bptr [0]); - bptr [0] = dpp->samples_A [0]; - } - - break; - - default: - for (m = 0, k = dpp->term & (MAX_TERM - 1), bptr = buffer; bptr < eptr; bptr++) { - sam_A = dpp->samples_A [m]; - dpp->samples_A [k] = apply_weight (weight_A, sam_A) + bptr [0]; - update_weight (weight_A, delta, sam_A, bptr [0]); - bptr [0] = dpp->samples_A [k]; - m = (m + 1) & (MAX_TERM - 1); - k = (k + 1) & (MAX_TERM - 1); - } - - if (m) { - int32_t temp_samples [MAX_TERM]; - - memcpy (temp_samples, dpp->samples_A, sizeof (dpp->samples_A)); - - for (k = 0; k < MAX_TERM; k++, m++) - dpp->samples_A [k] = temp_samples [m & (MAX_TERM - 1)]; - } - - break; - } - - dpp->weight_A = weight_A; -} - -// General function to perform stereo decorrelation pass on specified buffer -// (although since this is the reverse function it might technically be called -// "correlation" instead). This version handles all sample resolutions and -// weight deltas. The dpp->samples_X[] data is *not* returned normalized for -// term values 1-8, so it should be normalized if it is going to be used to -// call this function again. - -static void decorr_stereo_pass (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count) -{ - int32_t *bptr, *eptr = buffer + (sample_count * 2); - int m, k; - - switch (dpp->term) { - case 17: - for (bptr = buffer; bptr < eptr; bptr += 2) { - int32_t sam, tmp; - - sam = 2 * dpp->samples_A [0] - dpp->samples_A [1]; - dpp->samples_A [1] = dpp->samples_A [0]; - bptr [0] = dpp->samples_A [0] = apply_weight (dpp->weight_A, sam) + (tmp = bptr [0]); - update_weight (dpp->weight_A, dpp->delta, sam, tmp); - - sam = 2 * dpp->samples_B [0] - dpp->samples_B [1]; - dpp->samples_B [1] = dpp->samples_B [0]; - bptr [1] = dpp->samples_B [0] = apply_weight (dpp->weight_B, sam) + (tmp = bptr [1]); - update_weight (dpp->weight_B, dpp->delta, sam, tmp); - } - - break; - - case 18: - for (bptr = buffer; bptr < eptr; bptr += 2) { - int32_t sam, tmp; - - sam = dpp->samples_A [0] + ((dpp->samples_A [0] - dpp->samples_A [1]) >> 1); - dpp->samples_A [1] = dpp->samples_A [0]; - bptr [0] = dpp->samples_A [0] = apply_weight (dpp->weight_A, sam) + (tmp = bptr [0]); - update_weight (dpp->weight_A, dpp->delta, sam, tmp); - - sam = dpp->samples_B [0] + ((dpp->samples_B [0] - dpp->samples_B [1]) >> 1); - dpp->samples_B [1] = dpp->samples_B [0]; - bptr [1] = dpp->samples_B [0] = apply_weight (dpp->weight_B, sam) + (tmp = bptr [1]); - update_weight (dpp->weight_B, dpp->delta, sam, tmp); - } - - break; - - default: - for (m = 0, k = dpp->term & (MAX_TERM - 1), bptr = buffer; bptr < eptr; bptr += 2) { - int32_t sam; - - sam = dpp->samples_A [m]; - dpp->samples_A [k] = apply_weight (dpp->weight_A, sam) + bptr [0]; - update_weight (dpp->weight_A, dpp->delta, sam, bptr [0]); - bptr [0] = dpp->samples_A [k]; - - sam = dpp->samples_B [m]; - dpp->samples_B [k] = apply_weight (dpp->weight_B, sam) + bptr [1]; - update_weight (dpp->weight_B, dpp->delta, sam, bptr [1]); - bptr [1] = dpp->samples_B [k]; - - m = (m + 1) & (MAX_TERM - 1); - k = (k + 1) & (MAX_TERM - 1); - } - - break; - - case -1: - for (bptr = buffer; bptr < eptr; bptr += 2) { - int32_t sam; - - sam = bptr [0] + apply_weight (dpp->weight_A, dpp->samples_A [0]); - update_weight_clip (dpp->weight_A, dpp->delta, dpp->samples_A [0], bptr [0]); - bptr [0] = sam; - dpp->samples_A [0] = bptr [1] + apply_weight (dpp->weight_B, sam); - update_weight_clip (dpp->weight_B, dpp->delta, sam, bptr [1]); - bptr [1] = dpp->samples_A [0]; - } - - break; - - case -2: - for (bptr = buffer; bptr < eptr; bptr += 2) { - int32_t sam; - - sam = bptr [1] + apply_weight (dpp->weight_B, dpp->samples_B [0]); - update_weight_clip (dpp->weight_B, dpp->delta, dpp->samples_B [0], bptr [1]); - bptr [1] = sam; - dpp->samples_B [0] = bptr [0] + apply_weight (dpp->weight_A, sam); - update_weight_clip (dpp->weight_A, dpp->delta, sam, bptr [0]); - bptr [0] = dpp->samples_B [0]; - } - - break; - - case -3: - for (bptr = buffer; bptr < eptr; bptr += 2) { - int32_t sam_A, sam_B; - - sam_A = bptr [0] + apply_weight (dpp->weight_A, dpp->samples_A [0]); - update_weight_clip (dpp->weight_A, dpp->delta, dpp->samples_A [0], bptr [0]); - sam_B = bptr [1] + apply_weight (dpp->weight_B, dpp->samples_B [0]); - update_weight_clip (dpp->weight_B, dpp->delta, dpp->samples_B [0], bptr [1]); - bptr [0] = dpp->samples_B [0] = sam_A; - bptr [1] = dpp->samples_A [0] = sam_B; - } - - break; - } -} - -// This is a helper function for unpack_samples() that applies several final -// operations. First, if the data is 32-bit float data, then that conversion -// is done in the float.c module (whether lossy or lossless) and we return. -// Otherwise, if the extended integer data applies, then that operation is -// executed first. If the unpacked data is lossy (and not corrected) then -// it is clipped and shifted in a single operation. Otherwise, if it's -// lossless then the last step is to apply the final shift (if any). - -static void fixup_samples (WavpackContext *wpc, int32_t *buffer, uint32_t sample_count) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - uint32_t flags = wps->wphdr.flags; - int lossy_flag = (flags & HYBRID_FLAG) && !wps->block2buff; - int shift = (flags & SHIFT_MASK) >> SHIFT_LSB; - - if (flags & FLOAT_DATA) { - float_values (wps, buffer, (flags & MONO_DATA) ? sample_count : sample_count * 2); - return; - } - - if (flags & INT32_DATA) { - uint32_t count = (flags & MONO_DATA) ? sample_count : sample_count * 2; - int sent_bits = wps->int32_sent_bits, zeros = wps->int32_zeros; - int ones = wps->int32_ones, dups = wps->int32_dups; - uint32_t data, mask = (1 << sent_bits) - 1; - int32_t *dptr = buffer; - - if (bs_is_open (&wps->wvxbits)) { - uint32_t crc = wps->crc_x; - - while (count--) { -// if (sent_bits) { - getbits (&data, sent_bits, &wps->wvxbits); - *dptr = (*dptr << sent_bits) | (data & mask); -// } - - if (zeros) - *dptr <<= zeros; - else if (ones) - *dptr = ((*dptr + 1) << ones) - 1; - else if (dups) - *dptr = ((*dptr + (*dptr & 1)) << dups) - (*dptr & 1); - - crc = crc * 9 + (*dptr & 0xffff) * 3 + ((*dptr >> 16) & 0xffff); - dptr++; - } - - wps->crc_x = crc; - } - else if (!sent_bits && (zeros + ones + dups)) { - while (lossy_flag && (flags & BYTES_STORED) == 3 && shift < 8) { - if (zeros) - zeros--; - else if (ones) - ones--; - else if (dups) - dups--; - else - break; - - shift++; - } - - while (count--) { - if (zeros) - *dptr <<= zeros; - else if (ones) - *dptr = ((*dptr + 1) << ones) - 1; - else if (dups) - *dptr = ((*dptr + (*dptr & 1)) << dups) - (*dptr & 1); - - dptr++; - } - } - else - shift += zeros + sent_bits + ones + dups; - } - - if (lossy_flag) { - int32_t min_value, max_value, min_shifted, max_shifted; - - switch (flags & BYTES_STORED) { - case 0: - min_shifted = (min_value = -128 >> shift) << shift; - max_shifted = (max_value = 127 >> shift) << shift; - break; - - case 1: - min_shifted = (min_value = -32768 >> shift) << shift; - max_shifted = (max_value = 32767 >> shift) << shift; - break; - - case 2: - min_shifted = (min_value = -8388608 >> shift) << shift; - max_shifted = (max_value = 8388607 >> shift) << shift; - break; - - case 3: default: /* "default" suppresses compiler warning */ - min_shifted = (min_value = (int32_t) 0x80000000 >> shift) << shift; - max_shifted = (max_value = (int32_t) 0x7fffffff >> shift) << shift; - break; - } - - if (!(flags & MONO_DATA)) - sample_count *= 2; - - while (sample_count--) { - if (*buffer < min_value) - *buffer++ = min_shifted; - else if (*buffer > max_value) - *buffer++ = max_shifted; - else - *buffer++ <<= shift; - } - } - else if (shift) { - if (!(flags & MONO_DATA)) - sample_count *= 2; - - while (sample_count--) - *buffer++ <<= shift; - } -} - -// This function checks the crc value(s) for an unpacked block, returning the -// number of actual crc errors detected for the block. The block must be -// completely unpacked before this test is valid. For losslessly unpacked -// blocks of float or extended integer data the extended crc is also checked. -// Note that WavPack's crc is not a CCITT approved polynomial algorithm, but -// is a much simpler method that is virtually as robust for real world data. - -int check_crc_error (WavpackContext *wpc) -{ - int result = 0, stream; - - for (stream = 0; stream < wpc->num_streams; stream++) { - WavpackStream *wps = wpc->streams [stream]; - - if (wps->crc != wps->wphdr.crc) - ++result; - else if (bs_is_open (&wps->wvxbits) && wps->crc_x != wps->crc_wvx) - ++result; - } - - return result; -} diff --git a/Frameworks/WavPack/Files/unpack3.c b/Frameworks/WavPack/Files/unpack3.c deleted file mode 100644 index c0190e128..000000000 --- a/Frameworks/WavPack/Files/unpack3.c +++ /dev/null @@ -1,1703 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// unpack3.c - -// This module provides unpacking for WavPack files prior to version 4.0, -// not including "raw" files. As these modes are all obsolete and are no -// longer written, this code will not be fully documented other than the -// global functions. However, full documentation is provided in the version -// 3.97 source code. Note that this module does only the low-level sample -// unpacking; the actual opening of the file (and obtaining information -// from it) is handled in the unpack3_open.c module. - -#ifdef ENABLE_LEGACY - -#include -#include - -#include "wavpack_local.h" -#include "unpack3.h" - -#define ATTEMPT_ERROR_MUTING - -static int bs_open_read3 (Bitstream3 *bs, WavpackStreamReader64 *reader, void *id); -static uint32_t bs_unused_bytes (Bitstream3 *bs); -static unsigned char *bs_unused_data (Bitstream3 *bs); -static void init_words3 (WavpackStream3 *wps); - -//////////////////////////////// local macros ///////////////////////////////// - -#define apply_weight_n(bits, weight, sample) ((weight * sample + (1 << (bits - 1))) >> bits) - -#define update_weight_n(bits, weight, source, result) \ - if (source && result) { \ - if ((source ^ result) >= 0) { if (weight++ == (1 << bits)) weight--; } \ - else if (weight-- == min_weight) weight++; \ - } - -#define apply_weight24(weight, sample) (((((sample & 0xffff) * weight) >> 7) + \ - (((sample & ~0xffff) >> 7) * weight) + 1) >> 1) - -#define update_weight2(weight, source, result) \ - if (source && result) { \ - if ((source ^ result) >= 0) { if (weight++ == 256) weight--; } \ - else if (weight-- == min_weight) weight++; \ - } - -//////////////////////////////// local tables /////////////////////////////// - -// These three tables specify the characteristics of the decorrelation filters. -// Each term represents one layer of the sequential filter, where positive -// values indicate the relative sample involved from the same channel (1=prev) -// while -1 and -2 indicate cross channel decorrelation (in stereo only). The -// "simple_terms" table is no longer used for writing, but is kept for older -// file decoding. - -static const signed char extreme_terms [] = { 1,1,1,2,4,-1,1,2,3,6,-2,8,5,7,4,1,2,3 }; -static const signed char default_terms [] = { 1,1,1,-1,2,1,-2 }; -static const signed char simple_terms [] = { 1,1,1,1 }; - -///////////////////////////// executable code //////////////////////////////// - -// This function initializes everything required to unpack WavPack -// bitstreams and must be called before any unpacking is performed. Note -// that the (WavpackHeader3 *) in the WavpackStream3 struct must be valid. - -void unpack_init3 (WavpackStream3 *wps) -{ - int flags = wps->wphdr.flags; - struct decorr_pass *dpp; - int ti; - - CLEAR (wps->decorr_passes); - CLEAR (wps->dc); - - if (flags & EXTREME_DECORR) { - for (dpp = wps->decorr_passes, ti = 0; ti < sizeof (extreme_terms); ti++) - if (extreme_terms [sizeof (extreme_terms) - ti - 1] > 0 || (flags & CROSS_DECORR)) - dpp++->term = extreme_terms [sizeof (extreme_terms) - ti - 1]; - } - else if (flags & NEW_DECORR_FLAG) { - for (dpp = wps->decorr_passes, ti = 0; ti < sizeof (default_terms); ti++) - if (default_terms [sizeof (default_terms) - ti - 1] > 0 || (flags & CROSS_DECORR)) - dpp++->term = default_terms [sizeof (default_terms) - ti - 1]; - } - else - for (dpp = wps->decorr_passes, ti = 0; ti < sizeof (simple_terms); ti++) - dpp++->term = simple_terms [sizeof (simple_terms) - ti - 1]; - - wps->num_terms = (int)(dpp - wps->decorr_passes); - init_words3 (wps); -} - -#ifndef NO_SEEKING - -// This function returns the size (in bytes) required to save the unpacking -// context. Note that the (WavpackHeader3 *) in the WavpackStream3 struct -// must be valid. - -static int unpack_size (WavpackStream3 *wps) -{ - int flags = wps->wphdr.flags, byte_sum = 0, tcount; - struct decorr_pass *dpp; - - byte_sum += sizeof (wps->wvbits); - - if (flags & WVC_FLAG) - byte_sum += sizeof (wps->wvcbits); - - if (wps->wphdr.version == 3) { - if (wps->wphdr.bits) - byte_sum += sizeof (wps->w4); - else - byte_sum += sizeof (wps->w1); - - byte_sum += sizeof (wps->w3) + sizeof (wps->dc.crc); - } - else - byte_sum += sizeof (wps->w2); - - if (wps->wphdr.bits) - byte_sum += sizeof (wps->dc.error); - else - byte_sum += sizeof (wps->dc.sum_level) + sizeof (wps->dc.left_level) + - sizeof (wps->dc.right_level) + sizeof (wps->dc.diff_level); - - if (flags & OVER_20) - byte_sum += sizeof (wps->dc.last_extra_bits) + sizeof (wps->dc.extra_bits_count); - - if (!(flags & EXTREME_DECORR)) { - byte_sum += sizeof (wps->dc.sample); - byte_sum += sizeof (wps->dc.weight); - } - - if (flags & (HIGH_FLAG | NEW_HIGH_FLAG)) - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) { - if (dpp->term > 0) { - byte_sum += sizeof (dpp->samples_A [0]) * dpp->term; - byte_sum += sizeof (dpp->weight_A); - - if (!(flags & MONO_FLAG)) { - byte_sum += sizeof (dpp->samples_B [0]) * dpp->term; - byte_sum += sizeof (dpp->weight_B); - } - } - else { - byte_sum += sizeof (dpp->samples_A [0]) + sizeof (dpp->samples_B [0]); - byte_sum += sizeof (dpp->weight_A) + sizeof (dpp->weight_B); - } - } - - return byte_sum; -} - -// This function saves the unpacking context at the specified pointer and -// returns the updated pointer. The actual amount of data required can be -// determined beforehand by calling unpack_size() but must be allocated by -// the caller. - -static void *unpack_save (WavpackStream3 *wps, void *destin) -{ - int flags = wps->wphdr.flags, tcount; - struct decorr_pass *dpp; - - SAVE (destin, wps->wvbits); - - if (flags & WVC_FLAG) - SAVE (destin, wps->wvcbits); - - if (wps->wphdr.version == 3) { - if (wps->wphdr.bits) { - SAVE (destin, wps->w4); - } - else { - SAVE (destin, wps->w1); - } - - SAVE (destin, wps->w3); - SAVE (destin, wps->dc.crc); - } - else - SAVE (destin, wps->w2); - - if (wps->wphdr.bits) { - SAVE (destin, wps->dc.error); - } - else { - SAVE (destin, wps->dc.sum_level); - SAVE (destin, wps->dc.left_level); - SAVE (destin, wps->dc.right_level); - SAVE (destin, wps->dc.diff_level); - } - - if (flags & OVER_20) { - SAVE (destin, wps->dc.last_extra_bits); - SAVE (destin, wps->dc.extra_bits_count); - } - - if (!(flags & EXTREME_DECORR)) { - SAVE (destin, wps->dc.sample); - SAVE (destin, wps->dc.weight); - } - - if (flags & (HIGH_FLAG | NEW_HIGH_FLAG)) - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) { - if (dpp->term > 0) { - int count = dpp->term; - int index = wps->dc.m; - - SAVE (destin, dpp->weight_A); - - while (count--) { - SAVE (destin, dpp->samples_A [index]); - index = (index + 1) & (MAX_TERM - 1); - } - - if (!(flags & MONO_FLAG)) { - count = dpp->term; - index = wps->dc.m; - - SAVE (destin, dpp->weight_B); - - while (count--) { - SAVE (destin, dpp->samples_B [index]); - index = (index + 1) & (MAX_TERM - 1); - } - } - } - else { - SAVE (destin, dpp->weight_A); - SAVE (destin, dpp->weight_B); - SAVE (destin, dpp->samples_A [0]); - SAVE (destin, dpp->samples_B [0]); - } - } - - return destin; -} - -#endif - -// This monster actually unpacks the WavPack bitstream(s) into the specified -// buffer as longs, and serves as an extension to WavpackUnpackSamples(). -// Note that WavPack files created prior to version 4.0 could only contain 16 -// or 24 bit values, and these values are right-justified in the 32-bit values. -// So, if the original file contained 16-bit values, then the range of the -// returned longs would be +/- 32K. For maximum clarity, the function is -// broken up into segments that handle various modes. This makes for a few -// extra infrequent flag checks, but makes the code easier to follow because -// the nesting does not become so deep. For maximum efficiency, the conversion -// is isolated to tight loops that handle an entire buffer. - -static int32_t FASTCALL get_word1 (WavpackStream3 *wps, int chan); -static int32_t FASTCALL get_old_word1 (WavpackStream3 *wps, int chan); -static int32_t FASTCALL get_word2 (WavpackStream3 *wps, int chan); -static int32_t FASTCALL get_word3 (WavpackStream3 *wps, int chan); -static int32_t FASTCALL get_word4 (WavpackStream3 *wps, int chan, int32_t *correction); - -int32_t unpack_samples3 (WavpackContext *wpc, int32_t *buffer, uint32_t sample_count) -{ - WavpackStream3 *wps = (WavpackStream3 *) wpc->stream3; - int shift = wps->wphdr.shift, flags = wps->wphdr.flags, min_weight = 0, m = wps->dc.m, tcount; -#ifndef NO_SEEKING - int points_index = wps->sample_index / (((uint32_t) wpc->total_samples >> 8) + 1); -#endif - int32_t min_value, max_value, min_shifted, max_shifted; - int32_t correction [2], crc = wps->dc.crc; - struct decorr_pass *dpp; - int32_t read_word, *bptr; - int32_t sample [2] [2]; - int weight [2] [1]; - unsigned int i; - -#ifdef ATTEMPT_ERROR_MUTING - int32_t mute_limit = (flags & BYTES_3) ? 8388608 : 32768; - int mute_block = 0; - - if (wps->wphdr.bits && !(flags & WVC_FLAG)) { - if (wps->wphdr.version < 3) - mute_limit *= 4; - else - mute_limit *= 2; - } -#endif - - if (wps->sample_index + sample_count > wpc->total_samples) - sample_count = (uint32_t) (wpc->total_samples - wps->sample_index); - - if (!sample_count) - return 0; - - if (!wps->sample_index) { - unpack_init3 (wps); - - bs_open_read3 (&wps->wvbits, wpc->reader, wpc->wv_in); - - if (wpc->wvc_flag) - bs_open_read3 (&wps->wvcbits, wpc->reader, wpc->wvc_in); - } - -#ifndef NO_SEEKING - if (!wps->index_points [points_index].saved) { - - if (!wps->unpack_data) - wps->unpack_data = (unsigned char *) malloc (256 * (wps->unpack_size = unpack_size (wps))); - - wps->index_points [points_index].sample_index = wps->sample_index; - unpack_save (wps, wps->unpack_data + points_index * wps->unpack_size); - wps->index_points [points_index].saved = TRUE; - } -#endif - - memcpy (sample, wps->dc.sample, sizeof (sample)); - memcpy (weight, wps->dc.weight, sizeof (weight)); - - if (wps->wphdr.bits) { - if (flags & (NEW_DECORR_FLAG | EXTREME_DECORR)) - min_weight = -256; - } - else - if (flags & NEW_DECORR_FLAG) - min_weight = (flags & EXTREME_DECORR) ? -512 : -256; - - if (flags & BYTES_3) { - min_shifted = (min_value = -8388608 >> shift) << shift; - max_shifted = (max_value = 8388607 >> shift) << shift; - } - else { - min_shifted = (min_value = -32768 >> shift) << shift; - max_shifted = (max_value = 32767 >> shift) << shift; - } - - ///////////////// handle version 3 lossless mono data ///////////////////// - - if (wps->wphdr.version == 3 && !wps->wphdr.bits && (flags & MONO_FLAG)) { - if (flags & FAST_FLAG) { - if (flags & OVER_20) - for (bptr = buffer, i = 0; i < sample_count; ++i) { - int32_t temp; - - if ((read_word = get_word3 (wps, 0)) == WORD_EOF) - break; - - sample [0] [0] += sample [0] [1] += read_word; - getbits (&temp, 4, &wps->wvbits); - crc = crc * 3 + (temp = (temp & 0xf) + (sample [0] [0] << 4)); - *bptr++ = temp; - } - else - for (bptr = buffer, i = 0; i < sample_count; ++i) { - if ((read_word = get_word3 (wps, 0)) == WORD_EOF) - break; - - crc = crc * 3 + (sample [0] [0] += sample [0] [1] += read_word); - *bptr++ = sample [0] [0] << shift; - } - } - else if (flags & HIGH_FLAG) - for (bptr = buffer, i = 0; i < sample_count; ++i) { - int32_t temp; - - if (flags & NEW_HIGH_FLAG) { - if ((read_word = get_word1 (wps, 0)) == WORD_EOF) - break; - } - else { - if ((read_word = get_old_word1 (wps, 0)) == WORD_EOF) - break; - } - - if (flags & EXTREME_DECORR) - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) { - int32_t sam = dpp->samples_A [m]; - - temp = apply_weight_n (9, dpp->weight_A, sam) + read_word; - update_weight_n (9, dpp->weight_A, sam, read_word); - dpp->samples_A [(m + dpp->term) & (MAX_TERM - 1)] = read_word = temp; - } - else - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) { - int32_t sam = dpp->samples_A [m]; - - temp = apply_weight_n (8, dpp->weight_A, sam) + read_word; - update_weight_n (8, dpp->weight_A, sam, read_word); - dpp->samples_A [(m + dpp->term) & (MAX_TERM - 1)] = read_word = temp; - } - - m = (m + 1) & (MAX_TERM - 1); - - if (flags & OVER_20) { - if (wps->dc.extra_bits_count < 8 || !getbit (&wps->wvbits)) { - getbits (&temp, 4, &wps->wvbits); - - if ((temp &= 0xf) != wps->dc.last_extra_bits) { - wps->dc.last_extra_bits = temp; - wps->dc.extra_bits_count = 0; - } - else - ++wps->dc.extra_bits_count; - } - - crc = crc * 3 + (temp = wps->dc.last_extra_bits + (read_word << 4)); - *bptr++ = temp; - } - else { - crc = crc * 3 + read_word; - *bptr++ = read_word << shift; - } - } - else - for (bptr = buffer, i = 0; i < sample_count; ++i) { - - int32_t temp; - - if ((read_word = get_word3 (wps, 0)) == WORD_EOF) - break; - - temp = sample [0] [0] + ((sample [0] [1] * weight [0] [0] + 128) >> 8) + read_word; - - if ((sample [0] [1] >= 0) == (read_word > 0)) { - if (weight [0] [0]++ == 256) - weight [0] [0]--; - } - else if (weight [0] [0]-- == 0) - weight [0] [0]++; - - sample [0] [0] += (sample [0] [1] = temp - sample [0] [0]); - - if (flags & OVER_20) { - if (wps->dc.extra_bits_count < 8 || !getbit (&wps->wvbits)) { - getbits (&temp, 4, &wps->wvbits); - - if ((temp &= 0xf) != wps->dc.last_extra_bits) { - wps->dc.last_extra_bits = temp; - wps->dc.extra_bits_count = 0; - } - else - ++wps->dc.extra_bits_count; - } - - crc = crc * 3 + (*bptr++ = temp = wps->dc.last_extra_bits + (sample [0] [0] << 4)); - } - else { - crc = crc * 3 + sample [0] [0]; - *bptr++ = sample [0] [0] << shift; - } - } - } - - //////////////// handle version 3 lossless stereo data //////////////////// - - else if (wps->wphdr.version == 3 && !wps->wphdr.bits && !(flags & MONO_FLAG)) { - int32_t left_level = wps->dc.left_level, right_level = wps->dc.right_level; - int32_t sum_level = wps->dc.sum_level, diff_level = wps->dc.diff_level; - - if (flags & FAST_FLAG) { - if (flags & OVER_20) - for (bptr = buffer, i = 0; i < sample_count; ++i) { - int32_t sum, diff, temp; - - read_word = get_word3 (wps, 0); - - if (read_word == WORD_EOF) - break; - - sum = (read_word << 1) | ((diff = get_word3 (wps, 1)) & 1); - sample [0] [0] += sample [0] [1] += ((sum + diff) >> 1); - sample [1] [0] += sample [1] [1] += ((sum - diff) >> 1); - getbits (&temp, 8, &wps->wvbits); - crc = crc * 3 + (*bptr++ = (sample [0] [0] << 4) + ((temp >> 4) & 0xf)); - crc = crc * 3 + (*bptr++ = (sample [1] [0] << 4) + (temp & 0xf)); - } - else - for (bptr = buffer, i = 0; i < sample_count; ++i) { - int32_t sum, diff; - - read_word = get_word3 (wps, 0); - - if (read_word == WORD_EOF) - break; - - sum = (read_word << 1) | ((diff = get_word3 (wps, 1)) & 1); - sample [0] [1] += ((sum + diff) >> 1); - sample [1] [1] += ((sum - diff) >> 1); - crc = crc * 3 + (sample [0] [0] += sample [0] [1]); - crc = crc * 3 + (sample [1] [0] += sample [1] [1]); - *bptr++ = sample [0] [0] << shift; - *bptr++ = sample [1] [0] << shift; - } - } - else if (flags & HIGH_FLAG) { - for (bptr = buffer, i = 0; i < sample_count; ++i) { - int32_t sum, left, right, diff, left2, right2, extra_bits, next_word; - - if (flags & CROSS_DECORR) { - left = get_word1 (wps, 0); - - if (left == WORD_EOF) - break; - - right = get_word1 (wps, 1); - } - else { - if (flags & NEW_HIGH_FLAG) { - read_word = get_word1 (wps, 0); - - if (read_word == WORD_EOF) - break; - - next_word = get_word1 (wps, 1); - - if (right_level > left_level) { - if (left_level + right_level < sum_level + diff_level && right_level < diff_level) { - sum = (right = read_word) + (left = next_word); - diff = left - right; - } - else { - diff = read_word; - - if (sum_level < left_level) { - sum = (next_word << 1) | (diff & 1); - left = (sum + diff) >> 1; - right = (sum - diff) >> 1; - } - else - sum = next_word + (right = (left = next_word) - diff); - } - } - else { - if (left_level + right_level < sum_level + diff_level && left_level < diff_level) { - sum = (left = read_word) + (right = next_word); - diff = left - right; - } - else { - diff = read_word; - - if (sum_level < right_level) { - sum = (next_word << 1) | (diff & 1); - left = (sum + diff) >> 1; - right = (sum - diff) >> 1; - } - else - sum = (left = diff + (right = next_word)) + next_word; - } - } - } - else { - read_word = get_old_word1 (wps, 0); - - if (read_word == WORD_EOF) - break; - - next_word = get_old_word1 (wps, 1); - - if (sum_level <= right_level && sum_level <= left_level) { - sum = (next_word << 1) | (read_word & 1); - left = (sum + read_word) >> 1; - right = (sum - read_word) >> 1; - } - else if (left_level <= right_level) - sum = next_word + (right = (left = next_word) - read_word); - else - sum = next_word + (left = read_word + (right = next_word)); - - diff = left - right; - } - - sum_level = sum_level - (sum_level >> 8) + labs (sum >> 1); - left_level = left_level - (left_level >> 8) + labs (left); - right_level = right_level - (right_level >> 8) + labs (right); - diff_level = diff_level - (diff_level >> 8) + labs (diff); - - if (flags & JOINT_STEREO) { - left = diff; - right = sum >> 1; - } - } - - if (flags & EXTREME_DECORR) { - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) - if (dpp->term > 0) { - int32_t sam_A = dpp->samples_A [m], sam_B = dpp->samples_B [m]; - int k = (m + dpp->term) & (MAX_TERM - 1); - - left2 = apply_weight_n (9, dpp->weight_A, sam_A) + left; - right2 = apply_weight_n (9, dpp->weight_B, sam_B) + right; - - update_weight_n (9, dpp->weight_A, sam_A, left); - update_weight_n (9, dpp->weight_B, sam_B, right); - - dpp->samples_A [k] = left = left2; - dpp->samples_B [k] = right = right2; - } - else if (dpp->term == -1) { - left2 = left + apply_weight_n (9, dpp->weight_A, dpp->samples_A [0]); - update_weight_n (9, dpp->weight_A, dpp->samples_A [0], left); - left = left2; - right2 = right + apply_weight_n (9, dpp->weight_B, left); - update_weight_n (9, dpp->weight_B, left, right); - dpp->samples_A [0] = right = right2; - } - else { - right2 = right + apply_weight_n (9, dpp->weight_A, dpp->samples_A [0]); - update_weight_n (9, dpp->weight_A, dpp->samples_A [0], right); - right = right2; - left2 = left + apply_weight_n (9, dpp->weight_B, right); - update_weight_n (9, dpp->weight_B, right, left); - dpp->samples_A [0] = left = left2; - } - } - else { - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) - if (dpp->term > 0) { - int32_t sam_A = dpp->samples_A [m], sam_B = dpp->samples_B [m]; - int k = (m + dpp->term) & (MAX_TERM - 1); - - left2 = apply_weight_n (8, dpp->weight_A, sam_A) + left; - right2 = apply_weight_n (8, dpp->weight_B, sam_B) + right; - - update_weight_n (8, dpp->weight_A, sam_A, left); - update_weight_n (8, dpp->weight_B, sam_B, right); - - dpp->samples_A [k] = left = left2; - dpp->samples_B [k] = right = right2; - } - else if (dpp->term == -1) { - left2 = left + apply_weight_n (8, dpp->weight_A, dpp->samples_A [0]); - update_weight_n (8, dpp->weight_A, dpp->samples_A [0], left); - left = left2; - right2 = right + apply_weight_n (8, dpp->weight_B, left); - update_weight_n (8, dpp->weight_B, left, right); - dpp->samples_A [0] = right = right2; - } - else { - right2 = right + apply_weight_n (8, dpp->weight_A, dpp->samples_A [0]); - update_weight_n (8, dpp->weight_A, dpp->samples_A [0], right); - right = right2; - left2 = left + apply_weight_n (8, dpp->weight_B, right); - update_weight_n (8, dpp->weight_B, right, left); - dpp->samples_A [0] = left = left2; - } - } - - m = (m + 1) & (MAX_TERM - 1); - - if (flags & JOINT_STEREO) { - sum = (right << 1) | ((diff = left) & 1); - right = (sum - diff) >> 1; - left = (sum + diff) >> 1; - } - - if (flags & OVER_20) { - if (wps->dc.extra_bits_count < 8 || !getbit (&wps->wvbits)) { - getbits (&extra_bits, 8, &wps->wvbits); - - if ((extra_bits &= 0xff) != wps->dc.last_extra_bits) { - wps->dc.last_extra_bits = extra_bits; - wps->dc.extra_bits_count = 0; - } - else - ++wps->dc.extra_bits_count; - } - - crc = crc * 3 + (*bptr++ = left = (left << 4) + (wps->dc.last_extra_bits >> 4)); - crc = crc * 3 + (*bptr++ = right = (right << 4) + (wps->dc.last_extra_bits & 0xf)); - } - else { - crc = crc * 9 + left * 3 + right; - *bptr++ = left << shift; - *bptr++ = right << shift; - } - } - } - else - for (bptr = buffer, i = 0; i < sample_count; ++i) { - int32_t sum, left, right, left2, right2, extra_bits; - - read_word = get_word3 (wps, 0); - - if (read_word == WORD_EOF) - break; - - if (sum_level <= right_level && sum_level <= left_level) { - sum = (get_word3 (wps, 1) << 1) | (read_word & 1); - left = (sum + read_word) >> 1; - right = (sum - read_word) >> 1; - } - else if (left_level <= right_level) { - right = (left = get_word3 (wps, 1)) - read_word; - sum = left + right; - } - else { - left = read_word + (right = get_word3 (wps, 1)); - sum = right + left; - } - - sum_level = sum_level - (sum_level >> 8) + labs (sum >> 1); - left_level = left_level - (left_level >> 8) + labs (left); - right_level = right_level - (right_level >> 8) + labs (right); - - left2 = sample [0] [0] + ((sample [0] [1] * weight [0] [0] + 128) >> 8) + left; - right2 = sample [1] [0] + ((sample [1] [1] * weight [1] [0] + 128) >> 8) + right; - - if ((sample [0] [1] >= 0) == (left > 0)) { - if (weight [0] [0]++ == 256) - weight [0] [0]--; - } - else if (weight [0] [0]-- == 0) - weight [0] [0]++; - - if ((sample [1] [1] >= 0) == (right > 0)) { - if (weight [1] [0]++ == 256) - weight [1] [0]--; - } - else if (weight [1] [0]-- == 0) - weight [1] [0]++; - - sample [0] [0] += (sample [0] [1] = left2 - sample [0] [0]); - sample [1] [0] += (sample [1] [1] = right2 - sample [1] [0]); - - if (flags & OVER_20) { - if (wps->dc.extra_bits_count < 8 || !getbit (&wps->wvbits)) { - getbits (&extra_bits, 8, &wps->wvbits); - - if ((extra_bits &= 0xff) != wps->dc.last_extra_bits) { - wps->dc.last_extra_bits = extra_bits; - wps->dc.extra_bits_count = 0; - } - else - ++wps->dc.extra_bits_count; - } - - crc = crc * 3 + (*bptr++ = left2 = (sample [0] [0] << 4) + (wps->dc.last_extra_bits >> 4)); - crc = crc * 3 + (*bptr++ = right2 = (sample [1] [0] << 4) + (wps->dc.last_extra_bits & 0xf)); - } - else { - crc = crc * 9 + sample [0] [0] * 3 + sample [1] [0]; - *bptr++ = sample [0] [0] << shift; - *bptr++ = sample [1] [0] << shift; - } - } - - wps->dc.left_level = left_level; - wps->dc.right_level = right_level; - wps->dc.sum_level = sum_level; - wps->dc.diff_level = diff_level; - } - - //////////////// handle version 3 lossy/hybrid mono data ////////////////// - - else if (wps->wphdr.version == 3 && wps->wphdr.bits && (flags & MONO_FLAG)) { - if (flags & FAST_FLAG) - for (bptr = buffer, i = 0; i < sample_count; ++i) { - - if ((read_word = get_word3 (wps, 0)) == WORD_EOF) - break; - - crc = crc * 3 + (sample [0] [0] += sample [0] [1] += read_word); - - if (sample [0] [0] < min_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [0] [0] < -mute_limit) - mute_block = 1; -#endif - *bptr++ = min_shifted; - } - else if (sample [0] [0] > max_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [0] [0] > mute_limit) - mute_block = 1; -#endif - *bptr++ = max_shifted; - } - else - *bptr++ = sample [0] [0] << shift; - } - else if (flags & (HIGH_FLAG | NEW_HIGH_FLAG)) - for (bptr = buffer, i = 0; i < sample_count; ++i) { - int32_t temp; - - read_word = (flags & NEW_HIGH_FLAG) ? - get_word4 (wps, 0, correction) : get_word3 (wps, 0); - - if (read_word == WORD_EOF) - break; - - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) { - int32_t sam = dpp->samples_A [m]; - - temp = apply_weight24 (dpp->weight_A, sam) + read_word; - update_weight2 (dpp->weight_A, sam, read_word); - dpp->samples_A [(m + dpp->term) & (MAX_TERM - 1)] = read_word = temp; - } - - m = (m + 1) & (MAX_TERM - 1); - - if (flags & WVC_FLAG) { - if (flags & LOSSY_SHAPE) { - crc = crc * 3 + (read_word += correction [0] + wps->dc.error [0]); - wps->dc.error [0] = -correction [0]; - } - else - crc = crc * 3 + (read_word += correction [0]); - - *bptr++ = read_word << shift; - } - else { - crc = crc * 3 + read_word; - - if (read_word < min_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (read_word < -mute_limit) - mute_block = 1; -#endif - *bptr++ = min_shifted; - } - else if (read_word > max_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (read_word > mute_limit) - mute_block = 1; -#endif - *bptr++ = max_shifted; - } - else - *bptr++ = read_word << shift; - } - } - else - for (bptr = buffer, i = 0; i < sample_count; ++i) { - int32_t new_sample; - - if ((read_word = get_word3 (wps, 0)) == WORD_EOF) - break; - - new_sample = sample [0] [0] + ((sample [0] [1] * weight [0] [0] + 128) >> 8) + read_word; - - if ((sample [0] [1] >= 0) == (read_word > 0)) { - if (weight [0] [0]++ == 256) - weight [0] [0]--; - } - else if (weight [0] [0]-- == 0) - weight [0] [0]++; - - sample [0] [1] = new_sample - sample [0] [0]; - crc = crc * 3 + (sample [0] [0] = new_sample); - - if (sample [0] [0] < min_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [0] [0] < -mute_limit) - mute_block = 1; -#endif - *bptr++ = min_shifted; - } - else if (sample [0] [0] > max_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [0] [0] > mute_limit) - mute_block = 1; -#endif - *bptr++ = max_shifted; - } - else - *bptr++ = sample [0] [0] << shift; - } - } - - //////////////// handle version 3 lossy/hybrid stereo data //////////////// - - else if (wps->wphdr.version == 3 && wps->wphdr.bits && !(flags & MONO_FLAG)) { - if (flags & FAST_FLAG) - for (bptr = buffer, i = 0; i < sample_count; ++i) { - - if ((read_word = get_word3 (wps, 0)) == WORD_EOF) - break; - - crc = crc * 3 + (sample [0] [0] += sample [0] [1] += read_word); - - if (sample [0] [0] < min_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [0] [0] < -mute_limit) - mute_block = 1; -#endif - *bptr++ = min_shifted; - } - else if (sample [0] [0] > max_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [0] [0] > mute_limit) - mute_block = 1; -#endif - *bptr++ = max_shifted; - } - else - *bptr++ = sample [0] [0] << shift; - - crc = crc * 3 + (sample [1] [0] += sample [1] [1] += get_word3 (wps, 1)); - - if (sample [1] [0] < min_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [1] [0] < -mute_limit) - mute_block = 1; -#endif - *bptr++ = min_shifted; - } - else if (sample [1] [0] > max_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [1] [0] > mute_limit) - mute_block = 1; -#endif - *bptr++ = max_shifted; - } - else - *bptr++ = sample [1] [0] << shift; - } - else if (flags & (HIGH_FLAG | NEW_HIGH_FLAG)) - for (bptr = buffer, i = 0; i < sample_count; ++i) { - int32_t left, right, left2, right2, sum, diff; - - if (flags & NEW_HIGH_FLAG) { - left = get_word4 (wps, 0, correction); - right = get_word4 (wps, 1, correction + 1); - } - else { - left = get_word3 (wps, 0); - right = get_word3 (wps, 1); - } - - if (left == WORD_EOF) - break; - - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) { - int32_t sam_A = dpp->samples_A [m], sam_B = dpp->samples_B [m]; - int k = (m + dpp->term) & (MAX_TERM - 1); - - left2 = apply_weight24 (dpp->weight_A, sam_A) + left; - update_weight2 (dpp->weight_A, sam_A, left); - dpp->samples_A [k] = left = left2; - - right2 = apply_weight24 (dpp->weight_B, sam_B) + right; - update_weight2 (dpp->weight_B, sam_B, right); - dpp->samples_B [k] = right = right2; - } - - m = (m + 1) & (MAX_TERM - 1); - - if (flags & WVC_FLAG) { - if (flags & LOSSY_SHAPE) { - left += correction [0] + wps->dc.error [0]; - right += correction [1] + wps->dc.error [1]; - wps->dc.error [0] = -correction [0]; - wps->dc.error [1] = -correction [1]; - } - else { - left += correction [0]; - right += correction [1]; - } - } - - if (flags & JOINT_STEREO) { - right = ((sum = (right << 1) | (left & 1)) - (diff = left)) >> 1; - left = (sum + diff) >> 1; - } - - crc = crc * 9 + left * 3 + right; - - if (flags & WVC_FLAG) { - *bptr++ = left << shift; - *bptr++ = right << shift; - } - else { - if (left < min_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (left < -mute_limit) - mute_block = 1; -#endif - *bptr++ = min_shifted; - } - else if (left > max_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (left > mute_limit) - mute_block = 1; -#endif - *bptr++ = max_shifted; - } - else - *bptr++ = left << shift; - - if (right < min_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (right < -mute_limit) - mute_block = 1; -#endif - *bptr++ = min_shifted; - } - else if (right > max_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (right > mute_limit) - mute_block = 1; -#endif - *bptr++ = max_shifted; - } - else - *bptr++ = right << shift; - } - } - else - for (bptr = buffer, i = 0; i < sample_count; ++i) { - int32_t new_sample; - - if ((read_word = get_word3 (wps, 0)) == WORD_EOF) - break; - - new_sample = sample [0] [0] + ((sample [0] [1] * weight [0] [0] + 128) >> 8) + read_word; - - if ((sample [0] [1] >= 0) == (read_word > 0)) { - if (weight [0] [0]++ == 256) - weight [0] [0]--; - } - else if (weight [0] [0]-- == 0) - weight [0] [0]++; - - sample [0] [1] = new_sample - sample [0] [0]; - crc = crc * 3 + (sample [0] [0] = new_sample); - - read_word = get_word3 (wps, 1); - new_sample = sample [1] [0] + ((sample [1] [1] * weight [1] [0] + 128) >> 8) + read_word; - - if ((sample [1] [1] >= 0) == (read_word > 0)) { - if (weight [1] [0]++ == 256) - weight [1] [0]--; - } - else if (weight [1] [0]-- == 0) - weight [1] [0]++; - - sample [1] [1] = new_sample - sample [1] [0]; - crc = crc * 3 + (sample [1] [0] = new_sample); - - if (sample [0] [0] < min_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [0] [0] < -mute_limit) - mute_block = 1; -#endif - *bptr++ = min_shifted; - } - else if (sample [0] [0] > max_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [0] [0] > mute_limit) - mute_block = 1; -#endif - *bptr++ = max_shifted; - } - else - *bptr++ = sample [0] [0] << shift; - - if (sample [1] [0] < min_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [1] [0] < -mute_limit) - mute_block = 1; -#endif - *bptr++ = min_shifted; - } - else if (sample [1] [0] > max_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [1] [0] > mute_limit) - mute_block = 1; -#endif - *bptr++ = max_shifted; - } - else - *bptr++ = sample [1] [0] << shift; - } - } - - //////////////////// finally, handle version 2 data /////////////////////// - - else if (wps->wphdr.version == 2 && (flags & MONO_FLAG)) - for (bptr = buffer, i = 0; i < sample_count; ++i) { - if ((read_word = get_word2 (wps, 0)) == WORD_EOF) - break; - - sample [0] [0] += sample [0] [1] += read_word; - - if (wps->wphdr.bits) { - if (sample [0] [0] < min_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [0] [0] < -mute_limit) - mute_block = 1; -#endif - sample [0] [0] = min_value; - } - else if (sample [0] [0] > max_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [0] [0] > mute_limit) - mute_block = 1; -#endif - sample [0] [0] = max_value; - } - } - - *bptr++ = sample [0] [0] << shift; - } - else if (wps->wphdr.version < 3 && !(flags & MONO_FLAG)) - for (bptr = buffer, i = 0; i < sample_count; ++i) { - int32_t sum, diff; - - read_word = get_word2 (wps, 0); - - if (read_word == WORD_EOF) - break; - - sum = (read_word << 1) | ((diff = get_word2 (wps, 1)) & 1); - sample [0] [0] += sample [0] [1] += ((sum + diff) >> 1); - sample [1] [0] += sample [1] [1] += ((sum - diff) >> 1); - - if (wps->wphdr.bits) { - if (sample [0] [0] < min_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [0] [0] < -mute_limit) - mute_block = 1; -#endif - sample [0] [0] = min_value; - } - else if (sample [0] [0] > max_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [0] [0] > mute_limit) - mute_block = 1; -#endif - sample [0] [0] = max_value; - } - - if (sample [1] [0] < min_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [1] [0] < -mute_limit) - mute_block = 1; -#endif - sample [1] [0] = min_value; - } - else if (sample [1] [0] > max_value) { -#ifdef ATTEMPT_ERROR_MUTING - if (sample [1] [0] > mute_limit) - mute_block = 1; -#endif - sample [1] [0] = max_value; - } - } - - *bptr++ = sample [0] [0] << shift; - *bptr++ = sample [1] [0] << shift; - } - else - i = 0; /* can't get here, but suppresses warning */ - -#ifdef ATTEMPT_ERROR_MUTING - if (!wps->wphdr.bits || (flags & WVC_FLAG)) { - int32_t *eptr = buffer + sample_count * ((flags & MONO_FLAG) ? 1 : 2); - - for (bptr = buffer; bptr < eptr; bptr += 3) - if (*bptr > mute_limit || *bptr < -mute_limit) { - mute_block = 1; - break; - } - } - - if (mute_block) - memset (buffer, 0, sizeof (*buffer) * sample_count * ((flags & MONO_FLAG) ? 1 : 2)); -#endif - - if (i && (wps->sample_index += i) == wpc->total_samples) { - - if (wps->wphdr.version == 3 && crc != (wpc->wvc_flag ? wps->wphdr.crc2 : wps->wphdr.crc)) - wpc->crc_errors++; - - if (wpc->open_flags & OPEN_WRAPPER) { - unsigned char *temp = (unsigned char *)malloc (1024); - uint32_t bcount; - - if (bs_unused_bytes (&wps->wvbits)) { - wpc->wrapper_data = (unsigned char *)realloc (wpc->wrapper_data, wpc->wrapper_bytes + bs_unused_bytes (&wps->wvbits)); - memcpy (wpc->wrapper_data + wpc->wrapper_bytes, bs_unused_data (&wps->wvbits), bs_unused_bytes (&wps->wvbits)); - wpc->wrapper_bytes += bs_unused_bytes (&wps->wvbits); - } - - while (1) { - bcount = wpc->reader->read_bytes (wpc->wv_in, temp, 1024); - - if (!bcount) - break; - - wpc->wrapper_data = (unsigned char *)realloc (wpc->wrapper_data, wpc->wrapper_bytes + bcount); - memcpy (wpc->wrapper_data + wpc->wrapper_bytes, temp, bcount); - wpc->wrapper_bytes += bcount; - } - - free (temp); - - if (wpc->wrapper_bytes > 16) { - int c; - - for (c = 0; c < 16 && wpc->wrapper_data [c] == 0xff; ++c); - - if (c == 16) { - memmove (wpc->wrapper_data, wpc->wrapper_data + 16, wpc->wrapper_bytes - 16); - wpc->wrapper_bytes -= 16; - } - else { - free (wpc->wrapper_data); - wpc->wrapper_data = NULL; - wpc->wrapper_bytes = 0; - } - } - } - } - - memcpy (wps->dc.sample, sample, sizeof (sample)); - memcpy (wps->dc.weight, weight, sizeof (weight)); - wps->dc.crc = crc; - wps->dc.m = m; - - return i; -} - -// This function initializes everything required to receive words with this -// module and must be called BEFORE any other function in this module. - -static void init_words3 (WavpackStream3 *wps) -{ - CLEAR (wps->w1); - CLEAR (wps->w2); - CLEAR (wps->w3); - CLEAR (wps->w4); - - if (wps->wphdr.flags & MONO_FLAG) - wps->w4.bitrate = wps->wphdr.bits - 768; - else - wps->w4.bitrate = (wps->wphdr.bits / 2) - 768; -} - -static int32_t FASTCALL get_word1 (WavpackStream3 *wps, int chan) -{ - uint32_t tmp1, tmp2, avalue; - unsigned int ones_count; - int k; - - if ((wps->wphdr.flags & EXTREME_DECORR) && !(wps->wphdr.flags & OVER_20)) { - if (wps->w1.zeros_acc) { - if (--wps->w1.zeros_acc) - return 0; - } - else if (wps->w1.ave_level [0] [0] < 0x20 && wps->w1.ave_level [0] [1] < 0x20) { - int32_t mask; - int cbits; - - for (cbits = 0; cbits < 33 && getbit (&wps->wvbits); ++cbits); - - if (cbits == 33) - return WORD_EOF; - - if (cbits < 2) - wps->w1.zeros_acc = cbits; - else { - for (mask = 1, wps->w1.zeros_acc = 0; --cbits; mask <<= 1) - if (getbit (&wps->wvbits)) - wps->w1.zeros_acc |= mask; - - wps->w1.zeros_acc |= mask; - } - - if (wps->w1.zeros_acc) - return 0; - } - } - - // count consecutive ones in bitstream, > 25 indicates error (or EOF) - - for (ones_count = 0; ones_count < 25 && getbit (&wps->wvbits); ++ones_count); - - if (ones_count == 25) - return WORD_EOF; - - k = (wps->w1.ave_level [0] [chan] + (wps->w1.ave_level [0] [chan] >> 3) + 0x40) >> 7; - k = count_bits (k); - - if (k & ~31) - return WORD_EOF; - - if (ones_count == 0) { - getbits (&avalue, k, &wps->wvbits); - avalue &= bitmask [k]; - } - else { - tmp1 = bitset [k]; - k = (wps->w1.ave_level [1] [chan] + (wps->w1.ave_level [1] [chan] >> 4) + 0x20) >> 6; - k = count_bits (k); - - if (k & ~31) - return WORD_EOF; - - if (ones_count == 1) { - getbits (&avalue, k, &wps->wvbits); - avalue &= bitmask [k]; - } - else { - tmp2 = bitset [k]; - - // If the ones count is exactly 24, then next 24 bits are literal - - if (ones_count == 24) { - getbits (&avalue, 24, &wps->wvbits); - avalue &= 0xffffff; - } - else { - k = (wps->w1.ave_level [2] [chan] + 0x10) >> 5; - k = count_bits (k); - - if (k & ~31) - return WORD_EOF; - - getbits (&avalue, k, &wps->wvbits); - avalue = (avalue & bitmask [k]) + (bitset [k] * (ones_count - 2)); - } - - wps->w1.ave_level [2] [chan] -= ((wps->w1.ave_level [2] [chan] + 0x8) >> 4); - wps->w1.ave_level [2] [chan] += avalue; - avalue += tmp2; - } - - wps->w1.ave_level [1] [chan] -= ((wps->w1.ave_level [1] [chan] + 0x10) >> 5); - wps->w1.ave_level [1] [chan] += avalue; - avalue += tmp1; - } - - wps->w1.ave_level [0] [chan] -= ((wps->w1.ave_level [0] [chan] + 0x20) >> 6); - wps->w1.ave_level [0] [chan] += avalue; - - return (avalue && getbit (&wps->wvbits)) ? -(int32_t)avalue : avalue; -} - -#define NUM_SAMPLES 128 - -static int32_t FASTCALL get_old_word1 (WavpackStream3 *wps, int chan) -{ - uint32_t avalue; - unsigned int bc; - int k; - - if (!wps->w1.index [chan]) { - - int guess_k = (wps->w1.ave_k [chan] + 128) >> 8, ones; - - for (ones = 0; ones < 72 && getbit (&wps->wvbits); ++ones); - - if (ones == 72) - return WORD_EOF; - - if (ones % 3 == 1) - wps->w1.k_value [chan] = guess_k - (ones / 3) - 1; - else - wps->w1.k_value [chan] = guess_k + ones - ((ones + 1) / 3); - - wps->w1.ave_k [chan] -= (wps->w1.ave_k [chan] + 0x10) >> 5; - wps->w1.ave_k [chan] += wps->w1.k_value [chan] << 3; - } - - if (++wps->w1.index [chan] == NUM_SAMPLES) - wps->w1.index [chan] = 0; - - k = wps->w1.k_value [chan]; - getbits (&avalue, k, &wps->wvbits); - - for (bc = 0; bc < 32 && getbit (&wps->wvbits); ++bc); - - if (bc == 32 || (k & ~31)) - return WORD_EOF; - - avalue = (avalue & bitmask [k]) + bitset [k] * bc; - return (avalue && getbit (&wps->wvbits)) ? -(int32_t)avalue : avalue; -} - -static int32_t FASTCALL get_word2 (WavpackStream3 *wps, int chan) -{ - int cbits, delta_dbits, dbits; - int32_t value, mask = 1; - - cbits = 0; - - while (getbit (&wps->wvbits)) - if ((cbits += 2) == 50) - return WORD_EOF; - - if (getbit (&wps->wvbits)) - cbits++; - - if (cbits == 0) - delta_dbits = 0; - else if (cbits & 1) { - delta_dbits = (cbits + 1) / 2; - - if (wps->w2.last_delta_sign [chan] > 0) - delta_dbits *= -1; - - wps->w2.last_delta_sign [chan] = delta_dbits; - } - else { - delta_dbits = cbits / 2; - - if (wps->w2.last_delta_sign [chan] <= 0) - delta_dbits *= -1; - } - - dbits = (wps->w2.last_dbits [chan] += delta_dbits); - - if (dbits < 0 || dbits > 20) - return WORD_EOF; - - if (!dbits) - return 0L; - - if (wps->wphdr.bits) { - for (value = 1L << (dbits - 1); --dbits; mask <<= 1) - if (dbits < wps->wphdr.bits && getbit (&wps->wvbits)) - value |= mask; - } - else - for (value = 1L << (dbits - 1); --dbits; mask <<= 1) - if (getbit (&wps->wvbits)) - value |= mask; - - return getbit (&wps->wvbits) ? -(int32_t)value : value; -} - -static int32_t FASTCALL get_word3 (WavpackStream3 *wps, int chan) -{ - int cbits, delta_dbits, dbits; - int32_t value; - - for (cbits = 0; cbits < 72 && getbit (&wps->wvbits); ++cbits); - - if (cbits == 72) - return WORD_EOF; - - if (cbits || getbit (&wps->wvbits)) - ++cbits; - - if (!((cbits + 1) % 3)) - delta_dbits = (cbits + 1) / 3; - else - delta_dbits = -(cbits - cbits / 3); - - if (chan) { - dbits = (wps->w3.ave_dbits [1] >> 8) + 1 + delta_dbits; - wps->w3.ave_dbits [1] -= (wps->w3.ave_dbits [1] + 0x10) >> 5; - wps->w3.ave_dbits [1] += dbits << 3; - } - else { - dbits = (wps->w3.ave_dbits [0] >> 8) + 1 + delta_dbits; - wps->w3.ave_dbits [0] -= (wps->w3.ave_dbits [0] + 0x10) >> 5; - wps->w3.ave_dbits [0] += dbits << 3; - } - - if (dbits < 0 || dbits > 24) - return WORD_EOF; - - if (!dbits) - return 0L; - - if (wps->wphdr.bits && dbits > wps->wphdr.bits) { - getbits (&value, wps->wphdr.bits, &wps->wvbits); - - if (value & bitset [wps->wphdr.bits - 1]) - return -(int32_t)(value & bitmask [wps->wphdr.bits]) << (dbits - wps->wphdr.bits); - else - return ((value & bitmask [wps->wphdr.bits - 1]) | bitset [wps->wphdr.bits - 1]) << (dbits - wps->wphdr.bits); - } - else { - getbits (&value, dbits, &wps->wvbits); - - if (value & bitset [dbits - 1]) - return -(int32_t)(value & bitmask [dbits]); - else - return (value & bitmask [dbits - 1]) | bitset [dbits - 1]; - } -} - -static int FASTCALL wp3_log2 (uint32_t avalue); - -static int32_t FASTCALL get_word4 (WavpackStream3 *wps, int chan, int32_t *correction) -{ - uint32_t base, ones_count, avalue; - int32_t value, low, mid, high; - int bitcount; - - // count consecutive ones in bitstream, > 25 indicates error (or EOF) - - for (ones_count = 0; ones_count < 25 && getbit (&wps->wvbits); ++ones_count); - - if (ones_count == 25) - return WORD_EOF; - - // if the ones count is exactly 24, then we switch to non-unary method - - if (ones_count == 24) { - int32_t mask; - int cbits; - - for (cbits = 0; cbits < 33 && getbit (&wps->wvbits); ++cbits); - - if (cbits == 33) - return WORD_EOF; - - if (cbits < 2) - ones_count = cbits; - else { - for (mask = 1, ones_count = 0; --cbits; mask <<= 1) - if (getbit (&wps->wvbits)) - ones_count |= mask; - - ones_count |= mask; - } - - ones_count += 24; - } - - if (!chan) { - int slow_log_0, slow_log_1, balance; - - if (wps->wphdr.flags & MONO_FLAG) { - wps->w4.bits_acc [0] += wps->w4.bitrate + wp3_log2 (wps->w4.fast_level [0]) - wp3_log2 (wps->w4.slow_level [0]) + (3 << 8); - - if (wps->w4.bits_acc [0] < 0) - wps->w4.bits_acc [0] = 0; - } - else { - slow_log_0 = wp3_log2 (wps->w4.slow_level [0]); - slow_log_1 = wp3_log2 (wps->w4.slow_level [1]); - - if (wps->wphdr.flags & JOINT_STEREO) - balance = (slow_log_1 - slow_log_0 + 257) >> 1; - else - balance = (slow_log_1 - slow_log_0 + 1) >> 1; - - wps->w4.bits_acc [0] += wps->w4.bitrate - balance + wp3_log2 (wps->w4.fast_level [0]) - slow_log_0 + (3 << 8); - wps->w4.bits_acc [1] += wps->w4.bitrate + balance + wp3_log2 (wps->w4.fast_level [1]) - slow_log_1 + (3 << 8); - - if (wps->w4.bits_acc [0] + wps->w4.bits_acc [1] < 0) - wps->w4.bits_acc [0] = wps->w4.bits_acc [1] = 0; - else if (wps->w4.bits_acc [0] < 0) { - wps->w4.bits_acc [1] += wps->w4.bits_acc [0]; - wps->w4.bits_acc [0] = 0; - } - else if (wps->w4.bits_acc [1] < 0) { - wps->w4.bits_acc [0] += wps->w4.bits_acc [1]; - wps->w4.bits_acc [1] = 0; - } - } - } - - base = (wps->w4.fast_level [chan] + 48) / 96; - bitcount = wps->w4.bits_acc [chan] >> 8; - wps->w4.bits_acc [chan] &= 0xff; - - if (!base) { - if (ones_count) - high = low = mid = (getbit (&wps->wvbits)) ? -(int32_t)ones_count : ones_count; - else - high = low = mid = 0; - } - else { - mid = (ones_count * 2 + 1) * base; - if (getbit (&wps->wvbits)) mid = -mid; - low = mid - base; - high = mid + base - 1; - - while (bitcount--) { - if (getbit (&wps->wvbits)) - mid = (high + (low = mid) + 1) >> 1; - else - mid = ((high = mid - 1) + low + 1) >> 1; - - if (high == low) - break; - } - } - - wps->w4.fast_level [chan] -= ((wps->w4.fast_level [chan] + 0x10) >> 5); - wps->w4.fast_level [chan] += (avalue = labs (mid)); - wps->w4.slow_level [chan] -= ((wps->w4.slow_level [chan] + 0x80) >> 8); - wps->w4.slow_level [chan] += avalue; - - if (bs_is_open (&wps->wvcbits)) { - - if (high != low) { - uint32_t maxcode = high - low; - int bitcount = count_bits (maxcode); - uint32_t extras = (1L << bitcount) - maxcode - 1; - - getbits (&avalue, bitcount - 1, &wps->wvcbits); - avalue &= bitmask [bitcount - 1]; - - if (avalue >= extras) { - avalue = (avalue << 1) - extras; - - if (getbit (&wps->wvcbits)) - ++avalue; - } - - value = (mid < 0) ? high - avalue : avalue + low; - - if (correction) - *correction = value - mid; - } - else if (correction) - *correction = 0; - } - - return mid; -} - -// This function calculates an approximate base-2 logarithm (with 8 bits of -// fraction) from the supplied value. Using logarithms makes comparing -// signal level values and calculating fractional bitrates much easier. - -static int FASTCALL wp3_log2 (uint32_t avalue) -{ - int dbits; - - if ((avalue += avalue >> 9) < (1 << 8)) { - dbits = nbits_table [avalue]; - return (dbits << 8) + ((avalue << (9 - dbits)) & 0xff); - } - else { - if (avalue < (1L << 16)) - dbits = nbits_table [avalue >> 8] + 8; - else if (avalue < (1L << 24)) - dbits = nbits_table [avalue >> 16] + 16; - else - dbits = nbits_table [avalue >> 24] + 24; - - return (dbits << 8) + ((avalue >> (dbits - 9)) & 0xff); - } -} - -static void bs_read3 (Bitstream3 *bs) -{ - uint32_t bytes_read; - - bytes_read = bs->reader->read_bytes (bs->id, bs->buf, bs->bufsiz); - bs->end = bs->buf + bytes_read; - bs->fpos += bytes_read; - - if (bs->end == bs->buf) { - memset (bs->buf, -1, bs->bufsiz); - bs->end += bs->bufsiz; - } - - bs->ptr = bs->buf; -} - -// Open the specified BitStream and associate with the specified file. The -// "bufsiz" field of the structure must be preset with the desired buffer -// size and the file's read pointer must be set to where the desired bit -// data is located. A return value of TRUE indicates an error in -// allocating buffer space. - -static int bs_open_read3 (Bitstream3 *bs, WavpackStreamReader64 *reader, void *id) -{ - bs->fpos = (bs->reader = reader)->get_pos (bs->id = id); - - if (!bs->buf) - bs->buf = (unsigned char *) malloc (bs->bufsiz); - - bs->end = bs->buf + bs->bufsiz; - bs->ptr = bs->end - 1; - bs->sr = bs->bc = 0; - bs->error = bs->buf ? 0 : 1; - bs->wrap = bs_read3; - return bs->error; -} - -static uint32_t bs_unused_bytes (Bitstream3 *bs) -{ - if (bs->bc < 8) { - bs->bc += 8; - bs->ptr++; - } - - return (uint32_t)(bs->end - bs->ptr); -} - -static unsigned char *bs_unused_data (Bitstream3 *bs) -{ - if (bs->bc < 8) { - bs->bc += 8; - bs->ptr++; - } - - return bs->ptr; -} - -#endif // ENABLE_LEGACY - diff --git a/Frameworks/WavPack/Files/unpack3.h b/Frameworks/WavPack/Files/unpack3.h deleted file mode 100644 index ae351f839..000000000 --- a/Frameworks/WavPack/Files/unpack3.h +++ /dev/null @@ -1,119 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2006 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// wavpack3.h - -// This header file contains all the additional definitions required for -// decoding old (versions 1, 2 & 3) WavPack files. - -typedef struct { - uint16_t FormatTag, NumChannels; - uint32_t SampleRate, BytesPerSecond; - uint16_t BlockAlign, BitsPerSample; -} WaveHeader3; - -#define WaveHeader3Format "SSLLSS" - -typedef struct { - char ckID [4]; - int32_t ckSize; - int16_t version; - int16_t bits; // added for version 2.00 - int16_t flags, shift; // added for version 3.00 - int32_t total_samples, crc, crc2; - char extension [4], extra_bc, extras [3]; -} WavpackHeader3; - -#define WavpackHeader3Format "4LSSSSLLL4L" - -// these flags added for version 3 - -#undef MONO_FLAG // these definitions changed for WavPack 4.0 -#undef CROSS_DECORR -#undef JOINT_STEREO - -#define MONO_FLAG 1 // not stereo -#define FAST_FLAG 2 // non-adaptive predictor and stereo mode -#define RAW_FLAG 4 // raw mode (no .wav header) -#define CALC_NOISE 8 // calc noise in lossy mode (no longer stored) -#define HIGH_FLAG 0x10 // high quality mode (all modes) -#define BYTES_3 0x20 // files have 3-byte samples -#define OVER_20 0x40 // samples are over 20 bits -#define WVC_FLAG 0x80 // create/use .wvc (no longer stored) -#define LOSSY_SHAPE 0x100 // noise shape (lossy mode only) -#define VERY_FAST_FLAG 0x200 // double fast (no longer stored) -#define NEW_HIGH_FLAG 0x400 // new high quality mode (lossless only) -#define CANCEL_EXTREME 0x800 // cancel EXTREME_DECORR -#define CROSS_DECORR 0x1000 // decorrelate chans (with EXTREME_DECORR flag) -#define NEW_DECORR_FLAG 0x2000 // new high-mode decorrelator -#define JOINT_STEREO 0x4000 // joint stereo (lossy and high lossless) -#define EXTREME_DECORR 0x8000 // extra decorrelation (+ enables other flags) - -#define STORED_FLAGS 0xfd77 // these are only flags that affect unpacking -#define NOT_STORED_FLAGS (~STORED_FLAGS & 0xffff) - -// BitStream stuff (bits.c) - -typedef struct bs3 { - void (*wrap)(struct bs3 *bs); - unsigned char *buf, *end, *ptr; - uint32_t bufsiz, sr; - int64_t fpos; - WavpackStreamReader64 *reader; - int error, bc; - void *id; -} Bitstream3; - -#define K_DEPTH 3 -#define MAX_NTERMS3 18 - -typedef struct { - WavpackHeader3 wphdr; - Bitstream3 wvbits, wvcbits; - uint32_t sample_index; - int num_terms; - -#ifndef NO_SEEKING - struct index_point { - char saved; - uint32_t sample_index; - } index_points [256]; - - unsigned char *unpack_data; - uint32_t unpack_size; -#endif - - struct { - int32_t sum_level, left_level, right_level, diff_level; - int last_extra_bits, extra_bits_count, m; - int32_t error [2], crc; - int32_t sample [2] [2]; - int weight [2] [1]; - } dc; - - struct decorr_pass decorr_passes [MAX_NTERMS3]; - - struct { - unsigned int index [2], k_value [2], ave_k [2]; - uint32_t zeros_acc, ave_level [K_DEPTH] [2]; - } w1; - - struct { int last_dbits [2], last_delta_sign [2], bit_limit; } w2; - - struct { int ave_dbits [2], bit_limit; } w3; - - struct { - uint32_t fast_level [2], slow_level [2]; - int bits_acc [2], bitrate; - } w4; -} WavpackStream3; - -#define SAVE(destin, item) { memcpy (destin, &item, sizeof (item)); destin = (char *) destin + sizeof (item); } -#define RESTORE(item, source) { memcpy (&item, source, sizeof (item)); source = (char *) source + sizeof (item); } - -void unpack_init3 (WavpackStream3 *wps); diff --git a/Frameworks/WavPack/Files/unpack3_open.c b/Frameworks/WavPack/Files/unpack3_open.c deleted file mode 100644 index 044f32ffc..000000000 --- a/Frameworks/WavPack/Files/unpack3_open.c +++ /dev/null @@ -1,289 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// unpack3_open.c - -// This module provides an extension to the open_utils.c module for handling -// WavPack files prior to version 4.0, not including "raw" files. As these -// modes are all obsolete and are no longer written, this code will not be -// fully documented other than the global functions. However, full documentation -// is provided in the version 3.97 source code. Note that this module only -// provides the functionality of opening the files and obtaining information -// from them; the actual audio decoding is located in the unpack3.c module. - -#ifdef ENABLE_LEGACY - -#include -#include - -#include "wavpack_local.h" -#include "unpack3.h" - -#define ATTEMPT_ERROR_MUTING - -// This provides an extension to the WavpackOpenFileRead () function contained -// in the wputils.c module. It is assumed that an 'R' had been read as the -// first character of the file/stream (indicating a non-raw pre version 4.0 -// WavPack file) and had been pushed back onto the stream (or simply seeked -// back to). - -WavpackContext *open_file3 (WavpackContext *wpc, char *error) -{ - RiffChunkHeader RiffChunkHeader; - ChunkHeader ChunkHeader; - WavpackHeader3 wphdr; - WavpackStream3 *wps; - WaveHeader3 wavhdr; - - CLEAR (wavhdr); - wpc->stream3 = wps = (WavpackStream3 *) malloc (sizeof (WavpackStream3)); - CLEAR (*wps); - - if (wpc->reader->read_bytes (wpc->wv_in, &RiffChunkHeader, sizeof (RiffChunkHeader)) != - sizeof (RiffChunkHeader)) { - if (error) strcpy (error, "not a valid WavPack file!"); - return WavpackCloseFile (wpc); - } - - if (!strncmp (RiffChunkHeader.ckID, "RIFF", 4) && !strncmp (RiffChunkHeader.formType, "WAVE", 4)) { - - if (wpc->open_flags & OPEN_WRAPPER) { - wpc->wrapper_data = (unsigned char *)malloc (wpc->wrapper_bytes = sizeof (RiffChunkHeader)); - memcpy (wpc->wrapper_data, &RiffChunkHeader, sizeof (RiffChunkHeader)); - } - - // If the first chunk is a wave RIFF header, then read the various chunks - // until we get to the "data" chunk (and WavPack header should follow). If - // the first chunk is not a RIFF, then we assume a "raw" WavPack file and - // the WavPack header must be first. - - while (1) { - - if (wpc->reader->read_bytes (wpc->wv_in, &ChunkHeader, sizeof (ChunkHeader)) != - sizeof (ChunkHeader)) { - if (error) strcpy (error, "not a valid WavPack file!"); - return WavpackCloseFile (wpc); - } - else { - if (wpc->open_flags & OPEN_WRAPPER) { - wpc->wrapper_data = (unsigned char *)realloc (wpc->wrapper_data, wpc->wrapper_bytes + sizeof (ChunkHeader)); - memcpy (wpc->wrapper_data + wpc->wrapper_bytes, &ChunkHeader, sizeof (ChunkHeader)); - wpc->wrapper_bytes += sizeof (ChunkHeader); - } - - WavpackLittleEndianToNative (&ChunkHeader, ChunkHeaderFormat); - - if (!strncmp (ChunkHeader.ckID, "fmt ", 4)) { - - if (ChunkHeader.ckSize < sizeof (wavhdr) || - wpc->reader->read_bytes (wpc->wv_in, &wavhdr, sizeof (wavhdr)) != sizeof (wavhdr)) { - if (error) strcpy (error, "not a valid WavPack file!"); - return WavpackCloseFile (wpc); - } - else if (wpc->open_flags & OPEN_WRAPPER) { - wpc->wrapper_data = (unsigned char *)realloc (wpc->wrapper_data, wpc->wrapper_bytes + sizeof (wavhdr)); - memcpy (wpc->wrapper_data + wpc->wrapper_bytes, &wavhdr, sizeof (wavhdr)); - wpc->wrapper_bytes += sizeof (wavhdr); - } - - WavpackLittleEndianToNative (&wavhdr, WaveHeader3Format); - - if (ChunkHeader.ckSize > sizeof (wavhdr)) { - uint32_t bytes_to_skip = (ChunkHeader.ckSize + 1 - sizeof (wavhdr)) & ~1L; - - if (bytes_to_skip > 1024 * 1024) { - if (error) strcpy (error, "not a valid WavPack file!"); - return WavpackCloseFile (wpc); - } - - if (wpc->open_flags & OPEN_WRAPPER) { - wpc->wrapper_data = (unsigned char *)realloc (wpc->wrapper_data, wpc->wrapper_bytes + bytes_to_skip); - wpc->reader->read_bytes (wpc->wv_in, wpc->wrapper_data + wpc->wrapper_bytes, bytes_to_skip); - wpc->wrapper_bytes += bytes_to_skip; - } - else { - unsigned char *temp = (unsigned char *)malloc (bytes_to_skip); - wpc->reader->read_bytes (wpc->wv_in, temp, bytes_to_skip); - free (temp); - } - } - } - else if (!strncmp (ChunkHeader.ckID, "data", 4)) - break; - else if ((ChunkHeader.ckSize + 1) & ~1L) { - uint32_t bytes_to_skip = (ChunkHeader.ckSize + 1) & ~1L; - - if (bytes_to_skip > 1024 * 1024) { - if (error) strcpy (error, "not a valid WavPack file!"); - return WavpackCloseFile (wpc); - } - - if (wpc->open_flags & OPEN_WRAPPER) { - wpc->wrapper_data = (unsigned char *)realloc (wpc->wrapper_data, wpc->wrapper_bytes + bytes_to_skip); - wpc->reader->read_bytes (wpc->wv_in, wpc->wrapper_data + wpc->wrapper_bytes, bytes_to_skip); - wpc->wrapper_bytes += bytes_to_skip; - } - else { - unsigned char *temp = (unsigned char *)malloc (bytes_to_skip); - wpc->reader->read_bytes (wpc->wv_in, temp, bytes_to_skip); - free (temp); - } - } - } - } - } - else { - if (error) strcpy (error, "not a valid WavPack file!"); - return WavpackCloseFile (wpc); - } - - if (wavhdr.FormatTag != 1 || !wavhdr.NumChannels || wavhdr.NumChannels > 2 || - !wavhdr.SampleRate || wavhdr.BitsPerSample < 16 || wavhdr.BitsPerSample > 24 || - wavhdr.BlockAlign / wavhdr.NumChannels > 3 || wavhdr.BlockAlign % wavhdr.NumChannels || - wavhdr.BlockAlign / wavhdr.NumChannels < (wavhdr.BitsPerSample + 7) / 8) { - if (error) strcpy (error, "not a valid WavPack file!"); - return WavpackCloseFile (wpc); - } - - wpc->total_samples = ChunkHeader.ckSize / wavhdr.NumChannels / - ((wavhdr.BitsPerSample > 16) ? 3 : 2); - - if (wpc->reader->read_bytes (wpc->wv_in, &wphdr, 10) != 10) { - if (error) strcpy (error, "not a valid WavPack file!"); - return WavpackCloseFile (wpc); - } - - if (((char *) &wphdr) [8] == 2 && (wpc->reader->read_bytes (wpc->wv_in, ((char *) &wphdr) + 10, 2) != 2)) { - if (error) strcpy (error, "not a valid WavPack file!"); - return WavpackCloseFile (wpc); - } - else if (((char *) &wphdr) [8] == 3 && (wpc->reader->read_bytes (wpc->wv_in, ((char *) &wphdr) + 10, - sizeof (wphdr) - 10) != sizeof (wphdr) - 10)) { - if (error) strcpy (error, "not a valid WavPack file!"); - return WavpackCloseFile (wpc); - } - - WavpackLittleEndianToNative (&wphdr, WavpackHeader3Format); - - // make sure this is a version we know about - - if (strncmp (wphdr.ckID, "wvpk", 4) || wphdr.version < 1 || wphdr.version > 3) { - if (error) strcpy (error, "not a valid WavPack file!"); - return WavpackCloseFile (wpc); - } - - // Because I ran out of flag bits in the WavPack header, an amazingly ugly - // kludge was forced upon me! This code takes care of preparing the flags - // field for internal use and checking for unknown formats we can't decode - - if (wphdr.version == 3) { - - if (wphdr.flags & EXTREME_DECORR) { - - if ((wphdr.flags & NOT_STORED_FLAGS) || - ((wphdr.bits) && - (((wphdr.flags & NEW_HIGH_FLAG) && - (wphdr.flags & (FAST_FLAG | HIGH_FLAG))) || - (wphdr.flags & CROSS_DECORR)))) { - if (error) strcpy (error, "not a valid WavPack file!"); - return WavpackCloseFile (wpc); - } - - if (wphdr.flags & CANCEL_EXTREME) - wphdr.flags &= ~(EXTREME_DECORR | CANCEL_EXTREME); - } - else - wphdr.flags &= ~CROSS_DECORR; - } - - // check to see if we should look for a "correction" file, and if so try - // to open it for reading, then set WVC_FLAG accordingly - - if (wpc->wvc_in && wphdr.version == 3 && wphdr.bits && (wphdr.flags & NEW_HIGH_FLAG)) { - wpc->file2len = wpc->reader->get_length (wpc->wvc_in); - wphdr.flags |= WVC_FLAG; - wpc->wvc_flag = TRUE; - } - else - wphdr.flags &= ~WVC_FLAG; - - // check WavPack version to handle special requirements of versions - // before 3.0 that had smaller headers - - if (wphdr.version < 3) { - wphdr.total_samples = (int32_t) wpc->total_samples; - wphdr.flags = wavhdr.NumChannels == 1 ? MONO_FLAG : 0; - wphdr.shift = 16 - wavhdr.BitsPerSample; - - if (wphdr.version == 1) - wphdr.bits = 0; - } - - wpc->config.sample_rate = wavhdr.SampleRate; - wpc->config.num_channels = wavhdr.NumChannels; - wpc->config.channel_mask = 5 - wavhdr.NumChannels; - - if (wphdr.flags & MONO_FLAG) - wpc->config.flags |= CONFIG_MONO_FLAG; - - if (wphdr.flags & EXTREME_DECORR) - wpc->config.flags |= CONFIG_HIGH_FLAG; - - if (wphdr.bits) { - if (wphdr.flags & NEW_HIGH_FLAG) - wpc->config.flags |= CONFIG_HYBRID_FLAG; - else - wpc->config.flags |= CONFIG_LOSSY_MODE; - } - else if (!(wphdr.flags & HIGH_FLAG)) - wpc->config.flags |= CONFIG_FAST_FLAG; - - wpc->config.bytes_per_sample = (wphdr.flags & BYTES_3) ? 3 : 2; - wpc->config.bits_per_sample = wavhdr.BitsPerSample; - - memcpy (&wps->wphdr, &wphdr, sizeof (wphdr)); - wps->wvbits.bufsiz = wps->wvcbits.bufsiz = 1024 * 1024; - return wpc; -} - -// return currently decoded sample index - -uint32_t get_sample_index3 (WavpackContext *wpc) -{ - WavpackStream3 *wps = (WavpackStream3 *) wpc->stream3; - - return (wps) ? wps->sample_index : (uint32_t) -1; -} - -int get_version3 (WavpackContext *wpc) -{ - WavpackStream3 *wps = (WavpackStream3 *) wpc->stream3; - - return (wps) ? wps->wphdr.version : 0; -} - -void free_stream3 (WavpackContext *wpc) -{ - WavpackStream3 *wps = (WavpackStream3 *) wpc->stream3; - - if (wps) { -#ifndef NO_SEEKING - if (wps->unpack_data) - free (wps->unpack_data); -#endif - if ((wps->wphdr.flags & WVC_FLAG) && wps->wvcbits.buf) - free (wps->wvcbits.buf); - - if (wps->wvbits.buf) - free (wps->wvbits.buf); - - free (wps); - } -} - -#endif // ENABLE_LEGACY diff --git a/Frameworks/WavPack/Files/unpack3_seek.c b/Frameworks/WavPack/Files/unpack3_seek.c deleted file mode 100644 index f1ed27fd7..000000000 --- a/Frameworks/WavPack/Files/unpack3_seek.c +++ /dev/null @@ -1,212 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// unpack3_seek.c - -// This module provides seeking support for WavPack files prior to version 4.0. - -#ifdef ENABLE_LEGACY -#ifndef NO_SEEKING - -#include -#include - -#include "wavpack_local.h" -#include "unpack3.h" - -static void *unpack_restore (WavpackStream3 *wps, void *source, int keep_resources); -static void bs_restore3 (Bitstream3 *bs); - -// This is an extension for WavpackSeekSample (). Note that because WavPack -// files created prior to version 4.0 are not inherently seekable, this -// function could take a long time if a forward seek is requested to an -// area that has not been played (or seeked through) yet. - -int seek_sample3 (WavpackContext *wpc, uint32_t desired_index) -{ - int points_index = desired_index / (((uint32_t) wpc->total_samples >> 8) + 1); - WavpackStream3 *wps = (WavpackStream3 *) wpc->stream3; - - if (desired_index >= wpc->total_samples) - return FALSE; - - while (points_index) - if (wps->index_points [points_index].saved && - wps->index_points [points_index].sample_index <= desired_index) - break; - else - points_index--; - - if (wps->index_points [points_index].saved) - if (wps->index_points [points_index].sample_index > wps->sample_index || - wps->sample_index > desired_index) { - wps->sample_index = wps->index_points [points_index].sample_index; - unpack_restore (wps, wps->unpack_data + points_index * wps->unpack_size, TRUE); - } - - if (desired_index > wps->sample_index) { - int32_t *buffer = (int32_t *) malloc (1024 * (wps->wphdr.flags & MONO_FLAG ? 4 : 8)); - uint32_t samples_to_skip = desired_index - wps->sample_index; - - while (1) { - if (samples_to_skip > 1024) { - if (unpack_samples3 (wpc, buffer, 1024) == 1024) - samples_to_skip -= 1024; - else - break; - } - else { - samples_to_skip -= unpack_samples3 (wpc, buffer, samples_to_skip); - break; - } - } - - free (buffer); - - if (samples_to_skip) - return FALSE; - } - - return TRUE; -} - -// This function restores the unpacking context from the specified pointer -// and returns the updated pointer. After this call, unpack_samples() will -// continue where it left off immediately before unpack_save() was called. -// If the WavPack files and bitstreams might have been closed and reopened, -// then the "keep_resources" flag should be set to avoid using the "old" -// resources that were originally saved (and are probably now invalid). - -static void *unpack_restore (WavpackStream3 *wps, void *source, int keep_resources) -{ - int flags = wps->wphdr.flags, tcount; - struct decorr_pass *dpp; - FILE *temp_file; - unsigned char *temp_buf; - - unpack_init3 (wps); - temp_file = wps->wvbits.id; - temp_buf = wps->wvbits.buf; - RESTORE (wps->wvbits, source); - - if (keep_resources) { - wps->wvbits.id = temp_file; - wps->wvbits.ptr += temp_buf - wps->wvbits.buf; - wps->wvbits.end += temp_buf - wps->wvbits.buf; - wps->wvbits.buf = temp_buf; - } - - bs_restore3 (&wps->wvbits); - - if (flags & WVC_FLAG) { - temp_file = wps->wvcbits.id; - temp_buf = wps->wvcbits.buf; - RESTORE (wps->wvcbits, source); - - if (keep_resources) { - wps->wvcbits.id = temp_file; - wps->wvcbits.ptr += temp_buf - wps->wvcbits.buf; - wps->wvcbits.end += temp_buf - wps->wvcbits.buf; - wps->wvcbits.buf = temp_buf; - } - - bs_restore3 (&wps->wvcbits); - } - - if (wps->wphdr.version == 3) { - if (wps->wphdr.bits) { - RESTORE (wps->w4, source); - } - else { - RESTORE (wps->w1, source); - } - - RESTORE (wps->w3, source); - RESTORE (wps->dc.crc, source); - } - else - RESTORE (wps->w2, source); - - if (wps->wphdr.bits) { - RESTORE (wps->dc.error, source); - } - else { - RESTORE (wps->dc.sum_level, source); - RESTORE (wps->dc.left_level, source); - RESTORE (wps->dc.right_level, source); - RESTORE (wps->dc.diff_level, source); - } - - if (flags & OVER_20) { - RESTORE (wps->dc.last_extra_bits, source); - RESTORE (wps->dc.extra_bits_count, source); - } - - if (!(flags & EXTREME_DECORR)) { - RESTORE (wps->dc.sample, source); - RESTORE (wps->dc.weight, source); - } - - if (flags & (HIGH_FLAG | NEW_HIGH_FLAG)) - for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) { - if (dpp->term > 0) { - int count = dpp->term; - int index = wps->dc.m; - - RESTORE (dpp->weight_A, source); - - while (count--) { - RESTORE (dpp->samples_A [index], source); - index = (index + 1) & (MAX_TERM - 1); - } - - if (!(flags & MONO_FLAG)) { - count = dpp->term; - index = wps->dc.m; - - RESTORE (dpp->weight_B, source); - - while (count--) { - RESTORE (dpp->samples_B [index], source); - index = (index + 1) & (MAX_TERM - 1); - } - } - } - else { - RESTORE (dpp->weight_A, source); - RESTORE (dpp->weight_B, source); - RESTORE (dpp->samples_A [0], source); - RESTORE (dpp->samples_B [0], source); - } - } - - return source; -} - -// This function is called after a call to unpack_restore() has restored -// the BitStream structure to a previous state and causes any required data -// to be read from the file. This function is NOT supported for overlapped -// operation. - -static void bs_restore3 (Bitstream3 *bs) -{ - uint32_t bytes_to_read = (uint32_t)(bs->end - bs->ptr - 1), bytes_read; - - bs->reader->set_pos_abs (bs->id, bs->fpos - bytes_to_read); - - if (bytes_to_read > 0) { - - bytes_read = bs->reader->read_bytes (bs->id, bs->ptr + 1, bytes_to_read); - - if (bytes_to_read != bytes_read) - bs->end = bs->ptr + 1 + bytes_read; - } -} - -#endif // NO_SEEKING -#endif // ENABLE_LEGACY diff --git a/Frameworks/WavPack/Files/unpack_dsd.c b/Frameworks/WavPack/Files/unpack_dsd.c deleted file mode 100644 index d8d1ee283..000000000 --- a/Frameworks/WavPack/Files/unpack_dsd.c +++ /dev/null @@ -1,620 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** DSDPACK **** // -// Lossless DSD (Direct Stream Digital) Audio Compressor // -// Copyright (c) 2013 - 2016 David Bryant. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// unpack_dsd.c - -// This module actually handles the uncompression of the DSD audio data. - -#ifdef ENABLE_DSD - -#include -#include -#include - -#include "wavpack_local.h" - -///////////////////////////// executable code //////////////////////////////// - -// This function initializes the main range-encoded data for DSD audio samples - -static int init_dsd_block_fast (WavpackStream *wps, WavpackMetadata *wpmd); -static int init_dsd_block_high (WavpackStream *wps, WavpackMetadata *wpmd); -static int decode_fast (WavpackStream *wps, int32_t *output, int sample_count); -static int decode_high (WavpackStream *wps, int32_t *output, int sample_count); - -int init_dsd_block (WavpackContext *wpc, WavpackMetadata *wpmd) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - - if (wpmd->byte_length < 2) - return FALSE; - - wps->dsd.byteptr = (unsigned char *)wpmd->data; - wps->dsd.endptr = wps->dsd.byteptr + wpmd->byte_length; - wpc->dsd_multiplier = 1 << *wps->dsd.byteptr++; - wps->dsd.mode = *wps->dsd.byteptr++; - - if (!wps->dsd.mode) { - if (wps->dsd.endptr - wps->dsd.byteptr != wps->wphdr.block_samples * (wps->wphdr.flags & MONO_DATA ? 1 : 2)) { - return FALSE; - } - - wps->dsd.ready = 1; - return TRUE; - } - - if (wps->dsd.mode == 1) - return init_dsd_block_fast (wps, wpmd); - else if (wps->dsd.mode == 3) - return init_dsd_block_high (wps, wpmd); - else - return FALSE; -} - -int32_t unpack_dsd_samples (WavpackContext *wpc, int32_t *buffer, uint32_t sample_count) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - uint32_t flags = wps->wphdr.flags; - - // don't attempt to decode past the end of the block, but watch out for overflow! - - if (wps->sample_index + sample_count > GET_BLOCK_INDEX (wps->wphdr) + wps->wphdr.block_samples && - (uint32_t) (GET_BLOCK_INDEX (wps->wphdr) + wps->wphdr.block_samples - wps->sample_index) < sample_count) - sample_count = (uint32_t) (GET_BLOCK_INDEX (wps->wphdr) + wps->wphdr.block_samples - wps->sample_index); - - if (GET_BLOCK_INDEX (wps->wphdr) > wps->sample_index || wps->wphdr.block_samples < sample_count) - wps->mute_error = TRUE; - - if (!wps->mute_error) { - if (!wps->dsd.mode) { - int total_samples = sample_count * ((flags & MONO_DATA) ? 1 : 2); - int32_t *bptr = buffer; - - if (wps->dsd.endptr - wps->dsd.byteptr < total_samples) - total_samples = (int)(wps->dsd.endptr - wps->dsd.byteptr); - - while (total_samples--) - wps->crc += (wps->crc << 1) + (*bptr++ = *wps->dsd.byteptr++); - } - else if (wps->dsd.mode == 1) { - if (!decode_fast (wps, buffer, sample_count)) - wps->mute_error = TRUE; - } - else if (!decode_high (wps, buffer, sample_count)) - wps->mute_error = TRUE; - } - - if (wps->mute_error) { - int samples_to_null; - if (wpc->reduced_channels == 1 || wpc->config.num_channels == 1 || (flags & MONO_FLAG)) - samples_to_null = sample_count; - else - samples_to_null = sample_count * 2; - - while (samples_to_null--) - *buffer++ = 0x55; - - wps->sample_index += sample_count; - return sample_count; - } - - if (flags & FALSE_STEREO) { - int32_t *dptr = buffer + sample_count * 2; - int32_t *sptr = buffer + sample_count; - int32_t c = sample_count; - - while (c--) { - *--dptr = *--sptr; - *--dptr = *sptr; - } - } - - wps->sample_index += sample_count; - - return sample_count; -} - -/*------------------------------------------------------------------------------------------------------------------------*/ - -// #define DSD_BYTE_READY(low,high) (((low) >> 24) == ((high) >> 24)) -// #define DSD_BYTE_READY(low,high) (!(((low) ^ (high)) >> 24)) -#define DSD_BYTE_READY(low,high) (!(((low) ^ (high)) & 0xff000000)) - -static int init_dsd_block_fast (WavpackStream *wps, WavpackMetadata *wpmd) -{ - unsigned char history_bits, max_probability, *lb_ptr; - int total_summed_probabilities = 0, bi, i; - - if (wps->dsd.byteptr == wps->dsd.endptr) - return FALSE; - - history_bits = *wps->dsd.byteptr++; - - if (wps->dsd.byteptr == wps->dsd.endptr || history_bits > MAX_HISTORY_BITS) - return FALSE; - - wps->dsd.history_bins = 1 << history_bits; - - free_dsd_tables (wps); - lb_ptr = wps->dsd.lookup_buffer = (unsigned char *)malloc (wps->dsd.history_bins * MAX_BYTES_PER_BIN); - wps->dsd.value_lookup = (unsigned char **)malloc (sizeof (*wps->dsd.value_lookup) * wps->dsd.history_bins); - memset (wps->dsd.value_lookup, 0, sizeof (*wps->dsd.value_lookup) * wps->dsd.history_bins); - wps->dsd.summed_probabilities = (int16_t (*)[256])malloc (sizeof (*wps->dsd.summed_probabilities) * wps->dsd.history_bins); - wps->dsd.probabilities = (unsigned char (*)[256])malloc (sizeof (*wps->dsd.probabilities) * wps->dsd.history_bins); - - max_probability = *wps->dsd.byteptr++; - - if (max_probability < 0xff) { - unsigned char *outptr = (unsigned char *) wps->dsd.probabilities; - unsigned char *outend = outptr + sizeof (*wps->dsd.probabilities) * wps->dsd.history_bins; - - while (outptr < outend && wps->dsd.byteptr < wps->dsd.endptr) { - int code = *wps->dsd.byteptr++; - - if (code > max_probability) { - int zcount = code - max_probability; - - while (outptr < outend && zcount--) - *outptr++ = 0; - } - else if (code) - *outptr++ = code; - else - break; - } - - if (outptr < outend || (wps->dsd.byteptr < wps->dsd.endptr && *wps->dsd.byteptr++)) - return FALSE; - } - else if (wps->dsd.endptr - wps->dsd.byteptr > (int) sizeof (*wps->dsd.probabilities) * wps->dsd.history_bins) { - memcpy (wps->dsd.probabilities, wps->dsd.byteptr, sizeof (*wps->dsd.probabilities) * wps->dsd.history_bins); - wps->dsd.byteptr += sizeof (*wps->dsd.probabilities) * wps->dsd.history_bins; - } - else - return FALSE; - - for (bi = 0; bi < wps->dsd.history_bins; ++bi) { - int32_t sum_values; - - for (sum_values = i = 0; i < 256; ++i) - wps->dsd.summed_probabilities [bi] [i] = sum_values += wps->dsd.probabilities [bi] [i]; - - if (sum_values) { - if ((total_summed_probabilities += sum_values) > wps->dsd.history_bins * MAX_BYTES_PER_BIN) - return FALSE; - - wps->dsd.value_lookup [bi] = lb_ptr; - - for (i = 0; i < 256; i++) { - int c = wps->dsd.probabilities [bi] [i]; - - while (c--) - *lb_ptr++ = i; - } - } - } - - if (wps->dsd.endptr - wps->dsd.byteptr < 4 || total_summed_probabilities > wps->dsd.history_bins * MAX_BYTES_PER_BIN) - return FALSE; - - for (i = 4; i--;) - wps->dsd.value = (wps->dsd.value << 8) | *wps->dsd.byteptr++; - - wps->dsd.p0 = wps->dsd.p1 = 0; - wps->dsd.low = 0; wps->dsd.high = 0xffffffff; - wps->dsd.ready = 1; - - return TRUE; -} - -static int decode_fast (WavpackStream *wps, int32_t *output, int sample_count) -{ - int total_samples = sample_count; - - if (!(wps->wphdr.flags & MONO_DATA)) - total_samples *= 2; - - while (total_samples--) { - int mult, index, code, i; - - if (!wps->dsd.summed_probabilities [wps->dsd.p0] [255]) - return 0; - - mult = (wps->dsd.high - wps->dsd.low) / wps->dsd.summed_probabilities [wps->dsd.p0] [255]; - - if (!mult) { - if (wps->dsd.endptr - wps->dsd.byteptr >= 4) - for (i = 4; i--;) - wps->dsd.value = (wps->dsd.value << 8) | *wps->dsd.byteptr++; - - wps->dsd.low = 0; - wps->dsd.high = 0xffffffff; - mult = wps->dsd.high / wps->dsd.summed_probabilities [wps->dsd.p0] [255]; - - if (!mult) - return 0; - } - - index = (wps->dsd.value - wps->dsd.low) / mult; - - if (index >= wps->dsd.summed_probabilities [wps->dsd.p0] [255]) - return 0; - - if ((*output++ = code = wps->dsd.value_lookup [wps->dsd.p0] [index])) - wps->dsd.low += wps->dsd.summed_probabilities [wps->dsd.p0] [code-1] * mult; - - wps->dsd.high = wps->dsd.low + wps->dsd.probabilities [wps->dsd.p0] [code] * mult - 1; - wps->crc += (wps->crc << 1) + code; - - if (wps->wphdr.flags & MONO_DATA) - wps->dsd.p0 = code & (wps->dsd.history_bins-1); - else { - wps->dsd.p0 = wps->dsd.p1; - wps->dsd.p1 = code & (wps->dsd.history_bins-1); - } - - while (DSD_BYTE_READY (wps->dsd.high, wps->dsd.low) && wps->dsd.byteptr < wps->dsd.endptr) { - wps->dsd.value = (wps->dsd.value << 8) | *wps->dsd.byteptr++; - wps->dsd.high = (wps->dsd.high << 8) | 0xff; - wps->dsd.low <<= 8; - } - } - - return sample_count; -} - -/*------------------------------------------------------------------------------------------------------------------------*/ - -#define PTABLE_BITS 8 -#define PTABLE_BINS (1<> 8; c--;) - value += (DOWN - value) >> DECAY; - - for (i = 0; i < PTABLE_BINS/2; ++i) { - table [i] = value; - table [PTABLE_BINS-1-i] = 0x100ffff - value; - - if (value > 0x010000) { - rate += (rate * rate_s + 128) >> 8; - - for (c = (rate + 64) >> 7; c--;) - value += (DOWN - value) >> DECAY; - } - } -} - -static int init_dsd_block_high (WavpackStream *wps, WavpackMetadata *wpmd) -{ - uint32_t flags = wps->wphdr.flags; - int channel, rate_i, rate_s, i; - - if (wps->dsd.endptr - wps->dsd.byteptr < ((flags & MONO_DATA) ? 13 : 20)) - return FALSE; - - rate_i = *wps->dsd.byteptr++; - rate_s = *wps->dsd.byteptr++; - - if (rate_s != RATE_S) - return FALSE; - - if (!wps->dsd.ptable) - wps->dsd.ptable = (int32_t *)malloc (PTABLE_BINS * sizeof (*wps->dsd.ptable)); - - init_ptable (wps->dsd.ptable, rate_i, rate_s); - - for (channel = 0; channel < ((flags & MONO_DATA) ? 1 : 2); ++channel) { - DSDfilters *sp = wps->dsd.filters + channel; - - sp->filter1 = *wps->dsd.byteptr++ << (PRECISION - 8); - sp->filter2 = *wps->dsd.byteptr++ << (PRECISION - 8); - sp->filter3 = *wps->dsd.byteptr++ << (PRECISION - 8); - sp->filter4 = *wps->dsd.byteptr++ << (PRECISION - 8); - sp->filter5 = *wps->dsd.byteptr++ << (PRECISION - 8); - sp->filter6 = 0; - sp->factor = *wps->dsd.byteptr++ & 0xff; - sp->factor |= (*wps->dsd.byteptr++ << 8) & 0xff00; - sp->factor = (sp->factor << 16) >> 16; - } - - wps->dsd.high = 0xffffffff; - wps->dsd.low = 0x0; - - for (i = 4; i--;) - wps->dsd.value = (wps->dsd.value << 8) | *wps->dsd.byteptr++; - - wps->dsd.ready = 1; - - return TRUE; -} - -static int decode_high (WavpackStream *wps, int32_t *output, int sample_count) -{ - int total_samples = sample_count, stereo = (wps->wphdr.flags & MONO_DATA) ? 0 : 1; - DSDfilters *sp = wps->dsd.filters; - - while (total_samples--) { - int bitcount = 8; - - sp [0].value = sp [0].filter1 - sp [0].filter5 + ((sp [0].filter6 * sp [0].factor) >> 2); - - if (stereo) - sp [1].value = sp [1].filter1 - sp [1].filter5 + ((sp [1].filter6 * sp [1].factor) >> 2); - - while (bitcount--) { - int32_t *pp = wps->dsd.ptable + ((sp [0].value >> (PRECISION - PRECISION_USE)) & PTABLE_MASK); - uint32_t split = wps->dsd.low + ((wps->dsd.high - wps->dsd.low) >> 8) * (*pp >> 16); - - if (wps->dsd.value <= split) { - wps->dsd.high = split; - *pp += (UP - *pp) >> DECAY; - sp [0].filter0 = -1; - } - else { - wps->dsd.low = split + 1; - *pp += (DOWN - *pp) >> DECAY; - sp [0].filter0 = 0; - } - - while (DSD_BYTE_READY (wps->dsd.high, wps->dsd.low) && wps->dsd.byteptr < wps->dsd.endptr) { - wps->dsd.value = (wps->dsd.value << 8) | *wps->dsd.byteptr++; - wps->dsd.high = (wps->dsd.high << 8) | 0xff; - wps->dsd.low <<= 8; - } - - sp [0].value += sp [0].filter6 << 3; - sp [0].byte = (sp [0].byte << 1) | (sp [0].filter0 & 1); - sp [0].factor += (((sp [0].value ^ sp [0].filter0) >> 31) | 1) & ((sp [0].value ^ (sp [0].value - (sp [0].filter6 << 4))) >> 31); - sp [0].filter1 += ((sp [0].filter0 & VALUE_ONE) - sp [0].filter1) >> 6; - sp [0].filter2 += ((sp [0].filter0 & VALUE_ONE) - sp [0].filter2) >> 4; - sp [0].filter3 += (sp [0].filter2 - sp [0].filter3) >> 4; - sp [0].filter4 += (sp [0].filter3 - sp [0].filter4) >> 4; - sp [0].value = (sp [0].filter4 - sp [0].filter5) >> 4; - sp [0].filter5 += sp [0].value; - sp [0].filter6 += (sp [0].value - sp [0].filter6) >> 3; - sp [0].value = sp [0].filter1 - sp [0].filter5 + ((sp [0].filter6 * sp [0].factor) >> 2); - - if (!stereo) - continue; - - pp = wps->dsd.ptable + ((sp [1].value >> (PRECISION - PRECISION_USE)) & PTABLE_MASK); - split = wps->dsd.low + ((wps->dsd.high - wps->dsd.low) >> 8) * (*pp >> 16); - - if (wps->dsd.value <= split) { - wps->dsd.high = split; - *pp += (UP - *pp) >> DECAY; - sp [1].filter0 = -1; - } - else { - wps->dsd.low = split + 1; - *pp += (DOWN - *pp) >> DECAY; - sp [1].filter0 = 0; - } - - while (DSD_BYTE_READY (wps->dsd.high, wps->dsd.low) && wps->dsd.byteptr < wps->dsd.endptr) { - wps->dsd.value = (wps->dsd.value << 8) | *wps->dsd.byteptr++; - wps->dsd.high = (wps->dsd.high << 8) | 0xff; - wps->dsd.low <<= 8; - } - - sp [1].value += sp [1].filter6 << 3; - sp [1].byte = (sp [1].byte << 1) | (sp [1].filter0 & 1); - sp [1].factor += (((sp [1].value ^ sp [1].filter0) >> 31) | 1) & ((sp [1].value ^ (sp [1].value - (sp [1].filter6 << 4))) >> 31); - sp [1].filter1 += ((sp [1].filter0 & VALUE_ONE) - sp [1].filter1) >> 6; - sp [1].filter2 += ((sp [1].filter0 & VALUE_ONE) - sp [1].filter2) >> 4; - sp [1].filter3 += (sp [1].filter2 - sp [1].filter3) >> 4; - sp [1].filter4 += (sp [1].filter3 - sp [1].filter4) >> 4; - sp [1].value = (sp [1].filter4 - sp [1].filter5) >> 4; - sp [1].filter5 += sp [1].value; - sp [1].filter6 += (sp [1].value - sp [1].filter6) >> 3; - sp [1].value = sp [1].filter1 - sp [1].filter5 + ((sp [1].filter6 * sp [1].factor) >> 2); - } - - wps->crc += (wps->crc << 1) + (*output++ = sp [0].byte & 0xff); - sp [0].factor -= (sp [0].factor + 512) >> 10; - - if (stereo) { - wps->crc += (wps->crc << 1) + (*output++ = wps->dsd.filters [1].byte & 0xff); - wps->dsd.filters [1].factor -= (wps->dsd.filters [1].factor + 512) >> 10; - } - } - - return sample_count; -} - -/*------------------------------------------------------------------------------------------------------------------------*/ - -#if 0 - -// 80 term DSD decimation filter -// < 1 dB down at 20 kHz -// > 108 dB stopband attenuation (fs/16) - -static const int32_t decm_filter [] = { - 4, 17, 56, 147, 336, 693, 1320, 2359, - 4003, 6502, 10170, 15392, 22623, 32389, 45275, 61920, - 82994, 109174, 141119, 179431, 224621, 277068, 336983, 404373, - 479004, 560384, 647741, 740025, 835917, 933849, 1032042, 1128551, - 1221329, 1308290, 1387386, 1456680, 1514425, 1559128, 1589610, 1605059, - 1605059, 1589610, 1559128, 1514425, 1456680, 1387386, 1308290, 1221329, - 1128551, 1032042, 933849, 835917, 740025, 647741, 560384, 479004, - 404373, 336983, 277068, 224621, 179431, 141119, 109174, 82994, - 61920, 45275, 32389, 22623, 15392, 10170, 6502, 4003, - 2359, 1320, 693, 336, 147, 56, 17, 4, -}; - -#define NUM_FILTER_TERMS 80 - -#else - -// 56 term decimation filter -// < 0.5 dB down at 20 kHz -// > 100 dB stopband attenuation (fs/12) - -static const int32_t decm_filter [] = { - 4, 17, 56, 147, 336, 692, 1315, 2337, - 3926, 6281, 9631, 14216, 20275, 28021, 37619, 49155, - 62616, 77870, 94649, 112551, 131049, 149507, 167220, 183448, - 197472, 208636, 216402, 220385, 220385, 216402, 208636, 197472, - 183448, 167220, 149507, 131049, 112551, 94649, 77870, 62616, - 49155, 37619, 28021, 20275, 14216, 9631, 6281, 3926, - 2337, 1315, 692, 336, 147, 56, 17, 4, -}; - -#define NUM_FILTER_TERMS 56 - -#endif - -#define HISTORY_BYTES ((NUM_FILTER_TERMS+7)/8) - -typedef struct { - unsigned char delay [HISTORY_BYTES]; -} DecimationChannel; - -typedef struct { - int32_t conv_tables [HISTORY_BYTES] [256]; - DecimationChannel *chans; - int num_channels; -} DecimationContext; - -void *decimate_dsd_init (int num_channels) -{ - DecimationContext *context = (DecimationContext *)malloc (sizeof (DecimationContext)); - double filter_sum = 0, filter_scale; - int skipped_terms, i, j; - - if (!context) - return context; - - memset (context, 0, sizeof (*context)); - context->num_channels = num_channels; - context->chans = (DecimationChannel *)malloc (num_channels * sizeof (DecimationChannel)); - - if (!context->chans) { - free (context); - return NULL; - } - - for (i = 0; i < NUM_FILTER_TERMS; ++i) - filter_sum += decm_filter [i]; - - filter_scale = ((1 << 23) - 1) / filter_sum * 16.0; - // fprintf (stderr, "convolution, %d terms, %f sum, %f scale\n", NUM_FILTER_TERMS, filter_sum, filter_scale); - - for (skipped_terms = i = 0; i < NUM_FILTER_TERMS; ++i) { - int scaled_term = (int) floor (decm_filter [i] * filter_scale + 0.5); - - if (scaled_term) { - for (j = 0; j < 256; ++j) - if (j & (0x80 >> (i & 0x7))) - context->conv_tables [i >> 3] [j] += scaled_term; - else - context->conv_tables [i >> 3] [j] -= scaled_term; - } - else - skipped_terms++; - } - - // fprintf (stderr, "%d terms skipped\n", skipped_terms); - - decimate_dsd_reset (context); - - return context; -} - -void decimate_dsd_reset (void *decimate_context) -{ - DecimationContext *context = (DecimationContext *) decimate_context; - int chan = 0, i; - - if (!context) - return; - - for (chan = 0; chan < context->num_channels; ++chan) - for (i = 0; i < HISTORY_BYTES; ++i) - context->chans [chan].delay [i] = 0x55; -} - -void decimate_dsd_run (void *decimate_context, int32_t *samples, int num_samples) -{ - DecimationContext *context = (DecimationContext *) decimate_context; - int chan = 0; - - if (!context) - return; - - while (num_samples) { - DecimationChannel *sp = context->chans + chan; - int sum = 0; - -#if (HISTORY_BYTES == 10) - sum += context->conv_tables [0] [sp->delay [0] = sp->delay [1]]; - sum += context->conv_tables [1] [sp->delay [1] = sp->delay [2]]; - sum += context->conv_tables [2] [sp->delay [2] = sp->delay [3]]; - sum += context->conv_tables [3] [sp->delay [3] = sp->delay [4]]; - sum += context->conv_tables [4] [sp->delay [4] = sp->delay [5]]; - sum += context->conv_tables [5] [sp->delay [5] = sp->delay [6]]; - sum += context->conv_tables [6] [sp->delay [6] = sp->delay [7]]; - sum += context->conv_tables [7] [sp->delay [7] = sp->delay [8]]; - sum += context->conv_tables [8] [sp->delay [8] = sp->delay [9]]; - sum += context->conv_tables [9] [sp->delay [9] = *samples]; -#elif (HISTORY_BYTES == 7) - sum += context->conv_tables [0] [sp->delay [0] = sp->delay [1]]; - sum += context->conv_tables [1] [sp->delay [1] = sp->delay [2]]; - sum += context->conv_tables [2] [sp->delay [2] = sp->delay [3]]; - sum += context->conv_tables [3] [sp->delay [3] = sp->delay [4]]; - sum += context->conv_tables [4] [sp->delay [4] = sp->delay [5]]; - sum += context->conv_tables [5] [sp->delay [5] = sp->delay [6]]; - sum += context->conv_tables [6] [sp->delay [6] = *samples]; -#else - int i; - - for (i = 0; i < HISTORY_BYTES-1; ++i) - sum += context->conv_tables [i] [sp->delay [i] = sp->delay [i+1]]; - - sum += context->conv_tables [i] [sp->delay [i] = *samples]; -#endif - - *samples++ = sum >> 4; - - if (++chan == context->num_channels) { - num_samples--; - chan = 0; - } - } -} - -void decimate_dsd_destroy (void *decimate_context) -{ - DecimationContext *context = (DecimationContext *) decimate_context; - - if (!context) - return; - - if (context->chans) - free (context->chans); - - free (context); -} - -#endif // ENABLE_DSD diff --git a/Frameworks/WavPack/Files/unpack_floats.c b/Frameworks/WavPack/Files/unpack_floats.c deleted file mode 100644 index cc045ddc5..000000000 --- a/Frameworks/WavPack/Files/unpack_floats.c +++ /dev/null @@ -1,134 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// unpack_floats.c - -// This module deals with the restoration of floating-point data. Note that no -// floating point math is involved here...the values are only processed with -// the macros that directly access the mantissa, exponent, and sign fields. -// That's why we use the f32 type instead of the built-in float type. - -#include - -#include "wavpack_local.h" - -static void float_values_nowvx (WavpackStream *wps, int32_t *values, int32_t num_values); - -void float_values (WavpackStream *wps, int32_t *values, int32_t num_values) -{ - uint32_t crc = wps->crc_x; - - if (!bs_is_open (&wps->wvxbits)) { - float_values_nowvx (wps, values, num_values); - return; - } - - while (num_values--) { - int shift_count = 0, exp = wps->float_max_exp; - f32 outval = 0; - uint32_t temp; - - if (*values == 0) { - if (wps->float_flags & FLOAT_ZEROS_SENT) { - if (getbit (&wps->wvxbits)) { - getbits (&temp, 23, &wps->wvxbits); - set_mantissa (outval, temp); - - if (exp >= 25) { - getbits (&temp, 8, &wps->wvxbits); - set_exponent (outval, temp); - } - - set_sign (outval, getbit (&wps->wvxbits)); - } - else if (wps->float_flags & FLOAT_NEG_ZEROS) - set_sign (outval, getbit (&wps->wvxbits)); - } - } - else { - *values <<= wps->float_shift; - - if (*values < 0) { - *values = -*values; - set_sign (outval, 1); - } - - if (*values == 0x1000000) { - if (getbit (&wps->wvxbits)) { - getbits (&temp, 23, &wps->wvxbits); - set_mantissa (outval, temp); - } - - set_exponent (outval, 255); - } - else { - if (exp) - while (!(*values & 0x800000) && --exp) { - shift_count++; - *values <<= 1; - } - - if (shift_count) { - if ((wps->float_flags & FLOAT_SHIFT_ONES) || - ((wps->float_flags & FLOAT_SHIFT_SAME) && getbit (&wps->wvxbits))) - *values |= ((1 << shift_count) - 1); - else if (wps->float_flags & FLOAT_SHIFT_SENT) { - getbits (&temp, shift_count, &wps->wvxbits); - *values |= temp & ((1 << shift_count) - 1); - } - } - - set_mantissa (outval, *values); - set_exponent (outval, exp); - } - } - - crc = crc * 27 + get_mantissa (outval) * 9 + get_exponent (outval) * 3 + get_sign (outval); - * (f32 *) values++ = outval; - } - - wps->crc_x = crc; -} - -static void float_values_nowvx (WavpackStream *wps, int32_t *values, int32_t num_values) -{ - while (num_values--) { - int shift_count = 0, exp = wps->float_max_exp; - f32 outval = 0; - - if (*values) { - *values <<= wps->float_shift; - - if (*values < 0) { - *values = -*values; - set_sign (outval, 1); - } - - if (*values >= 0x1000000) { - while (*values & 0xf000000) { - *values >>= 1; - ++exp; - } - } - else if (exp) { - while (!(*values & 0x800000) && --exp) { - shift_count++; - *values <<= 1; - } - - if (shift_count && (wps->float_flags & FLOAT_SHIFT_ONES)) - *values |= ((1 << shift_count) - 1); - } - - set_mantissa (outval, *values); - set_exponent (outval, exp); - } - - * (f32 *) values++ = outval; - } -} diff --git a/Frameworks/WavPack/Files/unpack_seek.c b/Frameworks/WavPack/Files/unpack_seek.c deleted file mode 100644 index 20592e72a..000000000 --- a/Frameworks/WavPack/Files/unpack_seek.c +++ /dev/null @@ -1,387 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// unpack_seek.c - -// This module provides the high-level API for unpacking audio data from -// a specific sample index (i.e., seeking). - -#ifndef NO_SEEKING - -#include -#include - -#include "wavpack_local.h" - -///////////////////////////// executable code //////////////////////////////// - -static int64_t find_sample (WavpackContext *wpc, void *infile, int64_t header_pos, int64_t sample); - -// Seek to the specified sample index, returning TRUE on success. Note that -// files generated with version 4.0 or newer will seek almost immediately. -// Older files can take quite long if required to seek through unplayed -// portions of the file, but will create a seek map so that reverse seeks -// (or forward seeks to already scanned areas) will be very fast. After a -// FALSE return the file should not be accessed again (other than to close -// it); this is a fatal error. - -int WavpackSeekSample (WavpackContext *wpc, uint32_t sample) -{ - return WavpackSeekSample64 (wpc, sample); -} - -int WavpackSeekSample64 (WavpackContext *wpc, int64_t sample) -{ - WavpackStream *wps = wpc->streams ? wpc->streams [wpc->current_stream = 0] : NULL; - uint32_t bcount, samples_to_skip, samples_to_decode = 0; - int32_t *buffer; - - if (wpc->total_samples == -1 || sample >= wpc->total_samples || - !wpc->reader->can_seek (wpc->wv_in) || (wpc->open_flags & OPEN_STREAMING) || - (wpc->wvc_flag && !wpc->reader->can_seek (wpc->wvc_in))) - return FALSE; - -#ifdef ENABLE_LEGACY - if (wpc->stream3) - return seek_sample3 (wpc, (uint32_t) sample); -#endif - -#ifdef ENABLE_DSD - if (wpc->decimation_context) { // the decimation code needs some context to be sample accurate - if (sample < 16) { - samples_to_decode = (uint32_t) sample; - sample = 0; - } - else { - samples_to_decode = 16; - sample -= 16; - } - } -#endif - - if (!wps->wphdr.block_samples || !(wps->wphdr.flags & INITIAL_BLOCK) || sample < GET_BLOCK_INDEX (wps->wphdr) || - sample >= GET_BLOCK_INDEX (wps->wphdr) + wps->wphdr.block_samples) { - - free_streams (wpc); - wpc->filepos = find_sample (wpc, wpc->wv_in, wpc->filepos, sample); - - if (wpc->filepos == -1) - return FALSE; - - if (wpc->wvc_flag) { - wpc->file2pos = find_sample (wpc, wpc->wvc_in, 0, sample); - - if (wpc->file2pos == -1) - return FALSE; - } - } - - if (!wps->blockbuff) { - wpc->reader->set_pos_abs (wpc->wv_in, wpc->filepos); - wpc->reader->read_bytes (wpc->wv_in, &wps->wphdr, sizeof (WavpackHeader)); - WavpackLittleEndianToNative (&wps->wphdr, WavpackHeaderFormat); - - if ((wps->wphdr.ckSize & 1) || wps->wphdr.ckSize < 24 || wps->wphdr.ckSize >= 1024 * 1024) { - free_streams (wpc); - return FALSE; - } - - wps->blockbuff = (unsigned char *)malloc (wps->wphdr.ckSize + 8); - memcpy (wps->blockbuff, &wps->wphdr, sizeof (WavpackHeader)); - - if (wpc->reader->read_bytes (wpc->wv_in, wps->blockbuff + sizeof (WavpackHeader), wps->wphdr.ckSize - 24) != - wps->wphdr.ckSize - 24) { - free_streams (wpc); - return FALSE; - } - - // render corrupt blocks harmless - if (!WavpackVerifySingleBlock (wps->blockbuff, !(wpc->open_flags & OPEN_NO_CHECKSUM))) { - wps->wphdr.ckSize = sizeof (WavpackHeader) - 8; - wps->wphdr.block_samples = 0; - memcpy (wps->blockbuff, &wps->wphdr, 32); - } - - SET_BLOCK_INDEX (wps->wphdr, GET_BLOCK_INDEX (wps->wphdr) - wpc->initial_index); - memcpy (wps->blockbuff, &wps->wphdr, sizeof (WavpackHeader)); - wps->init_done = FALSE; - - if (wpc->wvc_flag) { - wpc->reader->set_pos_abs (wpc->wvc_in, wpc->file2pos); - wpc->reader->read_bytes (wpc->wvc_in, &wps->wphdr, sizeof (WavpackHeader)); - WavpackLittleEndianToNative (&wps->wphdr, WavpackHeaderFormat); - - if ((wps->wphdr.ckSize & 1) || wps->wphdr.ckSize < 24 || wps->wphdr.ckSize >= 1024 * 1024) { - free_streams (wpc); - return FALSE; - } - - wps->block2buff = (unsigned char *)malloc (wps->wphdr.ckSize + 8); - memcpy (wps->block2buff, &wps->wphdr, sizeof (WavpackHeader)); - - if (wpc->reader->read_bytes (wpc->wvc_in, wps->block2buff + sizeof (WavpackHeader), wps->wphdr.ckSize - 24) != - wps->wphdr.ckSize - 24) { - free_streams (wpc); - return FALSE; - } - - // render corrupt blocks harmless - if (!WavpackVerifySingleBlock (wps->block2buff, !(wpc->open_flags & OPEN_NO_CHECKSUM))) { - wps->wphdr.ckSize = sizeof (WavpackHeader) - 8; - wps->wphdr.block_samples = 0; - memcpy (wps->block2buff, &wps->wphdr, 32); - } - - SET_BLOCK_INDEX (wps->wphdr, GET_BLOCK_INDEX (wps->wphdr) - wpc->initial_index); - memcpy (wps->block2buff, &wps->wphdr, sizeof (WavpackHeader)); - } - - if (!wps->init_done && !unpack_init (wpc)) { - free_streams (wpc); - return FALSE; - } - - wps->init_done = TRUE; - } - - while (!wpc->reduced_channels && !(wps->wphdr.flags & FINAL_BLOCK)) { - if (++wpc->current_stream == wpc->num_streams) { - - if (wpc->num_streams == wpc->max_streams) { - free_streams (wpc); - return FALSE; - } - - wpc->streams = (WavpackStream **)realloc (wpc->streams, (wpc->num_streams + 1) * sizeof (wpc->streams [0])); - wps = wpc->streams [wpc->num_streams++] = (WavpackStream *)malloc (sizeof (WavpackStream)); - CLEAR (*wps); - bcount = read_next_header (wpc->reader, wpc->wv_in, &wps->wphdr); - - if (bcount == (uint32_t) -1) { - free_streams (wpc); - return FALSE; - } - - wps->blockbuff = (unsigned char *)malloc (wps->wphdr.ckSize + 8); - memcpy (wps->blockbuff, &wps->wphdr, 32); - - if (wpc->reader->read_bytes (wpc->wv_in, wps->blockbuff + 32, wps->wphdr.ckSize - 24) != - wps->wphdr.ckSize - 24) { - free_streams (wpc); - return FALSE; - } - - // render corrupt blocks harmless - if (!WavpackVerifySingleBlock (wps->blockbuff, !(wpc->open_flags & OPEN_NO_CHECKSUM))) { - wps->wphdr.ckSize = sizeof (WavpackHeader) - 8; - wps->wphdr.block_samples = 0; - memcpy (wps->blockbuff, &wps->wphdr, 32); - } - - wps->init_done = FALSE; - - if (wpc->wvc_flag && !read_wvc_block (wpc)) { - free_streams (wpc); - return FALSE; - } - - if (!wps->init_done && !unpack_init (wpc)) { - free_streams (wpc); - return FALSE; - } - - wps->init_done = TRUE; - } - else - wps = wpc->streams [wpc->current_stream]; - } - - if (sample < wps->sample_index) { - for (wpc->current_stream = 0; wpc->current_stream < wpc->num_streams; wpc->current_stream++) - if (!unpack_init (wpc)) - return FALSE; - else - wpc->streams [wpc->current_stream]->init_done = TRUE; - } - - samples_to_skip = (uint32_t) (sample - wps->sample_index); - - if (samples_to_skip > 131072) { - free_streams (wpc); - return FALSE; - } - - if (samples_to_skip) { - buffer = (int32_t *)malloc (samples_to_skip * 8); - - for (wpc->current_stream = 0; wpc->current_stream < wpc->num_streams; wpc->current_stream++) -#ifdef ENABLE_DSD - if (wpc->streams [wpc->current_stream]->wphdr.flags & DSD_FLAG) - unpack_dsd_samples (wpc, buffer, samples_to_skip); - else -#endif - unpack_samples (wpc, buffer, samples_to_skip); - - free (buffer); - } - - wpc->current_stream = 0; - -#ifdef ENABLE_DSD - if (wpc->decimation_context) - decimate_dsd_reset (wpc->decimation_context); - - if (samples_to_decode) { - buffer = (int32_t *)malloc (samples_to_decode * wpc->config.num_channels * 4); - - if (buffer) { - WavpackUnpackSamples (wpc, buffer, samples_to_decode); - free (buffer); - } - } -#endif - - return TRUE; -} - -// Find a valid WavPack header, searching either from the current file position -// (or from the specified position if not -1) and store it (endian corrected) -// at the specified pointer. The return value is the exact file position of the -// header, although we may have actually read past it. Because this function -// is used for seeking to a specific audio sample, it only considers blocks -// that contain audio samples for the initial stream to be valid. - -#define BUFSIZE 4096 - -static int64_t find_header (WavpackStreamReader64 *reader, void *id, int64_t filepos, WavpackHeader *wphdr) -{ - unsigned char *buffer = (unsigned char *)malloc (BUFSIZE), *sp = buffer, *ep = buffer; - - if (filepos != (uint32_t) -1 && reader->set_pos_abs (id, filepos)) { - free (buffer); - return -1; - } - - while (1) { - int bleft; - - if (sp < ep) { - bleft = (int)(ep - sp); - memmove (buffer, sp, bleft); - ep -= (sp - buffer); - sp = buffer; - } - else { - if (sp > ep) - if (reader->set_pos_rel (id, (int32_t)(sp - ep), SEEK_CUR)) { - free (buffer); - return -1; - } - - sp = ep = buffer; - bleft = 0; - } - - ep += reader->read_bytes (id, ep, BUFSIZE - bleft); - - if (ep - sp < 32) { - free (buffer); - return -1; - } - - while (sp + 32 <= ep) - if (*sp++ == 'w' && *sp == 'v' && *++sp == 'p' && *++sp == 'k' && - !(*++sp & 1) && sp [2] < 16 && !sp [3] && (sp [2] || sp [1] || *sp >= 24) && sp [5] == 4 && - sp [4] >= (MIN_STREAM_VERS & 0xff) && sp [4] <= (MAX_STREAM_VERS & 0xff) && sp [18] < 3 && !sp [19]) { - memcpy (wphdr, sp - 4, sizeof (*wphdr)); - WavpackLittleEndianToNative (wphdr, WavpackHeaderFormat); - - if (wphdr->block_samples && (wphdr->flags & INITIAL_BLOCK)) { - free (buffer); - return reader->get_pos (id) - (ep - sp + 4); - } - - if (wphdr->ckSize > 1024) - sp += wphdr->ckSize - 1024; - } - } -} - -// Find the WavPack block that contains the specified sample. If "header_pos" -// is zero, then no information is assumed except the total number of samples -// in the file and its size in bytes. If "header_pos" is non-zero then we -// assume that it is the file position of the valid header image contained in -// the first stream and we can limit our search to either the portion above -// or below that point. If a .wvc file is being used, then this must be called -// for that file also. - -static int64_t find_sample (WavpackContext *wpc, void *infile, int64_t header_pos, int64_t sample) -{ - WavpackStream *wps = wpc->streams [wpc->current_stream]; - int64_t file_pos1 = 0, file_pos2 = wpc->reader->get_length (infile); - int64_t sample_pos1 = 0, sample_pos2 = wpc->total_samples; - double ratio = 0.96; - int file_skip = 0; - - if (sample >= wpc->total_samples) - return -1; - - if (header_pos && wps->wphdr.block_samples) { - if (GET_BLOCK_INDEX (wps->wphdr) > sample) { - sample_pos2 = GET_BLOCK_INDEX (wps->wphdr); - file_pos2 = header_pos; - } - else if (GET_BLOCK_INDEX (wps->wphdr) + wps->wphdr.block_samples <= sample) { - sample_pos1 = GET_BLOCK_INDEX (wps->wphdr); - file_pos1 = header_pos; - } - else - return header_pos; - } - - while (1) { - double bytes_per_sample; - int64_t seek_pos; - - bytes_per_sample = (double) file_pos2 - file_pos1; - bytes_per_sample /= sample_pos2 - sample_pos1; - seek_pos = file_pos1 + (file_skip ? 32 : 0); - seek_pos += (int64_t)(bytes_per_sample * (sample - sample_pos1) * ratio); - seek_pos = find_header (wpc->reader, infile, seek_pos, &wps->wphdr); - - if (seek_pos != (int64_t) -1) - SET_BLOCK_INDEX (wps->wphdr, GET_BLOCK_INDEX (wps->wphdr) - wpc->initial_index); - - if (seek_pos == (int64_t) -1 || seek_pos >= file_pos2) { - if (ratio > 0.0) { - if ((ratio -= 0.24) < 0.0) - ratio = 0.0; - } - else - return -1; - } - else if (GET_BLOCK_INDEX (wps->wphdr) > sample) { - sample_pos2 = GET_BLOCK_INDEX (wps->wphdr); - file_pos2 = seek_pos; - } - else if (GET_BLOCK_INDEX (wps->wphdr) + wps->wphdr.block_samples <= sample) { - - if (seek_pos == file_pos1) - file_skip = 1; - else { - sample_pos1 = GET_BLOCK_INDEX (wps->wphdr); - file_pos1 = seek_pos; - } - } - else - return seek_pos; - } -} - -#endif - diff --git a/Frameworks/WavPack/Files/unpack_utils.c b/Frameworks/WavPack/Files/unpack_utils.c deleted file mode 100644 index ce7d7da9d..000000000 --- a/Frameworks/WavPack/Files/unpack_utils.c +++ /dev/null @@ -1,411 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// unpack_utils.c - -// This module provides the high-level API for unpacking audio data from -// WavPack files. It manages the buffers used to interleave the data passed -// back to the application from the individual streams. The actual audio -// stream decompression is handled in the unpack.c module. - -#include -#include - -#include "wavpack_local.h" - -///////////////////////////// executable code //////////////////////////////// - -// Unpack the specified number of samples from the current file position. -// Note that "samples" here refers to "complete" samples, which would be -// 2 longs for stereo files or even more for multichannel files, so the -// required memory at "buffer" is 4 * samples * num_channels bytes. The -// audio data is returned right-justified in 32-bit longs in the endian -// mode native to the executing processor. So, if the original data was -// 16-bit, then the values returned would be +/-32k. Floating point data -// can also be returned if the source was floating point data (and this -// can be optionally normalized to +/-1.0 by using the appropriate flag -// in the call to WavpackOpenFileInput ()). The actual number of samples -// unpacked is returned, which should be equal to the number requested unless -// the end of fle is encountered or an error occurs. After all samples have -// been unpacked then 0 will be returned. - -uint32_t WavpackUnpackSamples (WavpackContext *wpc, int32_t *buffer, uint32_t samples) -{ - WavpackStream *wps = wpc->streams ? wpc->streams [wpc->current_stream = 0] : NULL; - int num_channels = wpc->config.num_channels, file_done = FALSE; - uint32_t bcount, samples_unpacked = 0, samples_to_unpack; - int32_t *bptr = buffer; - -#ifdef ENABLE_LEGACY - if (wpc->stream3) - return unpack_samples3 (wpc, buffer, samples); -#endif - - while (samples) { - - // if the current block has no audio, or it's not the first block of a multichannel - // sequence, or the sample we're on is past the last sample in this block...we need - // to free up the streams and read the next block - - if (!wps->wphdr.block_samples || !(wps->wphdr.flags & INITIAL_BLOCK) || - wps->sample_index >= GET_BLOCK_INDEX (wps->wphdr) + wps->wphdr.block_samples) { - - int64_t nexthdrpos; - - if (wpc->wrapper_bytes >= MAX_WRAPPER_BYTES) - break; - - free_streams (wpc); - nexthdrpos = wpc->reader->get_pos (wpc->wv_in); - bcount = read_next_header (wpc->reader, wpc->wv_in, &wps->wphdr); - - if (bcount == (uint32_t) -1) - break; - - wpc->filepos = nexthdrpos + bcount; - - // allocate the memory for the entire raw block and read it in - - wps->blockbuff = (unsigned char *)malloc (wps->wphdr.ckSize + 8); - - if (!wps->blockbuff) - break; - - memcpy (wps->blockbuff, &wps->wphdr, 32); - - if (wpc->reader->read_bytes (wpc->wv_in, wps->blockbuff + 32, wps->wphdr.ckSize - 24) != - wps->wphdr.ckSize - 24) { - strcpy (wpc->error_message, "can't read all of last block!"); - wps->wphdr.block_samples = 0; - wps->wphdr.ckSize = 24; - break; - } - - // render corrupt blocks harmless - if (!WavpackVerifySingleBlock (wps->blockbuff, !(wpc->open_flags & OPEN_NO_CHECKSUM))) { - wps->wphdr.ckSize = sizeof (WavpackHeader) - 8; - wps->wphdr.block_samples = 0; - memcpy (wps->blockbuff, &wps->wphdr, 32); - } - - // potentially adjusting block_index must be done AFTER verifying block - - if (wpc->open_flags & OPEN_STREAMING) - SET_BLOCK_INDEX (wps->wphdr, wps->sample_index = 0); - else - SET_BLOCK_INDEX (wps->wphdr, GET_BLOCK_INDEX (wps->wphdr) - wpc->initial_index); - - memcpy (wps->blockbuff, &wps->wphdr, 32); - wps->init_done = FALSE; // we have not yet called unpack_init() for this block - - // if this block has audio, but not the sample index we were expecting, flag an error - - if (wps->wphdr.block_samples && wps->sample_index != GET_BLOCK_INDEX (wps->wphdr)) - wpc->crc_errors++; - - // if this block has audio, and we're in hybrid lossless mode, read the matching wvc block - - if (wps->wphdr.block_samples && wpc->wvc_flag) - read_wvc_block (wpc); - - // if the block does NOT have any audio, call unpack_init() to process non-audio stuff - - if (!wps->wphdr.block_samples) { - if (!wps->init_done && !unpack_init (wpc)) - wpc->crc_errors++; - - wps->init_done = TRUE; - } - } - - // if the current block has no audio, or it's not the first block of a multichannel - // sequence, or the sample we're on is past the last sample in this block...we need - // to loop back and read the next block - - if (!wps->wphdr.block_samples || !(wps->wphdr.flags & INITIAL_BLOCK) || - wps->sample_index >= GET_BLOCK_INDEX (wps->wphdr) + wps->wphdr.block_samples) - continue; - - // There seems to be some missing data, like a block was corrupted or something. - // If it's not too much data, just fill in with silence here and loop back. - - if (wps->sample_index < GET_BLOCK_INDEX (wps->wphdr)) { - int32_t zvalue = (wps->wphdr.flags & DSD_FLAG) ? 0x55 : 0; - - samples_to_unpack = (uint32_t) (GET_BLOCK_INDEX (wps->wphdr) - wps->sample_index); - - if (!samples_to_unpack || samples_to_unpack > 262144) { - strcpy (wpc->error_message, "discontinuity found, aborting file!"); - wps->wphdr.block_samples = 0; - wps->wphdr.ckSize = 24; - break; - } - - if (samples_to_unpack > samples) - samples_to_unpack = samples; - - wps->sample_index += samples_to_unpack; - samples_unpacked += samples_to_unpack; - samples -= samples_to_unpack; - - samples_to_unpack *= (wpc->reduced_channels ? wpc->reduced_channels : num_channels); - - while (samples_to_unpack--) - *bptr++ = zvalue; - - continue; - } - - // calculate number of samples to process from this block, then initialize the decoder for - // this block if we haven't already - - samples_to_unpack = (uint32_t) (GET_BLOCK_INDEX (wps->wphdr) + wps->wphdr.block_samples - wps->sample_index); - - if (samples_to_unpack > samples) - samples_to_unpack = samples; - - if (!wps->init_done && !unpack_init (wpc)) - wpc->crc_errors++; - - wps->init_done = TRUE; - - // if this block is not the final block of a multichannel sequence (and we're not truncating - // to stereo), then enter this conditional block...otherwise we just unpack the samples directly - - if (!wpc->reduced_channels && !(wps->wphdr.flags & FINAL_BLOCK)) { - int32_t *temp_buffer = (int32_t *)malloc (samples_to_unpack * 8), *src, *dst; - int offset = 0; // offset to next channel in sequence (0 to num_channels - 1) - uint32_t samcnt; - - // since we are getting samples from multiple bocks in a multichannel sequence, we must - // allocate a temporary buffer to unpack to so that we can re-interleave the samples - - if (!temp_buffer) - break; - - // loop through all the streams... - - while (1) { - - // if the stream has not been allocated and corresponding block read, do that here... - - if (wpc->current_stream == wpc->num_streams) { - wpc->streams = (WavpackStream **)realloc (wpc->streams, (wpc->num_streams + 1) * sizeof (wpc->streams [0])); - - if (!wpc->streams) - break; - - wps = wpc->streams [wpc->num_streams++] = (WavpackStream *)malloc (sizeof (WavpackStream)); - - if (!wps) - break; - - CLEAR (*wps); - bcount = read_next_header (wpc->reader, wpc->wv_in, &wps->wphdr); - - if (bcount == (uint32_t) -1) { - wpc->streams [0]->wphdr.block_samples = 0; - wpc->streams [0]->wphdr.ckSize = 24; - file_done = TRUE; - break; - } - - wps->blockbuff = (unsigned char *)malloc (wps->wphdr.ckSize + 8); - - if (!wps->blockbuff) - break; - - memcpy (wps->blockbuff, &wps->wphdr, 32); - - if (wpc->reader->read_bytes (wpc->wv_in, wps->blockbuff + 32, wps->wphdr.ckSize - 24) != - wps->wphdr.ckSize - 24) { - wpc->streams [0]->wphdr.block_samples = 0; - wpc->streams [0]->wphdr.ckSize = 24; - file_done = TRUE; - break; - } - - // render corrupt blocks harmless - if (!WavpackVerifySingleBlock (wps->blockbuff, !(wpc->open_flags & OPEN_NO_CHECKSUM))) { - wps->wphdr.ckSize = sizeof (WavpackHeader) - 8; - wps->wphdr.block_samples = 0; - memcpy (wps->blockbuff, &wps->wphdr, 32); - } - - // potentially adjusting block_index must be done AFTER verifying block - - if (wpc->open_flags & OPEN_STREAMING) - SET_BLOCK_INDEX (wps->wphdr, wps->sample_index = 0); - else - SET_BLOCK_INDEX (wps->wphdr, GET_BLOCK_INDEX (wps->wphdr) - wpc->initial_index); - - memcpy (wps->blockbuff, &wps->wphdr, 32); - - // if this block has audio, and we're in hybrid lossless mode, read the matching wvc block - - if (wpc->wvc_flag) - read_wvc_block (wpc); - - // initialize the unpacker for this block - - if (!unpack_init (wpc)) - wpc->crc_errors++; - - wps->init_done = TRUE; - } - else - wps = wpc->streams [wpc->current_stream]; - - // unpack the correct number of samples (either mono or stereo) into the temp buffer - -#ifdef ENABLE_DSD - if (wps->wphdr.flags & DSD_FLAG) - unpack_dsd_samples (wpc, src = temp_buffer, samples_to_unpack); - else -#endif - unpack_samples (wpc, src = temp_buffer, samples_to_unpack); - - samcnt = samples_to_unpack; - dst = bptr + offset; - - // if the block is mono, copy the samples from the single channel into the destination - // using num_channels as the stride - - if (wps->wphdr.flags & MONO_FLAG) { - while (samcnt--) { - dst [0] = *src++; - dst += num_channels; - } - - offset++; - } - - // if the block is stereo, and we don't have room for two more channels, just copy one - // and flag an error - - else if (offset == num_channels - 1) { - while (samcnt--) { - dst [0] = src [0]; - dst += num_channels; - src += 2; - } - - wpc->crc_errors++; - offset++; - } - - // otherwise copy the stereo samples into the destination - - else { - while (samcnt--) { - dst [0] = *src++; - dst [1] = *src++; - dst += num_channels; - } - - offset += 2; - } - - // check several clues that we're done with this set of blocks and exit if we are; else do next stream - - if ((wps->wphdr.flags & FINAL_BLOCK) || wpc->current_stream == wpc->max_streams - 1 || offset == num_channels) - break; - else - wpc->current_stream++; - } - - // if we didn't get all the channels we expected, mute the buffer and flag an error - - if (offset != num_channels) { - if (wps->wphdr.flags & DSD_FLAG) { - int samples_to_zero = samples_to_unpack * num_channels; - int32_t *zptr = bptr; - - while (samples_to_zero--) - *zptr++ = 0x55; - } - else - memset (bptr, 0, samples_to_unpack * num_channels * 4); - - wpc->crc_errors++; - } - - // go back to the first stream (we're going to leave them all loaded for now because they might have more samples) - // and free the temp buffer - - wps = wpc->streams [wpc->current_stream = 0]; - free (temp_buffer); - } - // catch the error situation where we have only one channel but run into a stereo block - // (this avoids overwriting the caller's buffer) - else if (!(wps->wphdr.flags & MONO_FLAG) && (num_channels == 1 || wpc->reduced_channels == 1)) { - memset (bptr, 0, samples_to_unpack * sizeof (*bptr)); - wps->sample_index += samples_to_unpack; - wpc->crc_errors++; - } -#ifdef ENABLE_DSD - else if (wps->wphdr.flags & DSD_FLAG) - unpack_dsd_samples (wpc, bptr, samples_to_unpack); -#endif - else - unpack_samples (wpc, bptr, samples_to_unpack); - - if (file_done) { - strcpy (wpc->error_message, "can't read all of last block!"); - break; - } - - if (wpc->reduced_channels) - bptr += samples_to_unpack * wpc->reduced_channels; - else - bptr += samples_to_unpack * num_channels; - - samples_unpacked += samples_to_unpack; - samples -= samples_to_unpack; - - // if we just finished a block, check for a calculated crc error - // (and back up the streams a little if possible in case we passed a header) - - if (wps->sample_index == GET_BLOCK_INDEX (wps->wphdr) + wps->wphdr.block_samples) { - if (check_crc_error (wpc)) { - int32_t *zptr = bptr, zvalue = (wps->wphdr.flags & DSD_FLAG) ? 0x55 : 0; - uint32_t samples_to_zero = wps->wphdr.block_samples; - - if (samples_to_zero > samples_to_unpack) - samples_to_zero = samples_to_unpack; - - samples_to_zero *= (wpc->reduced_channels ? wpc->reduced_channels : num_channels); - - while (samples_to_zero--) - *--zptr = zvalue; - - if (wps->blockbuff && wpc->reader->can_seek (wpc->wv_in)) { - int32_t rseek = ((WavpackHeader *) wps->blockbuff)->ckSize / 3; - wpc->reader->set_pos_rel (wpc->wv_in, (rseek > 16384) ? -16384 : -rseek, SEEK_CUR); - } - - if (wpc->wvc_flag && wps->block2buff && wpc->reader->can_seek (wpc->wvc_in)) { - int32_t rseek = ((WavpackHeader *) wps->block2buff)->ckSize / 3; - wpc->reader->set_pos_rel (wpc->wvc_in, (rseek > 16384) ? -16384 : -rseek, SEEK_CUR); - } - - wpc->crc_errors++; - } - } - - if (wpc->total_samples != -1 && wps->sample_index == wpc->total_samples) - break; - } - -#ifdef ENABLE_DSD - if (wpc->decimation_context) - decimate_dsd_run (wpc->decimation_context, buffer, samples_unpacked); -#endif - - return samples_unpacked; -} diff --git a/Frameworks/WavPack/Files/utils.c b/Frameworks/WavPack/Files/utils.c deleted file mode 100644 index d59bad0bc..000000000 --- a/Frameworks/WavPack/Files/utils.c +++ /dev/null @@ -1,770 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2006 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// utils.c - -// This module provides general purpose utilities for the WavPack command-line -// utilities and the self-extraction module. - -#if defined(_WIN32) -#define WIN32_LEAN_AND_MEAN -#include -#include -#include -#include -#elif defined(__GNUC__) || defined(__sun) -#include -#include -#endif - -#include -#include -#include -#include -#include - -#include "wavpack.h" -#include "utils.h" - -#ifdef _WIN32 -#include "win32_unicode_support.h" -#define fprintf fprintf_utf8 -#define fputs fputs_utf8 -#define remove(f) unlink_utf8(f) -#endif - -#ifdef _WIN32 - -int copy_timestamp (const char *src_filename, const char *dst_filename) -{ - wchar_t *src_filename_utf16 = utf8_to_utf16(src_filename); - wchar_t *dst_filename_utf16 = utf8_to_utf16(dst_filename); - FILETIME last_modified; - HANDLE src, dst; - int res = TRUE; - - if (*src_filename == '-' || *dst_filename == '-') - return res; - - if (!src_filename_utf16 || !dst_filename_utf16) - return FALSE; - - src = CreateFileW (src_filename_utf16, GENERIC_READ, FILE_SHARE_READ, NULL, - OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); - - dst = CreateFileW (dst_filename_utf16, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, - OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); - - if (src == INVALID_HANDLE_VALUE || dst == INVALID_HANDLE_VALUE || - !GetFileTime (src, NULL, NULL, &last_modified) || - !SetFileTime (dst, NULL, NULL, &last_modified)) - res = FALSE; - - if (src != INVALID_HANDLE_VALUE) - CloseHandle (src); - - if (dst != INVALID_HANDLE_VALUE) - CloseHandle (dst); - - free (src_filename_utf16); - free (dst_filename_utf16); - - return res; -} - -#else - -#include -#include - -int copy_timestamp(const char *src_filename, const char *dst_filename) -{ - struct stat fileinfo; - struct timeval times[2]; - - if (strcmp(src_filename, "-") == 0 || strcmp(dst_filename, "-") == 0) - return TRUE; - - if (stat(src_filename, &fileinfo)) - return FALSE; /* stat failed */ - - times[0].tv_sec = fileinfo.st_atime; - times[0].tv_usec = 0; - - times[1].tv_sec = fileinfo.st_mtime; - times[1].tv_usec = 0; - - if (utimes(dst_filename, times)) - return FALSE; /* utimes failed */ - - return TRUE; -} - -#endif - -////////////////////////////////////////////////////////////////////////////// -// This function parses a filename (with or without full path) and returns // -// a pointer to the extension (including the "."). If no extension is found // -// then NULL is returned. Extensions with more than 4 letters don't count. // -////////////////////////////////////////////////////////////////////////////// - -#if defined(_WIN32) - -char *filespec_ext (char *filespec) -{ - char *cp = filespec + strlen (filespec); - - while (--cp >= filespec) { - - if (*cp == '\\' || *cp == ':') - return NULL; - - if (*cp == '.') { - if (strlen (cp+1) && strlen (cp+1) <= 4) - return cp; - else - return NULL; - } - } - - return NULL; -} - -#else - -char *filespec_ext (char *filespec) -{ - char *cp = filespec + strlen (filespec); - - while (--cp >= filespec) { - - if (*cp == '/') - return NULL; - - if (*cp == '.') { - if (strlen (cp+1) && strlen (cp+1) <= 4) - return cp; - else - return NULL; - } - } - - return NULL; -} - -#endif - -////////////////////////////////////////////////////////////////////////////// -// This function determines if the specified filespec is a valid pathname. // -// If not, NULL is returned. If it is in the format of a pathname, then the // -// original pointer is returned. If the format is ambiguous, then a lookup // -// is performed to determine if it is in fact a valid path, and if so a "\" // -// is appended so that the pathname can be used and the original pointer is // -// returned. // -////////////////////////////////////////////////////////////////////////////// - -#if (defined(__GNUC__) || defined(__sun)) && !defined(_WIN32) - -char *filespec_path (char *filespec) -{ - char *cp = filespec + strlen (filespec); - glob_t globs; - struct stat fstats; - - if (cp == filespec || filespec_wild (filespec)) - return NULL; - - if (*--cp == '/') - return filespec; - - if (*cp == '.' && cp == filespec) - return strcat (filespec, "/"); - - if (glob (filespec, GLOB_MARK|GLOB_NOSORT, NULL, &globs) == 0 && - globs.gl_pathc > 0) - { - /* test if the file is a directory */ - if (stat(globs.gl_pathv[0], &fstats) == 0 && (fstats.st_mode & S_IFDIR)) { - filespec[0] = '\0'; - strcat (filespec, globs.gl_pathv[0]); - globfree(&globs); - return filespec; - } - } - globfree(&globs); - - return NULL; -} - -#else - -char *filespec_path (char *filespec) -{ - char *cp = filespec + strlen (filespec); - struct _wfinddata_t wfinddata; - wchar_t *filespec_utf16; - intptr_t file; - - if (cp == filespec || filespec_wild (filespec)) - return NULL; - - --cp; - - if (*cp == '\\' || *cp == ':') - return filespec; - - if (*cp == '.' && cp == filespec) - return strcat (filespec, "\\"); - - filespec_utf16 = utf8_to_utf16(filespec); - - if (!filespec_utf16) - return NULL; - - if ((file = _wfindfirst (filespec_utf16, &wfinddata)) != (intptr_t) -1 && - (wfinddata.attrib & _A_SUBDIR)) { - _findclose (file); - free (filespec_utf16); - return strcat (filespec, "\\"); - } - - if (file != -1L) - _findclose(file); - - free (filespec_utf16); - return NULL; -} - -#endif - -////////////////////////////////////////////////////////////////////////////// -// This function returns non-NULL if the specified filename spec has any // -// wildcard characters. // -////////////////////////////////////////////////////////////////////////////// - -char *filespec_wild (char *filespec) -{ - return strpbrk (filespec, "*?"); -} - -////////////////////////////////////////////////////////////////////////////// -// This function parses a filename (with or without full path) and returns // -// a pointer to the actual filename, or NULL if no filename can be found. // -////////////////////////////////////////////////////////////////////////////// - -#if defined(_WIN32) - -char *filespec_name (char *filespec) -{ - char *cp = filespec + strlen (filespec); - - while (--cp >= filespec) { - - if (*cp == '\\' || *cp == ':') - break; - } - - if (strlen (cp + 1)) - return cp + 1; - else - return NULL; -} - -#else - -char *filespec_name (char *filespec) -{ - char *cp = filespec + strlen (filespec); - - while (--cp >= filespec) - if (*cp == '/') - break; - - if (strlen (cp + 1)) - return cp + 1; - else - return NULL; -} - -#endif - -////////////////////////////////////////////////////////////////////////////// -// This function allows the user to type 'y', 'n', or 'a' (with Enter) in // -// response to a system query. The return value is the key typed as // -// lowercase (regardless of the typed case). // -////////////////////////////////////////////////////////////////////////////// - -static int waiting_input; - -char yna (void) -{ - char choice = 0; - int key; - - waiting_input = 1; - - while (1) { -#if defined(_WIN32) - key = _getch (); -#else - key = fgetc(stdin); -#endif - if (key == 3) { - fprintf (stderr, "^C\n"); - exit (1); - } - else if (key == EOF) { - fprintf (stderr, "\r\n"); - exit (1); - } - else if (key == '\r' || key == '\n') { - if (choice) { - fprintf (stderr, "\r\n"); - fflush (stderr); - break; - } - else { - fprintf (stderr, "%c", 7); - fflush (stderr); - } - } - else if (key == 'Y' || key == 'y') { -#ifdef _WIN32 - fprintf (stderr, "%c\b", key); - fflush (stderr); -#endif - choice = 'y'; - } - else if (key == 'N' || key == 'n') { -#ifdef _WIN32 - fprintf (stderr, "%c\b", key); - fflush (stderr); -#endif - choice = 'n'; - } - else if (key == 'A' || key == 'a') { -#ifdef _WIN32 - fprintf (stderr, "%c\b", key); - fflush (stderr); -#endif - choice = 'a'; - } - else { - fprintf (stderr, "%c", 7); - fflush (stderr); - } - } - - waiting_input = 0; - - return choice; -} - -////////////////////////////////////////////////////////////////////////////// -// Display the specified message on the console through stderr. Note that // -// the cursor may start anywhere in the line and all text already on the // -// line is erased. A terminating newline is not needed and function works // -// with printf strings and args. // -////////////////////////////////////////////////////////////////////////////// - -extern int debug_logging_mode; - -#ifdef _WIN32 - -int get_app_path (char *app_path) -{ - static char file_path [MAX_PATH], tried, result; - - HINSTANCE hinstLib; - FARPROC ProcAdd; - - if (tried) { - if (result) - strcpy (app_path, file_path); - - return result; - } - - tried = TRUE; - hinstLib = LoadLibrary ("shell32.dll"); - - if (hinstLib) { - ProcAdd = GetProcAddress (hinstLib, "SHGetFolderPathA"); - - if (ProcAdd && SUCCEEDED ((ProcAdd) (NULL, CSIDL_APPDATA | 0x8000, NULL, 0, file_path))) - result = TRUE; - - if (!result) { - ProcAdd = GetProcAddress (hinstLib, "SHGetSpecialFolderPathA"); - - if (ProcAdd && SUCCEEDED ((ProcAdd) (NULL, file_path, CSIDL_APPDATA, TRUE))) - result = TRUE; - } - - FreeLibrary (hinstLib); - } - - if (!result) { - hinstLib = LoadLibrary ("shfolder.dll"); - - if (hinstLib) { - ProcAdd = GetProcAddress (hinstLib, "SHGetFolderPathA"); - - if (ProcAdd && SUCCEEDED ((ProcAdd) (NULL, CSIDL_APPDATA | 0x8000, NULL, 0, file_path))) - result = TRUE; - - FreeLibrary (hinstLib); - } - } - - if (result) - strcpy (app_path, file_path); - - return result; -} - -void error_line (char *error, ...) -{ - char error_msg [512]; - va_list argptr; - - error_msg [0] = '\r'; - va_start (argptr, error); - vsprintf (error_msg + 1, error, argptr); - va_end (argptr); - fputs (error_msg, stderr); - finish_line (); - - if (debug_logging_mode) { - char file_path [MAX_PATH]; - FILE *error_log = NULL; - - if (get_app_path (file_path)) { - strcat (file_path, "\\WavPack\\wavpack.log"); - error_log = fopen (file_path, "a+"); - - if (!error_log) { - get_app_path (file_path); - strcat (file_path, "\\WavPack"); - - if (CreateDirectory (file_path, NULL)) { - strcat (file_path, "\\wavpack.log"); - error_log = fopen (file_path, "a+"); - } - } - } - - if (!error_log) - error_log = fopen ("c:\\wavpack.log", "a+"); - - if (error_log) { - fputs (error_msg + 1, error_log); - fputc ('\n', error_log); - fclose (error_log); - } - } -} - -#else - -void error_line (char *error, ...) -{ - char error_msg [512]; - va_list argptr; - - error_msg [0] = '\r'; - va_start (argptr, error); - vsprintf (error_msg + 1, error, argptr); - va_end (argptr); - fputs (error_msg, stderr); - finish_line (); -} - -#endif - -////////////////////////////////////////////////////////////////////////////// -// Function to intercept ^C or ^Break typed at the console. // -////////////////////////////////////////////////////////////////////////////// -#if defined(_WIN32) -static int break_flag; - -BOOL WINAPI ctrl_handler (DWORD ctrl) -{ - if (ctrl == CTRL_C_EVENT) { - break_flag = TRUE; - return TRUE; - } - - if (ctrl == CTRL_BREAK_EVENT) { - - if (waiting_input) { - return FALSE; - } - else { - break_flag = TRUE; - return TRUE; - } - } - - return FALSE; -} - -////////////////////////////////////////////////////////////////////////////// -// Function to initialize console for intercepting ^C and ^Break. // -////////////////////////////////////////////////////////////////////////////// - -void setup_break (void) -{ - HANDLE hConIn = GetStdHandle (STD_INPUT_HANDLE); - - SetConsoleMode (hConIn, ENABLE_PROCESSED_INPUT); - FlushConsoleInputBuffer (hConIn); - SetConsoleCtrlHandler (ctrl_handler, TRUE); - break_flag = 0; -} - -////////////////////////////////////////////////////////////////////////////// -// Function to determine whether ^C or ^Break has been issued by user. // -////////////////////////////////////////////////////////////////////////////// - -int check_break (void) -{ - return break_flag; -} - -////////////////////////////////////////////////////////////////////////////// -// Function to clear the stderr console to the end of the current line (and // -// go to the beginning next line). // -////////////////////////////////////////////////////////////////////////////// - -void finish_line (void) -{ - HANDLE hConIn = GetStdHandle (STD_ERROR_HANDLE); - CONSOLE_SCREEN_BUFFER_INFO coninfo; - - if (hConIn && GetConsoleScreenBufferInfo (hConIn, &coninfo) && - (coninfo.dwCursorPosition.X || coninfo.dwCursorPosition.Y)) { - unsigned char spaces = coninfo.dwSize.X - coninfo.dwCursorPosition.X; - - while (spaces--) - fputc (' ', stderr); - } - else - fprintf (stderr, " \n"); - - fflush (stderr); -} -#else -////////////////////////////////////////////////////////////////////////////// -// Function to clear the stderr console to the end of the current line (and // -// go to the beginning next line). // -////////////////////////////////////////////////////////////////////////////// - -void finish_line (void) -{ - fprintf (stderr, " \n"); - fflush (stderr); -} - -////////////////////////////////////////////////////////////////////////////// -// Function to initialize console for intercepting ^C and ^Break. // -////////////////////////////////////////////////////////////////////////////// - -#include - -static int break_flag; - -static void int_handler(int s) -{ - break_flag = 1; -} - -void setup_break (void) -{ - struct sigaction sigIntHandler; - - break_flag = 0; - sigIntHandler.sa_handler = int_handler; - sigemptyset (&sigIntHandler.sa_mask); - sigIntHandler.sa_flags = 0; - sigaction (SIGINT, &sigIntHandler, NULL); -} - -////////////////////////////////////////////////////////////////////////////// -// Function to determine whether ^C or ^Break has been issued by user. // -////////////////////////////////////////////////////////////////////////////// - -int check_break (void) -{ - return break_flag; -} - -#endif - -//////////////////////////// File I/O Wrapper //////////////////////////////// - -int DoReadFile (FILE *hFile, void *lpBuffer, uint32_t nNumberOfBytesToRead, uint32_t *lpNumberOfBytesRead) -{ - uint32_t bcount; - - *lpNumberOfBytesRead = 0; - - while (nNumberOfBytesToRead) { - bcount = (uint32_t) fread ((unsigned char *) lpBuffer + *lpNumberOfBytesRead, 1, nNumberOfBytesToRead, hFile); - - if (bcount) { - *lpNumberOfBytesRead += bcount; - nNumberOfBytesToRead -= bcount; - } - else - break; - } - - return !ferror (hFile); -} - -int DoWriteFile (FILE *hFile, void *lpBuffer, uint32_t nNumberOfBytesToWrite, uint32_t *lpNumberOfBytesWritten) -{ - uint32_t bcount; - - *lpNumberOfBytesWritten = 0; - - while (nNumberOfBytesToWrite) { - bcount = (uint32_t) fwrite ((unsigned char *) lpBuffer + *lpNumberOfBytesWritten, 1, nNumberOfBytesToWrite, hFile); - - if (bcount) { - *lpNumberOfBytesWritten += bcount; - nNumberOfBytesToWrite -= bcount; - } - else - break; - } - - return !ferror (hFile); -} - -#ifdef _WIN32 - -int64_t DoGetFileSize (FILE *hFile) -{ - LARGE_INTEGER Size; - HANDLE fHandle; - - if (hFile == NULL) - return 0; - - fHandle = (HANDLE)_get_osfhandle(_fileno(hFile)); - if (fHandle == INVALID_HANDLE_VALUE) - return 0; - - Size.u.LowPart = GetFileSize(fHandle, &Size.u.HighPart); - - if (Size.u.LowPart == INVALID_FILE_SIZE && GetLastError() != NO_ERROR) - return 0; - - return (int64_t)Size.QuadPart; -} - -int64_t DoGetFilePosition (FILE *hFile) -{ - return _ftelli64 (hFile); -} - -int DoSetFilePositionAbsolute (FILE *hFile, int64_t pos) -{ - return _fseeki64 (hFile, pos, SEEK_SET); -} - -int DoSetFilePositionRelative (FILE *hFile, int64_t pos, int mode) -{ - return _fseeki64 (hFile, pos, mode); -} - -#else - -int64_t DoGetFileSize (FILE *hFile) -{ - struct stat statbuf; - - if (!hFile || fstat (fileno (hFile), &statbuf) || !S_ISREG(statbuf.st_mode)) - return 0; - - return (int64_t) statbuf.st_size; -} - -int64_t DoGetFilePosition (FILE *hFile) -{ - return ftell (hFile); -} - -int DoSetFilePositionAbsolute (FILE *hFile, int64_t pos) -{ - return fseek (hFile, pos, SEEK_SET); -} - -int DoSetFilePositionRelative (FILE *hFile, int64_t pos, int mode) -{ - return fseek (hFile, pos, mode); -} - -#endif - -// if ungetc() is not available, a seek of -1 is fine also because we do not -// change the byte read. - -int DoUngetc (int c, FILE *hFile) -{ - return ungetc (c, hFile); -} - -int DoCloseHandle (FILE *hFile) -{ - return hFile ? !fclose (hFile) : 0; -} - -int DoTruncateFile (FILE *hFile) -{ - if (hFile) { - fflush (hFile); -#if defined(_WIN32) - return !_chsize (_fileno (hFile), 0); -#else - return !ftruncate(fileno (hFile), 0); -#endif - } - - return 0; -} - -int DoDeleteFile (char *filename) -{ - return filename ? !remove (filename) : 0; -} - -///////////////////////////////////////////////////////////////////////////////// -// Function to set the name of the console window. This is very handy for // -// displaying progress of batch operations with the console window minimized. // -///////////////////////////////////////////////////////////////////////////////// - -#ifdef _WIN32 - -void DoSetConsoleTitle (char *text) -{ - SetConsoleTitle (text); -} - -#else - -void DoSetConsoleTitle (char *text) -{ - fprintf (stderr, "\033]0;%s\007", text); - fflush (stderr); -} - -#endif - diff --git a/Frameworks/WavPack/Files/utils.h b/Frameworks/WavPack/Files/utils.h deleted file mode 100644 index 4d2dc7ce2..000000000 --- a/Frameworks/WavPack/Files/utils.h +++ /dev/null @@ -1,61 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2006 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// utils.h - -#ifndef UTILS_H -#define UTILS_H - -#ifndef PATH_MAX -#ifdef MAX_PATH -#define PATH_MAX MAX_PATH -#elif defined (MAXPATHLEN) -#define PATH_MAX MAXPATHLEN -#else -#define PATH_MAX 1024 -#endif -#endif - -#if defined(_WIN32) -#undef VERSION_OS -#ifdef _WIN64 -#define VERSION_OS "Win64" -#else -#define VERSION_OS "Win32" -#endif -#define PACKAGE_VERSION "5.2.0" -#endif - -#define FALSE 0 -#define TRUE 1 - -#define CLEAR(destin) memset (&destin, 0, sizeof (destin)); - -int copy_timestamp (const char *src_filename, const char *dst_filename); -char *filespec_ext (char *filespec), *filespec_path (char *filespec); -char *filespec_name (char *filespec), *filespec_wild (char *filespec); -void error_line (char *error, ...); -void setup_break (void), finish_line (void); -int check_break (void); -char yna (void); - -int DoReadFile (FILE *hFile, void *lpBuffer, uint32_t nNumberOfBytesToRead, uint32_t *lpNumberOfBytesRead); -int DoWriteFile (FILE *hFile, void *lpBuffer, uint32_t nNumberOfBytesToWrite, uint32_t *lpNumberOfBytesWritten); -int64_t DoGetFileSize (FILE *hFile); -int64_t DoGetFilePosition (FILE *hFile); -int DoSetFilePositionAbsolute (FILE *hFile, int64_t pos); -int DoSetFilePositionRelative (FILE *hFile, int64_t pos, int mode); -int DoUngetc (int c, FILE *hFile); -int DoCloseHandle (FILE *hFile); -int DoTruncateFile (FILE *hFile); -int DoDeleteFile (char *filename); -void DoSetConsoleTitle (char *text); - -#define FN_FIT(fn) ((strlen (fn) > 30) ? filespec_name (fn) : fn) - -#endif diff --git a/Frameworks/WavPack/Files/wavpack_local.h b/Frameworks/WavPack/Files/wavpack_local.h deleted file mode 100644 index 67c55cd31..000000000 --- a/Frameworks/WavPack/Files/wavpack_local.h +++ /dev/null @@ -1,707 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2019 David Bryant. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// wavpack_local.h - -#ifndef WAVPACK_LOCAL_H -#define WAVPACK_LOCAL_H - -#include "wavpack.h" - -#if defined(_WIN32) -#define strdup(x) _strdup(x) -#define FASTCALL __fastcall -#else -#define FASTCALL -#endif - -#if defined(_WIN32) || \ - (defined(BYTE_ORDER) && defined(LITTLE_ENDIAN) && (BYTE_ORDER == LITTLE_ENDIAN)) || \ - (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)) -#define BITSTREAM_SHORTS // use 16-bit "shorts" for reading/writing bitstreams (instead of chars) - // (only works on little-endian machines) -#endif - -#include - -// This header file contains all the definitions required by WavPack. - -#if defined(_MSC_VER) && _MSC_VER < 1600 -#include -typedef unsigned __int64 uint64_t; -typedef unsigned __int32 uint32_t; -typedef unsigned __int16 uint16_t; -typedef unsigned __int8 uint8_t; -typedef __int64 int64_t; -typedef __int32 int32_t; -typedef __int16 int16_t; -typedef __int8 int8_t; -#else -#include -#endif - -// Because the C99 specification states that "The order of allocation of -// bit-fields within a unit (high-order to low-order or low-order to -// high-order) is implementation-defined" (6.7.2.1), I decided to change -// the representation of floating-point values from a structure of -// bit-fields to a 32-bit integer with access macros. Note that the WavPack -// library doesn't use any floating-point math to implement compression of -// floating-point data (although a little floating-point math is used in -// high-level functions unrelated to the codec). - -typedef int32_t f32; - -#define get_mantissa(f) ((f) & 0x7fffff) -#define get_magnitude(f) ((f) & 0x7fffffff) -#define get_exponent(f) (((f) >> 23) & 0xff) -#define get_sign(f) (((f) >> 31) & 0x1) - -#define set_mantissa(f,v) (f) ^= (((f) ^ (v)) & 0x7fffff) -#define set_exponent(f,v) (f) ^= (((f) ^ ((v) << 23)) & 0x7f800000) -#define set_sign(f,v) (f) ^= (((f) ^ ((v) << 31)) & 0x80000000) - -#include - -#define FALSE 0 -#define TRUE 1 - -// ID3v1 and APEv2 TAG formats (may occur at the end of WavPack files) - -typedef struct { - char tag_id [3], title [30], artist [30], album [30]; - char year [4], comment [30], genre; -} ID3_Tag; - -typedef struct { - char ID [8]; - int32_t version, length, item_count, flags; - char res [8]; -} APE_Tag_Hdr; - -#define APE_Tag_Hdr_Format "8LLLL" - -#define APE_TAG_TYPE_TEXT 0x0 -#define APE_TAG_TYPE_BINARY 0x1 -#define APE_TAG_THIS_IS_HEADER 0x20000000 -#define APE_TAG_CONTAINS_HEADER 0x80000000 -#define APE_TAG_MAX_LENGTH (1024 * 1024 * 16) - -typedef struct { - int64_t tag_file_pos; - int tag_begins_file; - ID3_Tag id3_tag; - APE_Tag_Hdr ape_tag_hdr; - unsigned char *ape_tag_data; -} M_Tag; - -// or-values for "flags" - -#define CUR_STREAM_VERS 0x407 // universally compatible stream version - - -//////////////////////////// WavPack Metadata ///////////////////////////////// - -// This is an internal representation of metadata. - -typedef struct { - int32_t byte_length; - void *data; - unsigned char id; -} WavpackMetadata; - -#define ID_UNIQUE 0x3f -#define ID_OPTIONAL_DATA 0x20 -#define ID_ODD_SIZE 0x40 -#define ID_LARGE 0x80 - -#define ID_DUMMY 0x0 -#define ID_ENCODER_INFO 0x1 -#define ID_DECORR_TERMS 0x2 -#define ID_DECORR_WEIGHTS 0x3 -#define ID_DECORR_SAMPLES 0x4 -#define ID_ENTROPY_VARS 0x5 -#define ID_HYBRID_PROFILE 0x6 -#define ID_SHAPING_WEIGHTS 0x7 -#define ID_FLOAT_INFO 0x8 -#define ID_INT32_INFO 0x9 -#define ID_WV_BITSTREAM 0xa -#define ID_WVC_BITSTREAM 0xb -#define ID_WVX_BITSTREAM 0xc -#define ID_CHANNEL_INFO 0xd -#define ID_DSD_BLOCK 0xe - -#define ID_RIFF_HEADER (ID_OPTIONAL_DATA | 0x1) -#define ID_RIFF_TRAILER (ID_OPTIONAL_DATA | 0x2) -#define ID_ALT_HEADER (ID_OPTIONAL_DATA | 0x3) -#define ID_ALT_TRAILER (ID_OPTIONAL_DATA | 0x4) -#define ID_CONFIG_BLOCK (ID_OPTIONAL_DATA | 0x5) -#define ID_MD5_CHECKSUM (ID_OPTIONAL_DATA | 0x6) -#define ID_SAMPLE_RATE (ID_OPTIONAL_DATA | 0x7) -#define ID_ALT_EXTENSION (ID_OPTIONAL_DATA | 0x8) -#define ID_ALT_MD5_CHECKSUM (ID_OPTIONAL_DATA | 0x9) -#define ID_NEW_CONFIG_BLOCK (ID_OPTIONAL_DATA | 0xa) -#define ID_CHANNEL_IDENTITIES (ID_OPTIONAL_DATA | 0xb) -#define ID_BLOCK_CHECKSUM (ID_OPTIONAL_DATA | 0xf) - -#define CONFIG_BYTES_STORED 3 // 1-4 bytes/sample -#define CONFIG_MONO_FLAG 4 // not stereo -#define CONFIG_FLOAT_DATA 0x80 // ieee 32-bit floating point data - -#define CONFIG_AUTO_SHAPING 0x4000 // automatic noise shaping -#define CONFIG_LOSSY_MODE 0x1000000 // obsolete (for information) - -/* - * These config flags were never actually used, or are no longer used, or are - * used for something else now. They may be used in the future for what they - * say, or for something else. WavPack files in the wild *may* have some of - * these bit set in their config flags (with these older meanings), but only - * if the stream version is 0x410 or less than 0x407. Of course, this is not - * very important because once the file has been encoded, the config bits are - * just for information purposes (i.e., they do not affect decoding), - * -#define CONFIG_ADOBE_MODE 0x100 // "adobe" mode for 32-bit floats -#define CONFIG_VERY_FAST_FLAG 0x400 // double fast -#define CONFIG_COPY_TIME 0x20000 // copy file-time from source -#define CONFIG_QUALITY_MODE 0x200000 // psychoacoustic quality mode -#define CONFIG_RAW_FLAG 0x400000 // raw mode (not implemented yet) -#define CONFIG_QUIET_MODE 0x10000000 // don't report progress % -#define CONFIG_IGNORE_LENGTH 0x20000000 // ignore length in wav header -#define CONFIG_NEW_RIFF_HEADER 0x40000000 // generate new RIFF wav header - * - */ - -#define EXTRA_SCAN_ONLY 1 -#define EXTRA_STEREO_MODES 2 -#define EXTRA_TRY_DELTAS 8 -#define EXTRA_ADJUST_DELTAS 16 -#define EXTRA_SORT_FIRST 32 -#define EXTRA_BRANCHES 0x1c0 -#define EXTRA_SKIP_8TO16 512 -#define EXTRA_TERMS 0x3c00 -#define EXTRA_DUMP_TERMS 16384 -#define EXTRA_SORT_LAST 32768 - -//////////////////////////////// WavPack Stream /////////////////////////////// - -// This internal structure contains everything required to handle a WavPack -// "stream", which is defined as a stereo or mono stream of audio samples. For -// multichannel audio several of these would be required. Each stream contains -// pointers to hold a complete allocated block of WavPack data, although it's -// possible to decode WavPack blocks without buffering an entire block. - -typedef struct bs { -#ifdef BITSTREAM_SHORTS - uint16_t *buf, *end, *ptr; -#else - unsigned char *buf, *end, *ptr; -#endif - void (*wrap)(struct bs *bs); - int error, bc; - uint32_t sr; -} Bitstream; - -#define MAX_WRAPPER_BYTES 16777216 -#define NEW_MAX_STREAMS 4096 -#define OLD_MAX_STREAMS 8 -#define MAX_NTERMS 16 -#define MAX_TERM 8 - -// DSD-specific definitions - -#define MAX_HISTORY_BITS 5 // maximum number of history bits in DSD "fast" mode - // note that 5 history bits requires 32 history bins -#define MAX_BYTES_PER_BIN 1280 // maximum bytes for the value lookup array (per bin) - // such that the total storage per bin = 2K (also - // counting probabilities and summed_probabilities) - -// Note that this structure is directly accessed in assembly files, so modify with care - -struct decorr_pass { - int32_t term, delta, weight_A, weight_B; - int32_t samples_A [MAX_TERM], samples_B [MAX_TERM]; - int32_t aweight_A, aweight_B; - int32_t sum_A, sum_B; -}; - -typedef struct { - signed char joint_stereo, delta, terms [MAX_NTERMS+1]; -} WavpackDecorrSpec; - -struct entropy_data { - uint32_t median [3], slow_level, error_limit; -}; - -struct words_data { - uint32_t bitrate_delta [2], bitrate_acc [2]; - uint32_t pend_data, holding_one, zeros_acc; - int holding_zero, pend_count; - struct entropy_data c [2]; -}; - -typedef struct { - int32_t value, filter0, filter1, filter2, filter3, filter4, filter5, filter6, factor, byte; -} DSDfilters; - -typedef struct { - WavpackHeader wphdr; - struct words_data w; - - unsigned char *blockbuff, *blockend; - unsigned char *block2buff, *block2end; - int32_t *sample_buffer; - - int64_t sample_index; - int bits, num_terms, mute_error, joint_stereo, false_stereo, shift; - int num_decorrs, num_passes, best_decorr, mask_decorr; - uint32_t crc, crc_x, crc_wvx; - Bitstream wvbits, wvcbits, wvxbits; - int init_done, wvc_skip; - float delta_decay; - - unsigned char int32_sent_bits, int32_zeros, int32_ones, int32_dups; - unsigned char float_flags, float_shift, float_max_exp, float_norm_exp; - - struct { - int32_t shaping_acc [2], shaping_delta [2], error [2]; - double noise_sum, noise_ave, noise_max; - int16_t *shaping_data, *shaping_array; - int32_t shaping_samples; - } dc; - - struct decorr_pass decorr_passes [MAX_NTERMS], analysis_pass; - const WavpackDecorrSpec *decorr_specs; - - struct { - unsigned char *byteptr, *endptr, (*probabilities) [256], *lookup_buffer, **value_lookup, mode, ready; - int history_bins, p0, p1; - int16_t (*summed_probabilities) [256]; - uint32_t low, high, value; - DSDfilters filters [2]; - int32_t *ptable; - } dsd; - -} WavpackStream; - -// flags for float_flags: - -#define FLOAT_SHIFT_ONES 1 // bits left-shifted into float = '1' -#define FLOAT_SHIFT_SAME 2 // bits left-shifted into float are the same -#define FLOAT_SHIFT_SENT 4 // bits shifted into float are sent literally -#define FLOAT_ZEROS_SENT 8 // "zeros" are not all real zeros -#define FLOAT_NEG_ZEROS 0x10 // contains negative zeros -#define FLOAT_EXCEPTIONS 0x20 // contains exceptions (inf, nan, etc.) - -/////////////////////////////// WavPack Context /////////////////////////////// - -// This internal structure holds everything required to encode or decode WavPack -// files. It is recommended that direct access to this structure be minimized -// and the provided utilities used instead. - -struct WavpackContext { - WavpackConfig config; - - WavpackMetadata *metadata; - uint32_t metabytes; - int metacount; - - unsigned char *wrapper_data; - uint32_t wrapper_bytes; - - WavpackBlockOutput blockout; - void *wv_out, *wvc_out; - - WavpackStreamReader64 *reader; - void *wv_in, *wvc_in; - - int64_t filelen, file2len, filepos, file2pos, total_samples, initial_index; - uint32_t crc_errors, first_flags; - int wvc_flag, open_flags, norm_offset, reduced_channels, lossy_blocks, version_five; - uint32_t block_samples, ave_block_samples, block_boundary, max_samples, acc_samples, riff_trailer_bytes; - int riff_header_added, riff_header_created; - M_Tag m_tag; - - int current_stream, num_streams, max_streams, stream_version; - WavpackStream **streams; - void *stream3; - - // these items were added in 5.0 to support alternate file types (especially CAF & DSD) - unsigned char file_format, *channel_reordering, *channel_identities; - uint32_t channel_layout, dsd_multiplier; - void *decimation_context; - char file_extension [8]; - - void (*close_callback)(void *wpc); - char error_message [80]; -}; - -//////////////////////// function prototypes and macros ////////////////////// - -#define CLEAR(destin) memset (&destin, 0, sizeof (destin)); - -//////////////////////////////// decorrelation ////////////////////////////// -// modules: pack.c, unpack.c, unpack_floats.c, extra1.c, extra2.c - -// #define SKIP_DECORRELATION // experimental switch to disable all decorrelation on encode - -// These macros implement the weight application and update operations -// that are at the heart of the decorrelation loops. Note that there are -// sometimes two and even three versions of each macro. Theses should be -// equivalent and produce identical results, but some may perform better -// or worse on a given architecture. - -#if 1 // PERFCOND - apply decorrelation weight when no 32-bit overflow possible -#define apply_weight_i(weight, sample) ((weight * sample + 512) >> 10) -#else -#define apply_weight_i(weight, sample) ((((weight * sample) >> 8) + 2) >> 2) -#endif - -#if 1 // PERFCOND - apply decorrelation weight when 32-bit overflow is possible -#define apply_weight_f(weight, sample) (((((sample & 0xffff) * weight) >> 9) + \ - (((sample & ~0xffff) >> 9) * weight) + 1) >> 1) -#elif 1 -#define apply_weight_f(weight, sample) ((int32_t)((weight * (int64_t) sample + 512) >> 10)) -#else -#define apply_weight_f(weight, sample) ((int32_t)floor(((double) weight * sample + 512.0) / 1024.0)) -#endif - -#if 1 // PERFCOND - universal version that checks input magnitude or always uses long version -#define apply_weight(weight, sample) (sample != (int16_t) sample ? \ - apply_weight_f (weight, sample) : apply_weight_i (weight, sample)) -#else -#define apply_weight(weight, sample) (apply_weight_f (weight, sample)) -#endif - -#if 1 // PERFCOND -#define update_weight(weight, delta, source, result) \ - if (source && result) { int32_t s = (int32_t) (source ^ result) >> 31; weight = (delta ^ s) + (weight - s); } -#elif 1 -#define update_weight(weight, delta, source, result) \ - if (source && result) weight += (((source ^ result) >> 30) | 1) * delta; -#else -#define update_weight(weight, delta, source, result) \ - if (source && result) (source ^ result) < 0 ? (weight -= delta) : (weight += delta); -#endif - -#define update_weight_clip(weight, delta, source, result) \ - if (source && result) { \ - const int32_t s = (source ^ result) >> 31; \ - if ((weight = (weight ^ s) + (delta - s)) > 1024) weight = 1024; \ - weight = (weight ^ s) - s; \ - } - -void pack_init (WavpackContext *wpc); -int pack_block (WavpackContext *wpc, int32_t *buffer); -void send_general_metadata (WavpackContext *wpc); -void free_metadata (WavpackMetadata *wpmd); -int copy_metadata (WavpackMetadata *wpmd, unsigned char *buffer_start, unsigned char *buffer_end); -double WavpackGetEncodedNoise (WavpackContext *wpc, double *peak); -int unpack_init (WavpackContext *wpc); -int read_decorr_terms (WavpackStream *wps, WavpackMetadata *wpmd); -int read_decorr_weights (WavpackStream *wps, WavpackMetadata *wpmd); -int read_decorr_samples (WavpackStream *wps, WavpackMetadata *wpmd); -int read_shaping_info (WavpackStream *wps, WavpackMetadata *wpmd); -int32_t unpack_samples (WavpackContext *wpc, int32_t *buffer, uint32_t sample_count); -int check_crc_error (WavpackContext *wpc); -int scan_float_data (WavpackStream *wps, f32 *values, int32_t num_values); -void send_float_data (WavpackStream *wps, f32 *values, int32_t num_values); -void float_values (WavpackStream *wps, int32_t *values, int32_t num_values); -void dynamic_noise_shaping (WavpackContext *wpc, int32_t *buffer, int shortening_allowed); -void execute_stereo (WavpackContext *wpc, int32_t *samples, int no_history, int do_samples); -void execute_mono (WavpackContext *wpc, int32_t *samples, int no_history, int do_samples); - -////////////////////////// DSD related (including decimation) ////////////////////////// -// modules: pack_dsd.c unpack_dsd.c - -void pack_dsd_init (WavpackContext *wpc); -int pack_dsd_block (WavpackContext *wpc, int32_t *buffer); -int init_dsd_block (WavpackContext *wpc, WavpackMetadata *wpmd); -int32_t unpack_dsd_samples (WavpackContext *wpc, int32_t *buffer, uint32_t sample_count); - -void *decimate_dsd_init (int num_channels); -void decimate_dsd_reset (void *decimate_context); -void decimate_dsd_run (void *decimate_context, int32_t *samples, int num_samples); -void decimate_dsd_destroy (void *decimate_context); - -///////////////////////////////// CPU feature detection //////////////////////////////// - -int unpack_cpu_has_feature_x86 (int findex), pack_cpu_has_feature_x86 (int findex); - -#define CPU_FEATURE_MMX 23 - -///////////////////////////// pre-4.0 version decoding //////////////////////////// -// modules: unpack3.c, unpack3_open.c, unpack3_seek.c - -WavpackContext *open_file3 (WavpackContext *wpc, char *error); -int32_t unpack_samples3 (WavpackContext *wpc, int32_t *buffer, uint32_t sample_count); -int seek_sample3 (WavpackContext *wpc, uint32_t desired_index); -uint32_t get_sample_index3 (WavpackContext *wpc); -void free_stream3 (WavpackContext *wpc); -int get_version3 (WavpackContext *wpc); - -////////////////////////////// bitstream macros & functions ///////////////////////////// - -#define bs_is_open(bs) ((bs)->ptr != NULL) -uint32_t bs_close_read (Bitstream *bs); - -#define getbit(bs) ( \ - (((bs)->bc) ? \ - ((bs)->bc--, (bs)->sr & 1) : \ - (((++((bs)->ptr) != (bs)->end) ? (void) 0 : (bs)->wrap (bs)), (bs)->bc = sizeof (*((bs)->ptr)) * 8 - 1, ((bs)->sr = *((bs)->ptr)) & 1) \ - ) ? \ - ((bs)->sr >>= 1, 1) : \ - ((bs)->sr >>= 1, 0) \ -) - -#define getbits(value, nbits, bs) do { \ - while ((nbits) > (bs)->bc) { \ - if (++((bs)->ptr) == (bs)->end) (bs)->wrap (bs); \ - (bs)->sr |= (int32_t)*((bs)->ptr) << (bs)->bc; \ - (bs)->bc += sizeof (*((bs)->ptr)) * 8; \ - } \ - *(value) = (bs)->sr; \ - if ((bs)->bc > 32) { \ - (bs)->bc -= (nbits); \ - (bs)->sr = *((bs)->ptr) >> (sizeof (*((bs)->ptr)) * 8 - (bs)->bc); \ - } \ - else { \ - (bs)->bc -= (nbits); \ - (bs)->sr >>= (nbits); \ - } \ -} while (0) - -#define putbit(bit, bs) do { if (bit) (bs)->sr |= (1 << (bs)->bc); \ - if (++((bs)->bc) == sizeof (*((bs)->ptr)) * 8) { \ - *((bs)->ptr) = (bs)->sr; \ - (bs)->sr = (bs)->bc = 0; \ - if (++((bs)->ptr) == (bs)->end) (bs)->wrap (bs); \ - }} while (0) - -#define putbit_0(bs) do { \ - if (++((bs)->bc) == sizeof (*((bs)->ptr)) * 8) { \ - *((bs)->ptr) = (bs)->sr; \ - (bs)->sr = (bs)->bc = 0; \ - if (++((bs)->ptr) == (bs)->end) (bs)->wrap (bs); \ - }} while (0) - -#define putbit_1(bs) do { (bs)->sr |= (1 << (bs)->bc); \ - if (++((bs)->bc) == sizeof (*((bs)->ptr)) * 8) { \ - *((bs)->ptr) = (bs)->sr; \ - (bs)->sr = (bs)->bc = 0; \ - if (++((bs)->ptr) == (bs)->end) (bs)->wrap (bs); \ - }} while (0) - -#define putbits(value, nbits, bs) do { \ - (bs)->sr |= (int32_t)(value) << (bs)->bc; \ - if (((bs)->bc += (nbits)) >= sizeof (*((bs)->ptr)) * 8) \ - do { \ - *((bs)->ptr) = (bs)->sr; \ - (bs)->sr >>= sizeof (*((bs)->ptr)) * 8; \ - if (((bs)->bc -= sizeof (*((bs)->ptr)) * 8) > 32 - sizeof (*((bs)->ptr)) * 8) \ - (bs)->sr |= ((value) >> ((nbits) - (bs)->bc)); \ - if (++((bs)->ptr) == (bs)->end) (bs)->wrap (bs); \ - } while ((bs)->bc >= sizeof (*((bs)->ptr)) * 8); \ -} while (0) - -///////////////////////////// entropy encoder / decoder //////////////////////////// -// modules: entropy_utils.c, read_words.c, write_words.c - -// these control the time constant "slow_level" which is used for hybrid mode -// that controls bitrate as a function of residual level (HYBRID_BITRATE). -#define SLS 8 -#define SLO ((1 << (SLS - 1))) - -#define LIMIT_ONES 16 // maximum consecutive 1s sent for "div" data - -// these control the time constant of the 3 median level breakpoints -#define DIV0 128 // 5/7 of samples -#define DIV1 64 // 10/49 of samples -#define DIV2 32 // 20/343 of samples - -// this macro retrieves the specified median breakpoint (without frac; min = 1) -#define GET_MED(med) (((c->median [med]) >> 4) + 1) - -// These macros update the specified median breakpoints. Note that the median -// is incremented when the sample is higher than the median, else decremented. -// They are designed so that the median will never drop below 1 and the value -// is essentially stationary if there are 2 increments for every 5 decrements. - -#define INC_MED0() (c->median [0] += ((c->median [0] + DIV0) / DIV0) * 5) -#define DEC_MED0() (c->median [0] -= ((c->median [0] + (DIV0-2)) / DIV0) * 2) -#define INC_MED1() (c->median [1] += ((c->median [1] + DIV1) / DIV1) * 5) -#define DEC_MED1() (c->median [1] -= ((c->median [1] + (DIV1-2)) / DIV1) * 2) -#define INC_MED2() (c->median [2] += ((c->median [2] + DIV2) / DIV2) * 5) -#define DEC_MED2() (c->median [2] -= ((c->median [2] + (DIV2-2)) / DIV2) * 2) - -#ifdef HAVE___BUILTIN_CLZ -#define count_bits(av) ((av) ? 32 - __builtin_clz (av) : 0) -#elif defined (_WIN64) -static __inline int count_bits (uint32_t av) { unsigned long res; return _BitScanReverse (&res, av) ? (int)(res + 1) : 0; } -#else -#define count_bits(av) ( \ - (av) < (1 << 8) ? nbits_table [av] : \ - ( \ - (av) < (1L << 16) ? nbits_table [(av) >> 8] + 8 : \ - ((av) < (1L << 24) ? nbits_table [(av) >> 16] + 16 : nbits_table [(av) >> 24] + 24) \ - ) \ -) -#endif - -void init_words (WavpackStream *wps); -void write_entropy_vars (WavpackStream *wps, WavpackMetadata *wpmd); -void write_hybrid_profile (WavpackStream *wps, WavpackMetadata *wpmd); -int read_entropy_vars (WavpackStream *wps, WavpackMetadata *wpmd); -int read_hybrid_profile (WavpackStream *wps, WavpackMetadata *wpmd); -int32_t FASTCALL send_word (WavpackStream *wps, int32_t value, int chan); -void send_words_lossless (WavpackStream *wps, int32_t *buffer, int32_t nsamples); -int32_t FASTCALL get_word (WavpackStream *wps, int chan, int32_t *correction); -int32_t get_words_lossless (WavpackStream *wps, int32_t *buffer, int32_t nsamples); -void flush_word (WavpackStream *wps); -int32_t nosend_word (WavpackStream *wps, int32_t value, int chan); -void scan_word (WavpackStream *wps, int32_t *samples, uint32_t num_samples, int dir); -void update_error_limit (WavpackStream *wps); - -extern const uint32_t bitset [32]; -extern const uint32_t bitmask [32]; -extern const char nbits_table [256]; - -int wp_log2s (int32_t value); -int32_t wp_exp2s (int log); -int FASTCALL wp_log2 (uint32_t avalue); - -#ifdef OPT_ASM_X86 -#define LOG2BUFFER log2buffer_x86 -#elif defined(OPT_ASM_X64) && (defined (_WIN64) || defined(__CYGWIN__) || defined(__MINGW64__) || defined(__midipix__)) -#define LOG2BUFFER log2buffer_x64win -#elif defined(OPT_ASM_X64) -#define LOG2BUFFER log2buffer_x64 -#else -#define LOG2BUFFER log2buffer -#endif - -uint32_t LOG2BUFFER (int32_t *samples, uint32_t num_samples, int limit); - -signed char store_weight (int weight); -int restore_weight (signed char weight); - -#define WORD_EOF ((int32_t)(1L << 31)) - -void WavpackFloatNormalize (int32_t *values, int32_t num_values, int delta_exp); - -/////////////////////////// high-level unpacking API and support //////////////////////////// -// modules: open_utils.c, unpack_utils.c, unpack_seek.c, unpack_floats.c - -WavpackContext *WavpackOpenFileInputEx64 (WavpackStreamReader64 *reader, void *wv_id, void *wvc_id, char *error, int flags, int norm_offset); -WavpackContext *WavpackOpenFileInputEx (WavpackStreamReader *reader, void *wv_id, void *wvc_id, char *error, int flags, int norm_offset); -WavpackContext *WavpackOpenFileInput (const char *infilename, char *error, int flags, int norm_offset); - -#define OPEN_WVC 0x1 // open/read "correction" file -#define OPEN_TAGS 0x2 // read ID3v1 / APEv2 tags (seekable file) -#define OPEN_WRAPPER 0x4 // make audio wrapper available (i.e. RIFF) -#define OPEN_2CH_MAX 0x8 // open multichannel as stereo (no downmix) -#define OPEN_NORMALIZE 0x10 // normalize floating point data to +/- 1.0 -#define OPEN_STREAMING 0x20 // "streaming" mode blindly unpacks blocks - // w/o regard to header file position info -#define OPEN_EDIT_TAGS 0x40 // allow editing of tags -#define OPEN_FILE_UTF8 0x80 // assume filenames are UTF-8 encoded, not ANSI (Windows only) - -// new for version 5 - -#define OPEN_DSD_NATIVE 0x100 // open DSD files as bitstreams - // (returned as 8-bit "samples" stored in 32-bit words) -#define OPEN_DSD_AS_PCM 0x200 // open DSD files as 24-bit PCM (decimated 8x) -#define OPEN_ALT_TYPES 0x400 // application is aware of alternate file types & qmode - // (just affects retrieving wrappers & MD5 checksums) -#define OPEN_NO_CHECKSUM 0x800 // don't verify block checksums before decoding - -int WavpackGetMode (WavpackContext *wpc); - -int WavpackGetQualifyMode (WavpackContext *wpc); -int WavpackGetVersion (WavpackContext *wpc); -uint32_t WavpackUnpackSamples (WavpackContext *wpc, int32_t *buffer, uint32_t samples); -int WavpackSeekSample (WavpackContext *wpc, uint32_t sample); -int WavpackSeekSample64 (WavpackContext *wpc, int64_t sample); -int WavpackGetMD5Sum (WavpackContext *wpc, unsigned char data [16]); - -int WavpackVerifySingleBlock (unsigned char *buffer, int verify_checksum); -uint32_t read_next_header (WavpackStreamReader64 *reader, void *id, WavpackHeader *wphdr); -int read_wvc_block (WavpackContext *wpc); - -/////////////////////////// high-level packing API and support //////////////////////////// -// modules: pack_utils.c, pack_floats.c - -WavpackContext *WavpackOpenFileOutput (WavpackBlockOutput blockout, void *wv_id, void *wvc_id); -int WavpackSetConfiguration (WavpackContext *wpc, WavpackConfig *config, uint32_t total_samples); -int WavpackSetConfiguration64 (WavpackContext *wpc, WavpackConfig *config, int64_t total_samples, const unsigned char *chan_ids); -int WavpackPackInit (WavpackContext *wpc); -int WavpackAddWrapper (WavpackContext *wpc, void *data, uint32_t bcount); -int WavpackPackSamples (WavpackContext *wpc, int32_t *sample_buffer, uint32_t sample_count); -int WavpackFlushSamples (WavpackContext *wpc); -int WavpackStoreMD5Sum (WavpackContext *wpc, unsigned char data [16]); -void WavpackSeekTrailingWrapper (WavpackContext *wpc); -void WavpackUpdateNumSamples (WavpackContext *wpc, void *first_block); -void *WavpackGetWrapperLocation (void *first_block, uint32_t *size); - -/////////////////////////////////// common utilities //////////////////////////////////// -// module: common_utils.c - -extern const uint32_t sample_rates [16]; -uint32_t WavpackGetLibraryVersion (void); -const char *WavpackGetLibraryVersionString (void); -uint32_t WavpackGetSampleRate (WavpackContext *wpc); -int WavpackGetBitsPerSample (WavpackContext *wpc); -int WavpackGetBytesPerSample (WavpackContext *wpc); -int WavpackGetNumChannels (WavpackContext *wpc); -int WavpackGetChannelMask (WavpackContext *wpc); -int WavpackGetReducedChannels (WavpackContext *wpc); -int WavpackGetFloatNormExp (WavpackContext *wpc); -uint32_t WavpackGetNumSamples (WavpackContext *wpc); -int64_t WavpackGetNumSamples64 (WavpackContext *wpc); -uint32_t WavpackGetSampleIndex (WavpackContext *wpc); -int64_t WavpackGetSampleIndex64 (WavpackContext *wpc); -char *WavpackGetErrorMessage (WavpackContext *wpc); -int WavpackGetNumErrors (WavpackContext *wpc); -int WavpackLossyBlocks (WavpackContext *wpc); -uint32_t WavpackGetWrapperBytes (WavpackContext *wpc); -unsigned char *WavpackGetWrapperData (WavpackContext *wpc); -void WavpackFreeWrapper (WavpackContext *wpc); -double WavpackGetProgress (WavpackContext *wpc); -uint32_t WavpackGetFileSize (WavpackContext *wpc); -int64_t WavpackGetFileSize64 (WavpackContext *wpc); -double WavpackGetRatio (WavpackContext *wpc); -double WavpackGetAverageBitrate (WavpackContext *wpc, int count_wvc); -double WavpackGetInstantBitrate (WavpackContext *wpc); -WavpackContext *WavpackCloseFile (WavpackContext *wpc); -void WavpackLittleEndianToNative (void *data, char *format); -void WavpackNativeToLittleEndian (void *data, char *format); -void WavpackBigEndianToNative (void *data, char *format); -void WavpackNativeToBigEndian (void *data, char *format); - -void install_close_callback (WavpackContext *wpc, void cb_func (void *wpc)); -void free_dsd_tables (WavpackStream *wps); -void free_streams (WavpackContext *wpc); - -/////////////////////////////////// tag utilities //////////////////////////////////// -// modules: tags.c, tag_utils.c - -int WavpackGetNumTagItems (WavpackContext *wpc); -int WavpackGetTagItem (WavpackContext *wpc, const char *item, char *value, int size); -int WavpackGetTagItemIndexed (WavpackContext *wpc, int index, char *item, int size); -int WavpackGetNumBinaryTagItems (WavpackContext *wpc); -int WavpackGetBinaryTagItem (WavpackContext *wpc, const char *item, char *value, int size); -int WavpackGetBinaryTagItemIndexed (WavpackContext *wpc, int index, char *item, int size); -int WavpackAppendTagItem (WavpackContext *wpc, const char *item, const char *value, int vsize); -int WavpackAppendBinaryTagItem (WavpackContext *wpc, const char *item, const char *value, int vsize); -int WavpackDeleteTagItem (WavpackContext *wpc, const char *item); -int WavpackWriteTag (WavpackContext *wpc); -int load_tag (WavpackContext *wpc); -void free_tag (M_Tag *m_tag); -int valid_tag (M_Tag *m_tag); -int editable_tag (M_Tag *m_tag); - -#endif - diff --git a/Frameworks/WavPack/Files/wavpack_version.h b/Frameworks/WavPack/Files/wavpack_version.h deleted file mode 100644 index c60a769ad..000000000 --- a/Frameworks/WavPack/Files/wavpack_version.h +++ /dev/null @@ -1,19 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2019 David Bryant. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// wavpack_version.h - -#ifndef WAVPACK_VERSION_H -#define WAVPACK_VERSION_H - -#define LIBWAVPACK_MAJOR 5 -#define LIBWAVPACK_MINOR 2 -#define LIBWAVPACK_MICRO 0 -#define LIBWAVPACK_VERSION_STRING "5.2.0" - -#endif diff --git a/Frameworks/WavPack/Files/write_words.c b/Frameworks/WavPack/Files/write_words.c deleted file mode 100644 index 762caf229..000000000 --- a/Frameworks/WavPack/Files/write_words.c +++ /dev/null @@ -1,688 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2013 Conifer Software. // -// All Rights Reserved. // -// Distributed under the BSD Software License (see license.txt) // -//////////////////////////////////////////////////////////////////////////// - -// write_words.c - -// This module provides entropy word encoding functions using -// a variation on the Rice method. This was introduced in version 3.93 -// because it allows splitting the data into a "lossy" stream and a -// "correction" stream in a very efficient manner and is therefore ideal -// for the "hybrid" mode. For 4.0, the efficiency of this method was -// significantly improved by moving away from the normal Rice restriction of -// using powers of two for the modulus divisions and now the method can be -// used for both hybrid and pure lossless encoding. - -// Samples are divided by median probabilities at 5/7 (71.43%), 10/49 (20.41%), -// and 20/343 (5.83%). Each zone has 3.5 times fewer samples than the -// previous. Using standard Rice coding on this data would result in 1.4 -// bits per sample average (not counting sign bit). However, there is a -// very simple encoding that is over 99% efficient with this data and -// results in about 1.22 bits per sample. - -#include -#include - -#include "wavpack_local.h" - -///////////////////////////// executable code //////////////////////////////// - -// Initialize entropy encoder for the specified stream. In lossless mode there -// are no parameters to select; in hybrid mode the bitrate mode and value need -// be initialized. - -static void word_set_bitrate (WavpackStream *wps); - -void init_words (WavpackStream *wps) -{ - CLEAR (wps->w); - - if (wps->wphdr.flags & HYBRID_FLAG) - word_set_bitrate (wps); -} - -// Set up parameters for hybrid mode based on header flags and "bits" field. -// This is currently only set up for the HYBRID_BITRATE mode in which the -// allowed error varies with the residual level (from "slow_level"). The -// simpler mode (which is not used yet) has the error level directly -// controlled from the metadata. - -static void word_set_bitrate (WavpackStream *wps) -{ - int bitrate_0, bitrate_1; - - if (wps->wphdr.flags & HYBRID_BITRATE) { - if (wps->wphdr.flags & FALSE_STEREO) - bitrate_0 = (wps->bits * 2 - 512) < 568 ? 0 : (wps->bits * 2 - 512) - 568; - else - bitrate_0 = wps->bits < 568 ? 0 : wps->bits - 568; - - if (!(wps->wphdr.flags & MONO_DATA)) { - - if (wps->wphdr.flags & HYBRID_BALANCE) - bitrate_1 = (wps->wphdr.flags & JOINT_STEREO) ? 256 : 0; - else { - bitrate_1 = bitrate_0; - - if (wps->wphdr.flags & JOINT_STEREO) { - if (bitrate_0 < 128) { - bitrate_1 += bitrate_0; - bitrate_0 = 0; - } - else { - bitrate_0 -= 128; - bitrate_1 += 128; - } - } - } - } - else - bitrate_1 = 0; - } - else - bitrate_0 = bitrate_1 = 0; - - wps->w.bitrate_acc [0] = (int32_t) bitrate_0 << 16; - wps->w.bitrate_acc [1] = (int32_t) bitrate_1 << 16; -} - -// Allocates the correct space in the metadata structure and writes the -// current median values to it. Values are converted from 32-bit unsigned -// to our internal 16-bit wp_log2 values, and read_entropy_vars () is called -// to read the values back because we must compensate for the loss through -// the log function. - -void write_entropy_vars (WavpackStream *wps, WavpackMetadata *wpmd) -{ - unsigned char *byteptr; - int temp; - - byteptr = wpmd->data = malloc (12); - wpmd->id = ID_ENTROPY_VARS; - - *byteptr++ = temp = wp_log2 (wps->w.c [0].median [0]); - *byteptr++ = temp >> 8; - *byteptr++ = temp = wp_log2 (wps->w.c [0].median [1]); - *byteptr++ = temp >> 8; - *byteptr++ = temp = wp_log2 (wps->w.c [0].median [2]); - *byteptr++ = temp >> 8; - - if (!(wps->wphdr.flags & MONO_DATA)) { - *byteptr++ = temp = wp_log2 (wps->w.c [1].median [0]); - *byteptr++ = temp >> 8; - *byteptr++ = temp = wp_log2 (wps->w.c [1].median [1]); - *byteptr++ = temp >> 8; - *byteptr++ = temp = wp_log2 (wps->w.c [1].median [2]); - *byteptr++ = temp >> 8; - } - - wpmd->byte_length = (int32_t)(byteptr - (unsigned char *) wpmd->data); - read_entropy_vars (wps, wpmd); -} - -// Allocates enough space in the metadata structure and writes the current -// high word of the bitrate accumulator and the slow_level values to it. The -// slow_level values are converted from 32-bit unsigned to our internal 16-bit -// wp_log2 values. Afterward, read_entropy_vars () is called to read the values -// back because we must compensate for the loss through the log function and -// the truncation of the bitrate. - -void write_hybrid_profile (WavpackStream *wps, WavpackMetadata *wpmd) -{ - unsigned char *byteptr; - int temp; - - word_set_bitrate (wps); - byteptr = wpmd->data = malloc (512); - wpmd->id = ID_HYBRID_PROFILE; - - if (wps->wphdr.flags & HYBRID_BITRATE) { - *byteptr++ = temp = wp_log2s (wps->w.c [0].slow_level); - *byteptr++ = temp >> 8; - - if (!(wps->wphdr.flags & MONO_DATA)) { - *byteptr++ = temp = wp_log2s (wps->w.c [1].slow_level); - *byteptr++ = temp >> 8; - } - } - - *byteptr++ = temp = wps->w.bitrate_acc [0] >> 16; - *byteptr++ = temp >> 8; - - if (!(wps->wphdr.flags & MONO_DATA)) { - *byteptr++ = temp = wps->w.bitrate_acc [1] >> 16; - *byteptr++ = temp >> 8; - } - - if (wps->w.bitrate_delta [0] | wps->w.bitrate_delta [1]) { - *byteptr++ = temp = wp_log2s (wps->w.bitrate_delta [0]); - *byteptr++ = temp >> 8; - - if (!(wps->wphdr.flags & MONO_DATA)) { - *byteptr++ = temp = wp_log2s (wps->w.bitrate_delta [1]); - *byteptr++ = temp >> 8; - } - } - - wpmd->byte_length = (int32_t)(byteptr - (unsigned char *) wpmd->data); - read_hybrid_profile (wps, wpmd); -} - -// This function writes the specified word to the open bitstream "wvbits" and, -// if the bitstream "wvcbits" is open, writes any correction data there. This -// function will work for either lossless or hybrid but because a version -// optimized for lossless exits below, it would normally be used for the hybrid -// mode only. The return value is the actual value stored to the stream (even -// if a correction file is being created) and is used as feedback to the -// predictor. - -int32_t FASTCALL send_word (WavpackStream *wps, int32_t value, int chan) -{ - struct entropy_data *c = wps->w.c + chan; - uint32_t ones_count, low, mid, high; - int sign = (value < 0) ? 1 : 0; - - if (wps->w.c [0].median [0] < 2 && !wps->w.holding_zero && wps->w.c [1].median [0] < 2) { - if (wps->w.zeros_acc) { - if (value) - flush_word (wps); - else { - c->slow_level -= (c->slow_level + SLO) >> SLS; - wps->w.zeros_acc++; - return 0; - } - } - else if (value) - putbit_0 (&wps->wvbits); - else { - c->slow_level -= (c->slow_level + SLO) >> SLS; - CLEAR (wps->w.c [0].median); - CLEAR (wps->w.c [1].median); - wps->w.zeros_acc = 1; - return 0; - } - } - - if (sign) - value = ~value; - - if ((wps->wphdr.flags & HYBRID_FLAG) && !chan) - update_error_limit (wps); - - if (value < (int32_t) GET_MED (0)) { - ones_count = low = 0; - high = GET_MED (0) - 1; - DEC_MED0 (); - } - else { - low = GET_MED (0); - INC_MED0 (); - - if (value - low < GET_MED (1)) { - ones_count = 1; - high = low + GET_MED (1) - 1; - DEC_MED1 (); - } - else { - low += GET_MED (1); - INC_MED1 (); - - if (value - low < GET_MED (2)) { - ones_count = 2; - high = low + GET_MED (2) - 1; - DEC_MED2 (); - } - else { - ones_count = 2 + (value - low) / GET_MED (2); - low += (ones_count - 2) * GET_MED (2); - high = low + GET_MED (2) - 1; - INC_MED2 (); - } - } - } - - mid = (high + low + 1) >> 1; - - if (wps->w.holding_zero) { - if (ones_count) - wps->w.holding_one++; - - flush_word (wps); - - if (ones_count) { - wps->w.holding_zero = 1; - ones_count--; - } - else - wps->w.holding_zero = 0; - } - else - wps->w.holding_zero = 1; - - wps->w.holding_one = ones_count * 2; - - if (!c->error_limit) { - if (high != low) { - uint32_t maxcode = high - low, code = value - low; - int bitcount = count_bits (maxcode); - uint32_t extras = bitset [bitcount] - maxcode - 1; - - if (code < extras) { - wps->w.pend_data |= code << wps->w.pend_count; - wps->w.pend_count += bitcount - 1; - } - else { - wps->w.pend_data |= ((code + extras) >> 1) << wps->w.pend_count; - wps->w.pend_count += bitcount - 1; - wps->w.pend_data |= ((code + extras) & 1) << wps->w.pend_count++; - } - } - - mid = value; - } - else - while (high - low > c->error_limit) - if (value < (int32_t) mid) { - mid = ((high = mid - 1) + low + 1) >> 1; - wps->w.pend_count++; - } - else { - mid = (high + (low = mid) + 1) >> 1; - wps->w.pend_data |= bitset [wps->w.pend_count++]; - } - - wps->w.pend_data |= ((int32_t) sign << wps->w.pend_count++); - - if (!wps->w.holding_zero) - flush_word (wps); - - if (bs_is_open (&wps->wvcbits) && c->error_limit) { - uint32_t code = value - low, maxcode = high - low; - int bitcount = count_bits (maxcode); - uint32_t extras = bitset [bitcount] - maxcode - 1; - - if (bitcount) { - if (code < extras) - putbits (code, bitcount - 1, &wps->wvcbits); - else { - putbits ((code + extras) >> 1, bitcount - 1, &wps->wvcbits); - putbit ((code + extras) & 1, &wps->wvcbits); - } - } - } - - if (wps->wphdr.flags & HYBRID_BITRATE) { - c->slow_level -= (c->slow_level + SLO) >> SLS; - c->slow_level += wp_log2 (mid); - } - - return sign ? ~mid : mid; -} - -// This function is an optimized version of send_word() that only handles -// lossless (error_limit == 0) and sends an entire buffer of either mono or -// stereo data rather than a single sample. Unlike the generalized -// send_word(), it does not return values because it always encodes -// the exact value passed. - -void send_words_lossless (WavpackStream *wps, int32_t *buffer, int32_t nsamples) -{ - struct entropy_data *c = wps->w.c; - int32_t value, csamples; - - if (!(wps->wphdr.flags & MONO_DATA)) - nsamples *= 2; - - for (csamples = 0; csamples < nsamples; ++csamples) { - int sign = ((value = *buffer++) < 0) ? 1 : 0; - uint32_t ones_count, low, high; - - if (!(wps->wphdr.flags & MONO_DATA)) - c = wps->w.c + (csamples & 1); - - if (wps->w.c [0].median [0] < 2 && !wps->w.holding_zero && wps->w.c [1].median [0] < 2) { - if (wps->w.zeros_acc) { - if (value) - flush_word (wps); - else { - wps->w.zeros_acc++; - continue; - } - } - else if (value) - putbit_0 (&wps->wvbits); - else { - CLEAR (wps->w.c [0].median); - CLEAR (wps->w.c [1].median); - wps->w.zeros_acc = 1; - continue; - } - } - - if (sign) - value = ~value; - - if (value < (int32_t) GET_MED (0)) { - ones_count = low = 0; - high = GET_MED (0) - 1; - DEC_MED0 (); - } - else { - low = GET_MED (0); - INC_MED0 (); - - if (value - low < GET_MED (1)) { - ones_count = 1; - high = low + GET_MED (1) - 1; - DEC_MED1 (); - } - else { - low += GET_MED (1); - INC_MED1 (); - - if (value - low < GET_MED (2)) { - ones_count = 2; - high = low + GET_MED (2) - 1; - DEC_MED2 (); - } - else { - ones_count = 2 + (value - low) / GET_MED (2); - low += (ones_count - 2) * GET_MED (2); - high = low + GET_MED (2) - 1; - INC_MED2 (); - } - } - } - - if (wps->w.holding_zero) { - if (ones_count) - wps->w.holding_one++; - - flush_word (wps); - - if (ones_count) { - wps->w.holding_zero = 1; - ones_count--; - } - else - wps->w.holding_zero = 0; - } - else - wps->w.holding_zero = 1; - - wps->w.holding_one = ones_count * 2; - - if (high != low) { - uint32_t maxcode = high - low, code = value - low; - int bitcount = count_bits (maxcode); - uint32_t extras = bitset [bitcount] - maxcode - 1; - - if (code < extras) { - wps->w.pend_data |= code << wps->w.pend_count; - wps->w.pend_count += bitcount - 1; - } - else { - wps->w.pend_data |= ((code + extras) >> 1) << wps->w.pend_count; - wps->w.pend_count += bitcount - 1; - wps->w.pend_data |= ((code + extras) & 1) << wps->w.pend_count++; - } - } - - wps->w.pend_data |= ((int32_t) sign << wps->w.pend_count++); - - if (!wps->w.holding_zero) - flush_word (wps); - } -} - -// Used by send_word() and send_word_lossless() to actually send most the -// accumulated data onto the bitstream. This is also called directly from -// clients when all words have been sent. - -void flush_word (WavpackStream *wps) -{ - if (wps->w.zeros_acc) { - int cbits = count_bits (wps->w.zeros_acc); - - while (cbits--) - putbit_1 (&wps->wvbits); - - putbit_0 (&wps->wvbits); - - while (wps->w.zeros_acc > 1) { - putbit (wps->w.zeros_acc & 1, &wps->wvbits); - wps->w.zeros_acc >>= 1; - } - - wps->w.zeros_acc = 0; - } - - if (wps->w.holding_one) { -#ifdef LIMIT_ONES - if (wps->w.holding_one >= LIMIT_ONES) { - int cbits; - - putbits ((1L << LIMIT_ONES) - 1, LIMIT_ONES + 1, &wps->wvbits); - wps->w.holding_one -= LIMIT_ONES; - cbits = count_bits (wps->w.holding_one); - - while (cbits--) - putbit_1 (&wps->wvbits); - - putbit_0 (&wps->wvbits); - - while (wps->w.holding_one > 1) { - putbit (wps->w.holding_one & 1, &wps->wvbits); - wps->w.holding_one >>= 1; - } - - wps->w.holding_zero = 0; - } - else - putbits (bitmask [wps->w.holding_one], wps->w.holding_one, &wps->wvbits); - - wps->w.holding_one = 0; -#else - do { - putbit_1 (&wps->wvbits); - } while (--wps->w.holding_one); -#endif - } - - if (wps->w.holding_zero) { - putbit_0 (&wps->wvbits); - wps->w.holding_zero = 0; - } - - if (wps->w.pend_count) { - putbits (wps->w.pend_data, wps->w.pend_count, &wps->wvbits); - wps->w.pend_data = wps->w.pend_count = 0; - } -} - -// This function is similar to send_word() except that no data is actually -// written to any stream, but it does return the value that would have been -// sent to a hybrid stream. It is used to determine beforehand how much noise -// will be added to samples. - -int32_t nosend_word (WavpackStream *wps, int32_t value, int chan) -{ - struct entropy_data *c = wps->w.c + chan; - uint32_t ones_count, low, mid, high; - int sign = (value < 0) ? 1 : 0; - - if (sign) - value = ~value; - - if ((wps->wphdr.flags & HYBRID_FLAG) && !chan) - update_error_limit (wps); - - if (value < (int32_t) GET_MED (0)) { - low = 0; - high = GET_MED (0) - 1; - DEC_MED0 (); - } - else { - low = GET_MED (0); - INC_MED0 (); - - if (value - low < GET_MED (1)) { - high = low + GET_MED (1) - 1; - DEC_MED1 (); - } - else { - low += GET_MED (1); - INC_MED1 (); - - if (value - low < GET_MED (2)) { - high = low + GET_MED (2) - 1; - DEC_MED2 (); - } - else { - ones_count = 2 + (value - low) / GET_MED (2); - low += (ones_count - 2) * GET_MED (2); - high = low + GET_MED (2) - 1; - INC_MED2 (); - } - } - } - - mid = (high + low + 1) >> 1; - - if (!c->error_limit) - mid = value; - else - while (high - low > c->error_limit) - if (value < (int32_t) mid) - mid = ((high = mid - 1) + low + 1) >> 1; - else - mid = (high + (low = mid) + 1) >> 1; - - c->slow_level -= (c->slow_level + SLO) >> SLS; - c->slow_level += wp_log2 (mid); - - return sign ? ~mid : mid; -} - -// This function is used to scan some number of samples to set the variables -// "slow_level" and the "median" array. In pure symmetrical encoding mode this -// would not be needed because these values would simply be continued from the -// previous block. However, in the -X modes and the 32-bit modes we cannot do -// this because parameters may change between blocks and the variables might -// not apply. This function can work in mono or stereo and can scan a block -// in either direction. - -static void scan_word_pass (WavpackStream *wps, int32_t *samples, uint32_t num_samples, int dir) -{ - uint32_t flags = wps->wphdr.flags, value, low; - struct entropy_data *c = wps->w.c; - int chan; - - if (flags & MONO_DATA) { - if (dir < 0) { - samples += (num_samples - 1); - dir = -1; - } - else - dir = 1; - } - else { - if (dir < 0) { - samples += (num_samples - 1) * 2; - dir = -2; - } - else - dir = 2; - } - - while (num_samples--) { - - value = labs (samples [chan = 0]); - - if (flags & HYBRID_BITRATE) { - wps->w.c [0].slow_level -= (wps->w.c [0].slow_level + SLO) >> SLS; - wps->w.c [0].slow_level += wp_log2 (value); - } - - if (value < GET_MED (0)) { - DEC_MED0 (); - } - else { - low = GET_MED (0); - INC_MED0 (); - - if (value - low < GET_MED (1)) { - DEC_MED1 (); - } - else { - low += GET_MED (1); - INC_MED1 (); - - if (value - low < GET_MED (2)) { - DEC_MED2 (); - } - else { - INC_MED2 (); - } - } - } - - if (!(flags & MONO_DATA)) { - value = labs (samples [chan = 1]); - c++; - - if (wps->wphdr.flags & HYBRID_BITRATE) { - wps->w.c [1].slow_level -= (wps->w.c [1].slow_level + SLO) >> SLS; - wps->w.c [1].slow_level += wp_log2 (value); - } - - if (value < GET_MED (0)) { - DEC_MED0 (); - } - else { - low = GET_MED (0); - INC_MED0 (); - - if (value - low < GET_MED (1)) { - DEC_MED1 (); - } - else { - low += GET_MED (1); - INC_MED1 (); - - if (value - low < GET_MED (2)) { - DEC_MED2 (); - } - else { - INC_MED2 (); - } - } - } - - c--; - } - - samples += dir; - } -} - -// Wrapper for scan_word_pass() than ensures that at least 2048 samples are processed by -// potentially making multiple passes through the data. See description of scan_word_pass() -// for more details. - -void scan_word (WavpackStream *wps, int32_t *samples, uint32_t num_samples, int dir) -{ - init_words (wps); - - if (num_samples) { - int passes = (2048 + num_samples - 1) / num_samples; // i.e., ceil (2048.0 / num_samples) - - while (passes--) - scan_word_pass (wps, samples, num_samples, dir); - } -} - diff --git a/Frameworks/WavPack/Info.plist b/Frameworks/WavPack/Info.plist deleted file mode 100644 index 5c18bd9f9..000000000 --- a/Frameworks/WavPack/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleSignature - ???? - CFBundleVersion - 1.0 - NSPrincipalClass - - - diff --git a/Frameworks/WavPack/WavPack.xcodeproj/project.pbxproj b/Frameworks/WavPack/WavPack.xcodeproj/project.pbxproj deleted file mode 100644 index 157697ed7..000000000 --- a/Frameworks/WavPack/WavPack.xcodeproj/project.pbxproj +++ /dev/null @@ -1,554 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXBuildFile section */ - 8310BA351D7377850055CEC5 /* common_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA281D7377850055CEC5 /* common_utils.c */; }; - 8310BA361D7377850055CEC5 /* decorr_tables.h in Headers */ = {isa = PBXBuildFile; fileRef = 8310BA291D7377850055CEC5 /* decorr_tables.h */; }; - 8310BA371D7377850055CEC5 /* decorr_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA2A1D7377850055CEC5 /* decorr_utils.c */; }; - 8310BA381D7377850055CEC5 /* entropy_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA2B1D7377850055CEC5 /* entropy_utils.c */; }; - 8310BA391D7377850055CEC5 /* open_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA2C1D7377850055CEC5 /* open_utils.c */; }; - 8310BA3A1D7377850055CEC5 /* read_words.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA2D1D7377850055CEC5 /* read_words.c */; }; - 8310BA3B1D7377850055CEC5 /* tag_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA2E1D7377850055CEC5 /* tag_utils.c */; }; - 8310BA3C1D7377850055CEC5 /* unpack_dsd.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA2F1D7377850055CEC5 /* unpack_dsd.c */; }; - 8310BA3D1D7377850055CEC5 /* unpack_floats.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA301D7377850055CEC5 /* unpack_floats.c */; }; - 8310BA3E1D7377850055CEC5 /* unpack_seek.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA311D7377850055CEC5 /* unpack_seek.c */; }; - 8310BA3F1D7377850055CEC5 /* unpack_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA321D7377850055CEC5 /* unpack_utils.c */; }; - 8310BA401D7377850055CEC5 /* unpack3_open.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA331D7377850055CEC5 /* unpack3_open.c */; }; - 8310BA411D7377850055CEC5 /* unpack3_seek.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA341D7377850055CEC5 /* unpack3_seek.c */; }; - 8310BA431D7377B80055CEC5 /* write_words.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA421D7377B80055CEC5 /* write_words.c */; }; - 8310BA4A1D7377DC0055CEC5 /* open_filename.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA441D7377DC0055CEC5 /* open_filename.c */; }; - 8310BA4B1D7377DC0055CEC5 /* open_legacy.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA451D7377DC0055CEC5 /* open_legacy.c */; }; - 8310BA4C1D7377DC0055CEC5 /* pack_dns.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA461D7377DC0055CEC5 /* pack_dns.c */; }; - 8310BA4D1D7377DC0055CEC5 /* pack_dsd.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA471D7377DC0055CEC5 /* pack_dsd.c */; }; - 8310BA4E1D7377DC0055CEC5 /* pack_floats.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA481D7377DC0055CEC5 /* pack_floats.c */; }; - 8310BA4F1D7377DC0055CEC5 /* pack_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 8310BA491D7377DC0055CEC5 /* pack_utils.c */; }; - 83DD1DD017FA038A00249519 /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 83DD1DCD17FA038A00249519 /* utils.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 83DD1DD117FA038A00249519 /* wavpack_local.h in Headers */ = {isa = PBXBuildFile; fileRef = 83DD1DCE17FA038A00249519 /* wavpack_local.h */; }; - 83DD1DD217FA038A00249519 /* wavpack_version.h in Headers */ = {isa = PBXBuildFile; fileRef = 83DD1DCF17FA038A00249519 /* wavpack_version.h */; }; - 83DD1DD417FA03F900249519 /* tags.c in Sources */ = {isa = PBXBuildFile; fileRef = 83DD1DD317FA03F900249519 /* tags.c */; }; - 8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C1666FE841158C02AAC07 /* InfoPlist.strings */; }; - 8E7574B309F31BB90080F1EE /* md5.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7574AF09F31BB90080F1EE /* md5.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8E7574B409F31BB90080F1EE /* unpack3.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7574B009F31BB90080F1EE /* unpack3.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8E7574B509F31BB90080F1EE /* wavpack.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7574B109F31BB90080F1EE /* wavpack.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8E7574C609F31BD50080F1EE /* extra1.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E7574B809F31BD50080F1EE /* extra1.c */; }; - 8E7574C709F31BD50080F1EE /* extra2.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E7574B909F31BD50080F1EE /* extra2.c */; }; - 8E7574C909F31BD50080F1EE /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E7574BB09F31BD50080F1EE /* md5.c */; }; - 8E7574CB09F31BD50080F1EE /* pack.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E7574BD09F31BD50080F1EE /* pack.c */; }; - 8E7574CC09F31BD50080F1EE /* unpack.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E7574BE09F31BD50080F1EE /* unpack.c */; }; - 8E7574CD09F31BD50080F1EE /* unpack3.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E7574BF09F31BD50080F1EE /* unpack3.c */; }; - 8E7574CE09F31BD50080F1EE /* utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E7574C009F31BD50080F1EE /* utils.c */; }; - 8E7574F509F31C7D0080F1EE /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E7574F409F31C7D0080F1EE /* libiconv.dylib */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 8310BA281D7377850055CEC5 /* common_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = common_utils.c; path = Files/common_utils.c; sourceTree = ""; }; - 8310BA291D7377850055CEC5 /* decorr_tables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = decorr_tables.h; path = Files/decorr_tables.h; sourceTree = ""; }; - 8310BA2A1D7377850055CEC5 /* decorr_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = decorr_utils.c; path = Files/decorr_utils.c; sourceTree = ""; }; - 8310BA2B1D7377850055CEC5 /* entropy_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = entropy_utils.c; path = Files/entropy_utils.c; sourceTree = ""; }; - 8310BA2C1D7377850055CEC5 /* open_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = open_utils.c; path = Files/open_utils.c; sourceTree = ""; }; - 8310BA2D1D7377850055CEC5 /* read_words.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = read_words.c; path = Files/read_words.c; sourceTree = ""; }; - 8310BA2E1D7377850055CEC5 /* tag_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tag_utils.c; path = Files/tag_utils.c; sourceTree = ""; }; - 8310BA2F1D7377850055CEC5 /* unpack_dsd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = unpack_dsd.c; path = Files/unpack_dsd.c; sourceTree = ""; }; - 8310BA301D7377850055CEC5 /* unpack_floats.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = unpack_floats.c; path = Files/unpack_floats.c; sourceTree = ""; }; - 8310BA311D7377850055CEC5 /* unpack_seek.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = unpack_seek.c; path = Files/unpack_seek.c; sourceTree = ""; }; - 8310BA321D7377850055CEC5 /* unpack_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = unpack_utils.c; path = Files/unpack_utils.c; sourceTree = ""; }; - 8310BA331D7377850055CEC5 /* unpack3_open.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = unpack3_open.c; path = Files/unpack3_open.c; sourceTree = ""; }; - 8310BA341D7377850055CEC5 /* unpack3_seek.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = unpack3_seek.c; path = Files/unpack3_seek.c; sourceTree = ""; }; - 8310BA421D7377B80055CEC5 /* write_words.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = write_words.c; path = Files/write_words.c; sourceTree = ""; }; - 8310BA441D7377DC0055CEC5 /* open_filename.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = open_filename.c; path = Files/open_filename.c; sourceTree = ""; }; - 8310BA451D7377DC0055CEC5 /* open_legacy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = open_legacy.c; path = Files/open_legacy.c; sourceTree = ""; }; - 8310BA461D7377DC0055CEC5 /* pack_dns.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pack_dns.c; path = Files/pack_dns.c; sourceTree = ""; }; - 8310BA471D7377DC0055CEC5 /* pack_dsd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pack_dsd.c; path = Files/pack_dsd.c; sourceTree = ""; }; - 8310BA481D7377DC0055CEC5 /* pack_floats.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pack_floats.c; path = Files/pack_floats.c; sourceTree = ""; }; - 8310BA491D7377DC0055CEC5 /* pack_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pack_utils.c; path = Files/pack_utils.c; sourceTree = ""; }; - 833F683A1CDBCAB200AFB9F0 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; }; - 835C889B22CC188A001B4B3F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 83747BDC2862D5C50021245F /* Shared.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Shared.xcconfig; sourceTree = ""; }; - 838EE8D329A8600D00CD0580 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = ""; }; - 83DD1DCD17FA038A00249519 /* utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = utils.h; path = Files/utils.h; sourceTree = ""; }; - 83DD1DCE17FA038A00249519 /* wavpack_local.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wavpack_local.h; path = Files/wavpack_local.h; sourceTree = ""; }; - 83DD1DCF17FA038A00249519 /* wavpack_version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wavpack_version.h; path = Files/wavpack_version.h; sourceTree = ""; }; - 83DD1DD317FA03F900249519 /* tags.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tags.c; path = Files/tags.c; sourceTree = ""; }; - 83F0E6CD287CAB4400D84594 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = ""; }; - 8DC2EF5A0486A6940098B216 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; - 8DC2EF5B0486A6940098B216 /* WavPack.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = WavPack.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8E7574AF09F31BB90080F1EE /* md5.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = md5.h; path = Files/md5.h; sourceTree = ""; }; - 8E7574B009F31BB90080F1EE /* unpack3.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = unpack3.h; path = Files/unpack3.h; sourceTree = ""; }; - 8E7574B109F31BB90080F1EE /* wavpack.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = wavpack.h; path = Files/wavpack.h; sourceTree = ""; }; - 8E7574B809F31BD50080F1EE /* extra1.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = extra1.c; path = Files/extra1.c; sourceTree = ""; }; - 8E7574B909F31BD50080F1EE /* extra2.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = extra2.c; path = Files/extra2.c; sourceTree = ""; }; - 8E7574BB09F31BD50080F1EE /* md5.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = md5.c; path = Files/md5.c; sourceTree = ""; }; - 8E7574BD09F31BD50080F1EE /* pack.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pack.c; path = Files/pack.c; sourceTree = ""; }; - 8E7574BE09F31BD50080F1EE /* unpack.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = unpack.c; path = Files/unpack.c; sourceTree = ""; }; - 8E7574BF09F31BD50080F1EE /* unpack3.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = unpack3.c; path = Files/unpack3.c; sourceTree = ""; }; - 8E7574C009F31BD50080F1EE /* utils.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = utils.c; path = Files/utils.c; sourceTree = ""; }; - 8E7574F409F31C7D0080F1EE /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = /usr/lib/libiconv.dylib; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8DC2EF560486A6940098B216 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8E7574F509F31C7D0080F1EE /* libiconv.dylib in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 034768DFFF38A50411DB9C8B /* Products */ = { - isa = PBXGroup; - children = ( - 8DC2EF5B0486A6940098B216 /* WavPack.framework */, - ); - name = Products; - sourceTree = ""; - }; - 0867D691FE84028FC02AAC07 /* WavPack */ = { - isa = PBXGroup; - children = ( - 83747BDB2862D5C50021245F /* Xcode-config */, - 8E7574A909F31B9A0080F1EE /* Headers */, - 8E7574A809F31B940080F1EE /* Source */, - 089C1665FE841158C02AAC07 /* Resources */, - 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */, - 034768DFFF38A50411DB9C8B /* Products */, - ); - name = WavPack; - sourceTree = ""; - }; - 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = { - isa = PBXGroup; - children = ( - 1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */, - 1058C7B2FEA5585E11CA2CBB /* Other Frameworks */, - ); - name = "External Frameworks and Libraries"; - sourceTree = ""; - }; - 089C1665FE841158C02AAC07 /* Resources */ = { - isa = PBXGroup; - children = ( - 8DC2EF5A0486A6940098B216 /* Info.plist */, - 089C1666FE841158C02AAC07 /* InfoPlist.strings */, - ); - name = Resources; - sourceTree = ""; - }; - 1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */ = { - isa = PBXGroup; - children = ( - 8E7574F409F31C7D0080F1EE /* libiconv.dylib */, - ); - name = "Linked Frameworks"; - sourceTree = ""; - }; - 1058C7B2FEA5585E11CA2CBB /* Other Frameworks */ = { - isa = PBXGroup; - children = ( - ); - name = "Other Frameworks"; - sourceTree = ""; - }; - 83747BDB2862D5C50021245F /* Xcode-config */ = { - isa = PBXGroup; - children = ( - 83747BDC2862D5C50021245F /* Shared.xcconfig */, - ); - name = "Xcode-config"; - path = "../../Xcode-config"; - sourceTree = ""; - }; - 8E7574A809F31B940080F1EE /* Source */ = { - isa = PBXGroup; - children = ( - 8310BA441D7377DC0055CEC5 /* open_filename.c */, - 8310BA451D7377DC0055CEC5 /* open_legacy.c */, - 8310BA461D7377DC0055CEC5 /* pack_dns.c */, - 8310BA471D7377DC0055CEC5 /* pack_dsd.c */, - 8310BA481D7377DC0055CEC5 /* pack_floats.c */, - 8310BA491D7377DC0055CEC5 /* pack_utils.c */, - 8310BA421D7377B80055CEC5 /* write_words.c */, - 8310BA281D7377850055CEC5 /* common_utils.c */, - 8310BA2A1D7377850055CEC5 /* decorr_utils.c */, - 8310BA2B1D7377850055CEC5 /* entropy_utils.c */, - 8310BA2C1D7377850055CEC5 /* open_utils.c */, - 8310BA2D1D7377850055CEC5 /* read_words.c */, - 8310BA2E1D7377850055CEC5 /* tag_utils.c */, - 8310BA2F1D7377850055CEC5 /* unpack_dsd.c */, - 8310BA301D7377850055CEC5 /* unpack_floats.c */, - 8310BA311D7377850055CEC5 /* unpack_seek.c */, - 8310BA321D7377850055CEC5 /* unpack_utils.c */, - 8310BA331D7377850055CEC5 /* unpack3_open.c */, - 8310BA341D7377850055CEC5 /* unpack3_seek.c */, - 83DD1DD317FA03F900249519 /* tags.c */, - 8E7574B809F31BD50080F1EE /* extra1.c */, - 8E7574B909F31BD50080F1EE /* extra2.c */, - 8E7574BB09F31BD50080F1EE /* md5.c */, - 8E7574BD09F31BD50080F1EE /* pack.c */, - 8E7574BE09F31BD50080F1EE /* unpack.c */, - 8E7574BF09F31BD50080F1EE /* unpack3.c */, - 8E7574C009F31BD50080F1EE /* utils.c */, - ); - name = Source; - sourceTree = ""; - }; - 8E7574A909F31B9A0080F1EE /* Headers */ = { - isa = PBXGroup; - children = ( - 8310BA291D7377850055CEC5 /* decorr_tables.h */, - 83DD1DCD17FA038A00249519 /* utils.h */, - 83DD1DCE17FA038A00249519 /* wavpack_local.h */, - 83DD1DCF17FA038A00249519 /* wavpack_version.h */, - 8E7574AF09F31BB90080F1EE /* md5.h */, - 8E7574B009F31BB90080F1EE /* unpack3.h */, - 8E7574B109F31BB90080F1EE /* wavpack.h */, - ); - name = Headers; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 8DC2EF500486A6940098B216 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 8E7574B309F31BB90080F1EE /* md5.h in Headers */, - 83DD1DD117FA038A00249519 /* wavpack_local.h in Headers */, - 8E7574B409F31BB90080F1EE /* unpack3.h in Headers */, - 83DD1DD017FA038A00249519 /* utils.h in Headers */, - 83DD1DD217FA038A00249519 /* wavpack_version.h in Headers */, - 8310BA361D7377850055CEC5 /* decorr_tables.h in Headers */, - 8E7574B509F31BB90080F1EE /* wavpack.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 8DC2EF4F0486A6940098B216 /* WavPack Framework */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "WavPack Framework" */; - buildPhases = ( - 8DC2EF500486A6940098B216 /* Headers */, - 8DC2EF520486A6940098B216 /* Resources */, - 8DC2EF540486A6940098B216 /* Sources */, - 8DC2EF560486A6940098B216 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "WavPack Framework"; - productInstallPath = "$(HOME)/Library/Frameworks"; - productName = WavPack; - productReference = 8DC2EF5B0486A6940098B216 /* WavPack.framework */; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 0867D690FE84028FC02AAC07 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = YES; - LastUpgradeCheck = 1620; - TargetAttributes = { - 8DC2EF4F0486A6940098B216 = { - DevelopmentTeam = ""; - ProvisioningStyle = Manual; - }; - }; - }; - buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "WavPack" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = en; - hasScannedForEncodings = 1; - knownRegions = ( - en, - es, - Base, - pl, - tr, - ); - mainGroup = 0867D691FE84028FC02AAC07 /* WavPack */; - productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 8DC2EF4F0486A6940098B216 /* WavPack Framework */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 8DC2EF520486A6940098B216 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8DC2EF540486A6940098B216 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8310BA4A1D7377DC0055CEC5 /* open_filename.c in Sources */, - 8310BA4B1D7377DC0055CEC5 /* open_legacy.c in Sources */, - 8310BA4C1D7377DC0055CEC5 /* pack_dns.c in Sources */, - 8310BA4D1D7377DC0055CEC5 /* pack_dsd.c in Sources */, - 8310BA4E1D7377DC0055CEC5 /* pack_floats.c in Sources */, - 8310BA4F1D7377DC0055CEC5 /* pack_utils.c in Sources */, - 8310BA431D7377B80055CEC5 /* write_words.c in Sources */, - 8310BA351D7377850055CEC5 /* common_utils.c in Sources */, - 8310BA371D7377850055CEC5 /* decorr_utils.c in Sources */, - 8310BA381D7377850055CEC5 /* entropy_utils.c in Sources */, - 8310BA391D7377850055CEC5 /* open_utils.c in Sources */, - 8310BA3A1D7377850055CEC5 /* read_words.c in Sources */, - 8310BA3B1D7377850055CEC5 /* tag_utils.c in Sources */, - 8310BA3C1D7377850055CEC5 /* unpack_dsd.c in Sources */, - 8310BA3D1D7377850055CEC5 /* unpack_floats.c in Sources */, - 8310BA3E1D7377850055CEC5 /* unpack_seek.c in Sources */, - 8310BA3F1D7377850055CEC5 /* unpack_utils.c in Sources */, - 8310BA401D7377850055CEC5 /* unpack3_open.c in Sources */, - 8310BA411D7377850055CEC5 /* unpack3_seek.c in Sources */, - 83DD1DD417FA03F900249519 /* tags.c in Sources */, - 8E7574C609F31BD50080F1EE /* extra1.c in Sources */, - 8E7574C709F31BD50080F1EE /* extra2.c in Sources */, - 8E7574C909F31BD50080F1EE /* md5.c in Sources */, - 8E7574CB09F31BD50080F1EE /* pack.c in Sources */, - 8E7574CC09F31BD50080F1EE /* unpack.c in Sources */, - 8E7574CD09F31BD50080F1EE /* unpack3.c in Sources */, - 8E7574CE09F31BD50080F1EE /* utils.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 089C1666FE841158C02AAC07 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 833F683A1CDBCAB200AFB9F0 /* es */, - 835C889B22CC188A001B4B3F /* en */, - 83F0E6CD287CAB4400D84594 /* pl */, - 838EE8D329A8600D00CD0580 /* tr */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 1DEB91AE08733DA50010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEAD_CODE_STRIPPING = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_VERSION = A; - GCC_DYNAMIC_NO_PIC = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = NO; - GCC_PREFIX_HEADER = ""; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - ENABLE_DSD, - ENABLE_LEGACY, - PACK, - UNPACK, - USE_FSTREAMS, - TAGS, - SEEKING, - VER3, - "PACKAGE_NAME='\"wavpack\"'", - "PACKAGE_TARNAME='\"wavpack\"'", - "PACKAGE_VERSION='\"5.2.0\"'", - "PACKAGE_STRING='\"wavpack 5.2.0\"'", - "PACKAGE_BUGREPORT='\"bryant@wavpack.com\"'", - "VERSION_OS='\"Darwin\"'", - ); - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "@loader_path/../Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = org.cogx.lib.wavpack; - PRODUCT_NAME = WavPack; - SDKROOT = macosx; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = framework; - ZERO_LINK = YES; - }; - name = Debug; - }; - 1DEB91AF08733DA50010E9CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - COMBINE_HIDPI_IMAGES = YES; - DEAD_CODE_STRIPPING = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_VERSION = A; - GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = NO; - GCC_PREFIX_HEADER = ""; - GCC_PREPROCESSOR_DEFINITIONS = ( - ENABLE_DSD, - ENABLE_LEGACY, - PACK, - UNPACK, - USE_FSTREAMS, - TAGS, - SEEKING, - VER3, - "PACKAGE_NAME='\"wavpack\"'", - "PACKAGE_TARNAME='\"wavpack\"'", - "PACKAGE_VERSION='\"4.70.0\"'", - "PACKAGE_STRING='\"wavpack 4.70.0\"'", - "PACKAGE_BUGREPORT='\"bryant@wavpack.com\"'", - "VERSION_OS='\"Darwin\"'", - ); - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "@loader_path/../Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = org.cogx.lib.wavpack; - PRODUCT_NAME = WavPack; - SDKROOT = macosx; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = framework; - }; - name = Release; - }; - 1DEB91B208733DA50010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 83747BDC2862D5C50021245F /* Shared.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEAD_CODE_STRIPPING = YES; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1"; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.13; - ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = "-Wframe-larger-than=4000"; - OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000"; - SDKROOT = macosx; - SYMROOT = ../../build; - }; - name = Debug; - }; - 1DEB91B308733DA50010E9CD /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 83747BDC2862D5C50021245F /* Shared.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - DEAD_CODE_STRIPPING = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.13; - OTHER_CFLAGS = "-Wframe-larger-than=4000"; - OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000"; - SDKROOT = macosx; - SYMROOT = ../../build; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "WavPack Framework" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB91AE08733DA50010E9CD /* Debug */, - 1DEB91AF08733DA50010E9CD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "WavPack" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB91B208733DA50010E9CD /* Debug */, - 1DEB91B308733DA50010E9CD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 0867D690FE84028FC02AAC07 /* Project object */; -} diff --git a/Frameworks/WavPack/WavPack.xcodeproj/xcshareddata/xcschemes/WavPack Framework.xcscheme b/Frameworks/WavPack/WavPack.xcodeproj/xcshareddata/xcschemes/WavPack Framework.xcscheme deleted file mode 100644 index af61ef3fe..000000000 --- a/Frameworks/WavPack/WavPack.xcodeproj/xcshareddata/xcschemes/WavPack Framework.xcscheme +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Frameworks/WavPack/en.lproj/InfoPlist.strings b/Frameworks/WavPack/en.lproj/InfoPlist.strings deleted file mode 100644 index 7080cf949924e8817cb2121399f078b287079883..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmW-ZOAf&R6h+Utt7r@xK@3d9$bMd*s%ZBv=Kme5Fyy^_xDn;J8+CjLwb{$gz->i_@% diff --git a/Frameworks/WavPack/es.lproj/InfoPlist.strings b/Frameworks/WavPack/es.lproj/InfoPlist.strings deleted file mode 100644 index cde2c3450..000000000 --- a/Frameworks/WavPack/es.lproj/InfoPlist.strings +++ /dev/null @@ -1,3 +0,0 @@ -/* Localized versions of Info.plist keys */ - -NSHumanReadableCopyright = "© __MyCompanyName__, 2006"; diff --git a/Frameworks/WavPack/pl.lproj/InfoPlist.strings b/Frameworks/WavPack/pl.lproj/InfoPlist.strings deleted file mode 100644 index 7080cf949924e8817cb2121399f078b287079883..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmW-ZOAf&R6h+Utt7r@xK@3d9$bMd*s%ZBv=Kme5Fyy^_xDn;J8+CjLwb{$gz->i_@% diff --git a/Frameworks/WavPack/tr.lproj/InfoPlist.strings b/Frameworks/WavPack/tr.lproj/InfoPlist.strings deleted file mode 100644 index 7080cf949924e8817cb2121399f078b287079883..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmW-ZOAf&R6h+Utt7r@xK@3d9$bMd*s%ZBv=Kme5Fyy^_xDn;J8+CjLwb{$gz->i_@% diff --git a/Plugins/WavPack/WavPack.xcodeproj/project.pbxproj b/Plugins/WavPack/WavPack.xcodeproj/project.pbxproj index 2ff86d91a..68825a14e 100644 --- a/Plugins/WavPack/WavPack.xcodeproj/project.pbxproj +++ b/Plugins/WavPack/WavPack.xcodeproj/project.pbxproj @@ -8,28 +8,10 @@ /* Begin PBXBuildFile section */ 1745C4DA0B90C42500A6768C /* WavPackDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 1745C4D60B90C42500A6768C /* WavPackDecoder.m */; }; - 17F562D80C3BDA6C0019975C /* WavPack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17F562CA0C3BDA5A0019975C /* WavPack.framework */; }; - 17F562DB0C3BDA6E0019975C /* WavPack.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 17F562CA0C3BDA5A0019975C /* WavPack.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 83E83F792D964AFE0054365C /* libwavpack.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 83E83F782D964AFE0054365C /* libwavpack.a */; }; 8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; }; /* End PBXBuildFile section */ -/* Begin PBXContainerItemProxy section */ - 17F562C90C3BDA5A0019975C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 17F562C20C3BDA5A0019975C /* WavPack.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 8DC2EF5B0486A6940098B216; - remoteInfo = WavPack; - }; - 17F562DC0C3BDA830019975C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 17F562C20C3BDA5A0019975C /* WavPack.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 8DC2EF4F0486A6940098B216; - remoteInfo = WavPack; - }; -/* End PBXContainerItemProxy section */ - /* Begin PBXCopyFilesBuildPhase section */ 1745C4FE0B90C4CD00A6768C /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; @@ -37,7 +19,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 17F562DB0C3BDA6E0019975C /* WavPack.framework in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -50,11 +31,11 @@ 1745C4D50B90C42500A6768C /* WavPackDecoder.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WavPackDecoder.h; sourceTree = ""; }; 1745C4D60B90C42500A6768C /* WavPackDecoder.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = WavPackDecoder.m; sourceTree = ""; }; 177FCF940B90C9450011C3B5 /* Plugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Plugin.h; path = ../../Audio/Plugin.h; sourceTree = SOURCE_ROOT; }; - 17F562C20C3BDA5A0019975C /* WavPack.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = WavPack.xcodeproj; path = ../../Frameworks/WavPack/WavPack.xcodeproj; sourceTree = SOURCE_ROOT; }; 32DBCF630370AF2F00C91783 /* WavPack_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WavPack_Prefix.pch; sourceTree = ""; }; 834A42AA287AEFC300EB9D9B /* AudioChunk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioChunk.h; path = ../../Audio/Chain/AudioChunk.h; sourceTree = ""; }; 83747BE62862D8D60021245F /* Shared.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Shared.xcconfig; sourceTree = ""; }; 83849133180819EB00E7332D /* Logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Logging.h; path = ../../Utils/Logging.h; sourceTree = ""; }; + 83E83F782D964AFE0054365C /* libwavpack.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libwavpack.a; path = /Users/chris/Source/Repos/cog/ThirdParty/WavPack/lib/libwavpack.a; sourceTree = ""; }; 8D5B49B6048680CD000E48DA /* WavPack.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WavPack.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 8D5B49B7048680CD000E48DA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; D2F7E65807B2D6F200F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; @@ -65,8 +46,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 17F562D80C3BDA6C0019975C /* WavPack.framework in Frameworks */, 8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */, + 83E83F792D964AFE0054365C /* libwavpack.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -118,7 +99,7 @@ 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( - 17F562C20C3BDA5A0019975C /* WavPack.xcodeproj */, + 83E83F782D964AFE0054365C /* libwavpack.a */, 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */, ); name = "Linked Frameworks"; @@ -134,14 +115,6 @@ name = "Other Frameworks"; sourceTree = ""; }; - 17F562C30C3BDA5A0019975C /* Products */ = { - isa = PBXGroup; - children = ( - 17F562CA0C3BDA5A0019975C /* WavPack.framework */, - ); - name = Products; - sourceTree = ""; - }; 19C28FB8FE9D52D311CA2CBB /* Products */ = { isa = PBXGroup; children = ( @@ -182,7 +155,6 @@ buildRules = ( ); dependencies = ( - 17F562DD0C3BDA830019975C /* PBXTargetDependency */, ); name = "WavPack Plugin"; productInstallPath = "$(HOME)/Library/Bundles"; @@ -215,12 +187,6 @@ ); mainGroup = 089C166AFE841209C02AAC07 /* WavPack */; projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 17F562C30C3BDA5A0019975C /* Products */; - ProjectRef = 17F562C20C3BDA5A0019975C /* WavPack.xcodeproj */; - }, - ); projectRoot = ""; targets = ( 8D5B49AC048680CD000E48DA /* WavPack Plugin */, @@ -228,16 +194,6 @@ }; /* End PBXProject section */ -/* Begin PBXReferenceProxy section */ - 17F562CA0C3BDA5A0019975C /* WavPack.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = WavPack.framework; - remoteRef = 17F562C90C3BDA5A0019975C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - /* Begin PBXResourcesBuildPhase section */ 8D5B49AF048680CD000E48DA /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -259,14 +215,6 @@ }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXTargetDependency section */ - 17F562DD0C3BDA830019975C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = WavPack; - targetProxy = 17F562DC0C3BDA830019975C /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - /* Begin XCBuildConfiguration section */ 1DEB913B08733D840010E9CD /* Debug */ = { isa = XCBuildConfiguration; @@ -286,8 +234,10 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = WavPack_Prefix.pch; + HEADER_SEARCH_PATHS = ../../ThirdParty/WavPack/include; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Library/Bundles"; + LIBRARY_SEARCH_PATHS = ../../ThirdParty/WavPack/lib; PRODUCT_BUNDLE_IDENTIFIER = org.cogx.wavpack; PRODUCT_NAME = WavPack; SDKROOT = macosx; @@ -312,8 +262,10 @@ GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = WavPack_Prefix.pch; + HEADER_SEARCH_PATHS = ../../ThirdParty/WavPack/include; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Library/Bundles"; + LIBRARY_SEARCH_PATHS = ../../ThirdParty/WavPack/lib; PRODUCT_BUNDLE_IDENTIFIER = org.cogx.wavpack; PRODUCT_NAME = WavPack; SDKROOT = macosx; diff --git a/Plugins/WavPack/WavPackDecoder.h b/Plugins/WavPack/WavPackDecoder.h index 1ec80d281..4d7b5358c 100644 --- a/Plugins/WavPack/WavPackDecoder.h +++ b/Plugins/WavPack/WavPackDecoder.h @@ -11,7 +11,7 @@ #define ChunkHeader WavPackChunkHeader -#import +#import @interface WavPackReader : NSObject { id source; @@ -34,6 +34,9 @@ int32_t *inputBuffer; size_t inputBufferSize; + uint8_t *outputBuffer; + size_t outputBufferSize; + BOOL isDSD; BOOL isLossy; diff --git a/Plugins/WavPack/WavPackDecoder.m b/Plugins/WavPack/WavPackDecoder.m index 553d58bfb..b53866775 100644 --- a/Plugins/WavPack/WavPackDecoder.m +++ b/Plugins/WavPack/WavPackDecoder.m @@ -10,7 +10,31 @@ #import "Logging.h" +#import + +static int worker_threads; + +int get_default_worker_threads (void) +{ + int num_processors = 1; + + size_t len = sizeof (num_processors); + int mib[2] = { CTL_HW, HW_NCPU }; + sysctl (mib, 2, &num_processors, &len, NULL, 0); + + if (num_processors <= 1) + return 0; + else if (num_processors > 4) + return 4; + else + return num_processors; +} + @implementation WavPackReader ++ (void)initialize { + worker_threads = get_default_worker_threads (); +} + - (id)initWithSource:(id)s { self = [super init]; if(self) { @@ -137,6 +161,9 @@ int32_t WriteBytesProc(void *ds, void *data, int32_t bcount) { if(![s seekable]) open_flags |= OPEN_STREAMING; + if (worker_threads) + open_flags |= worker_threads << OPEN_THREADS_SHFT; + wpc = WavpackOpenFileInputEx(&reader, (__bridge void *)(wv), (__bridge void *)(wvc), error, open_flags, 0); if(!wpc) { DLog(@"Unable to open file.."); @@ -199,6 +226,15 @@ int32_t WriteBytesProc(void *ds, void *data, int32_t bcount) { */ - (AudioChunk *)readAudio { int32_t frames = 1024; + if(worker_threads) { + if(channels <= 2) + frames = (worker_threads + 1) * 48000; + else + frames = 48000; + + while(frames * channels > 8388608 / sizeof(int32_t)) + frames >>= 1; + } id audioChunkClass = NSClassFromString(@"AudioChunk"); AudioChunk *chunk = [[audioChunkClass alloc] initWithProperties:[self properties]]; @@ -211,12 +247,22 @@ int32_t WriteBytesProc(void *ds, void *data, int32_t bcount) { int32_t *alias32; const size_t bufferSize = frames * [chunk format].mBytesPerFrame; - uint8_t buffer[bufferSize]; - void *buf = (void *)buffer; + void *buf = (void *)outputBuffer; + if(!buf || outputBufferSize < bufferSize) { + buf = realloc(outputBuffer, bufferSize); + if(!buf) { + return nil; + } + outputBuffer = (uint8_t *)buf; + } size_t newSize = frames * sizeof(int32_t) * channels; if(!inputBuffer || newSize > inputBufferSize) { - inputBuffer = realloc(inputBuffer, inputBufferSize = newSize); + void *inp = realloc(inputBuffer, inputBufferSize = newSize); + if(!inp) { + return nil; + } + inputBuffer = (int32_t *)inp; } samplesRead = WavpackUnpackSamples(wpc, inputBuffer, frames); @@ -263,7 +309,7 @@ int32_t WriteBytesProc(void *ds, void *data, int32_t bcount) { frame += samplesRead; [chunk setStreamTimestamp:streamTimestamp]; - [chunk assignSamples:buffer frameCount:samplesRead]; + [chunk assignSamples:outputBuffer frameCount:samplesRead]; return chunk; } @@ -291,6 +337,11 @@ int32_t WriteBytesProc(void *ds, void *data, int32_t bcount) { inputBuffer = NULL; inputBufferSize = 0; } + if(outputBuffer) { + free(outputBuffer); + outputBuffer = NULL; + outputBufferSize = 0; + } wvc = nil; wv = nil; } diff --git a/ThirdParty/BASS/README.md b/ThirdParty/BASS/README.md index 139657dc7..af1403fe4 100644 --- a/ThirdParty/BASS/README.md +++ b/ThirdParty/BASS/README.md @@ -12,8 +12,8 @@ already use @rpath now. As of editing, they are: BASS 2.4.17 -BASSMIDI 2.4.14.1 -BASSFLAC 2.4.5.3 -BASSOPUS 2.4.2.3 +BASSMIDI 2.4.15.3 +BASSFLAC 2.4.5.5 +BASSOPUS 2.4.3 BASS_MPC 2.4.1.2 -BASSWV 2.4.7.3 +BASSWV 2.4.7.4 diff --git a/ThirdParty/BASS/bassmidi.h b/ThirdParty/BASS/bassmidi.h index fce6e6d47..59c04ed77 100644 --- a/ThirdParty/BASS/bassmidi.h +++ b/ThirdParty/BASS/bassmidi.h @@ -1,6 +1,6 @@ /* BASSMIDI 2.4 C/C++ header file - Copyright (c) 2006-2022 Un4seen Developments Ltd. + Copyright (c) 2006-2024 Un4seen Developments Ltd. See the BASSMIDI.CHM file for more detailed documentation */ @@ -25,6 +25,8 @@ extern "C" { #ifndef BASSMIDIDEF #define BASSMIDIDEF(f) WINAPI f +#else +#define NOBASSMIDIOVERLOADS #endif typedef DWORD HSOUNDFONT; // soundfont handle @@ -58,6 +60,7 @@ typedef DWORD HSOUNDFONT; // soundfont handle #define BASS_SYNC_MIDI_KEYSIG 0x10007 // Additional BASS_MIDI_StreamCreateFile/etc flags +#define BASS_MIDI_NODRUMPARAMUSER 0x200 #define BASS_MIDI_NODRUMPARAM 0x400 #define BASS_MIDI_NOSYSRESET 0x800 #define BASS_MIDI_DECAYEND 0x1000 @@ -76,8 +79,10 @@ typedef DWORD HSOUNDFONT; // soundfont handle #define BASS_MIDI_FONT_LINATTMOD 0x100000 #define BASS_MIDI_FONT_LINDECVOL 0x200000 #define BASS_MIDI_FONT_NORAMPIN 0x400000 -#define BASS_MIDI_FONT_NOLIMITS 0x800000 +#define BASS_MIDI_FONT_NOSBLIMITS 0x800000 +#define BASS_MIDI_FONT_NOLIMITS BASS_MIDI_FONT_NOSBLIMITS #define BASS_MIDI_FONT_MINFX 0x1000000 +#define BASS_MIDI_FONT_SBLIMITS 0x2000000 typedef struct { HSOUNDFONT font; // soundfont @@ -136,6 +141,7 @@ typedef struct { #define BASS_MIDI_MARK_TRACK 7 // track name #define BASS_MIDI_MARK_INST 8 // instrument name #define BASS_MIDI_MARK_TRACKSTART 9 // track start (SMF2) +#define BASS_MIDI_MARK_SEQSPEC 10 // sequencer-specific #define BASS_MIDI_MARK_TICK 0x10000 // flag: get position in ticks (otherwise bytes) // MIDI events @@ -278,6 +284,9 @@ typedef struct { #define BASS_ATTRIB_MIDI_SPEED 0x12008 #define BASS_ATTRIB_MIDI_REVERB 0x12009 #define BASS_ATTRIB_MIDI_VOL 0x1200a +#define BASS_ATTRIB_MIDI_QUEUE_TICK 0x1200b +#define BASS_ATTRIB_MIDI_QUEUE_BYTE 0x1200c +#define BASS_ATTRIB_MIDI_QUEUE_ASYNC 0x1200d #define BASS_ATTRIB_MIDI_TRACK_VOL 0x12100 // + track # // Additional tag type @@ -369,6 +378,7 @@ BOOL BASSMIDIDEF(BASS_MIDI_InStop)(DWORD device); #ifdef __cplusplus } +#ifndef NOBASSMIDIOVERLOADS static inline BOOL BASS_MIDI_StreamSetFonts(HSTREAM handle, const BASS_MIDI_FONTEX *fonts, DWORD count) { return BASS_MIDI_StreamSetFonts(handle, (const void*)fonts, count | BASS_MIDI_FONT_EX); @@ -389,6 +399,13 @@ static inline DWORD BASS_MIDI_StreamGetFonts(HSTREAM handle, BASS_MIDI_FONTEX2 * return BASS_MIDI_StreamGetFonts(handle, (void*)fonts, count | BASS_MIDI_FONT_EX2); } +#if __cplusplus >= 200707 || _MSC_VER >= 1600 +static inline DWORD BASS_MIDI_StreamGetFonts(HSTREAM handle, decltype(nullptr) fonts, DWORD count) +{ + return BASS_MIDI_StreamGetFonts(handle, (void*)fonts, count); +} +#endif + #ifdef _WIN32 static inline HSTREAM BASS_MIDI_StreamCreateFile(BOOL mem, const WCHAR *file, QWORD offset, QWORD length, DWORD flags, DWORD freq) { @@ -416,6 +433,7 @@ static inline BOOL BASS_MIDI_FontUnpack(HSOUNDFONT handle, const WCHAR *outfile, } #endif #endif +#endif #ifdef __OBJC__ #undef BOOL diff --git a/Frameworks/WavPack/Files/wavpack.h b/ThirdParty/WavPack/include/wavpack.h similarity index 93% rename from Frameworks/WavPack/Files/wavpack.h rename to ThirdParty/WavPack/include/wavpack.h index 7a8b9823d..24ccfb13b 100644 --- a/Frameworks/WavPack/Files/wavpack.h +++ b/ThirdParty/WavPack/include/wavpack.h @@ -1,7 +1,7 @@ //////////////////////////////////////////////////////////////////////////// // **** WAVPACK **** // // Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2019 David Bryant. // +// Copyright (c) 1998 - 2024 David Bryant. // // All Rights Reserved. // // Distributed under the BSD Software License (see license.txt) // //////////////////////////////////////////////////////////////////////////// @@ -146,6 +146,15 @@ typedef struct { #define MIN_STREAM_VERS 0x402 // lowest stream version we'll decode #define MAX_STREAM_VERS 0x410 // highest stream version we'll decode or encode +#define WAVPACK_MAX_CHANS 4096 // max channels handled by WavPack format & library + +// This sets the maximum number of channels that the current WavPack CLI applications +// accept. It's somewhat arbitrary because the actual WavPack format and library can +// handle up to 4096 channels. However, anything beyond 256 channels is obviously +// a niche case and is not well tested, so this lower limit is defined for now. + +#define WAVPACK_MAX_CLI_CHANS 256 + // These are the mask bit definitions for the metadata chunk id byte (see format.txt) #define ID_UNIQUE 0x3f @@ -167,6 +176,7 @@ typedef struct { #define ID_WVC_BITSTREAM 0xb #define ID_WVX_BITSTREAM 0xc #define ID_CHANNEL_INFO 0xd +#define ID_DSD_BLOCK 0xe #define ID_RIFF_HEADER (ID_OPTIONAL_DATA | 0x1) #define ID_RIFF_TRAILER (ID_OPTIONAL_DATA | 0x2) @@ -178,6 +188,8 @@ typedef struct { #define ID_ALT_EXTENSION (ID_OPTIONAL_DATA | 0x8) #define ID_ALT_MD5_CHECKSUM (ID_OPTIONAL_DATA | 0x9) #define ID_NEW_CONFIG_BLOCK (ID_OPTIONAL_DATA | 0xa) +#define ID_CHANNEL_IDENTITIES (ID_OPTIONAL_DATA | 0xb) +#define ID_WVX_NEW_BITSTREAM (ID_OPTIONAL_DATA | ID_WVX_BITSTREAM) #define ID_BLOCK_CHECKSUM (ID_OPTIONAL_DATA | 0xf) ///////////////////////// WavPack Configuration /////////////////////////////// @@ -190,7 +202,7 @@ typedef struct { float bitrate, shaping_weight; int bits_per_sample, bytes_per_sample; int qmode, flags, xmode, num_channels, float_norm_exp; - int32_t block_samples, extra_flags, sample_rate, channel_mask; + int32_t block_samples, worker_threads, sample_rate, channel_mask; unsigned char md5_checksum [16], md5_read; int num_tag_strings; // this field is not used char **tag_strings; // this field is not used @@ -209,7 +221,7 @@ typedef struct { #define CONFIG_DYNAMIC_SHAPING 0x20000 // dynamic noise shaping #define CONFIG_CREATE_EXE 0x40000 // create executable #define CONFIG_CREATE_WVC 0x80000 // create correction file -#define CONFIG_OPTIMIZE_WVC 0x100000 // maximize bybrid compression +#define CONFIG_OPTIMIZE_WVC 0x100000 // maximize hybrid compression #define CONFIG_COMPATIBLE_WRITE 0x400000 // write files for decoders < 4.3 #define CONFIG_CALC_NOISE 0x800000 // calc noise in hybrid mode #define CONFIG_EXTRA_MODE 0x2000000 // extra processing mode @@ -217,6 +229,7 @@ typedef struct { #define CONFIG_MD5_CHECKSUM 0x8000000 // store MD5 signature #define CONFIG_MERGE_BLOCKS 0x10000000 // merge blocks of equal redundancy (for lossyWAV) #define CONFIG_PAIR_UNDEF_CHANS 0x20000000 // encode undefined channels in stereo pairs +#define CONFIG_OPTIMIZE_32BIT 0x40000000 // new optimizations for 32-bit integer files #define CONFIG_OPTIMIZE_MONO 0x80000000 // optimize for mono streams posing as stereo // The lower 8 bits of qmode indicate the use of new features in version 5 that (presently) @@ -244,6 +257,7 @@ typedef struct { #define QMODE_CHANS_UNASSIGNED 0x400 // user specified "..." in --channel-order option #define QMODE_IGNORE_LENGTH 0x800 // user specified to ignore length in file header #define QMODE_RAW_PCM 0x1000 // user specified raw PCM format (no header present) +#define QMODE_EVEN_BYTE_DEPTH 0x2000 // user specified to force even byte bit-depth ////////////// Callbacks used for reading & writing WavPack streams ////////// @@ -316,6 +330,11 @@ WavpackContext *WavpackOpenFileInput (const char *infilename, char *error, int f // (just affects retrieving wrappers & MD5 checksums) #define OPEN_NO_CHECKSUM 0x800 // don't verify block checksums before decoding +// new for multithreaded + +#define OPEN_THREADS_SHFT 12 // specify number of additional worker threads here for +#define OPEN_THREADS_MASK 0xF000 // decode; 0 to disable, otherwise 1-15 added threads + int WavpackGetMode (WavpackContext *wpc); #define MODE_WVC 0x1 @@ -385,11 +404,12 @@ int WavpackWriteTag (WavpackContext *wpc); WavpackContext *WavpackOpenFileOutput (WavpackBlockOutput blockout, void *wv_id, void *wvc_id); void WavpackSetFileInformation (WavpackContext *wpc, char *file_extension, unsigned char file_format); -#define WP_FORMAT_WAV 0 // Microsoft RIFF, including BWF and RF64 varients +#define WP_FORMAT_WAV 0 // Microsoft RIFF, including BWF and RF64 variants #define WP_FORMAT_W64 1 // Sony Wave64 #define WP_FORMAT_CAF 2 // Apple CoreAudio #define WP_FORMAT_DFF 3 // Philips DSDIFF #define WP_FORMAT_DSF 4 // Sony DSD Format +#define WP_FORMAT_AIF 5 // Apple AIFF int WavpackSetConfiguration (WavpackContext *wpc, WavpackConfig *config, uint32_t total_samples); int WavpackSetConfiguration64 (WavpackContext *wpc, WavpackConfig *config, int64_t total_samples, const unsigned char *chan_ids); diff --git a/ThirdParty/libraries-debug-overlay.tar.xz b/ThirdParty/libraries-debug-overlay.tar.xz index 622526c5e07ae55eb80681849090cce6051a2a42..57d17a28f5ef0371e0a9c85a09f36d0cbc310ecb 100644 GIT binary patch literal 3012240 zcmV(nK=Qx+H+ooF000E$*0e?hz{%{l0f5}`2q6I+0002RwD#KLs~GS8T>uvs#^yxp zx7CNO42c;M6d08$C}sAcbjG0~zuj|>X$r7Y2%h9UQz!$*wc8&Act7^q9c~lXri#P& zF|(`s9@9@xAd>IP(LjEznMu-Xbr)i!=%iv$5yJ@4R2i%Qfh*{qvDi=rY{E;p)xP;( zd;XzPrRE7vZvwbL5l_1m-Q91{2t5nF&8`sz*Y>sERS2QB`$s*0fi>4x z^$6)OV$M}1vu`_%17Q!*8lalcmk z2s@(G=aa__!&`?b!TMhor*|y4j17Ilm!9BUVth&j;0Q9)7wvk)y~9wAIh>BJ&{Gj0 zNhmw0T*O)?C_zhc_k}I3qbWi!dP2XiTZ1>C&4CqAImgxt6@1t&zHi~WUBAeyg2`4y zXu#0uHa(3F7y^yU4fln%HIQIgL_s~LPpBh5pdUJG`;7U((X6$~fM<_~AFh&ER8xo4 zs+^+W(Nv$_ws$gW1*UB6+S#_EDKKy&(-fMZR6zQ84;Mt9GmObmnf?Oxf+HT@{adJ zSU(H8lKp>UQIH{uRWgwZo0`}kN>-oeih!~tq9XD#~HP1k#XU8LQdb2FAO<8QHG@u!tNXe=A`|DB(49k z>YU;sg&_jvq*Go>?WUA|RQEbJt!{jsH?k;~W2Y=jjM8fn{eea&9$y?q<-P8{!|!W_0T*{qnZ5k#ruvu@S=#_%n`Jfbfy zybI5}DKO;7r;&hrXRP`3z}77fXEpknpCsSkfjw2){b&5I#Ow(91T;-C^uAmBZ5Kwc z^TvaY3ErLz9Qnx^myp3lz~54U(&V>o?bFwFK@E)W^_>B+CN`7|?5Z7`0Rl}YwLO$~ zq;XffPBI_)T>HY+%2z(sxEpeuA)*qEI#H#wzexSEl$L^1BCE472<^#TFojTg9Rj<9 z-?51%Ur~^0LPu8t2~SH=LwfDb9^xVqSNgxDkJ(>LzNy}7d&VpfvMnX4rJcNmnd+7{ zoPx6Ndd(1ls;Hb9Yv`(ZGWlUF^XS&CwuJqfl>RBwmhVs45~Rnj6uRq-C$F3Jpj6F! z@W`^8AQhbW#8I&W=jn-y)0SE;3zbn?QS9tVz{(s&)FGm1Lt@^trPP@wK+}I0{v`|` z@(YorQn$(flM?VQnkD(rc^PJq8sqCgE2+WZLU0dNd;Gj_G;+wwals_N=9*(UQtB^e zlr5&0XEbn40+e!Re$`Ppar8r}o9d(Y+4`y7={PQ_$l$sM4K8p_vi)TeEPMn~0;OR@J1E29e_>3>_Q|ec*9DzYw5h7%JxejRnjI2pNE=jHR5cUdk6H|?85n4 zWQe);usL#T?rVyiW)9M9^c6)ps{=d<6pNdJ-y;M;=>5On-6Q#9iyiU-)Yt+8yIk_L z(J1u)RuKV}T=rP@uS*c;SQt5YgZ*pUgD5I?_a<{-I9_i1fa)M}S>s&Gn?~4r-5V7d zWKclE2FDq6!2L4!!8SD50wDCTCdNpWTM+jKGAI^XSx*37YS5AHp zEN|iG(de$a#08;ZKVRcp;VCt(guM@;PUttAxP@seMb5e|R^_c!@m%MYY;lpdKqK!4 z`#)R*(-qrKmRpGcGbko8w3HqkW(d(_!KGSIozb7r>)^J`&%vzU09I4LEo8+2&}M_| zLVM}0cwm<+E+KS(@+L#}Eq|UB?UJfWBo@FoX4iZ)EKkIn)2O57r9EoP@;d`BieqN3 zt)-wJ4jIUMKb*Sd@V!oQ@ah|y0bj}5@-Z@9ha3W_VCi-wl#9GZsAkz}f=%50AxPGf zR8NA*4rO&tn7B(0O>0!Cb${eCyL)sSmyTc8D`*q%hbC*$wBmFcGML-g73jz+_i-A_ zsXGnz;wo<1)GFX0!bsm|1$9GdWr$aL-QqaZX*0==cUeM03il5OH4?8hx=KYOGf9a? z%7NGXgqLIY`1@6%L&e83MJfrvw=l!SKhx!9ZV9_tIkhsJ9)S4$_zy4YTPmeG-ObCq zU+M{{zN@WYdE(7Md;z0_L#nru{~Y!hC^wPdbK0f5&`+o;ORkh z2RX@)5bm`Wiy$V|hZ+44@BH>)T>=-*Qi5%B*Fs;7btPkK{%z2YqLc^RYlzrhGDm)I z0bxnaNq6>deSiyQ=V-;1yNdOPU`;=*hf;0Xl(tCUae+;qxG0H&$rH*%Av5Xk1jY6< z-Tr7Po(Qk?FD_K#(j}A#4Dr{&nqlV6`g2uc|ai8BV8FPY!T8>@DHLT>|7{Vgl-D3Nm|z z_=hq;IZcUDD6o4z+gqgHKD#_AtV6ZbmCeC0*R*?i<{*882yK3jc!R{2+OEK*e&{?rXufG!PVO?}T}A`m zP|A{?0Cw5@gDjYi@n0z81P^19pg~)eSOx=8U5+?8iWizA1(27G6dt2UGkM%)*V3+M zxz;(@_nxKkY1R|l{9&Nq?p5-XhLup!@K@qi9x*oflwCt9$z(f|r>!v2w5cG5%`&MO z#@!kZwKzgdtjrvo)2ZZ}qpPpmQxK8vV##r0nP;iiM@!IA*Dz%6kR3AM?7mon579+! z-=$$&43yJ*$kkV#F1ZaK6W{rqd<`|_1;8HB3O2W~0l4>cxJixxc8a8z<=KBZm*fs( zJ-7#EH-d_zaF%A5o)RP{gQo#6a5*>MI?F0{f%hhuPieCJlk6+v>=0~}vzxx)YlVTf zmYYiZxs+y$_aM^R$HsV@{7fpD0SVYY;&eD83!^{Zo6Rx}5nH8Ccq54!tTH`{b ztCvb^{lDSTfM1l?THtBSTpknomj8s&ALLItESwfXLz-|*Fwsj@J~L|@xrnw^R|vIJ zlUc*5SFU|r@}=DgKA2+stUgy6rV;yb)?5h-Y6zrx&dEf@nO8-PYfszmJ8KV^kNh3w z9@N#1w1Br%Eg0dxc`-F+0{2y*ypTO|`T89jo4m~8Sv2Zzp{*$v%5erKlY>|LNl=o7 zY?LPX;L};8hJRz`l3Emn%k7xspsQw6J85PhUuCKYVb2(y=Z|*1Q(!}BT8r!xh=~64 zc*-W79zdU?_v6nh3oxP@h2-wW4ux71VixV|JEqRWIoT~!5q63n=WV3Wtib1HE9TJy z9Bwz$Y86|5L+L*#_@EFPMu)hP+;@I^{83(jMqBmGLHa*;n7k_wE{RoZ#4lS%01XU7 z$snEeJkKZ%0}ntMp0@h(D_j3P867K6RP5?@+=|A?Fi_*uk=tji8W*4OhWXGVP{{#u z>!E5Wk}O5Yg%08e|81F7^BqSchXm6T6-*o{c7?gOFG#nR;i??} zmie&DsjiO#kJ{PJU3F#pA1gJuz_t|bjo@CKw4#WuHT1__Hdl7SOX-H8F!>8BXE3JL z;CO|v|Hv_+43W)&vLaF+D)#45iYkqn9!XzAB*NGS%bY+RoCe~?@9Hjv!g4oPINav4 z$#fsv`fdpFeJ9>p4Of%L;w$nKBz{MKpJP806Ygt~8)r9kK~oN(^cF*E95AJNf)ED+Bd1F6q<2$Cc1Us|zaQ*h&=hvhc^K9%Yr{HNn;bKU7Q?m0>VE=?~OC!|aEUASnx%zPV_( zS6e{DF8^6xu*0ah%>vNDqD10Lf*0O=%Fc)Iutze;1;ervVSNYRVS^4}X9aNuCcZ#K z#XuabKmkL60nmeO2e)pSc~EuP2Ws}U0qmMZ*m`%bfDW+_D*$u}Tnx*RX+}Bb`iMP7m zl@C~Sh?ADAZL^c7yUa>oO$?5 z*_gG3H?&K0lY2R!vC8NIBvb^&35Kbf?Y8SZFcK^38UxDVDx58yN0PU%eMEbadk z7%9z}!TUMLGq}V8?JV}47iDy-YLs2Z*p+$)3`6y|ADxG`NsJj-m(Ql$gk<2SH*cET zDD&!F3@?Hzbp*H9UloHb+t&>qwo_)pko8qXYAI?tbP{4N3__3nX<`&b0Vt#?&~zoK zQ%qgcc_Qwp7>-n9Ea2Kl0Q{ynBsAW9>42 z1Jr%0fAL%kTDj1$RM7VUE`!+Q>oe?Ou_VzAtJPCJKgyaQl_=h^3)m4EM-z-U2r%vh z?VzcE^rbPZ4^+5iia3HOn1{r+D>d0aMDgt}tETR%eMS$@JGgv$OWDN00%rEoy;$q0 z&@%E<5m1+k9cfRHog_MuUW&BVz7S)yWXHFXW6R>rTMNv8h;!Djoiznntr6uX!H`HR zN0eAbOJ`-sD>u^6*oEwa)L#fDTc5Hrvhm(hn1mbM?9ndvg~?tKAu%E5EIqyWqTa6- z;J?(vhZ||Wr#(q|k3N+&7Kb&6sr^eTGEFIkn=>9e@l%w@pYzDL)w^qQGIVVJfOz4c3qC^SvF zhjqx9Bm%mq(+`h%-;e2`B^=fJT5BIcAO{!8StFRvS-VeQW4CTy$Cm*_RqTdDq^!1+COs-&voicQv7yhec;sL_! zY{yXi#9IrWnFSYnAh5RVwMf#|nGZw+CuDudfHSp>NcVThTdqGCGb~`a5R(0*sL;v$ zMJ52&$>1RDRCkW~K6#=y+&uaTeXX-=6E zLS>@=xufv903|cnm5(-d1Mbj>L{#uxea4Pl!W!*F;>zd-NQ-Ogh zKkvzbv5_|YRj;n{Af!KDD`V5X#RFtPuXtw(Dv+bMjg^pr42)s0hnJFoxKR6jp90YF z33v^FNdM+VX`Z^Q|H+Gq(E=4}dinB;j`8H?!RL;`H*>;RDQ1Wzbx9ku(;5x`GYyBW zd83<9Nl?bMTf>l|ZRPD*ilD);m!|S^hsG=u(Tf;3+L###}eo{|M;9*@p&~kCqNQjf?49wF{nyj_M4!#~0g1Dem>10nUXA1TP z9M>}_Nnb8Hx_st|uEqrl0Ey z3o_DSs=F;QJ~%#;Jmn|v#V_>WvD~$=VmFCqxCwf@Y052~t@`VBh^#WmLMM)zSB1!t z?)B!ect#?<~ZuCU6v-YuS`6qp7{e35Ljq?9(at zNQ?i|M2pYoHXPEx6wWjPr*(2K_$K-1rdEyWAKDy&9#$`S_vyLn<`?Ru{|Rz$W5r7} zn8WOR^&G~GI#vcH2c}f;2OEm(*FoYgQFIL*KshD>2T8ma`%(#GjLsZ^b8=!k9~>_5 zX;#iyqy^1_k0ci&-?8J@m{|~i6|pN~Z?F~_zwNJ;6z3O@UQjPP=$CQ=U)tqFGktz2);#^R3vWYBLlaV1T<~sv94Z0ELZ2IUeE(AxHdemZmi)S0!g; z4#PP?%tyN0@l+wnn067iR_C>E3eyAGDlCzMTrw(?w*0wyvTesrE3iNXZv*|cFL6mb zo~Zbx`)ZnwQ%$rR*++Q=fv4ZgIB-H8h70crv(=BYB;P=e?m4z#?L+c7WpVo3cjk{s zn*kwxXdBa$2L3M3?GFaGIWst%o%}?YTz9hGDVT!Jz_4~4TJE?4W-;WQ}$89gZU zR!lht=i!(9a7@%Z!l^6X3o!l&_zvW)V6i#Dc>a86eLgth>?&%vsn7#^qVI!LGmmB? zri7mLs}$DXJ5sD=Qc;-3c8tRC`<4agC!WmeHpY5}PU-ck@#??^!}-Zhk4_1T2II58r0{Faf6kahY)}giy`ynrRRnd+ zO0zHZ>K+P6;cCFW1NhC*`-s%9QC`R1^%E8;X+vH)ts}}MuP7A@n5RyH>?cVMg4~ME z8Q9OGYcvBGZcnNB(2U5=B#k@*!IU4`!cg9LGCM|>aAI)|XGF}ce`k*65a7FaRS`{` zF+uWN_zs4!**JOff{h4NuIX4~AS)^;7+X2*Kg^f}!`e#AVh}!)(DhFfHDJsSq9+76 zbay=t1}MSI6v(SJ%g7FD$fHll0H=TUuW@epe7$H;D!9S%XIi@f&hipexAMnEViD$K zH=(}$oU(J}@D;@&slgsJ&>r{LJ`iIJIvHc0Y-p0n2{XzwNK%IEr04xQgz=rY9*e;+ zgUNCIgRGBfYU6TdFCLnE>OpN0Dh$ss(dfPE^@c=ZQt+J!oAkVNdY>%W8HveZgQ?lA zZn4G_my(l=OTxWtGYY^+go+&*5UsofzK7PT8sD9>Y%UanjMcPl6IyIM%%T;^gedT5 zP_6j(ctVE2-7HWuc}VsH*f0?qZ>F7ua-IcadD(qUQ-<&U3JNMRd<_&Uw}t^ko@xA_ z^YdGTpmKNq_8%=;#WozL_5*Y$A8DC{p)_8!9v~W=^wv&ENtPV$w1B^q5@M+F(-Np+ z83!5(xo6~e?N0Ls??(psp;xL&HD^_AF8Cgtb?IJC`<;aj`Sj9%rt%_^uOgkbJ*8?F z$sbm_MB?Kaepkj9k>OP?6*Lq!04#1XcYhNkbU%EatdlWMdJr+jG$jghY#~ap)v!_& z?;8Lwzs^aCcT#;FZuotReGj&*1I}JSD;<`Xt6iB5V*8{HO?N?Cz&@UVFO1{==5G%g zrTSlISlH+JV!O;Q2}LFW!ri^i*8sYH2JvOaKmAZHA`C}91wExR;@c}i_sBC_vHs6o zXUIQADm&87;v*lf-TaB%%NE7{+Cvqz_^M&Z)&0GdQ5c){aG(Z1xWEnsuNDUjN<~JY zIR~5FRHcMq^;1tI&Tk z{k^2p*V3Px@i{JZ*q<8Rivl>Zr8x-;7f)#YrBR$e=q<`PpQu;>fF}djgmp;91~8X| zK~{s!MJ6633){VRqb%@?FZ)}dt1S}uk-0l5yV6gNompgZ3ZhY!ZOQC;OPh8K`|&?Vf(MoZ6#2Lz4IN!l=b$XPC?UG4QT$>-k}t?2StVl zv#Wb72aHQrn}$hGXUUVRo#7l7nKsNG{g@2WYXnS>h$B(BbJle$tG4kTU-DQRWuZ3lul5YUK>OmH${eI0 z$x=MBt0B8u@b@ngDP^oW9hmHC|$V`!!No0-21mD4+l=A~xDFeML=-{sLeRYEE z$ai)vcAKCqCX`i4i;v(gxMP^Q{am-}5#4-BdVZi~ZHp@C{K?$PQC49=F<(tK-8%<- zy}&3gw6SzW;GuY-#AF)CvtKsYReM83Y&=4!8~AZ0MWWaKf2@*zagKPGlpOf~x9Xwy zz;^G0MZR7)pG~PEKrjpYK3Vv6ti8mwl$m~0K@<)PGB&*neYQC z&Lk^ezXz-|kXDPCRb+ued7nhyLUbE|27gMH4ReyZMrHUtJpGNfPJ-Z2m8PU zulKKA)yk{0{+t>-Oc}sy4}DMITvbPo24XXg{I_wGS>e`jWV7#m_(y(l7rIT!KnA2- zcpqzPqx~tn0Cox7Pwe^RpPbSF7>1R^;iFFnF2XsGAO@Ac2EbNr=ZprmOH97Ma#(FY zN}V!QW}GH;a~I9cLtStr-g$O1z+W-={n4+aY2}E0m_7`t`zDtRQ4188UX@*-`4bqckiinR6sU?WhbU87Lr=w3Mc-o-rm*#BxJa(ni1DPq6YJb)kF1_Wj=~ zNq#&=&tp|NUqsuJ70QjO*LP5@$y`uKFqnOUnLQxGqt3Jb%qj+M>ld1%Z>Ob~fYD93 zf{3vY7G%(qjk{@X_0NaIA^%e`VgaXGfb1!TuVRD(Kdsal9RE_i{z3#5P1w3vpEv)y zR9AQ!RG2BFpC1HFV~?N8h6+c*|H%_(L>#*p2q#6XAoFHW8*Fy`k!A$Gl+LJVQs2`5 zy+GT*^jX@a=&$aos*v2P3FAqke;Aa#L5}o#!WOMihWVV}I)zn==RDdDfW@g55%fEe zxl=hhwMNyh1>x_hD_JF;L6U!goYc6JXKo$aKIdqfb)KfiZ?Yw$u+B`Sfj?C6(AUhO zGPNv>fg7c0u7@tieia5|^Bw-46L#Vr0^e@DSMG@|STdo>%Vmcnd!{ii_bT6Dtkqh} z^bTZo^E{^bZ+E9*Nvzbqn+=AO(>&|xX``r{;K68z|9xqm(04tLxEK~-ZjGPuOQ|D3 z)V#6V??k}arW$1Lc?IY_nODoi~~wF(TSEX+#c|f}Vyc9WxKCl9*lxrItDLdAo)>Q&1j)NX&Tq;X-o_AC zkm-fm_C#gh94m0t)FAoQ^b6rjGtF?S|J^+h4e~s6e`yO*kF+a->4tqc5DCvUrzhGk zENKyx@;^Z=Hf9Agq;>`4ky*|W_yMX_3}ib4j*ealGwf4<*GmJ<8#DlzQ9Z~hQn-1D zWJ6fOb^Wl;SO!{bkKUsav`Fyia&tKJ>ncBp){3(x3WbFQijTn7zH7Im;i;MnM7`H; zH>^;rWI&o|FT8fxa;LicpVDx=U~@qQCJ-fzS!7ZocOYT$Z>>~&o)LpiNx351NSPt$ z+YET#;g5Z#l>X`_*h8*Pd65~t&>VGr`cr5Y|IR!oR0|v0ZDWMM=Ww5VoHe0?{ylPL z_<9z9)A^12e;GL>6#c}BR`CB)ot5VcYQ!44gN7e5t&fAdelWlpr~6-C|I94ZKFKN2 zUdS~WjOCCkPnm;CROoT$uy7L!BD-u1xA{rfV`DZ|f<+%a78iTB41n{!yct1y_RN26 z4E=VMgfHJV{r5_yfH7H-)tdwKoj6+n5!7S+n3GEC4q&P3eFXz*VB(r1>Z{4p`UDvR zG1W5RIY4t7W4|P`9y$nj`9kF%ABUWPgHr!NR-g*PKc#9;a4ru@#;NfW;~lrKs7OYn z-X?E7x{+rF!Gu-k`taTtKxvtIx-=vEaQ)Ma@lBorGFNi;S=QI%n2HXnU@{(Hw19}F z^icP2r!!&kY?=SNR^9vJJ=-hf8$>20)}(|&fQIjRbgViIbe);yikRQ8Bh7%`MQu{w zV^$PV#Vxc{Nw!$SpvuHcr0?b&9ddk|v5u#;rPHqSQo zI}@1uzYx1^DBy14BJw@+7cU%V{lWh631IvXw+w|p%^%hZ-EY0ayHD<5KFK7mQ-LjOo0Bwdk>kB+GJO8R)%U9YQeu_c1IrrB_(831 zqwiXDSqW~=!Fj>uIcc1o#Zg!tu-krP^Xn!Ibz2;2+-c$ZbDs=h;~u&%TW!!sHd zqa~LpPgsML6->tq@DSt+26_<9OUa|`rGOuXoRx`OMR9$`gT4FVUS^X8#wO%Jl?7DU2DGP`Bq08%=xG0AfMPs>a9#1xb`sn45@NWyp3r@m2irMl_z9DDnqs&w8fABX z)jYs(fX6Wh<7D2QD-)aAtij!^L?x4h*n4@j$$2k0N1l@)i1oqF5Rq1>+UHExcw&r$ z7(z?Gl{fG?U$gI&_2a>Z9KIyC+ota_RZYNA;LZ@y9vAc!+~cXO?;A@wYg@1~nV$sZMaS*H=GFNMx*P4KAHdi=xEQtT8MU^nJiT1EuHmO_AoA8>ikGV4-i1=UZoV{zw$k;@mnUKst% zf~p=U=mTf)E4`dMfd4VMbVz;%jc01Na$%wyxK99L?7S1M^es;g0M+e8s3hPtIj*u_Ovp}`ol z7hP`hDX>J1l4rP|pyUh591=832C!J3_c=GM_gYSy-$KKFxRZ79w8h-B)t1QNR#PJY z5hr^zYMi-zSd(2cdjGG}hEJ@umW0nBr6Q2J8ohx?Y_YcWfBD`U2VsQ6H5|VI^y6Ri z9p*00E0n9=cn4GEN&>a#8veG!@CfqxC^6IvUqB{Nw&wj!(%;RPo3nD^sW6Wp%fz|( zVJQnk^TXp}g?4542C2M6(H=iz$SYiZ9hG?uH zdR&>~bJTstp{1pVR)~7!cY{wOLAu+`CS%%ym9y=tx@?fe+0zVq7SCeviZ`05B1ZvF z?O7KOExSZilkr4xL)~v!>7g+GL^zNcY{a3?Thj|C2k+OJ{C5KzTC(9*Mew-Q-u}p- zQbd4u>)Nf4D8C(sVO=e4$T7v}=$D#C>Cbo|cZQOi!Y%-qaL-(^BGh?NZ7qCAT5i zLz=oXhgoHCBVA`PYR#af-V3bl6rknkuaD;24juKh0x@BUD-N6q&yKz)FAENB8IkAn zqS5Iix2cb0Q9~p7j8zO|nrgeY^QHNy8Qo0!(Tl};KHvW?z-;oWCWwj#&+j4bBjkGS z#aTt3`Zlv=GQ;0B00_m~!+dpwAbunyxt!BG%dbF;UNSofv8R9t2m4MVgQ((0x#Ng| zwFb;YFoJ`QWKKfOz<}3z@IL=1L{3#ovKb&LBsJ^NLFP>Q#hRehiKs4KQ9o=@O}#6R zc#ktghgdY-EQ~N#03!}_Z^$F5%q{E3T7<+zBgFstA3D-yXwab2EO}=;*AMl0{yMUD zbUItsN*~r^T~Z>cxGBbZ{v9c>5=q2TZ)q0}jtyf6-T-fHn1zY!3Tx_iZ0)ziG%Boz z_Q^_;usY-t#oPlo9R;0Ni)8D1@Rs6TphBGOQv}CwKyj2LLg=2;03~^>-WLGBhSk1T zs|Xrd3&1vs&Y5Td>7fIeBh1XT6Tz$7GJAbRa{&?=PiSB=t~dY^0(lk85<3n z#Ck0w18U^ubpllTs3|AI21<`$P|#%<$-NLAl4#q$4q9-Z@@#KT6zdQd9c<4755{vO|f$CUADOvQe;deCKwXNGsQv6D?#V9y*F>fT|dyhv|q_4Jn* z4(bvS2EKUE2|I&8>3f2tcah3l|_bmfwA_vdc`FWWO?MWZNYd<7rVJWRY z^Mu*FK;BeLFVqH^x~7F}mU>{U1P=Sp)_zh}SIcTreE#$A65W!ZOLEi+#o{2-d!Kwm z|AQ{5Yn*W3LPGPQ6zft9b9JH`6fhs-1wJPx7HP-Nq1`#e@9n%`1f24DW_klD)InWj zk&HO17BUVLUhnjfT3*KJ+(rQ15hB7+PbHmI!af;DgzZY<;qJ+f-|6D_ zlM>zMdx#y9a_6m_{V7W{n>gI!1@7aocb%yll+hK`v z^B^HUYqZ){+4q~>Jt5{9f^$)#GKf!7+oW=R8hqoM;ATK)l63gFE89MvFun_QV`hu7 z2oZa6O)!K&HxLjIPb1c2Ph)$mQ;l|`|JJkW*#OX_>)J`|5gO4}iuGw|5OSk}jm95< zPK(b5O4eifBJZpPL5JSGj&d>mgT44?F^;9F^d^8jKjd3M_=qmB+k1_>xUw| zHu+x%@OB1((HR$p8F^?kx<>84_d-6=Yf4= z$OYtWK7!kvSwJ?v+yg|Ekd2j!*X9}l(udDc`wbZ$xZr+B3Y3cZ`By;7tjG)PgH zP|Y|U#KbP6dD}Y73n>|sCJTRA(At52YMD{TRx-;QHn_|(3S}~4g%+R6B6(IS zIAV|@cyG%*sAD6(fLMR_brMP7v+v@Ft9cXvI*USVLYhF*FW_`K5@3ib9QKP7z9bs%|z2Ez^iCMRJI1jD!G?<1e7e_Qm0% zi*V#sJOIWX2*MhdMD>xuFF%o2^S9@pD+e4XGBj5Y^zEIjS2bIe@>W+Vwq>?fPgoTe z=mBn)DUDY`ze74vEK#kiP;lEST;AI)<%M^GNqiOQ4!DXW6e)5F{kg3w+hFc`qW?e zhvJf_U@oTOT^7b6tnTjS8{;r7d(Ari3A<_D zGiV}gt1JHHW5ZVI1Bsvd!YRwyl}|29IS75Db#kN5j(_C7>^nW~SaoeJAwX%%jYFy0 zdZxon3R;mSBqOabl;Wkjh;YQ@E`Oif5e&L4R$R{nTzfsqEk=ld1p>!AL{t$vTgG1n z?rduVyD}xMCXzzEgO%$3issCm-@pB!$|_`T6%I}W5h{+n)m(I;Ol>aA^SrHDXKPdl zZRU_Nx?dy|eV6i4@iI=QNyYL7whGv=xM0`BKD0$Zm0WP9^un*zQi;q7F`s@Q%&bf% zkeS7L9gHu8d81hxGcG8iP*J`XRil_li<@?sK^_=ZM%^C^DqNSR{!~mtB10}(;X=CW z1RIJx?lF^yn2ZI9I_1Bt_jar{@Nf@0IvNW3*RgeTC{R-#TS-0 z!b&f^hbhK09$0Ud1alZg(En57kcUoGI_s()zbtzQB}sA z&*e&7d!z<&s>;yIW<~?!(!lA&Lit2nl~e)M;FJo%>$Oi_nq(qxr!Ek3Jt>=#86V7e zFdW)>;Y97fzIcF!oYjz+>68P#JxysFpa5=#oq}rer;vMN5%e;09Zw1LfCSz79z^Niz@a9P_d#ge1RgR z-)7e1vQ0TqeSg!-i^X?u-Z!BKm(aj7dUU`A1;X1OV>y-yQ%OmBD!1q|=@|lmNZKJu z$0uzeb`6d(Q)c)v)$#;${idb}qAl-ds9WJWDxFPXQsvqJ#^S_J+4tp(cj>di6EPpr zp|o+Y%%pY}1I;xFI`5LzrJT`|mvLjLZ%9LJ>->r|f}lRRh|pB;MQL}UK3c@1@WPOf zAxc3@QKS3PIyxNY!S|RZdGm{!V8P0=qM2;hOmf`XlBWw7XYT&twPcS4gZ(L#ZU)zC zQ6e99jt1#sOu>^F9QCxfSTli0*?EmGyXXacAvtsWnl-;<9)|R2RQ(~{TMVKlVs$bX zE{*O$)X7BzV<$ryJn?&C#akp`GCUbM;82 zg*S3m^$R}z&?e1*cVS$yMJ6{40A*3B0G9`48>z^oLEJo(`0E0UQo}Or>bT3!sJMCd z3Bw-@vDjDyRN#b6Yj9V|N<+BX-FLcBPj%<9+z_!Nva2#*R2iDMhD}Xs zN?H9OJ1%|!-1o>1TVS7ZGv+O*+cv?moHJ2_TmK&jvJvTfNI5-a&r822uU4wP^6-w1js;vF%u+pM@KA$)*!&|-!MCuA|adb{IFZ4ssbiW?*ozy+X#6S&hium<-G zz4lZtb}@0!QGxtAWS@e=r7M%nSTqJw#t98{0>Sq9gqW$sZ#YjC|OH4%9VhNd* z*I}$rpZ&|#$cQ02y7hs+mTuaPjk?RZBsmGG+219_2+i znsTiMchm&*dOe=|Oh8D*P?;ck5YYIFT_BTWTqrA>Nc|72Cw)~M#VSVCbt4`~0}4lD z)rn}j>0OsrEM~Vf#d@?y5tl{wJDzTu(}8D!T~r8sq#s&b<_E6bD7H!O>rqTreOpW= zACPl&vsXi{5s^r|M9DP=gS{SL$CI1RTj`JwY$hSdeXXZ6SuJY6CMt&a1c)cbit4D@ z%S3NQNH70Pw){Uwy~R*qMGL~(^wVnP_QpLvHkbr#%}l93pI#Zxfj zDVzm*8HW4KXE>^|!MTyyBMkumOQw|o{N&j;*?`!M#{{hQT0*h!*({cBR5c5d^QZXK z;g1*z=GtXG9>}e%YRQlJY*Wlg-Iuct=Q+X({EiFyLK@xKnno3q_H~k?`aB};up+DJ zCEC^sgbRL-(msz8i{u$dh3q8IoLpK=(nloXiPE!;?%FV^M~$!rE_g9UO*(JcA`NmsiUYpg7|>HgHrG zHW7C-6d4UX)LgE~dik*CROgUjeryT1C1NU(TiIg4)q5|kSsmMViViNT)urB;IH!cm zQcKfM8HlM6aL?Eb{gLDG^#jVVN>6$-jI^OS%-d+&tT|+lHIs_GD4D`UwRMNUifHG0 zPU!Oc-KpWl*gr=9sR_Ty)(@}$M%N7f1-8u;;39ZYso0)ZvZY-$&R`6B7)PgjH zZ#3YKRVN(yCoWiFmp&O!UT;Ar9hux;9|<@(nqLgh2+I009}%oq_Mu|~v9Itfr$g!Z z&+Rs`=oOn+uNe*>whwGgP*)>y*9rPa`Zi{(hA;`GHkuy%NI~kFL9LzoMhy%ufCitU z%2A^Y1KmvTnRaKakj)R<;Ree0b0h#sMx)~IF^tL6VtwN4)-z5oXfSg@kTbJwWr7H7 zS}BorCp(~QL;ol2qf7B3*{-sb5bcrWo$RM&rPJTJhX~4P>s33H6IBUSDU(V87ByY` z(q+s5be0U4R1y8`lcL&b@N0ys_k zUdf?ATNPvmF;PU09zG1kPL#a3ZD=^ee%ACk6fp00CnkbA;Ljr=vS*;bsb^5F_?$Bwff&KX^GtlgPP#A- zd;n~P88wX^grR-GZHtF@9iAUDN~u{whs;?r@ei={G-#bJ!>;)*aM`xQl$Sc>xcw8< ze>?auwco~|_t%Jm&je8PYK1lSFB&4JKJ`g-ZKuLE0GmL;V?Mv>9z>B_%b^%zQ zyTY4GFJF=v_KY@r+rH$ZsSn<}K&ITrPrP{nB%6~eOk5uff9T(x@^PwO6HJfh7_e}L-(DbA{fFKg= zi5PkFIHh}T83=jR;GN-zjc1j76mj=|U=f4h!&X-^EKvx;;d)z^bx2|wi;lDvO-Ukr zT;`j;v|rmG4gHeX?(Aco{3Hdc1R_a(P(6nCX@*McqnjLJejEq)9DdmOTVzqo7-~?6 zjq`S{8;w`e2E(dgxgD-?3Qb}AM{qE=)@bY$2Qg(xw~mvx3=laQU2UV)+%brbke_{3 z60C!PDjix~g4s4=?|UL{mN^donLFeO^}O#t7;>jnELB%<3Z=$t=Ex0p8zHV{*@QSB5dkIAFVJJ9I}Y;OVMvKNZM5~7V_+%@Ld0vWqc4rX42(qri! zikvbXOIPIb0?+p1f$iuV@r|I4S}utrtw`8d%t_1kRHXPI$9oOi$E*gdC$|O=gY-xe z$mR`}XY;am=!RzThucUn1WU>#=^7um^N;#PwG-r(grU`>!J>PNn1-^M+{UM2I`D~P znO;(tTPI@rlY)D6&xUdLm0**bjkZu~c({RF$FkrHL}^w16jnFXq@!b3J(-FUlaLS_ zs??{vQ29!Ytr3sZpG>&HdrH@1<+D0GN8EeRW91t$60XFlzu&RJJo-eDu%|_F8MVh5 zeT)U_3?muVhe?X4a}m9$ZetB*J}`48Yf9K|%~W%n>#2Q*SHujgh*fE?_}|vIZI8g7 zQhz}vVotpS!S;(Wanp??mLmH>O=rY@>+36Nw+@v%3?5W^Di}0o0M)uU)u8gfVbseM zWG0~dRf3|bi{bmkPQox)*|`$=(S?dMNAM9HgAa4n!ReP>CuPv&Ng$cf`x{NnsA>0X zgn2EYXD9b6VsJn$=>CkTtsABC~#NHuM#F z^OD%a2ww?!00mo74VeS+aO3RF{L@k`Z5X-cuBnt5?U}PLs;I#9TeSDHezxHtJB&bs zF|q2)d?`C1502Ldl7_!An9oBX4V3+4HWmWo8Rqv&$Krl+Z}bz)ot@>ATN?Df@}TDG zv5QW*#P2#v{t{hN3g)~M&Sk3%3f-nAd5+J*Qsb(*Y!Q|0E6D@0qYl6Q1n@mA#uFM9 zE*Z(F$ctQM(@M+vb)%tX*#!fx{=$(^imw+7TN>TDu;CxiF+i4r{51TiMbNQ zoVUOkD#rm=ea-ft=FrT!F5|yh5BCC3-x}c|dBPO5IV|l{FsZ-<SMV#GQLe+vSN|bA8O#Ngnhtj2oQXSZH*G{Lb(=+V{TA48PP!n4L9KJJShJck}GTNiQ1@>a1IK(VTyq80AshT z2v+J-h(iRg6xQNci+p*xnrFfJBPD|APEx5m$@KofTAQJ*%ujO?&R1q<4L#EW2?iH} z6{3Aw>Nck@+y9ZSH)6;$Qkf~-4V|H_MMsY4bP!mieaw!KLtOJEGM1?=E3Is}{9Z*( z*q__ja)9%qtGr#09#gKPMKRz1X2nQ5f87}ja-8k2ft(>7<&wI zudbjupfTL+!)Lu$s1p(D3Z@p0(HQgUJh#yn@SIGguyvouHa1oJ!cemWG!;0xGxFDk?0daGG*PCD2fZ;) zPM(~5kQBKdBwW(ZMu?}L)07f=aIL}Cv}y?^z=v)j5c`Ah0Lu2}H#8_yJMGGaKsACe zDTjPUce+4brCZe?KUD*>3x=3|QqD4~bmFJ&KJNb^N*m9jx7nPkAY2iUmQ`G;1bewf zmA8~)7eXp2CB|wCD7 zg7yb9;WapkzBmXRQ^CruqnVR|5Ey4wsTRvB$+@7btfxdmwk%#mf++qa63E?>wnlu; zRt2ZBs?48V73(5_PxDXXXjnSvd7%X#yieB!7#`8E$5xrhN^S!vP^K6V6;?5KA_xPc zVMhj=|E*lmpn4d7yM2yTkdkZeq7Yu3`b{BbD`F0H8NwApN6U2c7Lx!8^~g6KaM(-K zGxzR##$&4Hd<0KjdG|jEVR)n|OyjE>coZa+<~hH!st(y#bJOdm@+j6lb@^hkMFY zJ{N;(x(CqIAf8eSN^IjJYGQMX^$DZ~yqS``3CI0-QrJyCNiRaoW`QYrzMUc|G!d_2 zu1=oq#G5x`5=VS$k_#@noPLzrK8ZgxT$}79s1rlk6^sUEY+J;yU72tDBCHsCMz%-yz zUCko=UAIUR-euB@d?iVofDZ82*ptMlX)e%TGINz_^4hLQ?vx6!PqS4J`=WDat_q!e zS}n@qNoSbxYfq~Kj?Twa`Hn4^^x<;7Z{3;RWi#pqRgl61`&UOQyb?D9_)n>?z>@K| zwV<6tPwebJ!;){#@z8yrRx@mC?V-)~0x#*k+%s$E@)z`pJt+0&o0H5?;9E3!d`W9c z9-_>6_!Ne&Yif2qMqmxDI+`-2yWVlLF{+Gh zSnrZ9*+t12;D?LT@HeU(PHC9rnGjS)LYM;DPk*ckSmotFSZd+56Fe-%yX;}y=nR`z zlpvePV5of0njP*ZgcucnpJ{H(*V{-)6v>@*wJRj*`BnO zs~|41_QtwyJ$8$&Axvp+{`R(KgEAww6})uNp>D{92C~IF1BSyE1^FxCflA(ky{woC zNmS)bt4;WcDRc=yv{Be79N3RM3$fvmA#3JjGLDZ@Xre07fHbcEVM3EI_Z2nBDQ26j zu>S7l29Ykt_a8Kl_}M?wP;utBXYR@oWC_j+St@A*(rDe=uYzKLPnx)hoAkTbEh@gi z`k1E_?ngP40JohTKkEUMO^NOn2wKSFT{dJ;z7_8dZ&U!7K5_2A!x4dPy-Z7`z@yOk zP0Rh9fQnvygmC5p z&Ba}B8i24-SdS|f+4(B*nV*_P_zj}yTV3XLWid!TV%G-K#EBR`_%&8i8vyz~8>yx0 z=e~3L!6F$!H1D92PmbWxikZauM*7^Xx5U2ANrt$y!mD?v=MU5(hqf_CQB&$%d=0@Z z=4-#aYRX9Y-aWwYJRje^33Ib(-9q2Qw;IZBA+H)h(z#TA^|BW@Z{XFgKfeAX>(R#0?ecHZzF`cf*2PSpI%|RaIDADLF7*6(6mY+m`k;;TZ`j%q~E~ z!ZMf_N|{}GbMxwh=tZHCDyKkoWdkL?)z%zA2Nncg+x!PQ+rp{rD|YbHi&-=fn;xXF z!q!|eHK1h3`Jg2Ue(^N`qa0;MH4cNDDpVZsnfL^)HX&8q9*_vVAB@G+cbB8qc? z4dp*GurAN_{1gigEwd2Xqsmu`Boo7k;u^WK9z%P^gLx&SnRaq>RqI5|Q=od5bA|dsTi&l>JyxXPe>Xg%L z!}nPkHIoP#udfsk)!D*up#=D6nBU2aA~7t5sSixZ;ICFh;<0jH{(qj>t=I$zcHC0T zzuVK)jQU$V8mjK3A~&{3U9{>*2hD0ufQhJ;O9ky{I>V+n3h4l8W+iBhY*3b}pM;ZC zD&|tpRk&O5a- z?WnOenTtX;$;C8Otk|f^Upt~vDQ(FfZ#RS**bfE*TfW!O_P2}DsG29=o6sV{2g9hl zvJ&AAS z?Oj-Y4UuYE_|EOj)#mAtTO%S{qGn!q*~eZ8YluhOBdgbz)ePHUV-)u*B8c`A{Q_2EoCwp!ljvWJ ze$H0YH04ZMXB-qj;s@E#5v35}k-@q{C}PD9hS;S;7t=91raUt*3MNA(zR1*}3)f;n z>0F0xhRNT{4V(X+(T1l_tU`G`;)Ec3LE~lw5f6N|mF@ATcf(&11I#Kj#o{13y@T{Z?#)a^&bDqOL9o{0{X$h-5d z5b3AdyxEQ0D#V;gUQ$GfCnXeOFS&_!3=YesbHL7`tMh4w0`(B=JOCJAM;T0QCYl%@ zavXV8f)Tvmds8S4vb&n;sIB9QsKca$F54(^NVU%;XvxJf-m{fe6q}PQF0af8Hf0p< z1#B^juM3;(P|$_eJd?If)I4lW4B>h7z?yKB3^nhjdLfdqmjQLiLxo&+3_>PE@4gzx zrsCpTCHVI}9mh&4ZuY`2shh)tK!cV&HSeFuBKPMS6BXx z=NtN#`L_gr-f8F=rxF1C81+TFu2b$1?KDvg-1hce7QZ&>V-}bSf-UG2+OiXpLYl4! z+!JL$D@2Ot68PJSh7|4v}I{3S6#QB6ZTGyuwmp3z&jhIf{||5;v3eYR7o zZD}M8DZ{`DomMYB zvXY8yHKy~Z>gt?{0X5dzXNQkUa**(C_TTSA!!hW{3jTCAS)ns6$;(ce%Z4)RPPr_ckWuRS76reWasQ*IIbKy~KnyHysj$ zhLq$ZRZXS(f)4};Tie*J9yWQ`Sz4J?HP&T@*O4CBc3aQ!2gmj$s_R1L0xTB=IbMS} zdWJNsWVWx+X3VV1jd8hSW7j`u>C07Oek|_w05YH`OLwUZEAd zPiW|qk)f#A5Vs``AE&mmI~zulLGYSzb4Ggs{cnzW8|KLSM3|o(7;DvS2uODSW|^qx z{QP{RVY3c6v$(U)VePfSM|V#}?P37)zo_-QGnk}ghsAs=$EoZN*cEMGIK8^mViHovG{0jr!!z473G!BqouYfocHi*98X1uoB($PKH85i1oL11yyIoMvFcr=V|D za20m6PW?qKRdzJk71Yc*%GXrA-5!$zd_1Dpp9=`%hm#}qGx5{{6{ED?R)K_wrdeME z!N}ef9$kl-R3aH{hC*D07kIqUDR19{2X7cq@(g71xH`g^cT^34DjIp+&nI8wvuWrd z?iaYdQtjwy3~g|ojwUYli#1gTZm87q<#OtYB-X{OVuv-Vhx~abQ#CC1ULnUgh4&XP z$6ZY`Hd0H7^Xaf-)LBS7xz7t!DY3tH;`^FfvaY=~%~& z+TMxcL+pq{$@G!mY94U_B*N9zqBJh^bpm{@&jtk3*(+a`fQXSm;t=W9D z1zpS{$EcV>ubaP)_<%Y;N5j62d@50h3Wwn`gb+O^JB$&8{N=Rg)#en#!mTXhPw`VF z=Sa@ADPcN9rzTYppl8{YW`E=>W52m>jV8eC{;oaCUw6`3Ye-Dl90|zLsKuZvlrQQ| z8Wib}B3`uqG>!xj%mA)P@$f4PPbDg%=2W}emCVcQQZNU;^_d`1G)Pft52lk0VaM$( zVbhNvW`+o%P!DxZxty*2r3S=|hzP|WVnK9&j=w%iT+NzWB6f%04Iuk8C$iPe%u&{A zzwRJek$DCW7uzEBbPIKy??U7I8?**gwi=ht zP#aQW+HcS~c+7e!{K5~cZPJv7xrrCTRDxL8)hJ%6m!kyF4X^^zx#lJKD=BvO#rU}w zXnokO1}A`gQ|szoBS$d~I2}Mm#o#)h3@`^=GkAhZWMf zTf+e}5C(@}<7D{(?e0Fh>RW3|athkcp9p9cZIJ)@v6xOI)Z0hfPgc^~#3C0vz&WE~ zD3Nf@O7w*^nT365W!Aw0VmVbdvU?2rS5K9ivCG*FcfhT&3 z)bvKZomiD*W5Z0jpMLy-tO&e&jg+;o{+(;sjO-~=|1`C_3X&V*?IoSNGK8)X7qY+0 zk!EzOrTKDT%oZlsT;{GftH)~uVb)m|REteYI3x*pY>*>1(hlZhPW#~EGDykgCuWB! z@7^a;K8<52k;sRt57bB%9w{EE8=;c(V#H6}61APcMue=M+G%ur^Sa}JE+r%DkAZWP zXARBfFk+~k*%kjiSPkn)yH;nrts zNu5AG^kZgq(lfo2<@t{obFU^jHB3774|lFx27hi>)bPgnOJ-YoZYs*wI8+VbZAStu zhE7CWcMa=8OL-k5;-qLXp+mbJiKi3Aa5v$YN5wb+QgO&fEZb1KX;Z`$`YiHg=F&!J4CFB=4 zCr`18tD{OnQUbo|0}yZ6>dO=bnxM$fgw8DT3Ov8zqCzig@+J5d1ECnAuLUFo7Mfep zX8g$+qu65J#K}&r9>|H9pEfERz$XYP6Lrq$*--tXuq|;ZbfVIXQ-|@XZvR@hg=-N` zn7A2cWH9}lfgGt=HsVtqx3N(6Ts4IxD^=cef` z1@H$T1V~UgPm6UC@rFn1LvvC&h|_W!$rat;X~;I#{#_Oxz%m$wL2%|a60+1X4WBR? zkT8?6Y_=f_u@LQ9u$@!~s?5%|7VE6m<5Z`vlNp#F5k9>7-RGug(HOy+D#|R)!w)zh z(>z~;z=M*W9?G3(ajUXsP$CoJ#vq); zfm+FZk``8VvT+LvguZX#F5h4x0{%Dn}=rJHeFvJlvbjkdBT!IAXbtHQFfGG^nBAd}Mfq9+-f zDbz03xB6mjB-6bU7x6dDRq~AuW3ST z)%u4)*{Ka1UURA58C4++N4ibvv!0tHpj6Ej^jB~Lu!^MqV?$N~&qab@G zxIyvnE~0UaH~>?Jx+|}ly5J-AS=*bn!k);hYri`Iffh@47R2BNPTfMSdY5UTv4$rMnSqh`7&p-=S= zY_P3`&T)HBGt*?@@aB`u0R&|Y!lu1xY4j4n{hC zgtI>@j0f}KW?E%)(Klg^x@2V+tUG7{e{2a6G4{yd)Hx^mJfHzCzP|yWJ?|(;I0}9? z8U|`55H&WjC^0$^kn4Bl&ob`YV7K!1+3*vL!kBUTgFkY zLx|vazdP*86%VaYgg?O1W+ch^NhKic6kdo?Sr5WyBJf-|?PK>!k8kzF+T9YE(;oT9qMRJP^qLMaaIhgz6LeDApJ^An*@ z|1NZy4z`aQaap`^HF+i_BI1N8NlFEEvj0uOVe;%`x2zXDIrK=V>D2D$jp~Wd(GvTB zRYK;*tU9vu5W=BI+*C*KvmwhkUGLZ<)l*9HD?Vrat3RRi_i2L(Z|Dwo*4PA;a78F$ zWfoz&>^ChYKOe##-2W-C5B!X*b3d+^H88zD1a&jG^qNhxC(z%vjGI{d*!#)7dxg4= zz;u85t(@@6C59lJnr3U0p<&DQlg(>g5eW&n1%lOar)h{KMY8QXdO1>i7`O$eSHNgM zok*(aoCRDU+%9)qYnX+@fTreh!;wq5TpZ5ue{9@!{+)`hrt0xy&39%P12 z+LAp=oS zs_`=*<%49*;)sR9bWP;XnR`Rrv_I~ahQiFB>~~E27c@u5zQ8vXv@4Ko{&%c{M1a@7 z@){c-{3GF4v%T{DlMm5R)(QM|YIVYaX@^b|TF@rSUruwWDs?%`s?pCIlfJNM@GyY6 za+0uP0|1|;!7GbM<(F9%Oy6O1(-FvLjmfBB_~i`|o)e2-x)z*1k0rd_`8YnGcDDiI zG(pbEwecO~-M52~EJzZNxzOHv|D(mU-33Q!)mU+}O?=aA0Cnb(`sb8DI~4x3$I)eM zpu|U$39lvAfE<=0v8LIL4T2p?Mn=quIR z_@(EX?wj<0D(MyzCCusP|oDyiHk2ne4+41K-NgM#r~l4CAcMk zu(p+Zr`Vidw*q5{fve}rq~^8(DG;Qd{`4*m=TJz|o=TMBNJg~iYGVUi#>hLv*ORX{ z-4&}NYWWfqcZslc#tHfjrO568@s@mXq|U%FIc+|Ic!pd6ltSAz%=0MZoeK#StJYB9 zDm=GQTo;1x2bO3&--eT{svu_W7jHmfOo#B!##`eJa>YNBNo-BbK`j%~tj&TZwOn53 z)${FYP^1xzlFS?EHa#{oRE+T}UkQD7s$&Cn7!h8yvo6_@HpPmWyjNye$Uj}3Yqc9e z@;hZi;{!54kR=f~`dBf%tEVYBcZwYH*1A7qe3#;JTG* zm_(Wt;$vv8o73F+cZ&YO(mewIkV}wK3A43(!*R<-ka2HKgu`wiZTk7}yNN3iOSO-Q znCm3>UpO=NdAcV@%=BH`G`AQQ9jJw2q5f8EU@

sg?Xr4pm;YT*R-t*m&wFtl@nN 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%0AVm5b3UB@Uko9Ak02%UEofH!Rx?iNdEd&q| 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

deKDA+T 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 z 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Ⓢ;$$NAjxXg4opftmM(- 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

?#(ME8l1@JcsQgFE@iW6Lx$POTBxb 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

p8_?iy&+r4d>W0YXv_DTO$O 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%0A5|Hqty@Ujxu_nsHA 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�RWJY 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

  • wfP{Z$_~tLk_17mZsldXqL5{ZGjGSkM{x5d*P}~SufU!NX$)qm z<|3TIN>^E-7na=%!O?F5R7NvcgjP#2o{HkRU3efMKajLyZrK7>a+r1C;`jMws(l@j zx6({c4r#FilyRRmQLDDNpT=|>gtGw$;P+VWEbbWSL?OM{X>7q$g*nQ3aI>Th;V(5! zKT`uq$;sft&kOcYZ`I9WKTr4CzdN2V;!`!dOuhmufe9G&X6=QQ#Kh~EeRs~#C+Ar0 z{q{@hpL94>NU8`fpw*gNdkg%qvy4ZC##CC}B!#D&R*Mt>VKBh153R|^O!KaD7yYCoju6C)Tk<^Sa29vzgo-%~cX^gzufP_sD zMa`XUq-WT}NGru}b3h2c2eff*`oFpwJ9Rwsl3HqOq-lRK^agkcURgyTGwzHr)eqO{ ztn%voUGZt-CY?p9z8>g15|=;cbv9iMYY?7(GcRbZ6_~s}1R=p1pp*eyT5Ua}K7#lT z1vK`ViAQ_!te9Hytn_$v^i!r+6a(EBDieE}n{D z7HV49|0kln^J)mE8D|$>eel!zXUci_CP&9BpH$1ju&{eUfBw_9vZf%tuRd9|)^mx^BZ~J_d@`5DX|D@;YwoJ`!3W-) z!T~J20S9PJ2C?o4gYTnF>4TJs3q$go8zYtkDD9i7O75;?$YouOLt~WIU&YMICX$$w zbA;Zo%V7p=HeCsBT8mAC!8JlDp}qSzCN>jA;eB5zgDTAWE&~3Q9%?sztET%>7d}Y1 zG*4BuE<1c6@=(;4Ww0spaZyC(spvE}9|(@4sqV?cJ7UO8)WV^n4NyZ`fJIl2xKsSN z=9=o{lUYjT+|(cw^ன&;YWsT{d5rYP8ehF+7^EJbd3s7KrJiVYqkkmw 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

    !aBEwP<3r;oPn*t0Q}|6H5Dgw%0tH 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�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

      BvdPixt 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

      l3nJ4}Va9g%^^ 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