From 4f9f30b2ef294e8d661376eaa4e34baa89a283bf Mon Sep 17 00:00:00 2001 From: Jay Moore Date: Sun, 16 Nov 2025 17:23:36 -0500 Subject: [PATCH] MP+ --- CMakeCache.txt | 357 ++ CMakeFiles/4.1.2/CMakeCCompiler.cmake | 84 + .../4.1.2/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 15496 bytes CMakeFiles/4.1.2/CMakeSystem.cmake | 15 + .../4.1.2/CompilerIdC/CMakeCCompilerId.c | 934 +++++ CMakeFiles/4.1.2/CompilerIdC/a.out | Bin 0 -> 15560 bytes CMakeFiles/CMakeConfigureLog.yaml | 3496 +++++++++++++++++ CMakeFiles/CMakeDirectoryInformation.cmake | 16 + CMakeFiles/InstallScripts.json | 19 + CMakeFiles/Makefile.cmake | 156 + CMakeFiles/Makefile2 | 654 +++ CMakeFiles/TargetDirectories.txt | 87 + CMakeFiles/cmake.check_cache | 1 + CMakeFiles/progress.marks | 1 + CMakeLists.txt | 32 + Makefile | 315 ++ Makefile.am | 27 + Makefile.cvs | 4 + README.md | 3 + cmake_install.cmake | 83 + common/crc32.c | 56 + common/fastmath.c | 77 + common/huffman-bcl.c | 280 ++ common/tags.c | 1134 ++++++ configure.in | 51 + docs/Doxyfile | 1161 ++++++ docs/custom.css | 212 + docs/mainpage.txt | 38 + .../CMakeDirectoryInformation.cmake | 16 + include/CMakeFiles/progress.marks | 1 + include/CMakeLists.txt | 1 + include/Makefile | 189 + include/Makefile.am | 12 + include/cmake_install.cmake | 54 + include/mpc/.svn/all-wcprops | 47 + include/mpc/.svn/entries | 266 ++ .../mpc/.svn/text-base/datatypes.h.svn-base | 38 + include/mpc/.svn/text-base/minimax.h.svn-base | 57 + .../mpc/.svn/text-base/mpc_types.h.svn-base | 146 + include/mpc/.svn/text-base/mpcdec.h.svn-base | 148 + include/mpc/.svn/text-base/mpcmath.h.svn-base | 155 + include/mpc/.svn/text-base/reader.h.svn-base | 98 + .../mpc/.svn/text-base/streaminfo.h.svn-base | 109 + include/mpc/datatypes.h | 38 + include/mpc/minimax.h | 57 + include/mpc/mpc_types.h | 146 + include/mpc/mpcdec.h | 148 + include/mpc/mpcmath.h | 155 + include/mpc/reader.h | 98 + include/mpc/streaminfo.h | 109 + libmpc.kdevelop | 265 ++ libmpcdec/AUTHORS | 10 + .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/mpcdec.dir/DependInfo.cmake | 32 + .../CMakeFiles/mpcdec.dir/__/common/crc32.c.o | Bin 0 -> 1768 bytes .../mpcdec.dir/__/common/crc32.c.o.d | 3 + libmpcdec/CMakeFiles/mpcdec.dir/build.make | 242 ++ .../CMakeFiles/mpcdec.dir/cmake_clean.cmake | 28 + .../mpcdec.dir/compiler_depend.internal | 646 +++ .../mpcdec.dir/compiler_depend.make | 870 ++++ .../CMakeFiles/mpcdec.dir/compiler_depend.ts | 2 + libmpcdec/CMakeFiles/mpcdec.dir/depend.make | 2 + libmpcdec/CMakeFiles/mpcdec.dir/flags.make | 10 + libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o | Bin 0 -> 16144 bytes libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o.d | 35 + libmpcdec/CMakeFiles/mpcdec.dir/link.d | 94 + libmpcdec/CMakeFiles/mpcdec.dir/link.txt | 1 + .../CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o | Bin 0 -> 7376 bytes .../mpcdec.dir/mpc_bits_reader.c.o.d | 47 + .../CMakeFiles/mpcdec.dir/mpc_decoder.c.o | Bin 0 -> 30312 bytes .../CMakeFiles/mpcdec.dir/mpc_decoder.c.o.d | 53 + libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o | Bin 0 -> 13784 bytes .../CMakeFiles/mpcdec.dir/mpc_demux.c.o.d | 57 + .../CMakeFiles/mpcdec.dir/mpc_reader.c.o | Bin 0 -> 3456 bytes .../CMakeFiles/mpcdec.dir/mpc_reader.c.o.d | 46 + libmpcdec/CMakeFiles/mpcdec.dir/progress.make | 11 + libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o | Bin 0 -> 2136 bytes libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o.d | 48 + .../CMakeFiles/mpcdec.dir/streaminfo.c.o | Bin 0 -> 8632 bytes .../CMakeFiles/mpcdec.dir/streaminfo.c.o.d | 55 + .../CMakeFiles/mpcdec.dir/synth_filter.c.o | Bin 0 -> 14368 bytes .../CMakeFiles/mpcdec.dir/synth_filter.c.o.d | 48 + libmpcdec/CMakeFiles/progress.marks | 1 + libmpcdec/CMakeLists.txt | 7 + libmpcdec/COPYING | 31 + libmpcdec/ChangeLog | 40 + libmpcdec/Makefile | 447 +++ libmpcdec/Makefile.am | 19 + libmpcdec/README | 6 + libmpcdec/cmake_install.cmake | 50 + libmpcdec/decoder.h | 101 + libmpcdec/huffman.c | 358 ++ libmpcdec/huffman.h | 83 + libmpcdec/internal.h | 110 + libmpcdec/libmpcdec.so | Bin 0 -> 88392 bytes libmpcdec/mpc_bits_reader.c | 181 + libmpcdec/mpc_bits_reader.h | 149 + libmpcdec/mpc_decoder.c | 681 ++++ libmpcdec/mpc_demux.c | 738 ++++ libmpcdec/mpc_reader.c | 144 + libmpcdec/mpcdec_math.h | 135 + libmpcdec/requant.c | 124 + libmpcdec/requant.h | 61 + libmpcdec/streaminfo.c | 245 ++ libmpcdec/synth_filter.c | 430 ++ .../CMakeDirectoryInformation.cmake | 16 + .../mpcenc_static.dir/DependInfo.cmake | 28 + .../mpcenc_static.dir/__/common/crc32.c.o | Bin 0 -> 1768 bytes .../mpcenc_static.dir/__/common/crc32.c.o.d | 3 + .../mpcenc_static.dir/analy_filter.c.o | Bin 0 -> 35488 bytes .../mpcenc_static.dir/analy_filter.c.o.d | 43 + .../mpcenc_static.dir/bitstream.c.o | Bin 0 -> 12256 bytes .../mpcenc_static.dir/bitstream.c.o.d | 45 + .../CMakeFiles/mpcenc_static.dir/build.make | 194 + .../mpcenc_static.dir/cmake_clean.cmake | 21 + .../cmake_clean_target.cmake | 3 + .../compiler_depend.internal | 384 ++ .../mpcenc_static.dir/compiler_depend.make | 568 +++ .../mpcenc_static.dir/compiler_depend.ts | 2 + .../CMakeFiles/mpcenc_static.dir/depend.make | 2 + .../mpcenc_static.dir/encode_sv7.c.o | Bin 0 -> 19784 bytes .../mpcenc_static.dir/encode_sv7.c.o.d | 43 + .../CMakeFiles/mpcenc_static.dir/flags.make | 10 + .../CMakeFiles/mpcenc_static.dir/huffsv7.c.o | Bin 0 -> 7776 bytes .../mpcenc_static.dir/huffsv7.c.o.d | 42 + .../CMakeFiles/mpcenc_static.dir/link.txt | 2 + .../mpcenc_static.dir/progress.make | 8 + .../CMakeFiles/mpcenc_static.dir/quant.c.o | Bin 0 -> 8176 bytes .../CMakeFiles/mpcenc_static.dir/quant.c.o.d | 51 + libmpcenc/CMakeFiles/progress.marks | 1 + libmpcenc/CMakeLists.txt | 2 + libmpcenc/Makefile | 366 ++ libmpcenc/Makefile.am | 11 + libmpcenc/analy_filter.c | 344 ++ libmpcenc/bitstream.c | 271 ++ libmpcenc/cmake_install.cmake | 50 + libmpcenc/encode_sv7.c | 492 +++ libmpcenc/huffsv7.c | 112 + libmpcenc/libmpcenc.h | 122 + libmpcenc/libmpcenc_static.a | Bin 0 -> 86344 bytes libmpcenc/quant.c | 309 ++ .../CMakeDirectoryInformation.cmake | 16 + .../mpcpsy_static.dir/DependInfo.cmake | 30 + .../mpcpsy_static.dir/__/common/fastmath.c.o | Bin 0 -> 19872 bytes .../__/common/fastmath.c.o.d | 43 + .../CMakeFiles/mpcpsy_static.dir/ans.c.o | Bin 0 -> 11552 bytes .../CMakeFiles/mpcpsy_static.dir/ans.c.o.d | 43 + .../CMakeFiles/mpcpsy_static.dir/build.make | 226 ++ .../mpcpsy_static.dir/cmake_clean.cmake | 25 + .../cmake_clean_target.cmake | 3 + .../compiler_depend.internal | 526 +++ .../mpcpsy_static.dir/compiler_depend.make | 698 ++++ .../mpcpsy_static.dir/compiler_depend.ts | 2 + .../CMakeFiles/mpcpsy_static.dir/cvd.c.o | Bin 0 -> 6384 bytes .../CMakeFiles/mpcpsy_static.dir/cvd.c.o.d | 44 + .../CMakeFiles/mpcpsy_static.dir/depend.make | 2 + .../CMakeFiles/mpcpsy_static.dir/fft4g.c.o | Bin 0 -> 16552 bytes .../CMakeFiles/mpcpsy_static.dir/fft4g.c.o.d | 44 + .../mpcpsy_static.dir/fft_routines.c.o | Bin 0 -> 9672 bytes .../mpcpsy_static.dir/fft_routines.c.o.d | 43 + .../CMakeFiles/mpcpsy_static.dir/flags.make | 10 + .../CMakeFiles/mpcpsy_static.dir/link.txt | 2 + .../CMakeFiles/mpcpsy_static.dir/profile.c.o | Bin 0 -> 4224 bytes .../mpcpsy_static.dir/profile.c.o.d | 5 + .../mpcpsy_static.dir/progress.make | 10 + .../CMakeFiles/mpcpsy_static.dir/psy.c.o | Bin 0 -> 62440 bytes .../CMakeFiles/mpcpsy_static.dir/psy.c.o.d | 52 + .../CMakeFiles/mpcpsy_static.dir/psy_tab.c.o | Bin 0 -> 18784 bytes .../mpcpsy_static.dir/psy_tab.c.o.d | 45 + libmpcpsy/CMakeFiles/progress.marks | 1 + libmpcpsy/CMakeLists.txt | 2 + libmpcpsy/Makefile | 420 ++ libmpcpsy/Makefile.am | 12 + libmpcpsy/ans.c | 301 ++ libmpcpsy/cmake_install.cmake | 50 + libmpcpsy/cvd.c | 273 ++ libmpcpsy/fft4g.c | 549 +++ libmpcpsy/fft_routines.c | 282 ++ libmpcpsy/libmpcpsy.h | 93 + libmpcpsy/libmpcpsy_static.a | Bin 0 -> 150778 bytes libmpcpsy/profile.c | 142 + libmpcpsy/psy.c | 1259 ++++++ libmpcpsy/psy_tab.c | 372 ++ .../CMakeDirectoryInformation.cmake | 16 + libwavformat/CMakeFiles/progress.marks | 1 + .../wavformat_static.dir/DependInfo.cmake | 24 + .../wavformat_static.dir/build.make | 130 + .../wavformat_static.dir/cmake_clean.cmake | 13 + .../cmake_clean_target.cmake | 3 + .../compiler_depend.internal | 49 + .../wavformat_static.dir/compiler_depend.make | 91 + .../wavformat_static.dir/compiler_depend.ts | 2 + .../wavformat_static.dir/depend.make | 2 + .../wavformat_static.dir/flags.make | 10 + .../CMakeFiles/wavformat_static.dir/input.c.o | Bin 0 -> 10696 bytes .../wavformat_static.dir/input.c.o.d | 14 + .../CMakeFiles/wavformat_static.dir/link.txt | 2 + .../wavformat_static.dir/output.c.o | Bin 0 -> 14648 bytes .../wavformat_static.dir/output.c.o.d | 14 + .../wavformat_static.dir/progress.make | 4 + libwavformat/CMakeLists.txt | 1 + libwavformat/Makefile | 258 ++ libwavformat/Makefile.am | 10 + libwavformat/cmake_install.cmake | 50 + libwavformat/input.c | 463 +++ libwavformat/libwaveformat.h | 139 + libwavformat/libwavformat_static.a | Bin 0 -> 25900 bytes libwavformat/output.c | 338 ++ .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/mpc2sv8.dir/DependInfo.cmake | 24 + mpc2sv8/CMakeFiles/mpc2sv8.dir/build.make | 116 + .../CMakeFiles/mpc2sv8.dir/cmake_clean.cmake | 12 + .../mpc2sv8.dir/compiler_depend.internal | 112 + .../mpc2sv8.dir/compiler_depend.make | 320 ++ .../CMakeFiles/mpc2sv8.dir/compiler_depend.ts | 2 + mpc2sv8/CMakeFiles/mpc2sv8.dir/depend.make | 2 + mpc2sv8/CMakeFiles/mpc2sv8.dir/flags.make | 10 + mpc2sv8/CMakeFiles/mpc2sv8.dir/link.d | 97 + mpc2sv8/CMakeFiles/mpc2sv8.dir/link.txt | 1 + mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o | Bin 0 -> 9936 bytes mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o.d | 56 + mpc2sv8/CMakeFiles/mpc2sv8.dir/progress.make | 3 + mpc2sv8/CMakeFiles/progress.marks | 1 + mpc2sv8/CMakeLists.txt | 35 + mpc2sv8/Makefile | 231 ++ mpc2sv8/Makefile.am | 16 + mpc2sv8/cmake_install.cmake | 70 + mpc2sv8/mpc2sv8 | Bin 0 -> 87064 bytes mpc2sv8/mpc2sv8.c | 279 ++ .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/mpcchap.dir/DependInfo.cmake | 27 + mpcchap/CMakeFiles/mpcchap.dir/build.make | 164 + .../CMakeFiles/mpcchap.dir/cmake_clean.cmake | 18 + .../mpcchap.dir/compiler_depend.make | 2 + .../CMakeFiles/mpcchap.dir/compiler_depend.ts | 2 + mpcchap/CMakeFiles/mpcchap.dir/depend.make | 2 + mpcchap/CMakeFiles/mpcchap.dir/flags.make | 10 + mpcchap/CMakeFiles/mpcchap.dir/link.txt | 1 + mpcchap/CMakeFiles/mpcchap.dir/progress.make | 6 + mpcchap/CMakeFiles/progress.marks | 1 + mpcchap/CMakeLists.txt | 35 + mpcchap/Makefile | 189 + mpcchap/Makefile.am | 19 + mpcchap/cmake_install.cmake | 50 + mpcchap/dictionary.c | 400 ++ mpcchap/dictionary.h | 177 + mpcchap/iniparser.c | 723 ++++ mpcchap/iniparser.h | 316 ++ mpcchap/mpcchap.c | 321 ++ .../CMakeDirectoryInformation.cmake | 16 + mpccut/CMakeFiles/mpccut.dir/DependInfo.cmake | 24 + mpccut/CMakeFiles/mpccut.dir/build.make | 116 + .../CMakeFiles/mpccut.dir/cmake_clean.cmake | 12 + .../mpccut.dir/compiler_depend.internal | 103 + .../mpccut.dir/compiler_depend.make | 293 ++ .../CMakeFiles/mpccut.dir/compiler_depend.ts | 2 + mpccut/CMakeFiles/mpccut.dir/depend.make | 2 + mpccut/CMakeFiles/mpccut.dir/flags.make | 10 + mpccut/CMakeFiles/mpccut.dir/link.d | 97 + mpccut/CMakeFiles/mpccut.dir/link.txt | 1 + mpccut/CMakeFiles/mpccut.dir/mpccut.c.o | Bin 0 -> 8280 bytes mpccut/CMakeFiles/mpccut.dir/mpccut.c.o.d | 50 + mpccut/CMakeFiles/mpccut.dir/progress.make | 3 + mpccut/CMakeFiles/progress.marks | 1 + mpccut/CMakeLists.txt | 27 + mpccut/Makefile | 231 ++ mpccut/Makefile.am | 15 + mpccut/cmake_install.cmake | 70 + mpccut/mpccut | Bin 0 -> 82744 bytes mpccut/mpccut.c | 238 ++ .../CMakeDirectoryInformation.cmake | 16 + .../mpcdec_cmd.dir/DependInfo.cmake | 24 + mpcdec/CMakeFiles/mpcdec_cmd.dir/build.make | 116 + .../mpcdec_cmd.dir/cmake_clean.cmake | 12 + .../mpcdec_cmd.dir/compiler_depend.internal | 107 + .../mpcdec_cmd.dir/compiler_depend.make | 305 ++ .../mpcdec_cmd.dir/compiler_depend.ts | 2 + mpcdec/CMakeFiles/mpcdec_cmd.dir/depend.make | 2 + mpcdec/CMakeFiles/mpcdec_cmd.dir/flags.make | 10 + mpcdec/CMakeFiles/mpcdec_cmd.dir/link.d | 97 + mpcdec/CMakeFiles/mpcdec_cmd.dir/link.txt | 1 + mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o | Bin 0 -> 9832 bytes mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o.d | 52 + .../CMakeFiles/mpcdec_cmd.dir/progress.make | 3 + mpcdec/CMakeFiles/progress.marks | 1 + mpcdec/CMakeLists.txt | 29 + mpcdec/Makefile | 231 ++ mpcdec/Makefile.am | 14 + mpcdec/cmake_install.cmake | 70 + mpcdec/mpcdec | Bin 0 -> 29944 bytes mpcdec/mpcdec.c | 249 ++ .../CMakeDirectoryInformation.cmake | 16 + mpcenc/CMakeFiles/mpcenc.dir/DependInfo.cmake | 30 + .../CMakeFiles/mpcenc.dir/__/common/tags.c.o | Bin 0 -> 17912 bytes .../mpcenc.dir/__/common/tags.c.o.d | 41 + mpcenc/CMakeFiles/mpcenc.dir/build.make | 212 + .../CMakeFiles/mpcenc.dir/cmake_clean.cmake | 24 + .../mpcenc.dir/compiler_depend.internal | 676 ++++ .../mpcenc.dir/compiler_depend.make | 925 +++++ .../CMakeFiles/mpcenc.dir/compiler_depend.ts | 2 + mpcenc/CMakeFiles/mpcenc.dir/depend.make | 2 + mpcenc/CMakeFiles/mpcenc.dir/flags.make | 10 + mpcenc/CMakeFiles/mpcenc.dir/keyboard.c.o | Bin 0 -> 2568 bytes mpcenc/CMakeFiles/mpcenc.dir/keyboard.c.o.d | 66 + mpcenc/CMakeFiles/mpcenc.dir/link.d | 115 + mpcenc/CMakeFiles/mpcenc.dir/link.txt | 1 + mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.o | Bin 0 -> 83120 bytes mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.o.d | 71 + mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o | Bin 0 -> 4416 bytes mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o.d | 60 + mpcenc/CMakeFiles/mpcenc.dir/progress.make | 9 + mpcenc/CMakeFiles/mpcenc.dir/stderr.c.o | Bin 0 -> 2144 bytes mpcenc/CMakeFiles/mpcenc.dir/stderr.c.o.d | 41 + mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o | Bin 0 -> 16912 bytes mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o.d | 60 + mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.o | Bin 0 -> 936 bytes mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.o.d | 59 + mpcenc/CMakeFiles/progress.marks | 1 + mpcenc/CMakeLists.txt | 29 + mpcenc/Makefile | 393 ++ mpcenc/Makefile.am | 29 + mpcenc/cmake_install.cmake | 70 + mpcenc/config.h | 38 + mpcenc/keyboard.c | 128 + mpcenc/mpcenc | Bin 0 -> 259328 bytes mpcenc/mpcenc.c | 1844 +++++++++ mpcenc/mpcenc.h | 314 ++ mpcenc/pipeopen.c | 195 + mpcenc/predict.h | 177 + mpcenc/stderr.c | 185 + mpcenc/wave_in.c | 572 +++ mpcenc/winmsg.c | 90 + .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/mpcgain.dir/DependInfo.cmake | 24 + mpcgain/CMakeFiles/mpcgain.dir/build.make | 115 + .../CMakeFiles/mpcgain.dir/cmake_clean.cmake | 12 + .../mpcgain.dir/compiler_depend.make | 2 + .../CMakeFiles/mpcgain.dir/compiler_depend.ts | 2 + mpcgain/CMakeFiles/mpcgain.dir/depend.make | 2 + mpcgain/CMakeFiles/mpcgain.dir/flags.make | 10 + mpcgain/CMakeFiles/mpcgain.dir/link.txt | 1 + mpcgain/CMakeFiles/mpcgain.dir/progress.make | 3 + mpcgain/CMakeFiles/progress.marks | 1 + mpcgain/CMakeLists.txt | 37 + mpcgain/Makefile | 189 + mpcgain/Makefile.am | 16 + mpcgain/cmake_install.cmake | 50 + mpcgain/mpcgain.c | 309 ++ .../CMakeDirectoryInformation.cmake | 16 + wavcmp/CMakeFiles/progress.marks | 1 + wavcmp/CMakeFiles/wavcmp.dir/DependInfo.cmake | 24 + wavcmp/CMakeFiles/wavcmp.dir/build.make | 115 + .../CMakeFiles/wavcmp.dir/cmake_clean.cmake | 12 + .../wavcmp.dir/compiler_depend.internal | 60 + .../wavcmp.dir/compiler_depend.make | 164 + .../CMakeFiles/wavcmp.dir/compiler_depend.ts | 2 + wavcmp/CMakeFiles/wavcmp.dir/depend.make | 2 + wavcmp/CMakeFiles/wavcmp.dir/flags.make | 10 + wavcmp/CMakeFiles/wavcmp.dir/link.d | 79 + wavcmp/CMakeFiles/wavcmp.dir/link.txt | 1 + wavcmp/CMakeFiles/wavcmp.dir/progress.make | 3 + wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o | Bin 0 -> 5032 bytes wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o.d | 25 + wavcmp/CMakeLists.txt | 8 + wavcmp/Makefile | 231 ++ wavcmp/Makefile.am | 10 + wavcmp/cmake_install.cmake | 70 + wavcmp/wavcmp | Bin 0 -> 34392 bytes wavcmp/wavcmp.c | 144 + win32/attgetopt.c | 67 + win32/basename.c | 170 + win32/dirent.c | 299 ++ win32/dirent.h | 186 + win32/getopt.h | 20 + win32/libcommon.vcproj | 185 + win32/libcommon_2005.vcproj | 191 + win32/libgen.h | 27 + win32/libmpcdec.vcproj | 252 ++ win32/libmpcdec_2005.vcproj | 253 ++ win32/libmpcenc.vcproj | 191 + win32/libmpcpsy.vcproj | 202 + win32/libwavformat.vcproj | 176 + win32/mpc2sv8.vcproj | 197 + win32/mpccut.vcproj | 197 + win32/mpcdec.vcproj | 196 + win32/mpcenc.vcproj | 243 ++ win32/mpcgain.vcproj | 200 + win32/musepack.sln | 105 + win32/musepack_2005.sln | 29 + 389 files changed, 47118 insertions(+) create mode 100644 CMakeCache.txt create mode 100644 CMakeFiles/4.1.2/CMakeCCompiler.cmake create mode 100755 CMakeFiles/4.1.2/CMakeDetermineCompilerABI_C.bin create mode 100644 CMakeFiles/4.1.2/CMakeSystem.cmake create mode 100644 CMakeFiles/4.1.2/CompilerIdC/CMakeCCompilerId.c create mode 100755 CMakeFiles/4.1.2/CompilerIdC/a.out create mode 100644 CMakeFiles/CMakeConfigureLog.yaml create mode 100644 CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 CMakeFiles/InstallScripts.json create mode 100644 CMakeFiles/Makefile.cmake create mode 100644 CMakeFiles/Makefile2 create mode 100644 CMakeFiles/TargetDirectories.txt create mode 100644 CMakeFiles/cmake.check_cache create mode 100644 CMakeFiles/progress.marks create mode 100755 CMakeLists.txt create mode 100644 Makefile create mode 100755 Makefile.am create mode 100755 Makefile.cvs create mode 100644 README.md create mode 100644 cmake_install.cmake create mode 100755 common/crc32.c create mode 100755 common/fastmath.c create mode 100755 common/huffman-bcl.c create mode 100755 common/tags.c create mode 100755 configure.in create mode 100755 docs/Doxyfile create mode 100755 docs/custom.css create mode 100755 docs/mainpage.txt create mode 100644 include/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 include/CMakeFiles/progress.marks create mode 100755 include/CMakeLists.txt create mode 100644 include/Makefile create mode 100755 include/Makefile.am create mode 100644 include/cmake_install.cmake create mode 100755 include/mpc/.svn/all-wcprops create mode 100755 include/mpc/.svn/entries create mode 100755 include/mpc/.svn/text-base/datatypes.h.svn-base create mode 100755 include/mpc/.svn/text-base/minimax.h.svn-base create mode 100755 include/mpc/.svn/text-base/mpc_types.h.svn-base create mode 100755 include/mpc/.svn/text-base/mpcdec.h.svn-base create mode 100755 include/mpc/.svn/text-base/mpcmath.h.svn-base create mode 100755 include/mpc/.svn/text-base/reader.h.svn-base create mode 100755 include/mpc/.svn/text-base/streaminfo.h.svn-base create mode 100755 include/mpc/datatypes.h create mode 100755 include/mpc/minimax.h create mode 100755 include/mpc/mpc_types.h create mode 100755 include/mpc/mpcdec.h create mode 100755 include/mpc/mpcmath.h create mode 100755 include/mpc/reader.h create mode 100755 include/mpc/streaminfo.h create mode 100755 libmpc.kdevelop create mode 100755 libmpcdec/AUTHORS create mode 100644 libmpcdec/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/DependInfo.cmake create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o.d create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/build.make create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/cmake_clean.cmake create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.internal create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.make create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.ts create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/depend.make create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/flags.make create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o.d create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/link.d create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/link.txt create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o.d create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o.d create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o.d create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o.d create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/progress.make create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o.d create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o.d create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o create mode 100644 libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o.d create mode 100644 libmpcdec/CMakeFiles/progress.marks create mode 100755 libmpcdec/CMakeLists.txt create mode 100755 libmpcdec/COPYING create mode 100755 libmpcdec/ChangeLog create mode 100644 libmpcdec/Makefile create mode 100755 libmpcdec/Makefile.am create mode 100755 libmpcdec/README create mode 100644 libmpcdec/cmake_install.cmake create mode 100755 libmpcdec/decoder.h create mode 100755 libmpcdec/huffman.c create mode 100755 libmpcdec/huffman.h create mode 100755 libmpcdec/internal.h create mode 100755 libmpcdec/libmpcdec.so create mode 100755 libmpcdec/mpc_bits_reader.c create mode 100755 libmpcdec/mpc_bits_reader.h create mode 100755 libmpcdec/mpc_decoder.c create mode 100755 libmpcdec/mpc_demux.c create mode 100755 libmpcdec/mpc_reader.c create mode 100755 libmpcdec/mpcdec_math.h create mode 100755 libmpcdec/requant.c create mode 100755 libmpcdec/requant.h create mode 100755 libmpcdec/streaminfo.c create mode 100755 libmpcdec/synth_filter.c create mode 100644 libmpcenc/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/DependInfo.cmake create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o.d create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/analy_filter.c.o create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/analy_filter.c.o.d create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/bitstream.c.o create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/bitstream.c.o.d create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/build.make create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/cmake_clean.cmake create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/cmake_clean_target.cmake create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/compiler_depend.internal create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/compiler_depend.make create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/compiler_depend.ts create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/depend.make create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/encode_sv7.c.o create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/encode_sv7.c.o.d create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/flags.make create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.o create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.o.d create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/link.txt create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/progress.make create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/quant.c.o create mode 100644 libmpcenc/CMakeFiles/mpcenc_static.dir/quant.c.o.d create mode 100644 libmpcenc/CMakeFiles/progress.marks create mode 100755 libmpcenc/CMakeLists.txt create mode 100644 libmpcenc/Makefile create mode 100755 libmpcenc/Makefile.am create mode 100755 libmpcenc/analy_filter.c create mode 100755 libmpcenc/bitstream.c create mode 100644 libmpcenc/cmake_install.cmake create mode 100755 libmpcenc/encode_sv7.c create mode 100755 libmpcenc/huffsv7.c create mode 100755 libmpcenc/libmpcenc.h create mode 100644 libmpcenc/libmpcenc_static.a create mode 100755 libmpcenc/quant.c create mode 100644 libmpcpsy/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/DependInfo.cmake create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o.d create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/ans.c.o create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/ans.c.o.d create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/cmake_clean.cmake create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/cmake_clean_target.cmake create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.internal create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.make create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.ts create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o.d create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/depend.make create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o.d create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.o create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.o.d create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/flags.make create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/link.txt create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/profile.c.o create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/profile.c.o.d create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/progress.make create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy.c.o create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy.c.o.d create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.o create mode 100644 libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.o.d create mode 100644 libmpcpsy/CMakeFiles/progress.marks create mode 100755 libmpcpsy/CMakeLists.txt create mode 100644 libmpcpsy/Makefile create mode 100755 libmpcpsy/Makefile.am create mode 100755 libmpcpsy/ans.c create mode 100644 libmpcpsy/cmake_install.cmake create mode 100755 libmpcpsy/cvd.c create mode 100755 libmpcpsy/fft4g.c create mode 100755 libmpcpsy/fft_routines.c create mode 100755 libmpcpsy/libmpcpsy.h create mode 100644 libmpcpsy/libmpcpsy_static.a create mode 100755 libmpcpsy/profile.c create mode 100755 libmpcpsy/psy.c create mode 100755 libmpcpsy/psy_tab.c create mode 100644 libwavformat/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 libwavformat/CMakeFiles/progress.marks create mode 100644 libwavformat/CMakeFiles/wavformat_static.dir/DependInfo.cmake create mode 100644 libwavformat/CMakeFiles/wavformat_static.dir/build.make create mode 100644 libwavformat/CMakeFiles/wavformat_static.dir/cmake_clean.cmake create mode 100644 libwavformat/CMakeFiles/wavformat_static.dir/cmake_clean_target.cmake create mode 100644 libwavformat/CMakeFiles/wavformat_static.dir/compiler_depend.internal create mode 100644 libwavformat/CMakeFiles/wavformat_static.dir/compiler_depend.make create mode 100644 libwavformat/CMakeFiles/wavformat_static.dir/compiler_depend.ts create mode 100644 libwavformat/CMakeFiles/wavformat_static.dir/depend.make create mode 100644 libwavformat/CMakeFiles/wavformat_static.dir/flags.make create mode 100644 libwavformat/CMakeFiles/wavformat_static.dir/input.c.o create mode 100644 libwavformat/CMakeFiles/wavformat_static.dir/input.c.o.d create mode 100644 libwavformat/CMakeFiles/wavformat_static.dir/link.txt create mode 100644 libwavformat/CMakeFiles/wavformat_static.dir/output.c.o create mode 100644 libwavformat/CMakeFiles/wavformat_static.dir/output.c.o.d create mode 100644 libwavformat/CMakeFiles/wavformat_static.dir/progress.make create mode 100755 libwavformat/CMakeLists.txt create mode 100644 libwavformat/Makefile create mode 100755 libwavformat/Makefile.am create mode 100644 libwavformat/cmake_install.cmake create mode 100755 libwavformat/input.c create mode 100755 libwavformat/libwaveformat.h create mode 100644 libwavformat/libwavformat_static.a create mode 100755 libwavformat/output.c create mode 100644 mpc2sv8/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 mpc2sv8/CMakeFiles/mpc2sv8.dir/DependInfo.cmake create mode 100644 mpc2sv8/CMakeFiles/mpc2sv8.dir/build.make create mode 100644 mpc2sv8/CMakeFiles/mpc2sv8.dir/cmake_clean.cmake create mode 100644 mpc2sv8/CMakeFiles/mpc2sv8.dir/compiler_depend.internal create mode 100644 mpc2sv8/CMakeFiles/mpc2sv8.dir/compiler_depend.make create mode 100644 mpc2sv8/CMakeFiles/mpc2sv8.dir/compiler_depend.ts create mode 100644 mpc2sv8/CMakeFiles/mpc2sv8.dir/depend.make create mode 100644 mpc2sv8/CMakeFiles/mpc2sv8.dir/flags.make create mode 100644 mpc2sv8/CMakeFiles/mpc2sv8.dir/link.d create mode 100644 mpc2sv8/CMakeFiles/mpc2sv8.dir/link.txt create mode 100644 mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o create mode 100644 mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o.d create mode 100644 mpc2sv8/CMakeFiles/mpc2sv8.dir/progress.make create mode 100644 mpc2sv8/CMakeFiles/progress.marks create mode 100755 mpc2sv8/CMakeLists.txt create mode 100644 mpc2sv8/Makefile create mode 100755 mpc2sv8/Makefile.am create mode 100644 mpc2sv8/cmake_install.cmake create mode 100755 mpc2sv8/mpc2sv8 create mode 100755 mpc2sv8/mpc2sv8.c create mode 100644 mpcchap/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 mpcchap/CMakeFiles/mpcchap.dir/DependInfo.cmake create mode 100644 mpcchap/CMakeFiles/mpcchap.dir/build.make create mode 100644 mpcchap/CMakeFiles/mpcchap.dir/cmake_clean.cmake create mode 100644 mpcchap/CMakeFiles/mpcchap.dir/compiler_depend.make create mode 100644 mpcchap/CMakeFiles/mpcchap.dir/compiler_depend.ts create mode 100644 mpcchap/CMakeFiles/mpcchap.dir/depend.make create mode 100644 mpcchap/CMakeFiles/mpcchap.dir/flags.make create mode 100644 mpcchap/CMakeFiles/mpcchap.dir/link.txt create mode 100644 mpcchap/CMakeFiles/mpcchap.dir/progress.make create mode 100644 mpcchap/CMakeFiles/progress.marks create mode 100755 mpcchap/CMakeLists.txt create mode 100644 mpcchap/Makefile create mode 100755 mpcchap/Makefile.am create mode 100644 mpcchap/cmake_install.cmake create mode 100755 mpcchap/dictionary.c create mode 100755 mpcchap/dictionary.h create mode 100755 mpcchap/iniparser.c create mode 100755 mpcchap/iniparser.h create mode 100755 mpcchap/mpcchap.c create mode 100644 mpccut/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 mpccut/CMakeFiles/mpccut.dir/DependInfo.cmake create mode 100644 mpccut/CMakeFiles/mpccut.dir/build.make create mode 100644 mpccut/CMakeFiles/mpccut.dir/cmake_clean.cmake create mode 100644 mpccut/CMakeFiles/mpccut.dir/compiler_depend.internal create mode 100644 mpccut/CMakeFiles/mpccut.dir/compiler_depend.make create mode 100644 mpccut/CMakeFiles/mpccut.dir/compiler_depend.ts create mode 100644 mpccut/CMakeFiles/mpccut.dir/depend.make create mode 100644 mpccut/CMakeFiles/mpccut.dir/flags.make create mode 100644 mpccut/CMakeFiles/mpccut.dir/link.d create mode 100644 mpccut/CMakeFiles/mpccut.dir/link.txt create mode 100644 mpccut/CMakeFiles/mpccut.dir/mpccut.c.o create mode 100644 mpccut/CMakeFiles/mpccut.dir/mpccut.c.o.d create mode 100644 mpccut/CMakeFiles/mpccut.dir/progress.make create mode 100644 mpccut/CMakeFiles/progress.marks create mode 100755 mpccut/CMakeLists.txt create mode 100644 mpccut/Makefile create mode 100755 mpccut/Makefile.am create mode 100644 mpccut/cmake_install.cmake create mode 100755 mpccut/mpccut create mode 100755 mpccut/mpccut.c create mode 100644 mpcdec/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 mpcdec/CMakeFiles/mpcdec_cmd.dir/DependInfo.cmake create mode 100644 mpcdec/CMakeFiles/mpcdec_cmd.dir/build.make create mode 100644 mpcdec/CMakeFiles/mpcdec_cmd.dir/cmake_clean.cmake create mode 100644 mpcdec/CMakeFiles/mpcdec_cmd.dir/compiler_depend.internal create mode 100644 mpcdec/CMakeFiles/mpcdec_cmd.dir/compiler_depend.make create mode 100644 mpcdec/CMakeFiles/mpcdec_cmd.dir/compiler_depend.ts create mode 100644 mpcdec/CMakeFiles/mpcdec_cmd.dir/depend.make create mode 100644 mpcdec/CMakeFiles/mpcdec_cmd.dir/flags.make create mode 100644 mpcdec/CMakeFiles/mpcdec_cmd.dir/link.d create mode 100644 mpcdec/CMakeFiles/mpcdec_cmd.dir/link.txt create mode 100644 mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o create mode 100644 mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o.d create mode 100644 mpcdec/CMakeFiles/mpcdec_cmd.dir/progress.make create mode 100644 mpcdec/CMakeFiles/progress.marks create mode 100755 mpcdec/CMakeLists.txt create mode 100644 mpcdec/Makefile create mode 100755 mpcdec/Makefile.am create mode 100644 mpcdec/cmake_install.cmake create mode 100755 mpcdec/mpcdec create mode 100755 mpcdec/mpcdec.c create mode 100644 mpcenc/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/DependInfo.cmake create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/__/common/tags.c.o create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/__/common/tags.c.o.d create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/build.make create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/cmake_clean.cmake create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.internal create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.make create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.ts create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/depend.make create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/flags.make create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/keyboard.c.o create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/keyboard.c.o.d create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/link.d create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/link.txt create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.o create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.o.d create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o.d create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/progress.make create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/stderr.c.o create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/stderr.c.o.d create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o.d create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.o create mode 100644 mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.o.d create mode 100644 mpcenc/CMakeFiles/progress.marks create mode 100755 mpcenc/CMakeLists.txt create mode 100644 mpcenc/Makefile create mode 100755 mpcenc/Makefile.am create mode 100644 mpcenc/cmake_install.cmake create mode 100755 mpcenc/config.h create mode 100755 mpcenc/keyboard.c create mode 100755 mpcenc/mpcenc create mode 100755 mpcenc/mpcenc.c create mode 100755 mpcenc/mpcenc.h create mode 100755 mpcenc/pipeopen.c create mode 100755 mpcenc/predict.h create mode 100755 mpcenc/stderr.c create mode 100755 mpcenc/wave_in.c create mode 100755 mpcenc/winmsg.c create mode 100644 mpcgain/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 mpcgain/CMakeFiles/mpcgain.dir/DependInfo.cmake create mode 100644 mpcgain/CMakeFiles/mpcgain.dir/build.make create mode 100644 mpcgain/CMakeFiles/mpcgain.dir/cmake_clean.cmake create mode 100644 mpcgain/CMakeFiles/mpcgain.dir/compiler_depend.make create mode 100644 mpcgain/CMakeFiles/mpcgain.dir/compiler_depend.ts create mode 100644 mpcgain/CMakeFiles/mpcgain.dir/depend.make create mode 100644 mpcgain/CMakeFiles/mpcgain.dir/flags.make create mode 100644 mpcgain/CMakeFiles/mpcgain.dir/link.txt create mode 100644 mpcgain/CMakeFiles/mpcgain.dir/progress.make create mode 100644 mpcgain/CMakeFiles/progress.marks create mode 100755 mpcgain/CMakeLists.txt create mode 100644 mpcgain/Makefile create mode 100755 mpcgain/Makefile.am create mode 100644 mpcgain/cmake_install.cmake create mode 100755 mpcgain/mpcgain.c create mode 100644 wavcmp/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 wavcmp/CMakeFiles/progress.marks create mode 100644 wavcmp/CMakeFiles/wavcmp.dir/DependInfo.cmake create mode 100644 wavcmp/CMakeFiles/wavcmp.dir/build.make create mode 100644 wavcmp/CMakeFiles/wavcmp.dir/cmake_clean.cmake create mode 100644 wavcmp/CMakeFiles/wavcmp.dir/compiler_depend.internal create mode 100644 wavcmp/CMakeFiles/wavcmp.dir/compiler_depend.make create mode 100644 wavcmp/CMakeFiles/wavcmp.dir/compiler_depend.ts create mode 100644 wavcmp/CMakeFiles/wavcmp.dir/depend.make create mode 100644 wavcmp/CMakeFiles/wavcmp.dir/flags.make create mode 100644 wavcmp/CMakeFiles/wavcmp.dir/link.d create mode 100644 wavcmp/CMakeFiles/wavcmp.dir/link.txt create mode 100644 wavcmp/CMakeFiles/wavcmp.dir/progress.make create mode 100644 wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o create mode 100644 wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o.d create mode 100755 wavcmp/CMakeLists.txt create mode 100644 wavcmp/Makefile create mode 100755 wavcmp/Makefile.am create mode 100644 wavcmp/cmake_install.cmake create mode 100755 wavcmp/wavcmp create mode 100755 wavcmp/wavcmp.c create mode 100755 win32/attgetopt.c create mode 100755 win32/basename.c create mode 100755 win32/dirent.c create mode 100755 win32/dirent.h create mode 100755 win32/getopt.h create mode 100755 win32/libcommon.vcproj create mode 100755 win32/libcommon_2005.vcproj create mode 100755 win32/libgen.h create mode 100755 win32/libmpcdec.vcproj create mode 100755 win32/libmpcdec_2005.vcproj create mode 100755 win32/libmpcenc.vcproj create mode 100755 win32/libmpcpsy.vcproj create mode 100755 win32/libwavformat.vcproj create mode 100755 win32/mpc2sv8.vcproj create mode 100755 win32/mpccut.vcproj create mode 100755 win32/mpcdec.vcproj create mode 100755 win32/mpcenc.vcproj create mode 100755 win32/mpcgain.vcproj create mode 100755 win32/musepack.sln create mode 100755 win32/musepack_2005.sln diff --git a/CMakeCache.txt b/CMakeCache.txt new file mode 100644 index 0000000..f0c3672 --- /dev/null +++ b/CMakeCache.txt @@ -0,0 +1,357 @@ +# This is the CMakeCache file. +# For build in directory: /home/dewdude/musepack/musepack_src_r475 +# It was generated by CMake: /usr/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//Value Computed by CMake. +CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/home/dewdude/musepack/musepack_src_r475/CMakeFiles/pkgRedirects + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_COMPAT_VERSION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=libmpc + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the archiver during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the archiver during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the archiver during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the archiver during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the archiver during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//Path to a program. +CMAKE_TAPI:FILEPATH=CMAKE_TAPI-NOTFOUND + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Path to a file. +CUEFILE_INCLUDE_DIR:PATH=CUEFILE_INCLUDE_DIR-NOTFOUND + +//Path to a library. +CUEFILE_LIBRARY:FILEPATH=CUEFILE_LIBRARY-NOTFOUND + +//Path to a file. +REPLAY_GAIN_INCLUDE_DIR:PATH=REPLAY_GAIN_INCLUDE_DIR-NOTFOUND + +//Path to a library. +REPLAY_GAIN_LIBRARY:FILEPATH=REPLAY_GAIN_LIBRARY-NOTFOUND + +//Use shared libmpcdec +SHARED:BOOL=ON + +//Value Computed by CMake +libmpc_BINARY_DIR:STATIC=/home/dewdude/musepack/musepack_src_r475 + +//Value Computed by CMake +libmpc_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +libmpc_SOURCE_DIR:STATIC=/home/dewdude/musepack/musepack_src_r475 + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/dewdude/musepack/musepack_src_r475 +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=4 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=1 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=2 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/usr/bin/ccmake +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/dewdude/musepack/musepack_src_r475 +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//Name of CMakeLists files to read +CMAKE_LIST_FILE_NAME:INTERNAL=CMakeLists.txt +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=13 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/share/cmake +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_TAPI +CMAKE_TAPI-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 + diff --git a/CMakeFiles/4.1.2/CMakeCCompiler.cmake b/CMakeFiles/4.1.2/CMakeCCompiler.cmake new file mode 100644 index 0000000..1c31fd5 --- /dev/null +++ b/CMakeFiles/4.1.2/CMakeCCompiler.cmake @@ -0,0 +1,84 @@ +set(CMAKE_C_COMPILER "/usr/bin/cc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "GNU") +set(CMAKE_C_COMPILER_VERSION "15.2.1") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "23") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_C_STANDARD_LATEST "23") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_COMPILER_APPLE_SYSROOT "") +set(CMAKE_C_SIMULATE_VERSION "") +set(CMAKE_C_COMPILER_ARCHITECTURE_ID "x86_64") + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_C_COMPILER_AR "/usr/bin/gcc-ar") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_C_COMPILER_RANLIB "/usr/bin/gcc-ranlib") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_C_COMPILER_LINKER "/usr/bin/ld") +set(CMAKE_C_COMPILER_LINKER_ID "GNU") +set(CMAKE_C_COMPILER_LINKER_VERSION 2.45.1) +set(CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT GNU) +set(CMAKE_MT "") +set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") +set(CMAKE_COMPILER_IS_GNUCC 1) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) +set(CMAKE_C_LINKER_DEPFILE_SUPPORTED TRUE) +set(CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED TRUE) +set(CMAKE_C_LINKER_PUSHPOP_STATE_SUPPORTED TRUE) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include;/usr/local/include;/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include-fixed;/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "gcc;gcc_s;c;gcc;gcc_s") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1;/usr/lib;/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/CMakeFiles/4.1.2/CMakeDetermineCompilerABI_C.bin b/CMakeFiles/4.1.2/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000000000000000000000000000000000000..e9c02e9509ccfc92003c60cbae5a7798ff7458c7 GIT binary patch literal 15496 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 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__RENESAS__) +# define COMPILER_ID "Renesas" +/* __RENESAS_VERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__RENESAS_VERSION__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR HEX(__RENESAS_VERSION__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__RENESAS_VERSION__ >> 8 & 0xFF) + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) && defined(__ti__) +# define COMPILER_ID "TIClang" + # define COMPILER_VERSION_MAJOR DEC(__ti_major__) + # define COMPILER_VERSION_MINOR DEC(__ti_minor__) + # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) +# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__DCC__) && defined(_DIAB_TOOL) +# define COMPILER_ID "Diab" + # define COMPILER_VERSION_MAJOR DEC(__VERSION_MAJOR_NUMBER__) + # define COMPILER_VERSION_MINOR DEC(__VERSION_MINOR_NUMBER__) + # define COMPILER_VERSION_PATCH DEC(__VERSION_ARCH_FEATURE_NUMBER__) + # define COMPILER_VERSION_TWEAK DEC(__VERSION_BUG_FIX_NUMBER__) + + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__clang__) && defined(__ti__) +# if defined(__ARM_ARCH) +# define ARCHITECTURE_ID "ARM" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) || defined(__CPARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__RENESAS__) +# if defined(__CCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__CCRL__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__CCRH__) +# define ARCHITECTURE_ID "RH850" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#define C_STD_99 199901L +#define C_STD_11 201112L +#define C_STD_17 201710L +#define C_STD_23 202311L + +#ifdef __STDC_VERSION__ +# define C_STD __STDC_VERSION__ +#endif + +#if !defined(__STDC__) && !defined(__clang__) && !defined(__RENESAS__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif C_STD > C_STD_17 +# define C_VERSION "23" +#elif C_STD > C_STD_11 +# define C_VERSION "17" +#elif C_STD > C_STD_99 +# define C_VERSION "11" +#elif C_STD >= C_STD_99 +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__) || defined(__RENESAS__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#if defined(COMPILER_VERSION_INTERNAL) || defined(COMPILER_VERSION_INTERNAL_STR) + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/CMakeFiles/4.1.2/CompilerIdC/a.out b/CMakeFiles/4.1.2/CompilerIdC/a.out new file mode 100755 index 0000000000000000000000000000000000000000..1fca2e8491189978262d8e6e78a77b39258def50 GIT binary patch literal 15560 zcmeHOYit}>6~4R9!)X(HyTKOjX^3Mi$90!ksua?afI zt=E%vK>PrH%(XnPlUJ7*qycjwHr$>E`BB%;vj)Dwy&Bc_>zD6Vu%hajPPRRe7w zQv1~olDGMs)+aQOR<~H)W~>*UY4&?r^g(<`?0}ddBl~UD7I{L{fJ*j*{kF40uo1O{ zzulPUG4cDUp%p>Ic>=^dKT3XbN=U@J15S_QGTv6lZ(WW9P(*(}J7@?#*N%>!RMADX z%5&K%!$wrZmth|b$ZUH*{qx~q|A*5TFKqkGclvLCAzImYZ@v=N5cQp7ea(&o-fXa`F+`4d{jOt+{-U~oldJL z-3fKW^^NN)wpa75a{Yo|m4NjLtp^V|7T^s-+qDMxqVPt5e_r^u0RI)?I|BUog8B%$1VlfFw|PnXN(*R~H55jk~vW4<(xgqqrrIo|K5$@V10SbpY) zwLE|AC&^npWoxDR*A!_bdBb|qimWxhq8cx*Mv}LP|M?dD#ag@$aJKnUgHnyJY>QQ* zyjaVcqMxb7uOx4sqC-?Uew8D}Qw>{~fiMGM2Eq)483;2FW+2Q!n1L_@VFtnsgc;bJ z0e;SPx0V_m8hboln4Qb!+~Nd1kvz58dXwJ%q+2Xy3;Br-zjbz-y3-Lyr}LEZJ?3(b zH&rOkP7L!COd*|OdS*iU^gJ-1af%swus7w*=e&t{muTDt&&~5FrHXEB)Sp#kf8B>$ zX?nazJ(86_=wDPH|8vLjC(|0m3qeqMMgd3evwhT z7uaM?iV9IHxG2Sh{QZjCy6ErGqB~M9lf1hs4^*%p9 zgF<~c;&u4;&FZ?;p@JWxP7{PGOjF;elF|L5&$lR*0Hg6)f|zPiy#f9?;+vwo6|N6$ zt<)F9J{ad4#2YZG!tYXlZ?r|>I6?IT<`rFqhGtN6`>M~ks9@djFNE(%XnUOh?~)i( z52%FjTC3ETsnewHt-KF%P!u-__tO5x5}H7q9dsZ$PB0Hm#B-bn$Qm@rL+T1HXTPdsH?5DdL-=beE9(6?D%K&v{E2nu&|z^FH6AjD#kzUus~) z`Gh+#AispAGGMx zU;l8D>d%A4?g`Yi|EoH7H{*DY;;Q&8MPWe~wckhvmRj~2Po0f7;etO=ScI`WVRa3T`7a#ooM}tk4N;0t2>QlMBog5vs?Lffb4|sQ} zz298$Ur7m<`P;O=o{lWPEoy;(DpblWou2iaNkXrvaR$A7!E?>&{Jc3=EX=t@@3b;2 z)Z~1Y-kr#1l$p)b3j=e?H=J=wGs?`I&Qnm0UQuf>vTr7WO}e6+bJ&67&@4@llBi7o z5Shh-f51$4#-1uVv#vdpArDA0nZEv1yXQ=6f7>Y*9hxTlqffz|*=(AoQJ~1QG3RpB z(V^*3D3cD&tef}b?ETMyKd1S#F)AVOJ`OM;JfL!22tg%EoBYqo=QHq8I11uE1-g$q zbm>*b-|BrZ*t2bQOOfz5`mDwL*JOMk)*14#TzUTqF-}m2*ADPs7k}V6G2B7OV`KlZ zPM9E$UEq)P3h)f+s#|dWX;Si90{&P(0I}}E{9y;2BY$3-K*st6$e(}Qg7ep`QvCVF z#{~XZ9|5sG!uY}cUnXDPCywto+;0W34um>*{J%tsYJWrgfZqxv4B-*)YXSdN`J4e_ zoeKNl_}>(N?7uR^Qt)*V0YXDm-=-c<5&l?z0CE1oAvpd^0srfUwgisDQ4skD{UhpB zU%$ck@(dUX2FK_9YoLEQ?G@JVc>gUp9%SGz$+xk}AM5*8zA;dPot8Fa@NbfW&mD}9 zbsgS=JTJ!|=NJ5N9{hoP*#!Q0pK0|Fk<{8WRJQO3zC)U7f2M)1-V?ER>{y}?52i#R15zL8sg@=Dnh0z`OS0m2dYSTFh_(M_d rBPAaL%m;bdMI7c{?cdg=rLSTjQ3ga>i`Dl3F+YT(wmaYu5Y;~cXx7z3 literal 0 HcmV?d00001 diff --git a/CMakeFiles/CMakeConfigureLog.yaml b/CMakeFiles/CMakeConfigureLog.yaml new file mode 100644 index 0000000..0c0306f --- /dev/null +++ b/CMakeFiles/CMakeConfigureLog.yaml @@ -0,0 +1,3496 @@ + +--- +events: + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineSystem.cmake:12 (find_program)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_UNAME" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "uname" + candidate_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + - "/bin/" + searched_directories: + - "/home/dewdude/miniconda3/bin/uname" + - "/home/dewdude/miniconda3/condabin/uname" + - "/home/dewdude/.local/bin/uname" + - "/usr/local/sbin/uname" + - "/usr/local/bin/uname" + found: "/usr/bin/uname" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineSystem.cmake:212 (message)" + - "CMakeLists.txt:4 (project)" + message: | + The system is: Linux - 6.17.7-5-cachyos - x86_64 + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeUnixFindMake.cmake:5 (find_program)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_MAKE_PROGRAM" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "gmake" + - "make" + - "smake" + candidate_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + searched_directories: + - "/home/dewdude/miniconda3/bin/gmake" + - "/home/dewdude/miniconda3/condabin/gmake" + - "/home/dewdude/.local/bin/gmake" + - "/usr/local/sbin/gmake" + - "/usr/local/bin/gmake" + - "/usr/bin/gmake" + - "/opt/cuda/bin/gmake" + - "/opt/cuda/nsight_compute/gmake" + - "/opt/cuda/nsight_systems/bin/gmake" + - "/usr/lib/jvm/default/bin/gmake" + - "/usr/bin/site_perl/gmake" + - "/usr/bin/vendor_perl/gmake" + - "/usr/bin/core_perl/gmake" + - "/home/dewdude/.lmstudio/bin/gmake" + - "/home/dewdude/miniconda3/bin/make" + - "/home/dewdude/miniconda3/condabin/make" + - "/home/dewdude/.local/bin/make" + - "/usr/local/sbin/make" + - "/usr/local/bin/make" + found: "/usr/bin/make" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompiler.cmake:73 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:64 (_cmake_find_compiler)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_C_COMPILER" + description: "C compiler" + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "cc" + - "gcc" + - "cl" + - "bcc" + - "xlc" + - "icx" + - "clang" + candidate_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + searched_directories: + - "/home/dewdude/miniconda3/bin/cc" + - "/home/dewdude/miniconda3/condabin/cc" + - "/home/dewdude/.local/bin/cc" + - "/usr/local/sbin/cc" + - "/usr/local/bin/cc" + found: "/usr/bin/cc" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:462 (find_file)" + - "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:500 (CMAKE_DETERMINE_COMPILER_ID_WRITE)" + - "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:8 (CMAKE_DETERMINE_COMPILER_ID_BUILD)" + - "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:122 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:4 (project)" + mode: "file" + variable: "src_in" + description: "Path to a file." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "CMakeCCompilerId.c.in" + candidate_directories: + - "/usr/share/cmake/Modules/" + found: "/usr/share/cmake/Modules/CMakeCCompilerId.c.in" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:122 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:4 (project)" + message: | + Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. + Compiler: /usr/bin/cc + Build flags: + Id flags: + + The output was: + 0 + + + Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" + + The C compiler identification is GNU, found in: + /home/dewdude/musepack/musepack_src_r475/CMakeFiles/4.1.2/CompilerIdC/a.out + + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_AR" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "ar" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/ar" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_RANLIB" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "ranlib" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/ranlib" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_STRIP" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "strip" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/strip" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_LINKER" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "ld" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/ld" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_NM" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "nm" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/nm" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_OBJDUMP" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "objdump" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/objdump" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_OBJCOPY" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "objcopy" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/objcopy" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_READELF" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "readelf" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/readelf" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_DLLTOOL" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "dlltool" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + searched_directories: + - "/usr/bin/dlltool" + - "/home/dewdude/miniconda3/bin/dlltool" + - "/home/dewdude/miniconda3/condabin/dlltool" + - "/home/dewdude/.local/bin/dlltool" + - "/usr/local/sbin/dlltool" + - "/usr/local/bin/dlltool" + - "/opt/cuda/bin/dlltool" + - "/opt/cuda/nsight_compute/dlltool" + - "/opt/cuda/nsight_systems/bin/dlltool" + - "/usr/lib/jvm/default/bin/dlltool" + - "/usr/bin/site_perl/dlltool" + - "/usr/bin/vendor_perl/dlltool" + - "/usr/bin/core_perl/dlltool" + - "/home/dewdude/.lmstudio/bin/dlltool" + found: false + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_ADDR2LINE" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "addr2line" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/addr2line" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_TAPI" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "tapi" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + searched_directories: + - "/usr/bin/tapi" + - "/home/dewdude/miniconda3/bin/tapi" + - "/home/dewdude/miniconda3/condabin/tapi" + - "/home/dewdude/.local/bin/tapi" + - "/usr/local/sbin/tapi" + - "/usr/local/bin/tapi" + - "/opt/cuda/bin/tapi" + - "/opt/cuda/nsight_compute/tapi" + - "/opt/cuda/nsight_systems/bin/tapi" + - "/usr/lib/jvm/default/bin/tapi" + - "/usr/bin/site_perl/tapi" + - "/usr/bin/vendor_perl/tapi" + - "/usr/bin/core_perl/tapi" + - "/home/dewdude/.lmstudio/bin/tapi" + found: false + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/Compiler/GNU-FindBinUtils.cmake:18 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:201 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_C_COMPILER_AR" + description: "A wrapper around 'ar' adding the appropriate '--plugin' option for the GCC compiler" + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "gcc-ar-15.2" + - "gcc-ar-15" + - "gcc-ar15" + - "gcc-ar" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + searched_directories: + - "/usr/bin/gcc-ar-15.2" + - "/home/dewdude/miniconda3/bin/gcc-ar-15.2" + - "/home/dewdude/miniconda3/condabin/gcc-ar-15.2" + - "/home/dewdude/.local/bin/gcc-ar-15.2" + - "/usr/local/sbin/gcc-ar-15.2" + - "/usr/local/bin/gcc-ar-15.2" + - "/opt/cuda/bin/gcc-ar-15.2" + - "/opt/cuda/nsight_compute/gcc-ar-15.2" + - "/opt/cuda/nsight_systems/bin/gcc-ar-15.2" + - "/usr/lib/jvm/default/bin/gcc-ar-15.2" + - "/usr/bin/site_perl/gcc-ar-15.2" + - "/usr/bin/vendor_perl/gcc-ar-15.2" + - "/usr/bin/core_perl/gcc-ar-15.2" + - "/home/dewdude/.lmstudio/bin/gcc-ar-15.2" + - "/usr/bin/gcc-ar-15" + - "/home/dewdude/miniconda3/bin/gcc-ar-15" + - "/home/dewdude/miniconda3/condabin/gcc-ar-15" + - "/home/dewdude/.local/bin/gcc-ar-15" + - "/usr/local/sbin/gcc-ar-15" + - "/usr/local/bin/gcc-ar-15" + - "/opt/cuda/bin/gcc-ar-15" + - "/opt/cuda/nsight_compute/gcc-ar-15" + - "/opt/cuda/nsight_systems/bin/gcc-ar-15" + - "/usr/lib/jvm/default/bin/gcc-ar-15" + - "/usr/bin/site_perl/gcc-ar-15" + - "/usr/bin/vendor_perl/gcc-ar-15" + - "/usr/bin/core_perl/gcc-ar-15" + - "/home/dewdude/.lmstudio/bin/gcc-ar-15" + - "/usr/bin/gcc-ar15" + - "/home/dewdude/miniconda3/bin/gcc-ar15" + - "/home/dewdude/miniconda3/condabin/gcc-ar15" + - "/home/dewdude/.local/bin/gcc-ar15" + - "/usr/local/sbin/gcc-ar15" + - "/usr/local/bin/gcc-ar15" + - "/opt/cuda/bin/gcc-ar15" + - "/opt/cuda/nsight_compute/gcc-ar15" + - "/opt/cuda/nsight_systems/bin/gcc-ar15" + - "/usr/lib/jvm/default/bin/gcc-ar15" + - "/usr/bin/site_perl/gcc-ar15" + - "/usr/bin/vendor_perl/gcc-ar15" + - "/usr/bin/core_perl/gcc-ar15" + - "/home/dewdude/.lmstudio/bin/gcc-ar15" + found: "/usr/bin/gcc-ar" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/Compiler/GNU-FindBinUtils.cmake:30 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:201 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_C_COMPILER_RANLIB" + description: "A wrapper around 'ranlib' adding the appropriate '--plugin' option for the GCC compiler" + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "gcc-ranlib-15.2" + - "gcc-ranlib-15" + - "gcc-ranlib15" + - "gcc-ranlib" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + searched_directories: + - "/usr/bin/gcc-ranlib-15.2" + - "/home/dewdude/miniconda3/bin/gcc-ranlib-15.2" + - "/home/dewdude/miniconda3/condabin/gcc-ranlib-15.2" + - "/home/dewdude/.local/bin/gcc-ranlib-15.2" + - "/usr/local/sbin/gcc-ranlib-15.2" + - "/usr/local/bin/gcc-ranlib-15.2" + - "/opt/cuda/bin/gcc-ranlib-15.2" + - "/opt/cuda/nsight_compute/gcc-ranlib-15.2" + - "/opt/cuda/nsight_systems/bin/gcc-ranlib-15.2" + - "/usr/lib/jvm/default/bin/gcc-ranlib-15.2" + - "/usr/bin/site_perl/gcc-ranlib-15.2" + - "/usr/bin/vendor_perl/gcc-ranlib-15.2" + - "/usr/bin/core_perl/gcc-ranlib-15.2" + - "/home/dewdude/.lmstudio/bin/gcc-ranlib-15.2" + - "/usr/bin/gcc-ranlib-15" + - "/home/dewdude/miniconda3/bin/gcc-ranlib-15" + - "/home/dewdude/miniconda3/condabin/gcc-ranlib-15" + - "/home/dewdude/.local/bin/gcc-ranlib-15" + - "/usr/local/sbin/gcc-ranlib-15" + - "/usr/local/bin/gcc-ranlib-15" + - "/opt/cuda/bin/gcc-ranlib-15" + - "/opt/cuda/nsight_compute/gcc-ranlib-15" + - "/opt/cuda/nsight_systems/bin/gcc-ranlib-15" + - "/usr/lib/jvm/default/bin/gcc-ranlib-15" + - "/usr/bin/site_perl/gcc-ranlib-15" + - "/usr/bin/vendor_perl/gcc-ranlib-15" + - "/usr/bin/core_perl/gcc-ranlib-15" + - "/home/dewdude/.lmstudio/bin/gcc-ranlib-15" + - "/usr/bin/gcc-ranlib15" + - "/home/dewdude/miniconda3/bin/gcc-ranlib15" + - "/home/dewdude/miniconda3/condabin/gcc-ranlib15" + - "/home/dewdude/.local/bin/gcc-ranlib15" + - "/usr/local/sbin/gcc-ranlib15" + - "/usr/local/bin/gcc-ranlib15" + - "/opt/cuda/bin/gcc-ranlib15" + - "/opt/cuda/nsight_compute/gcc-ranlib15" + - "/opt/cuda/nsight_systems/bin/gcc-ranlib15" + - "/usr/lib/jvm/default/bin/gcc-ranlib15" + - "/usr/bin/site_perl/gcc-ranlib15" + - "/usr/bin/vendor_perl/gcc-ranlib15" + - "/usr/bin/core_perl/gcc-ranlib15" + - "/home/dewdude/.lmstudio/bin/gcc-ranlib15" + found: "/usr/bin/gcc-ranlib" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "try_compile-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:83 (try_compile)" + - "/usr/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:4 (project)" + checks: + - "Detecting C compiler ABI info" + directories: + source: "/home/dewdude/musepack/musepack_src_r475/CMakeFiles/CMakeScratch/TryCompile-nGj7E5" + binary: "/home/dewdude/musepack/musepack_src_r475/CMakeFiles/CMakeScratch/TryCompile-nGj7E5" + cmakeVariables: + CMAKE_C_FLAGS: "" + CMAKE_EXE_LINKER_FLAGS: "" + buildResult: + variable: "CMAKE_C_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/home/dewdude/musepack/musepack_src_r475/CMakeFiles/CMakeScratch/TryCompile-nGj7E5' + + Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_77301/fast + /usr/bin/make -f CMakeFiles/cmTC_77301.dir/build.make CMakeFiles/cmTC_77301.dir/build + make[1]: Entering directory '/home/dewdude/musepack/musepack_src_r475/CMakeFiles/CMakeScratch/TryCompile-nGj7E5' + Building C object CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o + /usr/bin/cc -v -o CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c + Using built-in specs. + COLLECT_GCC=/usr/bin/cc + Target: x86_64-pc-linux-gnu + Configured with: /tmp/pkg/src/gcc/configure --enable-languages=ada,c,c++,d,fortran,go,lto,m2,objc,obj-c++,rust,cobol --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://github.com/CachyOS/CachyOS-PKGBUILDS/issues --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror + Thread model: posix + Supported LTO compression algorithms: zlib zstd + gcc version 15.2.1 20251112 (GCC) + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_77301.dir/' + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1 -quiet -v /usr/share/cmake/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_77301.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -o /tmp/ccYEPAPx.s + GNU C23 (GCC) version 15.2.1 20251112 (x86_64-pc-linux-gnu) + compiled by GNU C version 15.2.1 20251112, GMP version 6.3.0, MPFR version 4.2.2, MPC version 1.3.1, isl version isl-0.27-GMP + + GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 + ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../x86_64-pc-linux-gnu/include" + #include "..." search starts here: + #include <...> search starts here: + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include + /usr/local/include + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include-fixed + /usr/include + End of search list. + Compiler executable checksum: 2df228de630f43ce8848711bbb5645a7 + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_77301.dir/' + as -v --64 -o CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o /tmp/ccYEPAPx.s + GNU assembler version 2.45.1 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.45.1 + COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/ + LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/ + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.' + Linking C executable cmTC_77301 + /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_77301.dir/link.txt --verbose=1 + Using built-in specs. + COLLECT_GCC=/usr/bin/cc + COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper + Target: x86_64-pc-linux-gnu + Configured with: /tmp/pkg/src/gcc/configure --enable-languages=ada,c,c++,d,fortran,go,lto,m2,objc,obj-c++,rust,cobol --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://github.com/CachyOS/CachyOS-PKGBUILDS/issues --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror + Thread model: posix + Supported LTO compression algorithms: zlib zstd + gcc version 15.2.1 20251112 (GCC) + COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/ + LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/ + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_77301' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_77301.' + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccMfZdFc.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_77301 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o + collect2 version 15.2.1 20251112 + /usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccMfZdFc.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_77301 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o + GNU ld (GNU Binutils) 2.45.1 + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_77301' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_77301.' + /usr/bin/cc -v -Wl,-v CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o -o cmTC_77301 + make[1]: Leaving directory '/home/dewdude/musepack/musepack_src_r475/CMakeFiles/CMakeScratch/TryCompile-nGj7E5' + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:217 (message)" + - "/usr/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:4 (project)" + message: | + Parsed C implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include] + add: [/usr/local/include] + add: [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include-fixed] + add: [/usr/include] + end of search list found + collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include-fixed] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include-fixed] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include;/usr/local/include;/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include-fixed;/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:253 (message)" + - "/usr/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:4 (project)" + message: | + Parsed C implicit link information: + link line regex: [^( *|.*[/\\])(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + linker tool regex: [^[ ]*(->|")?[ ]*(([^"]*[/\\])?(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)))("|,| |$)] + ignore line: [Change Dir: '/home/dewdude/musepack/musepack_src_r475/CMakeFiles/CMakeScratch/TryCompile-nGj7E5'] + ignore line: [] + ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_77301/fast] + ignore line: [/usr/bin/make -f CMakeFiles/cmTC_77301.dir/build.make CMakeFiles/cmTC_77301.dir/build] + ignore line: [make[1]: Entering directory '/home/dewdude/musepack/musepack_src_r475/CMakeFiles/CMakeScratch/TryCompile-nGj7E5'] + ignore line: [Building C object CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o] + ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [Target: x86_64-pc-linux-gnu] + ignore line: [Configured with: /tmp/pkg/src/gcc/configure --enable-languages=ada c c++ d fortran go lto m2 objc obj-c++ rust cobol --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://github.com/CachyOS/CachyOS-PKGBUILDS/issues --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 15.2.1 20251112 (GCC) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_77301.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1 -quiet -v /usr/share/cmake/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_77301.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -o /tmp/ccYEPAPx.s] + ignore line: [GNU C23 (GCC) version 15.2.1 20251112 (x86_64-pc-linux-gnu)] + ignore line: [ compiled by GNU C version 15.2.1 20251112 GMP version 6.3.0 MPFR version 4.2.2 MPC version 1.3.1 isl version isl-0.27-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../x86_64-pc-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include-fixed] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [Compiler executable checksum: 2df228de630f43ce8848711bbb5645a7] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_77301.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o /tmp/ccYEPAPx.s] + ignore line: [GNU assembler version 2.45.1 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.45.1] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.'] + ignore line: [Linking C executable cmTC_77301] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_77301.dir/link.txt --verbose=1] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper] + ignore line: [Target: x86_64-pc-linux-gnu] + ignore line: [Configured with: /tmp/pkg/src/gcc/configure --enable-languages=ada c c++ d fortran go lto m2 objc obj-c++ rust cobol --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://github.com/CachyOS/CachyOS-PKGBUILDS/issues --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 15.2.1 20251112 (GCC) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_77301' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_77301.'] + link line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccMfZdFc.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_77301 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccMfZdFc.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-o] ==> ignore + arg [cmTC_77301] ==> ignore + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o] + arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1] + arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../..] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../..] + arg [-L/lib] ==> dir [/lib] + arg [-L/usr/lib] ==> dir [/usr/lib] + arg [-v] ==> ignore + arg [CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lgcc] ==> lib [gcc] + arg [--push-state] ==> ignore + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--pop-state] ==> ignore + arg [-lc] ==> lib [c] + arg [-lgcc] ==> lib [gcc] + arg [--push-state] ==> ignore + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--pop-state] ==> ignore + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o] + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] + ignore line: [collect2 version 15.2.1 20251112] + ignore line: [/usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccMfZdFc.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_77301 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_77301.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] + linker tool for 'C': /usr/bin/ld + collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] ==> [/usr/lib/Scrt1.o] + collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] ==> [/usr/lib/crti.o] + collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] ==> [/usr/lib/crtn.o] + collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1] + collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../..] ==> [/usr/lib] + collapse library dir [/lib] ==> [/lib] + collapse library dir [/usr/lib] ==> [/usr/lib] + implicit libs: [gcc;gcc_s;c;gcc;gcc_s] + implicit objs: [/usr/lib/Scrt1.o;/usr/lib/crti.o;/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o;/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o;/usr/lib/crtn.o] + implicit dirs: [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1;/usr/lib;/lib] + implicit fwks: [] + + + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/Internal/CMakeDetermineLinkerId.cmake:36 (message)" + - "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:299 (cmake_determine_linker_id)" + - "/usr/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:4 (project)" + message: | + Running the C compiler's linker: "/usr/bin/ld" "-v" + GNU ld (GNU Binutils) 2.45.1 + - + kind: "find-v1" + backtrace: + - "mpcgain/CMakeLists.txt:1 (FIND_PATH)" + mode: "path" + variable: "REPLAY_GAIN_INCLUDE_DIR" + description: "Path to a file." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "replaygain/gain_analysis.h" + candidate_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + - "/usr/local/include/" + - "/usr/local/" + - "/usr/include/" + - "/usr/" + - "/include/" + - "/usr/X11R6/include/" + - "/usr/X11R6/" + - "/usr/pkg/include/" + - "/usr/pkg/" + - "/opt/include/" + - "/opt/" + - "/usr/include/X11/" + - "/usr/include/" + - "/usr/local/include/" + - "/home/dewdude/musepack/libreplaygain/include/" + searched_directories: + - "/home/dewdude/miniconda3/bin/replaygain/gain_analysis.h" + - "/home/dewdude/miniconda3/condabin/replaygain/gain_analysis.h" + - "/home/dewdude/.local/bin/replaygain/gain_analysis.h" + - "/usr/local/sbin/replaygain/gain_analysis.h" + - "/usr/local/bin/replaygain/gain_analysis.h" + - "/usr/bin/replaygain/gain_analysis.h" + - "/opt/cuda/bin/replaygain/gain_analysis.h" + - "/opt/cuda/nsight_compute/replaygain/gain_analysis.h" + - "/opt/cuda/nsight_systems/bin/replaygain/gain_analysis.h" + - "/usr/lib/jvm/default/bin/replaygain/gain_analysis.h" + - "/usr/bin/site_perl/replaygain/gain_analysis.h" + - "/usr/bin/vendor_perl/replaygain/gain_analysis.h" + - "/usr/bin/core_perl/replaygain/gain_analysis.h" + - "/home/dewdude/.lmstudio/bin/replaygain/gain_analysis.h" + - "/usr/local/include/replaygain/gain_analysis.h" + - "/usr/local/replaygain/gain_analysis.h" + - "/usr/include/replaygain/gain_analysis.h" + - "/usr/replaygain/gain_analysis.h" + - "/include/replaygain/gain_analysis.h" + - "/usr/X11R6/include/replaygain/gain_analysis.h" + - "/usr/X11R6/replaygain/gain_analysis.h" + - "/usr/pkg/include/replaygain/gain_analysis.h" + - "/usr/pkg/replaygain/gain_analysis.h" + - "/opt/include/replaygain/gain_analysis.h" + - "/opt/replaygain/gain_analysis.h" + - "/usr/include/X11/replaygain/gain_analysis.h" + - "/usr/include/replaygain/gain_analysis.h" + - "/usr/local/include/replaygain/gain_analysis.h" + - "/home/dewdude/musepack/libreplaygain/include/replaygain/gain_analysis.h" + found: false + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + CMAKE_INSTALL_PREFIX: "/usr/local" + CMAKE_SYSTEM_PREFIX_PATH: + - "/usr/local" + - "/usr" + - "/" + - "/usr" + - "/usr/local" + - "/usr/X11R6" + - "/usr/pkg" + - "/opt" + CMAKE_SYSTEM_INCLUDE_PATH: + - "/usr/include/X11" + - + kind: "find-v1" + backtrace: + - "mpcgain/CMakeLists.txt:7 (FIND_LIBRARY)" + mode: "library" + variable: "REPLAY_GAIN_LIBRARY" + description: "Path to a library." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "replaygain" + - "replaygain_static" + candidate_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + - "/usr/local/lib/" + - "/usr/local/" + - "/usr/lib/" + - "/usr/" + - "/lib/" + - "/usr/X11R6/lib/" + - "/usr/X11R6/" + - "/usr/pkg/lib/" + - "/usr/pkg/" + - "/opt/lib/" + - "/opt/" + - "/usr/lib/X11/" + - "/usr/lib/" + - "/usr/local/lib/" + - "/home/dewdude/musepack/libreplaygain/bin/src/release/" + searched_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + - "/usr/local/lib/" + - "/usr/local/" + - "/usr/lib/" + - "/usr/" + - "/lib/" + - "/usr/X11R6/lib/" + - "/usr/X11R6/" + - "/usr/pkg/lib/" + - "/usr/pkg/" + - "/opt/lib/" + - "/opt/" + - "/usr/lib/X11/" + - "/usr/lib/" + - "/usr/local/lib/" + - "/home/dewdude/musepack/libreplaygain/bin/src/release/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + - "/usr/local/lib/" + - "/usr/local/" + - "/usr/lib/" + - "/usr/" + - "/lib/" + - "/usr/X11R6/lib/" + - "/usr/X11R6/" + - "/usr/pkg/lib/" + - "/usr/pkg/" + - "/opt/lib/" + - "/opt/" + - "/usr/lib/X11/" + - "/usr/lib/" + - "/usr/local/lib/" + - "/home/dewdude/musepack/libreplaygain/bin/src/release/" + found: false + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + CMAKE_INSTALL_PREFIX: "/usr/local" + CMAKE_SYSTEM_PREFIX_PATH: + - "/usr/local" + - "/usr" + - "/" + - "/usr" + - "/usr/local" + - "/usr/X11R6" + - "/usr/pkg" + - "/opt" + CMAKE_SYSTEM_LIBRARY_PATH: + - "/usr/lib/X11" + - + kind: "find-v1" + backtrace: + - "mpcchap/CMakeLists.txt:1 (FIND_PATH)" + mode: "path" + variable: "CUEFILE_INCLUDE_DIR" + description: "Path to a file." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "cuetools/cuefile.h" + candidate_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + - "/usr/local/include/" + - "/usr/local/" + - "/usr/include/" + - "/usr/" + - "/include/" + - "/usr/X11R6/include/" + - "/usr/X11R6/" + - "/usr/pkg/include/" + - "/usr/pkg/" + - "/opt/include/" + - "/opt/" + - "/usr/include/X11/" + - "/home/dewdude/musepack/libcuefile/include/" + searched_directories: + - "/home/dewdude/miniconda3/bin/cuetools/cuefile.h" + - "/home/dewdude/miniconda3/condabin/cuetools/cuefile.h" + - "/home/dewdude/.local/bin/cuetools/cuefile.h" + - "/usr/local/sbin/cuetools/cuefile.h" + - "/usr/local/bin/cuetools/cuefile.h" + - "/usr/bin/cuetools/cuefile.h" + - "/opt/cuda/bin/cuetools/cuefile.h" + - "/opt/cuda/nsight_compute/cuetools/cuefile.h" + - "/opt/cuda/nsight_systems/bin/cuetools/cuefile.h" + - "/usr/lib/jvm/default/bin/cuetools/cuefile.h" + - "/usr/bin/site_perl/cuetools/cuefile.h" + - "/usr/bin/vendor_perl/cuetools/cuefile.h" + - "/usr/bin/core_perl/cuetools/cuefile.h" + - "/home/dewdude/.lmstudio/bin/cuetools/cuefile.h" + - "/usr/local/include/cuetools/cuefile.h" + - "/usr/local/cuetools/cuefile.h" + - "/usr/include/cuetools/cuefile.h" + - "/usr/cuetools/cuefile.h" + - "/include/cuetools/cuefile.h" + - "/usr/X11R6/include/cuetools/cuefile.h" + - "/usr/X11R6/cuetools/cuefile.h" + - "/usr/pkg/include/cuetools/cuefile.h" + - "/usr/pkg/cuetools/cuefile.h" + - "/opt/include/cuetools/cuefile.h" + - "/opt/cuetools/cuefile.h" + - "/usr/include/X11/cuetools/cuefile.h" + - "/home/dewdude/musepack/libcuefile/include/cuetools/cuefile.h" + found: false + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + CMAKE_INSTALL_PREFIX: "/usr/local" + CMAKE_SYSTEM_PREFIX_PATH: + - "/usr/local" + - "/usr" + - "/" + - "/usr" + - "/usr/local" + - "/usr/X11R6" + - "/usr/pkg" + - "/opt" + CMAKE_SYSTEM_INCLUDE_PATH: + - "/usr/include/X11" + - + kind: "find-v1" + backtrace: + - "mpcchap/CMakeLists.txt:5 (FIND_LIBRARY)" + mode: "library" + variable: "CUEFILE_LIBRARY" + description: "Path to a library." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "cuefile" + candidate_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + - "/usr/local/lib/" + - "/usr/local/" + - "/usr/lib/" + - "/usr/" + - "/lib/" + - "/usr/X11R6/lib/" + - "/usr/X11R6/" + - "/usr/pkg/lib/" + - "/usr/pkg/" + - "/opt/lib/" + - "/opt/" + - "/usr/lib/X11/" + - "/home/dewdude/musepack/musepack_src_r475/mpcchap/src/" + searched_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + - "/usr/local/lib/" + - "/usr/local/" + - "/usr/lib/" + - "/usr/" + - "/lib/" + - "/usr/X11R6/lib/" + - "/usr/X11R6/" + - "/usr/pkg/lib/" + - "/usr/pkg/" + - "/opt/lib/" + - "/opt/" + - "/usr/lib/X11/" + - "/home/dewdude/musepack/musepack_src_r475/mpcchap/src/" + found: false + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + CMAKE_INSTALL_PREFIX: "/usr/local" + CMAKE_SYSTEM_PREFIX_PATH: + - "/usr/local" + - "/usr" + - "/" + - "/usr" + - "/usr/local" + - "/usr/X11R6" + - "/usr/pkg" + - "/opt" + CMAKE_SYSTEM_LIBRARY_PATH: + - "/usr/lib/X11" +... + +--- +events: + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineSystem.cmake:12 (find_program)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_UNAME" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "uname" + candidate_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + - "/bin/" + searched_directories: + - "/home/dewdude/miniconda3/bin/uname" + - "/home/dewdude/miniconda3/condabin/uname" + - "/home/dewdude/.local/bin/uname" + - "/usr/local/sbin/uname" + - "/usr/local/bin/uname" + found: "/usr/bin/uname" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineSystem.cmake:212 (message)" + - "CMakeLists.txt:4 (project)" + message: | + The system is: Linux - 6.17.7-5-cachyos - x86_64 + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeUnixFindMake.cmake:5 (find_program)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_MAKE_PROGRAM" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "gmake" + - "make" + - "smake" + candidate_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + searched_directories: + - "/home/dewdude/miniconda3/bin/gmake" + - "/home/dewdude/miniconda3/condabin/gmake" + - "/home/dewdude/.local/bin/gmake" + - "/usr/local/sbin/gmake" + - "/usr/local/bin/gmake" + - "/usr/bin/gmake" + - "/opt/cuda/bin/gmake" + - "/opt/cuda/nsight_compute/gmake" + - "/opt/cuda/nsight_systems/bin/gmake" + - "/usr/lib/jvm/default/bin/gmake" + - "/usr/bin/site_perl/gmake" + - "/usr/bin/vendor_perl/gmake" + - "/usr/bin/core_perl/gmake" + - "/home/dewdude/.lmstudio/bin/gmake" + - "/home/dewdude/miniconda3/bin/make" + - "/home/dewdude/miniconda3/condabin/make" + - "/home/dewdude/.local/bin/make" + - "/usr/local/sbin/make" + - "/usr/local/bin/make" + found: "/usr/bin/make" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompiler.cmake:73 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:64 (_cmake_find_compiler)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_C_COMPILER" + description: "C compiler" + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "cc" + - "gcc" + - "cl" + - "bcc" + - "xlc" + - "icx" + - "clang" + candidate_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + searched_directories: + - "/home/dewdude/miniconda3/bin/cc" + - "/home/dewdude/miniconda3/condabin/cc" + - "/home/dewdude/.local/bin/cc" + - "/usr/local/sbin/cc" + - "/usr/local/bin/cc" + found: "/usr/bin/cc" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:462 (find_file)" + - "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:500 (CMAKE_DETERMINE_COMPILER_ID_WRITE)" + - "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:8 (CMAKE_DETERMINE_COMPILER_ID_BUILD)" + - "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:122 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:4 (project)" + mode: "file" + variable: "src_in" + description: "Path to a file." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "CMakeCCompilerId.c.in" + candidate_directories: + - "/usr/share/cmake/Modules/" + found: "/usr/share/cmake/Modules/CMakeCCompilerId.c.in" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:122 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:4 (project)" + message: | + Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. + Compiler: /usr/bin/cc + Build flags: + Id flags: + + The output was: + 0 + + + Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" + + The C compiler identification is GNU, found in: + /home/dewdude/musepack/musepack_src_r475/CMakeFiles/4.1.2/CompilerIdC/a.out + + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_AR" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "ar" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/ar" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_RANLIB" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "ranlib" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/ranlib" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_STRIP" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "strip" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/strip" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_LINKER" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "ld" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/ld" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_NM" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "nm" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/nm" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_OBJDUMP" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "objdump" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/objdump" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_OBJCOPY" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "objcopy" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/objcopy" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_READELF" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "readelf" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/readelf" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_DLLTOOL" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "dlltool" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + searched_directories: + - "/usr/bin/dlltool" + - "/home/dewdude/miniconda3/bin/dlltool" + - "/home/dewdude/miniconda3/condabin/dlltool" + - "/home/dewdude/.local/bin/dlltool" + - "/usr/local/sbin/dlltool" + - "/usr/local/bin/dlltool" + - "/opt/cuda/bin/dlltool" + - "/opt/cuda/nsight_compute/dlltool" + - "/opt/cuda/nsight_systems/bin/dlltool" + - "/usr/lib/jvm/default/bin/dlltool" + - "/usr/bin/site_perl/dlltool" + - "/usr/bin/vendor_perl/dlltool" + - "/usr/bin/core_perl/dlltool" + - "/home/dewdude/.lmstudio/bin/dlltool" + found: false + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_ADDR2LINE" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "addr2line" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + found: "/usr/bin/addr2line" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_TAPI" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "tapi" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + searched_directories: + - "/usr/bin/tapi" + - "/home/dewdude/miniconda3/bin/tapi" + - "/home/dewdude/miniconda3/condabin/tapi" + - "/home/dewdude/.local/bin/tapi" + - "/usr/local/sbin/tapi" + - "/usr/local/bin/tapi" + - "/opt/cuda/bin/tapi" + - "/opt/cuda/nsight_compute/tapi" + - "/opt/cuda/nsight_systems/bin/tapi" + - "/usr/lib/jvm/default/bin/tapi" + - "/usr/bin/site_perl/tapi" + - "/usr/bin/vendor_perl/tapi" + - "/usr/bin/core_perl/tapi" + - "/home/dewdude/.lmstudio/bin/tapi" + found: false + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/Compiler/GNU-FindBinUtils.cmake:18 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:201 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_C_COMPILER_AR" + description: "A wrapper around 'ar' adding the appropriate '--plugin' option for the GCC compiler" + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "gcc-ar-15.2" + - "gcc-ar-15" + - "gcc-ar15" + - "gcc-ar" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + searched_directories: + - "/usr/bin/gcc-ar-15.2" + - "/home/dewdude/miniconda3/bin/gcc-ar-15.2" + - "/home/dewdude/miniconda3/condabin/gcc-ar-15.2" + - "/home/dewdude/.local/bin/gcc-ar-15.2" + - "/usr/local/sbin/gcc-ar-15.2" + - "/usr/local/bin/gcc-ar-15.2" + - "/opt/cuda/bin/gcc-ar-15.2" + - "/opt/cuda/nsight_compute/gcc-ar-15.2" + - "/opt/cuda/nsight_systems/bin/gcc-ar-15.2" + - "/usr/lib/jvm/default/bin/gcc-ar-15.2" + - "/usr/bin/site_perl/gcc-ar-15.2" + - "/usr/bin/vendor_perl/gcc-ar-15.2" + - "/usr/bin/core_perl/gcc-ar-15.2" + - "/home/dewdude/.lmstudio/bin/gcc-ar-15.2" + - "/usr/bin/gcc-ar-15" + - "/home/dewdude/miniconda3/bin/gcc-ar-15" + - "/home/dewdude/miniconda3/condabin/gcc-ar-15" + - "/home/dewdude/.local/bin/gcc-ar-15" + - "/usr/local/sbin/gcc-ar-15" + - "/usr/local/bin/gcc-ar-15" + - "/opt/cuda/bin/gcc-ar-15" + - "/opt/cuda/nsight_compute/gcc-ar-15" + - "/opt/cuda/nsight_systems/bin/gcc-ar-15" + - "/usr/lib/jvm/default/bin/gcc-ar-15" + - "/usr/bin/site_perl/gcc-ar-15" + - "/usr/bin/vendor_perl/gcc-ar-15" + - "/usr/bin/core_perl/gcc-ar-15" + - "/home/dewdude/.lmstudio/bin/gcc-ar-15" + - "/usr/bin/gcc-ar15" + - "/home/dewdude/miniconda3/bin/gcc-ar15" + - "/home/dewdude/miniconda3/condabin/gcc-ar15" + - "/home/dewdude/.local/bin/gcc-ar15" + - "/usr/local/sbin/gcc-ar15" + - "/usr/local/bin/gcc-ar15" + - "/opt/cuda/bin/gcc-ar15" + - "/opt/cuda/nsight_compute/gcc-ar15" + - "/opt/cuda/nsight_systems/bin/gcc-ar15" + - "/usr/lib/jvm/default/bin/gcc-ar15" + - "/usr/bin/site_perl/gcc-ar15" + - "/usr/bin/vendor_perl/gcc-ar15" + - "/usr/bin/core_perl/gcc-ar15" + - "/home/dewdude/.lmstudio/bin/gcc-ar15" + found: "/usr/bin/gcc-ar" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/Compiler/GNU-FindBinUtils.cmake:30 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:201 (include)" + - "CMakeLists.txt:4 (project)" + mode: "program" + variable: "CMAKE_C_COMPILER_RANLIB" + description: "A wrapper around 'ranlib' adding the appropriate '--plugin' option for the GCC compiler" + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "gcc-ranlib-15.2" + - "gcc-ranlib-15" + - "gcc-ranlib15" + - "gcc-ranlib" + candidate_directories: + - "/usr/bin/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + searched_directories: + - "/usr/bin/gcc-ranlib-15.2" + - "/home/dewdude/miniconda3/bin/gcc-ranlib-15.2" + - "/home/dewdude/miniconda3/condabin/gcc-ranlib-15.2" + - "/home/dewdude/.local/bin/gcc-ranlib-15.2" + - "/usr/local/sbin/gcc-ranlib-15.2" + - "/usr/local/bin/gcc-ranlib-15.2" + - "/opt/cuda/bin/gcc-ranlib-15.2" + - "/opt/cuda/nsight_compute/gcc-ranlib-15.2" + - "/opt/cuda/nsight_systems/bin/gcc-ranlib-15.2" + - "/usr/lib/jvm/default/bin/gcc-ranlib-15.2" + - "/usr/bin/site_perl/gcc-ranlib-15.2" + - "/usr/bin/vendor_perl/gcc-ranlib-15.2" + - "/usr/bin/core_perl/gcc-ranlib-15.2" + - "/home/dewdude/.lmstudio/bin/gcc-ranlib-15.2" + - "/usr/bin/gcc-ranlib-15" + - "/home/dewdude/miniconda3/bin/gcc-ranlib-15" + - "/home/dewdude/miniconda3/condabin/gcc-ranlib-15" + - "/home/dewdude/.local/bin/gcc-ranlib-15" + - "/usr/local/sbin/gcc-ranlib-15" + - "/usr/local/bin/gcc-ranlib-15" + - "/opt/cuda/bin/gcc-ranlib-15" + - "/opt/cuda/nsight_compute/gcc-ranlib-15" + - "/opt/cuda/nsight_systems/bin/gcc-ranlib-15" + - "/usr/lib/jvm/default/bin/gcc-ranlib-15" + - "/usr/bin/site_perl/gcc-ranlib-15" + - "/usr/bin/vendor_perl/gcc-ranlib-15" + - "/usr/bin/core_perl/gcc-ranlib-15" + - "/home/dewdude/.lmstudio/bin/gcc-ranlib-15" + - "/usr/bin/gcc-ranlib15" + - "/home/dewdude/miniconda3/bin/gcc-ranlib15" + - "/home/dewdude/miniconda3/condabin/gcc-ranlib15" + - "/home/dewdude/.local/bin/gcc-ranlib15" + - "/usr/local/sbin/gcc-ranlib15" + - "/usr/local/bin/gcc-ranlib15" + - "/opt/cuda/bin/gcc-ranlib15" + - "/opt/cuda/nsight_compute/gcc-ranlib15" + - "/opt/cuda/nsight_systems/bin/gcc-ranlib15" + - "/usr/lib/jvm/default/bin/gcc-ranlib15" + - "/usr/bin/site_perl/gcc-ranlib15" + - "/usr/bin/vendor_perl/gcc-ranlib15" + - "/usr/bin/core_perl/gcc-ranlib15" + - "/home/dewdude/.lmstudio/bin/gcc-ranlib15" + found: "/usr/bin/gcc-ranlib" + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + - + kind: "try_compile-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:83 (try_compile)" + - "/usr/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:4 (project)" + checks: + - "Detecting C compiler ABI info" + directories: + source: "/home/dewdude/musepack/musepack_src_r475/CMakeFiles/CMakeScratch/TryCompile-U4m0bJ" + binary: "/home/dewdude/musepack/musepack_src_r475/CMakeFiles/CMakeScratch/TryCompile-U4m0bJ" + cmakeVariables: + CMAKE_C_FLAGS: "" + CMAKE_EXE_LINKER_FLAGS: "" + buildResult: + variable: "CMAKE_C_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/home/dewdude/musepack/musepack_src_r475/CMakeFiles/CMakeScratch/TryCompile-U4m0bJ' + + Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_37242/fast + /usr/bin/make -f CMakeFiles/cmTC_37242.dir/build.make CMakeFiles/cmTC_37242.dir/build + make[1]: Entering directory '/home/dewdude/musepack/musepack_src_r475/CMakeFiles/CMakeScratch/TryCompile-U4m0bJ' + Building C object CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o + /usr/bin/cc -v -o CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c + Using built-in specs. + COLLECT_GCC=/usr/bin/cc + Target: x86_64-pc-linux-gnu + Configured with: /tmp/pkg/src/gcc/configure --enable-languages=ada,c,c++,d,fortran,go,lto,m2,objc,obj-c++,rust,cobol --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://github.com/CachyOS/CachyOS-PKGBUILDS/issues --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror + Thread model: posix + Supported LTO compression algorithms: zlib zstd + gcc version 15.2.1 20251112 (GCC) + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_37242.dir/' + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1 -quiet -v /usr/share/cmake/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_37242.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -o /tmp/ccuhIUE7.s + GNU C23 (GCC) version 15.2.1 20251112 (x86_64-pc-linux-gnu) + compiled by GNU C version 15.2.1 20251112, GMP version 6.3.0, MPFR version 4.2.2, MPC version 1.3.1, isl version isl-0.27-GMP + + GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 + ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../x86_64-pc-linux-gnu/include" + #include "..." search starts here: + #include <...> search starts here: + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include + /usr/local/include + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include-fixed + /usr/include + End of search list. + Compiler executable checksum: 2df228de630f43ce8848711bbb5645a7 + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_37242.dir/' + as -v --64 -o CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o /tmp/ccuhIUE7.s + GNU assembler version 2.45.1 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.45.1 + COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/ + LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/ + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.' + Linking C executable cmTC_37242 + /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_37242.dir/link.txt --verbose=1 + Using built-in specs. + COLLECT_GCC=/usr/bin/cc + COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper + Target: x86_64-pc-linux-gnu + Configured with: /tmp/pkg/src/gcc/configure --enable-languages=ada,c,c++,d,fortran,go,lto,m2,objc,obj-c++,rust,cobol --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://github.com/CachyOS/CachyOS-PKGBUILDS/issues --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror + Thread model: posix + Supported LTO compression algorithms: zlib zstd + gcc version 15.2.1 20251112 (GCC) + COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/ + LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/ + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_37242' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_37242.' + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccwvqHRb.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_37242 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o + collect2 version 15.2.1 20251112 + /usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccwvqHRb.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_37242 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o + GNU ld (GNU Binutils) 2.45.1 + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_37242' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_37242.' + /usr/bin/cc -v -Wl,-v CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o -o cmTC_37242 + make[1]: Leaving directory '/home/dewdude/musepack/musepack_src_r475/CMakeFiles/CMakeScratch/TryCompile-U4m0bJ' + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:217 (message)" + - "/usr/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:4 (project)" + message: | + Parsed C implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include] + add: [/usr/local/include] + add: [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include-fixed] + add: [/usr/include] + end of search list found + collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include-fixed] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include-fixed] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include;/usr/local/include;/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include-fixed;/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:253 (message)" + - "/usr/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:4 (project)" + message: | + Parsed C implicit link information: + link line regex: [^( *|.*[/\\])(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + linker tool regex: [^[ ]*(->|")?[ ]*(([^"]*[/\\])?(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)))("|,| |$)] + ignore line: [Change Dir: '/home/dewdude/musepack/musepack_src_r475/CMakeFiles/CMakeScratch/TryCompile-U4m0bJ'] + ignore line: [] + ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_37242/fast] + ignore line: [/usr/bin/make -f CMakeFiles/cmTC_37242.dir/build.make CMakeFiles/cmTC_37242.dir/build] + ignore line: [make[1]: Entering directory '/home/dewdude/musepack/musepack_src_r475/CMakeFiles/CMakeScratch/TryCompile-U4m0bJ'] + ignore line: [Building C object CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o] + ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [Target: x86_64-pc-linux-gnu] + ignore line: [Configured with: /tmp/pkg/src/gcc/configure --enable-languages=ada c c++ d fortran go lto m2 objc obj-c++ rust cobol --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://github.com/CachyOS/CachyOS-PKGBUILDS/issues --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 15.2.1 20251112 (GCC) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_37242.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1 -quiet -v /usr/share/cmake/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_37242.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -o /tmp/ccuhIUE7.s] + ignore line: [GNU C23 (GCC) version 15.2.1 20251112 (x86_64-pc-linux-gnu)] + ignore line: [ compiled by GNU C version 15.2.1 20251112 GMP version 6.3.0 MPFR version 4.2.2 MPC version 1.3.1 isl version isl-0.27-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../x86_64-pc-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include-fixed] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [Compiler executable checksum: 2df228de630f43ce8848711bbb5645a7] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_37242.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o /tmp/ccuhIUE7.s] + ignore line: [GNU assembler version 2.45.1 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.45.1] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.'] + ignore line: [Linking C executable cmTC_37242] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_37242.dir/link.txt --verbose=1] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper] + ignore line: [Target: x86_64-pc-linux-gnu] + ignore line: [Configured with: /tmp/pkg/src/gcc/configure --enable-languages=ada c c++ d fortran go lto m2 objc obj-c++ rust cobol --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://github.com/CachyOS/CachyOS-PKGBUILDS/issues --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 15.2.1 20251112 (GCC) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_37242' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_37242.'] + link line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccwvqHRb.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_37242 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccwvqHRb.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-o] ==> ignore + arg [cmTC_37242] ==> ignore + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o] + arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1] + arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../..] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../..] + arg [-L/lib] ==> dir [/lib] + arg [-L/usr/lib] ==> dir [/usr/lib] + arg [-v] ==> ignore + arg [CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lgcc] ==> lib [gcc] + arg [--push-state] ==> ignore + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--pop-state] ==> ignore + arg [-lc] ==> lib [c] + arg [-lgcc] ==> lib [gcc] + arg [--push-state] ==> ignore + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--pop-state] ==> ignore + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o] + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] + ignore line: [collect2 version 15.2.1 20251112] + ignore line: [/usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccwvqHRb.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_37242 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_37242.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] + linker tool for 'C': /usr/bin/ld + collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] ==> [/usr/lib/Scrt1.o] + collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] ==> [/usr/lib/crti.o] + collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] ==> [/usr/lib/crtn.o] + collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1] + collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../..] ==> [/usr/lib] + collapse library dir [/lib] ==> [/lib] + collapse library dir [/usr/lib] ==> [/usr/lib] + implicit libs: [gcc;gcc_s;c;gcc;gcc_s] + implicit objs: [/usr/lib/Scrt1.o;/usr/lib/crti.o;/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o;/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o;/usr/lib/crtn.o] + implicit dirs: [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1;/usr/lib;/lib] + implicit fwks: [] + + + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/Internal/CMakeDetermineLinkerId.cmake:36 (message)" + - "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:299 (cmake_determine_linker_id)" + - "/usr/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:4 (project)" + message: | + Running the C compiler's linker: "/usr/bin/ld" "-v" + GNU ld (GNU Binutils) 2.45.1 + - + kind: "find-v1" + backtrace: + - "mpcgain/CMakeLists.txt:1 (FIND_PATH)" + mode: "path" + variable: "REPLAY_GAIN_INCLUDE_DIR" + description: "Path to a file." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "replaygain/gain_analysis.h" + candidate_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + - "/usr/local/include/" + - "/usr/local/" + - "/usr/include/" + - "/usr/" + - "/include/" + - "/usr/X11R6/include/" + - "/usr/X11R6/" + - "/usr/pkg/include/" + - "/usr/pkg/" + - "/opt/include/" + - "/opt/" + - "/usr/include/X11/" + - "/usr/include/" + - "/usr/local/include/" + - "/home/dewdude/musepack/libreplaygain/include/" + searched_directories: + - "/home/dewdude/miniconda3/bin/replaygain/gain_analysis.h" + - "/home/dewdude/miniconda3/condabin/replaygain/gain_analysis.h" + - "/home/dewdude/.local/bin/replaygain/gain_analysis.h" + - "/usr/local/sbin/replaygain/gain_analysis.h" + - "/usr/local/bin/replaygain/gain_analysis.h" + - "/usr/bin/replaygain/gain_analysis.h" + - "/opt/cuda/bin/replaygain/gain_analysis.h" + - "/opt/cuda/nsight_compute/replaygain/gain_analysis.h" + - "/opt/cuda/nsight_systems/bin/replaygain/gain_analysis.h" + - "/usr/lib/jvm/default/bin/replaygain/gain_analysis.h" + - "/usr/bin/site_perl/replaygain/gain_analysis.h" + - "/usr/bin/vendor_perl/replaygain/gain_analysis.h" + - "/usr/bin/core_perl/replaygain/gain_analysis.h" + - "/home/dewdude/.lmstudio/bin/replaygain/gain_analysis.h" + - "/usr/local/include/replaygain/gain_analysis.h" + - "/usr/local/replaygain/gain_analysis.h" + - "/usr/include/replaygain/gain_analysis.h" + - "/usr/replaygain/gain_analysis.h" + - "/include/replaygain/gain_analysis.h" + - "/usr/X11R6/include/replaygain/gain_analysis.h" + - "/usr/X11R6/replaygain/gain_analysis.h" + - "/usr/pkg/include/replaygain/gain_analysis.h" + - "/usr/pkg/replaygain/gain_analysis.h" + - "/opt/include/replaygain/gain_analysis.h" + - "/opt/replaygain/gain_analysis.h" + - "/usr/include/X11/replaygain/gain_analysis.h" + - "/usr/include/replaygain/gain_analysis.h" + - "/usr/local/include/replaygain/gain_analysis.h" + - "/home/dewdude/musepack/libreplaygain/include/replaygain/gain_analysis.h" + found: false + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + CMAKE_INSTALL_PREFIX: "/usr/local" + CMAKE_SYSTEM_PREFIX_PATH: + - "/usr/local" + - "/usr" + - "/" + - "/usr" + - "/usr/local" + - "/usr/X11R6" + - "/usr/pkg" + - "/opt" + CMAKE_SYSTEM_INCLUDE_PATH: + - "/usr/include/X11" + - + kind: "find-v1" + backtrace: + - "mpcgain/CMakeLists.txt:7 (FIND_LIBRARY)" + mode: "library" + variable: "REPLAY_GAIN_LIBRARY" + description: "Path to a library." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "replaygain" + - "replaygain_static" + candidate_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + - "/usr/local/lib/" + - "/usr/local/" + - "/usr/lib/" + - "/usr/" + - "/lib/" + - "/usr/X11R6/lib/" + - "/usr/X11R6/" + - "/usr/pkg/lib/" + - "/usr/pkg/" + - "/opt/lib/" + - "/opt/" + - "/usr/lib/X11/" + - "/usr/lib/" + - "/usr/local/lib/" + - "/home/dewdude/musepack/libreplaygain/bin/src/release/" + searched_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + - "/usr/local/lib/" + - "/usr/local/" + - "/usr/lib/" + - "/usr/" + - "/lib/" + - "/usr/X11R6/lib/" + - "/usr/X11R6/" + - "/usr/pkg/lib/" + - "/usr/pkg/" + - "/opt/lib/" + - "/opt/" + - "/usr/lib/X11/" + - "/usr/lib/" + - "/usr/local/lib/" + - "/home/dewdude/musepack/libreplaygain/bin/src/release/" + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + - "/usr/local/lib/" + - "/usr/local/" + - "/usr/lib/" + - "/usr/" + - "/lib/" + - "/usr/X11R6/lib/" + - "/usr/X11R6/" + - "/usr/pkg/lib/" + - "/usr/pkg/" + - "/opt/lib/" + - "/opt/" + - "/usr/lib/X11/" + - "/usr/lib/" + - "/usr/local/lib/" + - "/home/dewdude/musepack/libreplaygain/bin/src/release/" + found: false + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + CMAKE_INSTALL_PREFIX: "/usr/local" + CMAKE_SYSTEM_PREFIX_PATH: + - "/usr/local" + - "/usr" + - "/" + - "/usr" + - "/usr/local" + - "/usr/X11R6" + - "/usr/pkg" + - "/opt" + CMAKE_SYSTEM_LIBRARY_PATH: + - "/usr/lib/X11" + - + kind: "find-v1" + backtrace: + - "mpcchap/CMakeLists.txt:1 (FIND_PATH)" + mode: "path" + variable: "CUEFILE_INCLUDE_DIR" + description: "Path to a file." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "cuetools/cuefile.h" + candidate_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + - "/usr/local/include/" + - "/usr/local/" + - "/usr/include/" + - "/usr/" + - "/include/" + - "/usr/X11R6/include/" + - "/usr/X11R6/" + - "/usr/pkg/include/" + - "/usr/pkg/" + - "/opt/include/" + - "/opt/" + - "/usr/include/X11/" + - "/home/dewdude/musepack/libcuefile/include/" + searched_directories: + - "/home/dewdude/miniconda3/bin/cuetools/cuefile.h" + - "/home/dewdude/miniconda3/condabin/cuetools/cuefile.h" + - "/home/dewdude/.local/bin/cuetools/cuefile.h" + - "/usr/local/sbin/cuetools/cuefile.h" + - "/usr/local/bin/cuetools/cuefile.h" + - "/usr/bin/cuetools/cuefile.h" + - "/opt/cuda/bin/cuetools/cuefile.h" + - "/opt/cuda/nsight_compute/cuetools/cuefile.h" + - "/opt/cuda/nsight_systems/bin/cuetools/cuefile.h" + - "/usr/lib/jvm/default/bin/cuetools/cuefile.h" + - "/usr/bin/site_perl/cuetools/cuefile.h" + - "/usr/bin/vendor_perl/cuetools/cuefile.h" + - "/usr/bin/core_perl/cuetools/cuefile.h" + - "/home/dewdude/.lmstudio/bin/cuetools/cuefile.h" + - "/usr/local/include/cuetools/cuefile.h" + - "/usr/local/cuetools/cuefile.h" + - "/usr/include/cuetools/cuefile.h" + - "/usr/cuetools/cuefile.h" + - "/include/cuetools/cuefile.h" + - "/usr/X11R6/include/cuetools/cuefile.h" + - "/usr/X11R6/cuetools/cuefile.h" + - "/usr/pkg/include/cuetools/cuefile.h" + - "/usr/pkg/cuetools/cuefile.h" + - "/opt/include/cuetools/cuefile.h" + - "/opt/cuetools/cuefile.h" + - "/usr/include/X11/cuetools/cuefile.h" + - "/home/dewdude/musepack/libcuefile/include/cuetools/cuefile.h" + found: false + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + CMAKE_INSTALL_PREFIX: "/usr/local" + CMAKE_SYSTEM_PREFIX_PATH: + - "/usr/local" + - "/usr" + - "/" + - "/usr" + - "/usr/local" + - "/usr/X11R6" + - "/usr/pkg" + - "/opt" + CMAKE_SYSTEM_INCLUDE_PATH: + - "/usr/include/X11" + - + kind: "find-v1" + backtrace: + - "mpcchap/CMakeLists.txt:5 (FIND_LIBRARY)" + mode: "library" + variable: "CUEFILE_LIBRARY" + description: "Path to a library." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "cuefile" + candidate_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + - "/usr/local/lib/" + - "/usr/local/" + - "/usr/lib/" + - "/usr/" + - "/lib/" + - "/usr/X11R6/lib/" + - "/usr/X11R6/" + - "/usr/pkg/lib/" + - "/usr/pkg/" + - "/opt/lib/" + - "/opt/" + - "/usr/lib/X11/" + - "/home/dewdude/musepack/musepack_src_r475/mpcchap/src/" + searched_directories: + - "/home/dewdude/miniconda3/bin/" + - "/home/dewdude/miniconda3/condabin/" + - "/home/dewdude/.local/bin/" + - "/usr/local/sbin/" + - "/usr/local/bin/" + - "/usr/bin/" + - "/opt/cuda/bin/" + - "/opt/cuda/nsight_compute/" + - "/opt/cuda/nsight_systems/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/home/dewdude/.lmstudio/bin/" + - "/usr/local/lib/" + - "/usr/local/" + - "/usr/lib/" + - "/usr/" + - "/lib/" + - "/usr/X11R6/lib/" + - "/usr/X11R6/" + - "/usr/pkg/lib/" + - "/usr/pkg/" + - "/opt/lib/" + - "/opt/" + - "/usr/lib/X11/" + - "/home/dewdude/musepack/musepack_src_r475/mpcchap/src/" + found: false + search_context: + ENV{PATH}: + - "/home/dewdude/miniconda3/bin" + - "/home/dewdude/miniconda3/condabin" + - "/home/dewdude/.local/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/opt/cuda/bin" + - "/opt/cuda/nsight_compute" + - "/opt/cuda/nsight_systems/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/home/dewdude/.lmstudio/bin" + - "/home/dewdude/.lmstudio/bin" + CMAKE_INSTALL_PREFIX: "/usr/local" + CMAKE_SYSTEM_PREFIX_PATH: + - "/usr/local" + - "/usr" + - "/" + - "/usr" + - "/usr/local" + - "/usr/X11R6" + - "/usr/pkg" + - "/opt" + CMAKE_SYSTEM_LIBRARY_PATH: + - "/usr/lib/X11" +... diff --git a/CMakeFiles/CMakeDirectoryInformation.cmake b/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f5f0d8d --- /dev/null +++ b/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/dewdude/musepack/musepack_src_r475") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/dewdude/musepack/musepack_src_r475") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/CMakeFiles/InstallScripts.json b/CMakeFiles/InstallScripts.json new file mode 100644 index 0000000..c8ba617 --- /dev/null +++ b/CMakeFiles/InstallScripts.json @@ -0,0 +1,19 @@ +{ + "InstallScripts" : + [ + "/home/dewdude/musepack/musepack_src_r475/cmake_install.cmake", + "/home/dewdude/musepack/musepack_src_r475/libmpcdec/cmake_install.cmake", + "/home/dewdude/musepack/musepack_src_r475/libmpcpsy/cmake_install.cmake", + "/home/dewdude/musepack/musepack_src_r475/libmpcenc/cmake_install.cmake", + "/home/dewdude/musepack/musepack_src_r475/libwavformat/cmake_install.cmake", + "/home/dewdude/musepack/musepack_src_r475/mpcgain/cmake_install.cmake", + "/home/dewdude/musepack/musepack_src_r475/mpcdec/cmake_install.cmake", + "/home/dewdude/musepack/musepack_src_r475/mpcenc/cmake_install.cmake", + "/home/dewdude/musepack/musepack_src_r475/mpc2sv8/cmake_install.cmake", + "/home/dewdude/musepack/musepack_src_r475/mpccut/cmake_install.cmake", + "/home/dewdude/musepack/musepack_src_r475/mpcchap/cmake_install.cmake", + "/home/dewdude/musepack/musepack_src_r475/wavcmp/cmake_install.cmake", + "/home/dewdude/musepack/musepack_src_r475/include/cmake_install.cmake" + ], + "Parallel" : false +} diff --git a/CMakeFiles/Makefile.cmake b/CMakeFiles/Makefile.cmake new file mode 100644 index 0000000..799f5f1 --- /dev/null +++ b/CMakeFiles/Makefile.cmake @@ -0,0 +1,156 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "CMakeFiles/4.1.2/CMakeCCompiler.cmake" + "CMakeFiles/4.1.2/CMakeSystem.cmake" + "CMakeLists.txt" + "include/CMakeLists.txt" + "libmpcdec/CMakeLists.txt" + "libmpcenc/CMakeLists.txt" + "libmpcpsy/CMakeLists.txt" + "libwavformat/CMakeLists.txt" + "mpc2sv8/CMakeLists.txt" + "mpcchap/CMakeLists.txt" + "mpccut/CMakeLists.txt" + "mpcdec/CMakeLists.txt" + "mpcenc/CMakeLists.txt" + "mpcgain/CMakeLists.txt" + "wavcmp/CMakeLists.txt" + "/usr/share/cmake/Modules/CMakeCCompiler.cmake.in" + "/usr/share/cmake/Modules/CMakeCCompilerABI.c" + "/usr/share/cmake/Modules/CMakeCInformation.cmake" + "/usr/share/cmake/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/share/cmake/Modules/CMakeCompilerIdDetection.cmake" + "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake" + "/usr/share/cmake/Modules/CMakeDetermineCompiler.cmake" + "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake" + "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake" + "/usr/share/cmake/Modules/CMakeDetermineCompilerSupport.cmake" + "/usr/share/cmake/Modules/CMakeDetermineSystem.cmake" + "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake" + "/usr/share/cmake/Modules/CMakeGenericSystem.cmake" + "/usr/share/cmake/Modules/CMakeInitializeConfigs.cmake" + "/usr/share/cmake/Modules/CMakeLanguageInformation.cmake" + "/usr/share/cmake/Modules/CMakeParseImplicitIncludeInfo.cmake" + "/usr/share/cmake/Modules/CMakeParseImplicitLinkInfo.cmake" + "/usr/share/cmake/Modules/CMakeParseLibraryArchitecture.cmake" + "/usr/share/cmake/Modules/CMakeSystem.cmake.in" + "/usr/share/cmake/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/share/cmake/Modules/CMakeTestCCompiler.cmake" + "/usr/share/cmake/Modules/CMakeTestCompilerCommon.cmake" + "/usr/share/cmake/Modules/CMakeUnixFindMake.cmake" + "/usr/share/cmake/Modules/CheckIncludeFile.cmake" + "/usr/share/cmake/Modules/CheckIncludeFileCXX.cmake" + "/usr/share/cmake/Modules/CheckTypeSize.cmake" + "/usr/share/cmake/Modules/Compiler/ADSP-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/Borland-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/usr/share/cmake/Modules/Compiler/Clang-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + "/usr/share/cmake/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/Cray-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/CrayClang-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/Diab-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/GHS-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/GNU-C.cmake" + "/usr/share/cmake/Modules/Compiler/GNU-FindBinUtils.cmake" + "/usr/share/cmake/Modules/Compiler/GNU.cmake" + "/usr/share/cmake/Modules/Compiler/HP-C-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/IAR-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + "/usr/share/cmake/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/Intel-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/LCC-C-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/MSVC-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/OrangeC-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/PGI-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/PathScale-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/Renesas-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/SCO-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/TI-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/TIClang-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/Tasking-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/Watcom-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/XL-C-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + "/usr/share/cmake/Modules/Internal/CMakeCLinkerInformation.cmake" + "/usr/share/cmake/Modules/Internal/CMakeCommonLinkerInformation.cmake" + "/usr/share/cmake/Modules/Internal/CMakeDetermineLinkerId.cmake" + "/usr/share/cmake/Modules/Internal/CMakeInspectCLinker.cmake" + "/usr/share/cmake/Modules/Internal/FeatureTesting.cmake" + "/usr/share/cmake/Modules/Linker/GNU-C.cmake" + "/usr/share/cmake/Modules/Linker/GNU.cmake" + "/usr/share/cmake/Modules/Platform/Linker/GNU.cmake" + "/usr/share/cmake/Modules/Platform/Linker/Linux-GNU-C.cmake" + "/usr/share/cmake/Modules/Platform/Linker/Linux-GNU.cmake" + "/usr/share/cmake/Modules/Platform/Linux-GNU-C.cmake" + "/usr/share/cmake/Modules/Platform/Linux-GNU.cmake" + "/usr/share/cmake/Modules/Platform/Linux-Initialize.cmake" + "/usr/share/cmake/Modules/Platform/Linux.cmake" + "/usr/share/cmake/Modules/Platform/UnixPaths.cmake" + "/usr/share/cmake/Modules/TestBigEndian.cmake" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/4.1.2/CMakeSystem.cmake" + "CMakeFiles/4.1.2/CMakeCCompiler.cmake" + "CMakeFiles/4.1.2/CMakeCCompiler.cmake" + "CMakeFiles/4.1.2/CMakeCCompiler.cmake" + "CMakeFiles/CMakeDirectoryInformation.cmake" + "libmpcdec/CMakeFiles/CMakeDirectoryInformation.cmake" + "libmpcpsy/CMakeFiles/CMakeDirectoryInformation.cmake" + "libmpcenc/CMakeFiles/CMakeDirectoryInformation.cmake" + "libwavformat/CMakeFiles/CMakeDirectoryInformation.cmake" + "mpcgain/CMakeFiles/CMakeDirectoryInformation.cmake" + "mpcdec/CMakeFiles/CMakeDirectoryInformation.cmake" + "mpcenc/CMakeFiles/CMakeDirectoryInformation.cmake" + "mpc2sv8/CMakeFiles/CMakeDirectoryInformation.cmake" + "mpccut/CMakeFiles/CMakeDirectoryInformation.cmake" + "mpcchap/CMakeFiles/CMakeDirectoryInformation.cmake" + "wavcmp/CMakeFiles/CMakeDirectoryInformation.cmake" + "include/CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "libmpcdec/CMakeFiles/mpcdec.dir/DependInfo.cmake" + "libmpcpsy/CMakeFiles/mpcpsy_static.dir/DependInfo.cmake" + "libmpcenc/CMakeFiles/mpcenc_static.dir/DependInfo.cmake" + "libwavformat/CMakeFiles/wavformat_static.dir/DependInfo.cmake" + "mpcdec/CMakeFiles/mpcdec_cmd.dir/DependInfo.cmake" + "mpcenc/CMakeFiles/mpcenc.dir/DependInfo.cmake" + "mpc2sv8/CMakeFiles/mpc2sv8.dir/DependInfo.cmake" + "mpccut/CMakeFiles/mpccut.dir/DependInfo.cmake" + "wavcmp/CMakeFiles/wavcmp.dir/DependInfo.cmake" + ) diff --git a/CMakeFiles/Makefile2 b/CMakeFiles/Makefile2 new file mode 100644 index 0000000..6d37f32 --- /dev/null +++ b/CMakeFiles/Makefile2 @@ -0,0 +1,654 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: libmpcdec/all +all: libmpcpsy/all +all: libmpcenc/all +all: libwavformat/all +all: mpcgain/all +all: mpcdec/all +all: mpcenc/all +all: mpc2sv8/all +all: mpccut/all +all: mpcchap/all +all: wavcmp/all +all: include/all +.PHONY : all + +# The main recursive "codegen" target. +codegen: libmpcdec/codegen +codegen: libmpcpsy/codegen +codegen: libmpcenc/codegen +codegen: libwavformat/codegen +codegen: mpcgain/codegen +codegen: mpcdec/codegen +codegen: mpcenc/codegen +codegen: mpc2sv8/codegen +codegen: mpccut/codegen +codegen: mpcchap/codegen +codegen: wavcmp/codegen +codegen: include/codegen +.PHONY : codegen + +# The main recursive "preinstall" target. +preinstall: libmpcdec/preinstall +preinstall: libmpcpsy/preinstall +preinstall: libmpcenc/preinstall +preinstall: libwavformat/preinstall +preinstall: mpcgain/preinstall +preinstall: mpcdec/preinstall +preinstall: mpcenc/preinstall +preinstall: mpc2sv8/preinstall +preinstall: mpccut/preinstall +preinstall: mpcchap/preinstall +preinstall: wavcmp/preinstall +preinstall: include/preinstall +.PHONY : preinstall + +# The main recursive "clean" target. +clean: libmpcdec/clean +clean: libmpcpsy/clean +clean: libmpcenc/clean +clean: libwavformat/clean +clean: mpcgain/clean +clean: mpcdec/clean +clean: mpcenc/clean +clean: mpc2sv8/clean +clean: mpccut/clean +clean: mpcchap/clean +clean: wavcmp/clean +clean: include/clean +.PHONY : clean + +#============================================================================= +# Directory level rules for directory include + +# Recursive "all" directory target. +include/all: +.PHONY : include/all + +# Recursive "codegen" directory target. +include/codegen: +.PHONY : include/codegen + +# Recursive "preinstall" directory target. +include/preinstall: +.PHONY : include/preinstall + +# Recursive "clean" directory target. +include/clean: +.PHONY : include/clean + +#============================================================================= +# Directory level rules for directory libmpcdec + +# Recursive "all" directory target. +libmpcdec/all: libmpcdec/CMakeFiles/mpcdec.dir/all +.PHONY : libmpcdec/all + +# Recursive "codegen" directory target. +libmpcdec/codegen: libmpcdec/CMakeFiles/mpcdec.dir/codegen +.PHONY : libmpcdec/codegen + +# Recursive "preinstall" directory target. +libmpcdec/preinstall: +.PHONY : libmpcdec/preinstall + +# Recursive "clean" directory target. +libmpcdec/clean: libmpcdec/CMakeFiles/mpcdec.dir/clean +.PHONY : libmpcdec/clean + +#============================================================================= +# Directory level rules for directory libmpcenc + +# Recursive "all" directory target. +libmpcenc/all: libmpcenc/CMakeFiles/mpcenc_static.dir/all +.PHONY : libmpcenc/all + +# Recursive "codegen" directory target. +libmpcenc/codegen: libmpcenc/CMakeFiles/mpcenc_static.dir/codegen +.PHONY : libmpcenc/codegen + +# Recursive "preinstall" directory target. +libmpcenc/preinstall: +.PHONY : libmpcenc/preinstall + +# Recursive "clean" directory target. +libmpcenc/clean: libmpcenc/CMakeFiles/mpcenc_static.dir/clean +.PHONY : libmpcenc/clean + +#============================================================================= +# Directory level rules for directory libmpcpsy + +# Recursive "all" directory target. +libmpcpsy/all: libmpcpsy/CMakeFiles/mpcpsy_static.dir/all +.PHONY : libmpcpsy/all + +# Recursive "codegen" directory target. +libmpcpsy/codegen: libmpcpsy/CMakeFiles/mpcpsy_static.dir/codegen +.PHONY : libmpcpsy/codegen + +# Recursive "preinstall" directory target. +libmpcpsy/preinstall: +.PHONY : libmpcpsy/preinstall + +# Recursive "clean" directory target. +libmpcpsy/clean: libmpcpsy/CMakeFiles/mpcpsy_static.dir/clean +.PHONY : libmpcpsy/clean + +#============================================================================= +# Directory level rules for directory libwavformat + +# Recursive "all" directory target. +libwavformat/all: libwavformat/CMakeFiles/wavformat_static.dir/all +.PHONY : libwavformat/all + +# Recursive "codegen" directory target. +libwavformat/codegen: libwavformat/CMakeFiles/wavformat_static.dir/codegen +.PHONY : libwavformat/codegen + +# Recursive "preinstall" directory target. +libwavformat/preinstall: +.PHONY : libwavformat/preinstall + +# Recursive "clean" directory target. +libwavformat/clean: libwavformat/CMakeFiles/wavformat_static.dir/clean +.PHONY : libwavformat/clean + +#============================================================================= +# Directory level rules for directory mpc2sv8 + +# Recursive "all" directory target. +mpc2sv8/all: mpc2sv8/CMakeFiles/mpc2sv8.dir/all +.PHONY : mpc2sv8/all + +# Recursive "codegen" directory target. +mpc2sv8/codegen: mpc2sv8/CMakeFiles/mpc2sv8.dir/codegen +.PHONY : mpc2sv8/codegen + +# Recursive "preinstall" directory target. +mpc2sv8/preinstall: +.PHONY : mpc2sv8/preinstall + +# Recursive "clean" directory target. +mpc2sv8/clean: mpc2sv8/CMakeFiles/mpc2sv8.dir/clean +.PHONY : mpc2sv8/clean + +#============================================================================= +# Directory level rules for directory mpcchap + +# Recursive "all" directory target. +mpcchap/all: +.PHONY : mpcchap/all + +# Recursive "codegen" directory target. +mpcchap/codegen: +.PHONY : mpcchap/codegen + +# Recursive "preinstall" directory target. +mpcchap/preinstall: +.PHONY : mpcchap/preinstall + +# Recursive "clean" directory target. +mpcchap/clean: +.PHONY : mpcchap/clean + +#============================================================================= +# Directory level rules for directory mpccut + +# Recursive "all" directory target. +mpccut/all: mpccut/CMakeFiles/mpccut.dir/all +.PHONY : mpccut/all + +# Recursive "codegen" directory target. +mpccut/codegen: mpccut/CMakeFiles/mpccut.dir/codegen +.PHONY : mpccut/codegen + +# Recursive "preinstall" directory target. +mpccut/preinstall: +.PHONY : mpccut/preinstall + +# Recursive "clean" directory target. +mpccut/clean: mpccut/CMakeFiles/mpccut.dir/clean +.PHONY : mpccut/clean + +#============================================================================= +# Directory level rules for directory mpcdec + +# Recursive "all" directory target. +mpcdec/all: mpcdec/CMakeFiles/mpcdec_cmd.dir/all +.PHONY : mpcdec/all + +# Recursive "codegen" directory target. +mpcdec/codegen: mpcdec/CMakeFiles/mpcdec_cmd.dir/codegen +.PHONY : mpcdec/codegen + +# Recursive "preinstall" directory target. +mpcdec/preinstall: +.PHONY : mpcdec/preinstall + +# Recursive "clean" directory target. +mpcdec/clean: mpcdec/CMakeFiles/mpcdec_cmd.dir/clean +.PHONY : mpcdec/clean + +#============================================================================= +# Directory level rules for directory mpcenc + +# Recursive "all" directory target. +mpcenc/all: mpcenc/CMakeFiles/mpcenc.dir/all +.PHONY : mpcenc/all + +# Recursive "codegen" directory target. +mpcenc/codegen: mpcenc/CMakeFiles/mpcenc.dir/codegen +.PHONY : mpcenc/codegen + +# Recursive "preinstall" directory target. +mpcenc/preinstall: +.PHONY : mpcenc/preinstall + +# Recursive "clean" directory target. +mpcenc/clean: mpcenc/CMakeFiles/mpcenc.dir/clean +.PHONY : mpcenc/clean + +#============================================================================= +# Directory level rules for directory mpcgain + +# Recursive "all" directory target. +mpcgain/all: +.PHONY : mpcgain/all + +# Recursive "codegen" directory target. +mpcgain/codegen: +.PHONY : mpcgain/codegen + +# Recursive "preinstall" directory target. +mpcgain/preinstall: +.PHONY : mpcgain/preinstall + +# Recursive "clean" directory target. +mpcgain/clean: +.PHONY : mpcgain/clean + +#============================================================================= +# Directory level rules for directory wavcmp + +# Recursive "all" directory target. +wavcmp/all: wavcmp/CMakeFiles/wavcmp.dir/all +.PHONY : wavcmp/all + +# Recursive "codegen" directory target. +wavcmp/codegen: wavcmp/CMakeFiles/wavcmp.dir/codegen +.PHONY : wavcmp/codegen + +# Recursive "preinstall" directory target. +wavcmp/preinstall: +.PHONY : wavcmp/preinstall + +# Recursive "clean" directory target. +wavcmp/clean: wavcmp/CMakeFiles/wavcmp.dir/clean +.PHONY : wavcmp/clean + +#============================================================================= +# Target rules for target libmpcdec/CMakeFiles/mpcdec.dir + +# All Build rule for target. +libmpcdec/CMakeFiles/mpcdec.dir/all: + $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/depend + $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=5,6,7,8,9,10,11,12,13,14 "Built target mpcdec" +.PHONY : libmpcdec/CMakeFiles/mpcdec.dir/all + +# Build rule for subdir invocation for target. +libmpcdec/CMakeFiles/mpcdec.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 10 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libmpcdec/CMakeFiles/mpcdec.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : libmpcdec/CMakeFiles/mpcdec.dir/rule + +# Convenience name for target. +mpcdec: libmpcdec/CMakeFiles/mpcdec.dir/rule +.PHONY : mpcdec + +# codegen rule for target. +libmpcdec/CMakeFiles/mpcdec.dir/codegen: + $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/codegen + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=5,6,7,8,9,10,11,12,13,14 "Finished codegen for target mpcdec" +.PHONY : libmpcdec/CMakeFiles/mpcdec.dir/codegen + +# clean rule for target. +libmpcdec/CMakeFiles/mpcdec.dir/clean: + $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/clean +.PHONY : libmpcdec/CMakeFiles/mpcdec.dir/clean + +#============================================================================= +# Target rules for target libmpcpsy/CMakeFiles/mpcpsy_static.dir + +# All Build rule for target. +libmpcpsy/CMakeFiles/mpcpsy_static.dir/all: + $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/depend + $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=32,33,34,35,36,37,38,39,40 "Built target mpcpsy_static" +.PHONY : libmpcpsy/CMakeFiles/mpcpsy_static.dir/all + +# Build rule for subdir invocation for target. +libmpcpsy/CMakeFiles/mpcpsy_static.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 9 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libmpcpsy/CMakeFiles/mpcpsy_static.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : libmpcpsy/CMakeFiles/mpcpsy_static.dir/rule + +# Convenience name for target. +mpcpsy_static: libmpcpsy/CMakeFiles/mpcpsy_static.dir/rule +.PHONY : mpcpsy_static + +# codegen rule for target. +libmpcpsy/CMakeFiles/mpcpsy_static.dir/codegen: + $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/codegen + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=32,33,34,35,36,37,38,39,40 "Finished codegen for target mpcpsy_static" +.PHONY : libmpcpsy/CMakeFiles/mpcpsy_static.dir/codegen + +# clean rule for target. +libmpcpsy/CMakeFiles/mpcpsy_static.dir/clean: + $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/clean +.PHONY : libmpcpsy/CMakeFiles/mpcpsy_static.dir/clean + +#============================================================================= +# Target rules for target libmpcenc/CMakeFiles/mpcenc_static.dir + +# All Build rule for target. +libmpcenc/CMakeFiles/mpcenc_static.dir/all: + $(MAKE) $(MAKESILENT) -f libmpcenc/CMakeFiles/mpcenc_static.dir/build.make libmpcenc/CMakeFiles/mpcenc_static.dir/depend + $(MAKE) $(MAKESILENT) -f libmpcenc/CMakeFiles/mpcenc_static.dir/build.make libmpcenc/CMakeFiles/mpcenc_static.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=25,26,27,28,29,30,31 "Built target mpcenc_static" +.PHONY : libmpcenc/CMakeFiles/mpcenc_static.dir/all + +# Build rule for subdir invocation for target. +libmpcenc/CMakeFiles/mpcenc_static.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 7 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libmpcenc/CMakeFiles/mpcenc_static.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : libmpcenc/CMakeFiles/mpcenc_static.dir/rule + +# Convenience name for target. +mpcenc_static: libmpcenc/CMakeFiles/mpcenc_static.dir/rule +.PHONY : mpcenc_static + +# codegen rule for target. +libmpcenc/CMakeFiles/mpcenc_static.dir/codegen: + $(MAKE) $(MAKESILENT) -f libmpcenc/CMakeFiles/mpcenc_static.dir/build.make libmpcenc/CMakeFiles/mpcenc_static.dir/codegen + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=25,26,27,28,29,30,31 "Finished codegen for target mpcenc_static" +.PHONY : libmpcenc/CMakeFiles/mpcenc_static.dir/codegen + +# clean rule for target. +libmpcenc/CMakeFiles/mpcenc_static.dir/clean: + $(MAKE) $(MAKESILENT) -f libmpcenc/CMakeFiles/mpcenc_static.dir/build.make libmpcenc/CMakeFiles/mpcenc_static.dir/clean +.PHONY : libmpcenc/CMakeFiles/mpcenc_static.dir/clean + +#============================================================================= +# Target rules for target libwavformat/CMakeFiles/wavformat_static.dir + +# All Build rule for target. +libwavformat/CMakeFiles/wavformat_static.dir/all: + $(MAKE) $(MAKESILENT) -f libwavformat/CMakeFiles/wavformat_static.dir/build.make libwavformat/CMakeFiles/wavformat_static.dir/depend + $(MAKE) $(MAKESILENT) -f libwavformat/CMakeFiles/wavformat_static.dir/build.make libwavformat/CMakeFiles/wavformat_static.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=43,44,45 "Built target wavformat_static" +.PHONY : libwavformat/CMakeFiles/wavformat_static.dir/all + +# Build rule for subdir invocation for target. +libwavformat/CMakeFiles/wavformat_static.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 3 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libwavformat/CMakeFiles/wavformat_static.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : libwavformat/CMakeFiles/wavformat_static.dir/rule + +# Convenience name for target. +wavformat_static: libwavformat/CMakeFiles/wavformat_static.dir/rule +.PHONY : wavformat_static + +# codegen rule for target. +libwavformat/CMakeFiles/wavformat_static.dir/codegen: + $(MAKE) $(MAKESILENT) -f libwavformat/CMakeFiles/wavformat_static.dir/build.make libwavformat/CMakeFiles/wavformat_static.dir/codegen + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=43,44,45 "Finished codegen for target wavformat_static" +.PHONY : libwavformat/CMakeFiles/wavformat_static.dir/codegen + +# clean rule for target. +libwavformat/CMakeFiles/wavformat_static.dir/clean: + $(MAKE) $(MAKESILENT) -f libwavformat/CMakeFiles/wavformat_static.dir/build.make libwavformat/CMakeFiles/wavformat_static.dir/clean +.PHONY : libwavformat/CMakeFiles/wavformat_static.dir/clean + +#============================================================================= +# Target rules for target mpcdec/CMakeFiles/mpcdec_cmd.dir + +# All Build rule for target. +mpcdec/CMakeFiles/mpcdec_cmd.dir/all: libmpcdec/CMakeFiles/mpcdec.dir/all +mpcdec/CMakeFiles/mpcdec_cmd.dir/all: libwavformat/CMakeFiles/wavformat_static.dir/all + $(MAKE) $(MAKESILENT) -f mpcdec/CMakeFiles/mpcdec_cmd.dir/build.make mpcdec/CMakeFiles/mpcdec_cmd.dir/depend + $(MAKE) $(MAKESILENT) -f mpcdec/CMakeFiles/mpcdec_cmd.dir/build.make mpcdec/CMakeFiles/mpcdec_cmd.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=15,16 "Built target mpcdec_cmd" +.PHONY : mpcdec/CMakeFiles/mpcdec_cmd.dir/all + +# Build rule for subdir invocation for target. +mpcdec/CMakeFiles/mpcdec_cmd.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 15 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcdec/CMakeFiles/mpcdec_cmd.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : mpcdec/CMakeFiles/mpcdec_cmd.dir/rule + +# Convenience name for target. +mpcdec_cmd: mpcdec/CMakeFiles/mpcdec_cmd.dir/rule +.PHONY : mpcdec_cmd + +# codegen rule for target. +mpcdec/CMakeFiles/mpcdec_cmd.dir/codegen: + $(MAKE) $(MAKESILENT) -f mpcdec/CMakeFiles/mpcdec_cmd.dir/build.make mpcdec/CMakeFiles/mpcdec_cmd.dir/codegen + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=15,16 "Finished codegen for target mpcdec_cmd" +.PHONY : mpcdec/CMakeFiles/mpcdec_cmd.dir/codegen + +# clean rule for target. +mpcdec/CMakeFiles/mpcdec_cmd.dir/clean: + $(MAKE) $(MAKESILENT) -f mpcdec/CMakeFiles/mpcdec_cmd.dir/build.make mpcdec/CMakeFiles/mpcdec_cmd.dir/clean +.PHONY : mpcdec/CMakeFiles/mpcdec_cmd.dir/clean + +#============================================================================= +# Target rules for target mpcenc/CMakeFiles/mpcenc.dir + +# All Build rule for target. +mpcenc/CMakeFiles/mpcenc.dir/all: libmpcpsy/CMakeFiles/mpcpsy_static.dir/all +mpcenc/CMakeFiles/mpcenc.dir/all: libmpcenc/CMakeFiles/mpcenc_static.dir/all + $(MAKE) $(MAKESILENT) -f mpcenc/CMakeFiles/mpcenc.dir/build.make mpcenc/CMakeFiles/mpcenc.dir/depend + $(MAKE) $(MAKESILENT) -f mpcenc/CMakeFiles/mpcenc.dir/build.make mpcenc/CMakeFiles/mpcenc.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=17,18,19,20,21,22,23,24 "Built target mpcenc" +.PHONY : mpcenc/CMakeFiles/mpcenc.dir/all + +# Build rule for subdir invocation for target. +mpcenc/CMakeFiles/mpcenc.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 24 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcenc/CMakeFiles/mpcenc.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : mpcenc/CMakeFiles/mpcenc.dir/rule + +# Convenience name for target. +mpcenc: mpcenc/CMakeFiles/mpcenc.dir/rule +.PHONY : mpcenc + +# codegen rule for target. +mpcenc/CMakeFiles/mpcenc.dir/codegen: + $(MAKE) $(MAKESILENT) -f mpcenc/CMakeFiles/mpcenc.dir/build.make mpcenc/CMakeFiles/mpcenc.dir/codegen + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=17,18,19,20,21,22,23,24 "Finished codegen for target mpcenc" +.PHONY : mpcenc/CMakeFiles/mpcenc.dir/codegen + +# clean rule for target. +mpcenc/CMakeFiles/mpcenc.dir/clean: + $(MAKE) $(MAKESILENT) -f mpcenc/CMakeFiles/mpcenc.dir/build.make mpcenc/CMakeFiles/mpcenc.dir/clean +.PHONY : mpcenc/CMakeFiles/mpcenc.dir/clean + +#============================================================================= +# Target rules for target mpc2sv8/CMakeFiles/mpc2sv8.dir + +# All Build rule for target. +mpc2sv8/CMakeFiles/mpc2sv8.dir/all: libmpcdec/CMakeFiles/mpcdec.dir/all +mpc2sv8/CMakeFiles/mpc2sv8.dir/all: libmpcenc/CMakeFiles/mpcenc_static.dir/all + $(MAKE) $(MAKESILENT) -f mpc2sv8/CMakeFiles/mpc2sv8.dir/build.make mpc2sv8/CMakeFiles/mpc2sv8.dir/depend + $(MAKE) $(MAKESILENT) -f mpc2sv8/CMakeFiles/mpc2sv8.dir/build.make mpc2sv8/CMakeFiles/mpc2sv8.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=1,2 "Built target mpc2sv8" +.PHONY : mpc2sv8/CMakeFiles/mpc2sv8.dir/all + +# Build rule for subdir invocation for target. +mpc2sv8/CMakeFiles/mpc2sv8.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 19 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpc2sv8/CMakeFiles/mpc2sv8.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : mpc2sv8/CMakeFiles/mpc2sv8.dir/rule + +# Convenience name for target. +mpc2sv8: mpc2sv8/CMakeFiles/mpc2sv8.dir/rule +.PHONY : mpc2sv8 + +# codegen rule for target. +mpc2sv8/CMakeFiles/mpc2sv8.dir/codegen: + $(MAKE) $(MAKESILENT) -f mpc2sv8/CMakeFiles/mpc2sv8.dir/build.make mpc2sv8/CMakeFiles/mpc2sv8.dir/codegen + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=1,2 "Finished codegen for target mpc2sv8" +.PHONY : mpc2sv8/CMakeFiles/mpc2sv8.dir/codegen + +# clean rule for target. +mpc2sv8/CMakeFiles/mpc2sv8.dir/clean: + $(MAKE) $(MAKESILENT) -f mpc2sv8/CMakeFiles/mpc2sv8.dir/build.make mpc2sv8/CMakeFiles/mpc2sv8.dir/clean +.PHONY : mpc2sv8/CMakeFiles/mpc2sv8.dir/clean + +#============================================================================= +# Target rules for target mpccut/CMakeFiles/mpccut.dir + +# All Build rule for target. +mpccut/CMakeFiles/mpccut.dir/all: libmpcdec/CMakeFiles/mpcdec.dir/all +mpccut/CMakeFiles/mpccut.dir/all: libmpcenc/CMakeFiles/mpcenc_static.dir/all + $(MAKE) $(MAKESILENT) -f mpccut/CMakeFiles/mpccut.dir/build.make mpccut/CMakeFiles/mpccut.dir/depend + $(MAKE) $(MAKESILENT) -f mpccut/CMakeFiles/mpccut.dir/build.make mpccut/CMakeFiles/mpccut.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=3,4 "Built target mpccut" +.PHONY : mpccut/CMakeFiles/mpccut.dir/all + +# Build rule for subdir invocation for target. +mpccut/CMakeFiles/mpccut.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 19 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpccut/CMakeFiles/mpccut.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : mpccut/CMakeFiles/mpccut.dir/rule + +# Convenience name for target. +mpccut: mpccut/CMakeFiles/mpccut.dir/rule +.PHONY : mpccut + +# codegen rule for target. +mpccut/CMakeFiles/mpccut.dir/codegen: + $(MAKE) $(MAKESILENT) -f mpccut/CMakeFiles/mpccut.dir/build.make mpccut/CMakeFiles/mpccut.dir/codegen + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=3,4 "Finished codegen for target mpccut" +.PHONY : mpccut/CMakeFiles/mpccut.dir/codegen + +# clean rule for target. +mpccut/CMakeFiles/mpccut.dir/clean: + $(MAKE) $(MAKESILENT) -f mpccut/CMakeFiles/mpccut.dir/build.make mpccut/CMakeFiles/mpccut.dir/clean +.PHONY : mpccut/CMakeFiles/mpccut.dir/clean + +#============================================================================= +# Target rules for target wavcmp/CMakeFiles/wavcmp.dir + +# All Build rule for target. +wavcmp/CMakeFiles/wavcmp.dir/all: libwavformat/CMakeFiles/wavformat_static.dir/all + $(MAKE) $(MAKESILENT) -f wavcmp/CMakeFiles/wavcmp.dir/build.make wavcmp/CMakeFiles/wavcmp.dir/depend + $(MAKE) $(MAKESILENT) -f wavcmp/CMakeFiles/wavcmp.dir/build.make wavcmp/CMakeFiles/wavcmp.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=41,42 "Built target wavcmp" +.PHONY : wavcmp/CMakeFiles/wavcmp.dir/all + +# Build rule for subdir invocation for target. +wavcmp/CMakeFiles/wavcmp.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 5 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 wavcmp/CMakeFiles/wavcmp.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : wavcmp/CMakeFiles/wavcmp.dir/rule + +# Convenience name for target. +wavcmp: wavcmp/CMakeFiles/wavcmp.dir/rule +.PHONY : wavcmp + +# codegen rule for target. +wavcmp/CMakeFiles/wavcmp.dir/codegen: + $(MAKE) $(MAKESILENT) -f wavcmp/CMakeFiles/wavcmp.dir/build.make wavcmp/CMakeFiles/wavcmp.dir/codegen + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=41,42 "Finished codegen for target wavcmp" +.PHONY : wavcmp/CMakeFiles/wavcmp.dir/codegen + +# clean rule for target. +wavcmp/CMakeFiles/wavcmp.dir/clean: + $(MAKE) $(MAKESILENT) -f wavcmp/CMakeFiles/wavcmp.dir/build.make wavcmp/CMakeFiles/wavcmp.dir/clean +.PHONY : wavcmp/CMakeFiles/wavcmp.dir/clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/CMakeFiles/TargetDirectories.txt b/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..10671a4 --- /dev/null +++ b/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,87 @@ +/home/dewdude/musepack/musepack_src_r475/CMakeFiles/edit_cache.dir +/home/dewdude/musepack/musepack_src_r475/CMakeFiles/rebuild_cache.dir +/home/dewdude/musepack/musepack_src_r475/CMakeFiles/list_install_components.dir +/home/dewdude/musepack/musepack_src_r475/CMakeFiles/install.dir +/home/dewdude/musepack/musepack_src_r475/CMakeFiles/install/local.dir +/home/dewdude/musepack/musepack_src_r475/CMakeFiles/install/strip.dir +/home/dewdude/musepack/musepack_src_r475/libmpcdec/CMakeFiles/mpcdec.dir +/home/dewdude/musepack/musepack_src_r475/libmpcdec/CMakeFiles/edit_cache.dir +/home/dewdude/musepack/musepack_src_r475/libmpcdec/CMakeFiles/rebuild_cache.dir +/home/dewdude/musepack/musepack_src_r475/libmpcdec/CMakeFiles/list_install_components.dir +/home/dewdude/musepack/musepack_src_r475/libmpcdec/CMakeFiles/install.dir +/home/dewdude/musepack/musepack_src_r475/libmpcdec/CMakeFiles/install/local.dir +/home/dewdude/musepack/musepack_src_r475/libmpcdec/CMakeFiles/install/strip.dir +/home/dewdude/musepack/musepack_src_r475/libmpcpsy/CMakeFiles/mpcpsy_static.dir +/home/dewdude/musepack/musepack_src_r475/libmpcpsy/CMakeFiles/edit_cache.dir +/home/dewdude/musepack/musepack_src_r475/libmpcpsy/CMakeFiles/rebuild_cache.dir +/home/dewdude/musepack/musepack_src_r475/libmpcpsy/CMakeFiles/list_install_components.dir +/home/dewdude/musepack/musepack_src_r475/libmpcpsy/CMakeFiles/install.dir +/home/dewdude/musepack/musepack_src_r475/libmpcpsy/CMakeFiles/install/local.dir +/home/dewdude/musepack/musepack_src_r475/libmpcpsy/CMakeFiles/install/strip.dir +/home/dewdude/musepack/musepack_src_r475/libmpcenc/CMakeFiles/mpcenc_static.dir +/home/dewdude/musepack/musepack_src_r475/libmpcenc/CMakeFiles/edit_cache.dir +/home/dewdude/musepack/musepack_src_r475/libmpcenc/CMakeFiles/rebuild_cache.dir +/home/dewdude/musepack/musepack_src_r475/libmpcenc/CMakeFiles/list_install_components.dir +/home/dewdude/musepack/musepack_src_r475/libmpcenc/CMakeFiles/install.dir +/home/dewdude/musepack/musepack_src_r475/libmpcenc/CMakeFiles/install/local.dir +/home/dewdude/musepack/musepack_src_r475/libmpcenc/CMakeFiles/install/strip.dir +/home/dewdude/musepack/musepack_src_r475/libwavformat/CMakeFiles/wavformat_static.dir +/home/dewdude/musepack/musepack_src_r475/libwavformat/CMakeFiles/edit_cache.dir +/home/dewdude/musepack/musepack_src_r475/libwavformat/CMakeFiles/rebuild_cache.dir +/home/dewdude/musepack/musepack_src_r475/libwavformat/CMakeFiles/list_install_components.dir +/home/dewdude/musepack/musepack_src_r475/libwavformat/CMakeFiles/install.dir +/home/dewdude/musepack/musepack_src_r475/libwavformat/CMakeFiles/install/local.dir +/home/dewdude/musepack/musepack_src_r475/libwavformat/CMakeFiles/install/strip.dir +/home/dewdude/musepack/musepack_src_r475/mpcgain/CMakeFiles/edit_cache.dir +/home/dewdude/musepack/musepack_src_r475/mpcgain/CMakeFiles/rebuild_cache.dir +/home/dewdude/musepack/musepack_src_r475/mpcgain/CMakeFiles/list_install_components.dir +/home/dewdude/musepack/musepack_src_r475/mpcgain/CMakeFiles/install.dir +/home/dewdude/musepack/musepack_src_r475/mpcgain/CMakeFiles/install/local.dir +/home/dewdude/musepack/musepack_src_r475/mpcgain/CMakeFiles/install/strip.dir +/home/dewdude/musepack/musepack_src_r475/mpcdec/CMakeFiles/mpcdec_cmd.dir +/home/dewdude/musepack/musepack_src_r475/mpcdec/CMakeFiles/edit_cache.dir +/home/dewdude/musepack/musepack_src_r475/mpcdec/CMakeFiles/rebuild_cache.dir +/home/dewdude/musepack/musepack_src_r475/mpcdec/CMakeFiles/list_install_components.dir +/home/dewdude/musepack/musepack_src_r475/mpcdec/CMakeFiles/install.dir +/home/dewdude/musepack/musepack_src_r475/mpcdec/CMakeFiles/install/local.dir +/home/dewdude/musepack/musepack_src_r475/mpcdec/CMakeFiles/install/strip.dir +/home/dewdude/musepack/musepack_src_r475/mpcenc/CMakeFiles/mpcenc.dir +/home/dewdude/musepack/musepack_src_r475/mpcenc/CMakeFiles/edit_cache.dir +/home/dewdude/musepack/musepack_src_r475/mpcenc/CMakeFiles/rebuild_cache.dir +/home/dewdude/musepack/musepack_src_r475/mpcenc/CMakeFiles/list_install_components.dir +/home/dewdude/musepack/musepack_src_r475/mpcenc/CMakeFiles/install.dir +/home/dewdude/musepack/musepack_src_r475/mpcenc/CMakeFiles/install/local.dir +/home/dewdude/musepack/musepack_src_r475/mpcenc/CMakeFiles/install/strip.dir +/home/dewdude/musepack/musepack_src_r475/mpc2sv8/CMakeFiles/mpc2sv8.dir +/home/dewdude/musepack/musepack_src_r475/mpc2sv8/CMakeFiles/edit_cache.dir +/home/dewdude/musepack/musepack_src_r475/mpc2sv8/CMakeFiles/rebuild_cache.dir +/home/dewdude/musepack/musepack_src_r475/mpc2sv8/CMakeFiles/list_install_components.dir +/home/dewdude/musepack/musepack_src_r475/mpc2sv8/CMakeFiles/install.dir +/home/dewdude/musepack/musepack_src_r475/mpc2sv8/CMakeFiles/install/local.dir +/home/dewdude/musepack/musepack_src_r475/mpc2sv8/CMakeFiles/install/strip.dir +/home/dewdude/musepack/musepack_src_r475/mpccut/CMakeFiles/mpccut.dir +/home/dewdude/musepack/musepack_src_r475/mpccut/CMakeFiles/edit_cache.dir +/home/dewdude/musepack/musepack_src_r475/mpccut/CMakeFiles/rebuild_cache.dir +/home/dewdude/musepack/musepack_src_r475/mpccut/CMakeFiles/list_install_components.dir +/home/dewdude/musepack/musepack_src_r475/mpccut/CMakeFiles/install.dir +/home/dewdude/musepack/musepack_src_r475/mpccut/CMakeFiles/install/local.dir +/home/dewdude/musepack/musepack_src_r475/mpccut/CMakeFiles/install/strip.dir +/home/dewdude/musepack/musepack_src_r475/mpcchap/CMakeFiles/edit_cache.dir +/home/dewdude/musepack/musepack_src_r475/mpcchap/CMakeFiles/rebuild_cache.dir +/home/dewdude/musepack/musepack_src_r475/mpcchap/CMakeFiles/list_install_components.dir +/home/dewdude/musepack/musepack_src_r475/mpcchap/CMakeFiles/install.dir +/home/dewdude/musepack/musepack_src_r475/mpcchap/CMakeFiles/install/local.dir +/home/dewdude/musepack/musepack_src_r475/mpcchap/CMakeFiles/install/strip.dir +/home/dewdude/musepack/musepack_src_r475/wavcmp/CMakeFiles/wavcmp.dir +/home/dewdude/musepack/musepack_src_r475/wavcmp/CMakeFiles/edit_cache.dir +/home/dewdude/musepack/musepack_src_r475/wavcmp/CMakeFiles/rebuild_cache.dir +/home/dewdude/musepack/musepack_src_r475/wavcmp/CMakeFiles/list_install_components.dir +/home/dewdude/musepack/musepack_src_r475/wavcmp/CMakeFiles/install.dir +/home/dewdude/musepack/musepack_src_r475/wavcmp/CMakeFiles/install/local.dir +/home/dewdude/musepack/musepack_src_r475/wavcmp/CMakeFiles/install/strip.dir +/home/dewdude/musepack/musepack_src_r475/include/CMakeFiles/edit_cache.dir +/home/dewdude/musepack/musepack_src_r475/include/CMakeFiles/rebuild_cache.dir +/home/dewdude/musepack/musepack_src_r475/include/CMakeFiles/list_install_components.dir +/home/dewdude/musepack/musepack_src_r475/include/CMakeFiles/install.dir +/home/dewdude/musepack/musepack_src_r475/include/CMakeFiles/install/local.dir +/home/dewdude/musepack/musepack_src_r475/include/CMakeFiles/install/strip.dir diff --git a/CMakeFiles/cmake.check_cache b/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/CMakeFiles/progress.marks b/CMakeFiles/progress.marks new file mode 100644 index 0000000..ea90ee3 --- /dev/null +++ b/CMakeFiles/progress.marks @@ -0,0 +1 @@ +45 diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100755 index 0000000..4c30033 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,32 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.5) +include(TestBigEndian) + +project(libmpc C) + +set(CMAKE_VERBOSE_MAKEFILE false) +TEST_BIG_ENDIAN(MPC_ENDIANNESS) + +if(WIN32) + option(SHARED "Use shared libmpcdec" OFF) +else() + option(SHARED "Use shared libmpcdec" ON) +endif() + +add_definitions(-DFAST_MATH -DCVD_FASTLOG) + +if(NOT MSVC) + set(CMAKE_C_FLAGS "-O3 -Wall -fomit-frame-pointer -pipe") +endif() + +add_subdirectory(libmpcdec) +add_subdirectory(libmpcpsy) +add_subdirectory(libmpcenc) +add_subdirectory(libwavformat) +add_subdirectory(mpcgain) +add_subdirectory(mpcdec) +add_subdirectory(mpcenc) +add_subdirectory(mpc2sv8) +add_subdirectory(mpccut) +add_subdirectory(mpcchap) +add_subdirectory(wavcmp) +add_subdirectory(include) diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..fda8cba --- /dev/null +++ b/Makefile @@ -0,0 +1,315 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# The main all target +all: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles /home/dewdude/musepack/musepack_src_r475//CMakeFiles/progress.marks + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +#============================================================================= +# Target rules for targets named mpcdec + +# Build rule for target. +mpcdec: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcdec +.PHONY : mpcdec + +# fast build rule for target. +mpcdec/fast: + $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/build +.PHONY : mpcdec/fast + +#============================================================================= +# Target rules for targets named mpcpsy_static + +# Build rule for target. +mpcpsy_static: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcpsy_static +.PHONY : mpcpsy_static + +# fast build rule for target. +mpcpsy_static/fast: + $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/build +.PHONY : mpcpsy_static/fast + +#============================================================================= +# Target rules for targets named mpcenc_static + +# Build rule for target. +mpcenc_static: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcenc_static +.PHONY : mpcenc_static + +# fast build rule for target. +mpcenc_static/fast: + $(MAKE) $(MAKESILENT) -f libmpcenc/CMakeFiles/mpcenc_static.dir/build.make libmpcenc/CMakeFiles/mpcenc_static.dir/build +.PHONY : mpcenc_static/fast + +#============================================================================= +# Target rules for targets named wavformat_static + +# Build rule for target. +wavformat_static: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 wavformat_static +.PHONY : wavformat_static + +# fast build rule for target. +wavformat_static/fast: + $(MAKE) $(MAKESILENT) -f libwavformat/CMakeFiles/wavformat_static.dir/build.make libwavformat/CMakeFiles/wavformat_static.dir/build +.PHONY : wavformat_static/fast + +#============================================================================= +# Target rules for targets named mpcdec_cmd + +# Build rule for target. +mpcdec_cmd: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcdec_cmd +.PHONY : mpcdec_cmd + +# fast build rule for target. +mpcdec_cmd/fast: + $(MAKE) $(MAKESILENT) -f mpcdec/CMakeFiles/mpcdec_cmd.dir/build.make mpcdec/CMakeFiles/mpcdec_cmd.dir/build +.PHONY : mpcdec_cmd/fast + +#============================================================================= +# Target rules for targets named mpcenc + +# Build rule for target. +mpcenc: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcenc +.PHONY : mpcenc + +# fast build rule for target. +mpcenc/fast: + $(MAKE) $(MAKESILENT) -f mpcenc/CMakeFiles/mpcenc.dir/build.make mpcenc/CMakeFiles/mpcenc.dir/build +.PHONY : mpcenc/fast + +#============================================================================= +# Target rules for targets named mpc2sv8 + +# Build rule for target. +mpc2sv8: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpc2sv8 +.PHONY : mpc2sv8 + +# fast build rule for target. +mpc2sv8/fast: + $(MAKE) $(MAKESILENT) -f mpc2sv8/CMakeFiles/mpc2sv8.dir/build.make mpc2sv8/CMakeFiles/mpc2sv8.dir/build +.PHONY : mpc2sv8/fast + +#============================================================================= +# Target rules for targets named mpccut + +# Build rule for target. +mpccut: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpccut +.PHONY : mpccut + +# fast build rule for target. +mpccut/fast: + $(MAKE) $(MAKESILENT) -f mpccut/CMakeFiles/mpccut.dir/build.make mpccut/CMakeFiles/mpccut.dir/build +.PHONY : mpccut/fast + +#============================================================================= +# Target rules for targets named wavcmp + +# Build rule for target. +wavcmp: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 wavcmp +.PHONY : wavcmp + +# fast build rule for target. +wavcmp/fast: + $(MAKE) $(MAKESILENT) -f wavcmp/CMakeFiles/wavcmp.dir/build.make wavcmp/CMakeFiles/wavcmp.dir/build +.PHONY : wavcmp/fast + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... mpc2sv8" + @echo "... mpccut" + @echo "... mpcdec" + @echo "... mpcdec_cmd" + @echo "... mpcenc" + @echo "... mpcenc_static" + @echo "... mpcpsy_static" + @echo "... wavcmp" + @echo "... wavformat_static" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/Makefile.am b/Makefile.am new file mode 100755 index 0000000..abcffd7 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,27 @@ +AUTOMAKE_OPTIONS = foreign + +ACLOCAL_AMFLAGS = -I m4 + +EXTRA_DIST = CMakeLists.txt libmpc.kdevelop docs win32 + +if MPC_CHAP + MPCCHAP_DIR = mpcchap +endif +if MPC_GAIN + MPCGAIN_DIR = mpcgain +endif + +SUBDIRS = \ +include \ +libmpcdec \ +libmpcenc \ +libmpcpsy \ +libwavformat \ +mpcenc \ +mpc2sv8 \ +mpccut \ +mpcdec \ +wavcmp \ +$(MPCCHAP_DIR) \ +$(MPCGAIN_DIR) + diff --git a/Makefile.cvs b/Makefile.cvs new file mode 100755 index 0000000..04513e3 --- /dev/null +++ b/Makefile.cvs @@ -0,0 +1,4 @@ +default: all + +all: + autoreconf -vif diff --git a/README.md b/README.md new file mode 100644 index 0000000..763c433 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +This is just the musepack src r475 patched to compile on modern systems. + +It was done as part of the project to make a fully static mpd-dbcreate binary. diff --git a/cmake_install.cmake b/cmake_install.cmake new file mode 100644 index 0000000..cc64dbb --- /dev/null +++ b/cmake_install.cmake @@ -0,0 +1,83 @@ +# Install script for directory: /home/dewdude/musepack/musepack_src_r475 + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +if(NOT CMAKE_INSTALL_LOCAL_ONLY) + # Include the install script for each subdirectory. + include("/home/dewdude/musepack/musepack_src_r475/libmpcdec/cmake_install.cmake") + include("/home/dewdude/musepack/musepack_src_r475/libmpcpsy/cmake_install.cmake") + include("/home/dewdude/musepack/musepack_src_r475/libmpcenc/cmake_install.cmake") + include("/home/dewdude/musepack/musepack_src_r475/libwavformat/cmake_install.cmake") + include("/home/dewdude/musepack/musepack_src_r475/mpcgain/cmake_install.cmake") + include("/home/dewdude/musepack/musepack_src_r475/mpcdec/cmake_install.cmake") + include("/home/dewdude/musepack/musepack_src_r475/mpcenc/cmake_install.cmake") + include("/home/dewdude/musepack/musepack_src_r475/mpc2sv8/cmake_install.cmake") + include("/home/dewdude/musepack/musepack_src_r475/mpccut/cmake_install.cmake") + include("/home/dewdude/musepack/musepack_src_r475/mpcchap/cmake_install.cmake") + include("/home/dewdude/musepack/musepack_src_r475/wavcmp/cmake_install.cmake") + include("/home/dewdude/musepack/musepack_src_r475/include/cmake_install.cmake") + +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/home/dewdude/musepack/musepack_src_r475/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() +if(CMAKE_INSTALL_COMPONENT) + if(CMAKE_INSTALL_COMPONENT MATCHES "^[a-zA-Z0-9_.+-]+$") + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") + else() + string(MD5 CMAKE_INST_COMP_HASH "${CMAKE_INSTALL_COMPONENT}") + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INST_COMP_HASH}.txt") + unset(CMAKE_INST_COMP_HASH) + endif() +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +if(NOT CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/home/dewdude/musepack/musepack_src_r475/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/common/crc32.c b/common/crc32.c new file mode 100755 index 0000000..2e9cc11 --- /dev/null +++ b/common/crc32.c @@ -0,0 +1,56 @@ +/* +* C Implementation: crc32 +* +* code from http://www.w3.org/TR/PNG/#D-CRCAppendix +* +*/ + +/* Table of CRCs of all 8-bit messages. */ +static unsigned long crc_table[256]; + +/* Flag: has the table been computed? Initially false. */ +static int crc_table_computed = 0; + +/* Make the table for a fast CRC. */ +static void make_crc_table(void) +{ + unsigned long c; + int n, k; + + for (n = 0; n < 256; n++) { + c = (unsigned long) n; + for (k = 0; k < 8; k++) { + if (c & 1) + c = 0xedb88320L ^ (c >> 1); + else + c = c >> 1; + } + crc_table[n] = c; + } + crc_table_computed = 1; +} + + +/* Update a running CRC with the bytes buf[0..len-1]--the CRC + should be initialized to all 1's, and the transmitted value + is the 1's complement of the final running CRC (see the + crc() routine below). */ + +static unsigned long update_crc(unsigned long crc, unsigned char *buf, int len) +{ + unsigned long c = crc; + int n; + + if (!crc_table_computed) + make_crc_table(); + for (n = 0; n < len; n++) { + c = crc_table[(c ^ buf[n]) & 0xff] ^ (c >> 8); + } + return c; +} + +/* Return the CRC of the bytes buf[0..len-1]. */ +unsigned long mpc_crc32(unsigned char *buf, int len) +{ + return update_crc(0xffffffffL, buf, len) ^ 0xffffffffL; +} diff --git a/common/fastmath.c b/common/fastmath.c new file mode 100755 index 0000000..2a23a59 --- /dev/null +++ b/common/fastmath.c @@ -0,0 +1,77 @@ +/* + * Musepack audio compression + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mpc/mpcmath.h" + +#ifdef FAST_MATH + +const float tabatan2 [ 2*TABSTEP+1] [2]; +const float tabcos [26*TABSTEP+1] [2]; +const float tabsqrt_ex [256]; +const float tabsqrt_m [ TABSTEP+1] [2]; + + +void Init_FastMath ( void ) +{ + int i; mpc_floatint X, Y; double xm, x0, xp, x, y; float* p; + + p = (float*) tabatan2; + for ( i = -TABSTEP; i <= TABSTEP; i++ ) { + xm = atan ((i-0.5)/TABSTEP); + x0 = atan ((i+0.0)/TABSTEP); + xp = atan ((i+0.5)/TABSTEP); + x = x0/2 + (xm + xp)/4; + y = xp - xm; + *p++ = x; + *p++ = y; + } + + p = (float*) tabcos; + for ( i = -13*TABSTEP; i <= 13*TABSTEP; i++ ) { + xm = cos ((i-0.5)/TABSTEP); + x0 = cos ((i+0.0)/TABSTEP); + xp = cos ((i+0.5)/TABSTEP); + x = x0/2 + (xm + xp)/4; + y = xp - xm; + *p++ = x; + *p++ = y; + } + + p = (float*) tabsqrt_ex; + for ( i = 0; i < 255; i++ ) { + X.n = (i << 23); + Y.n = (i << 23) + (1<<23) - 1; + *p++ = sqrt(X.f); + } + X.n = (255 << 23) - 1; + *p++ = sqrt(X.f); + + p = (float*) tabsqrt_m; + for ( i = 1*TABSTEP; i <= 2*TABSTEP; i++ ) { + xm = sqrt ((i-0.5)/TABSTEP); + x0 = sqrt ((i+0.0)/TABSTEP); + xp = sqrt ((i+0.5)/TABSTEP); + x = x0/2 + (xm + xp)/4; + y = xp - xm; + *p++ = x; + *p++ = y; + } +} + +#endif diff --git a/common/huffman-bcl.c b/common/huffman-bcl.c new file mode 100755 index 0000000..c36eb52 --- /dev/null +++ b/common/huffman-bcl.c @@ -0,0 +1,280 @@ +/************************************************************************* +* Huffman codes generation, part of the code from the Basic Compression +* Library ( http://bcl.sourceforge.net ) +* +* Modified by Nicolas BOTTI rududu at laposte.net +* +*------------------------------------------------------------------------- +* Copyright (c) 2003-2006 Marcus Geelnard +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would +* be appreciated but is not required. +* +* 2. Altered source versions must be plainly marked as such, and must not +* be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any source +* distribution. +* +* Marcus Geelnard +* marcus.geelnard at home.se +*************************************************************************/ + +#include +#include + +typedef struct { + int Symbol; + unsigned int Count; + unsigned int Code; + unsigned int Bits; +} huff_sym_t; + +typedef struct huff_node huff_node_t; + +struct huff_node { + huff_node_t * ChildA; + union { + huff_node_t * ChildB; + huff_sym_t * Symbol; + }; + int Count; +}; + +static void _Huffman_StoreTree( huff_node_t *node, unsigned int bits ) +{ + /* Is this a leaf node? */ + if( node->ChildA == 0 ) { + /* Store code info in symbol array */ + node->Symbol->Bits = bits; + return; + } + + /* Branch A */ + _Huffman_StoreTree( node->ChildA, bits+1 ); + + /* Branch B */ + _Huffman_StoreTree( node->ChildB, bits+1 ); +} + +/** + * Compare 2 symbols to sort as canonical huffman (more bits first) + * @param sym1 + * @param sym2 + * @return + */ +static int _Huffman_CompBits(const huff_sym_t * sym1, const huff_sym_t * sym2) +{ + if (sym1->Bits == sym2->Bits){ + if (sym1->Symbol == sym2->Symbol) + return 0; + else + return ((sym1->Symbol > sym2->Symbol) << 1) - 1; + } else + return ((sym1->Bits < sym2->Bits) << 1) - 1; +} + +/** + * Compare 2 symbols to sort in symbol order + * @param sym1 + * @param sym2 + * @return + */ +static int _Huffman_CompSym(const huff_sym_t * sym1, const huff_sym_t * sym2) +{ + return ((sym1->Symbol > sym2->Symbol) << 1) - 1; +} + +/** + * Generate canonical huffman codes from symbols and bit lengths + * @param sym + * @param num_symbols + */ +static void _Huffman_MakeCodes(huff_sym_t * sym, unsigned int num_symbols) +{ + unsigned int code = 0, i; + int bits; + + qsort(sym, num_symbols, sizeof(huff_sym_t), + (int (*)(const void *, const void *)) _Huffman_CompBits); + + bits = sym[0].Bits; + sym[0].Code = 0; + + for( i = 1; i < num_symbols; i++){ + code >>= bits - sym[i].Bits; + bits = sym[i].Bits; + code++; + sym[i].Code = code; + } +} + + +/** + * Make a canonical huffman tree from symbols and counts + * @param sym + * @param num_symbols + */ +void _Huffman_MakeTree( huff_sym_t * sym, unsigned int num_symbols) +{ + huff_node_t * nodes, * node_1, * node_2, * root; + unsigned int k, nodes_left, next_idx; + + nodes = malloc(sizeof(huff_node_t) * (num_symbols * 2 - 1)); + + /* Initialize all leaf nodes */ + for( k = 0; k < num_symbols; ++ k ) { + nodes[k].Symbol = & sym[k]; + nodes[k].Count = sym[k].Count; + nodes[k].ChildA = (huff_node_t *) 0; + } + + /* Build tree by joining the lightest nodes until there is only + one node left (the root node). */ + root = (huff_node_t *) 0; + nodes_left = num_symbols; + next_idx = num_symbols; + while( nodes_left > 1 ) { + /* Find the two lightest nodes */ + node_1 = (huff_node_t *) 0; + node_2 = (huff_node_t *) 0; + for( k = 0; k < next_idx; ++ k ) { + if( nodes[k].Count >= 0 ) { + if( !node_1 || (nodes[k].Count <= node_1->Count) ) { + node_2 = node_1; + node_1 = &nodes[k]; + } else if( !node_2 || (nodes[k].Count <= node_2->Count) ) + node_2 = &nodes[k]; + } + } + + /* Join the two nodes into a new parent node */ + root = &nodes[next_idx]; + root->ChildA = node_1; + root->ChildB = node_2; + root->Count = node_1->Count + node_2->Count; + node_1->Count = -1; + node_2->Count = -1; + ++ next_idx; + -- nodes_left; + } + + /* Store the tree in the output stream, and in the sym[] array (the + latter is used as a look-up-table for faster encoding) */ + if( root ) { + _Huffman_StoreTree( root, 0 ); + } else { + /* Special case: only one symbol => no binary tree */ + root = &nodes[0]; + _Huffman_StoreTree( root, 1 ); + } + + free(nodes); + + _Huffman_MakeCodes(sym, num_symbols); +} + +#ifdef __GNUC__ + +/** + * Print the huffman tables + * print_type = 0 => print the coding table + * print_type = 1 => print the decoding table + * print_type = 2 => print the full codes in symbols order + * print_type = 3 => print the full codes in codes order + * @param sym + * @param num_symbols + * @param print_type + * @param offset + */ +void _Huffman_PrintCodes(huff_sym_t * sym, unsigned int num_symbols, int print_type, int offset) +{ + unsigned int total_cnt = 0, total_size = 0, optim_size = 0, i; + int packs[4]; + + switch( print_type ) { + case 0 : + qsort(sym, num_symbols, sizeof(huff_sym_t), + (int (*)(const void *, const void *)) _Huffman_CompSym); + printf("{\n "); + for( i = 0; i < num_symbols; i++) { + if (i != 0) + printf(", "); + printf("{%u, %u}", sym[i].Code, sym[i].Bits); + } + printf("\n}\n"); + break; + case 1: + qsort(sym, num_symbols, sizeof(huff_sym_t), + (int (*)(const void *, const void *)) _Huffman_CompBits); + printf("{\n "); + for( i = num_symbols - 1; i >= 0; i--) { + printf("{0x%.8x, %u, %i}", sym[i].Code << (32 - sym[i].Bits), sym[i].Bits, sym[i].Symbol - offset); + if (i != 0) + printf(", "); + } + printf("\n}\n"); + break; + case 4: + qsort(sym, num_symbols, sizeof(huff_sym_t), + (int (*)(const void *, const void *)) _Huffman_CompBits); + printf("{\n "); + for( i = num_symbols - 1; i >= 0; i--) { + int symbol = sym[i].Symbol; + packs[3] = symbol / (offset * offset * offset); + packs[2] = (symbol - packs[3] * offset * offset * offset) / (offset * offset); + packs[1] = (symbol - (packs[3] * offset + packs[2]) * offset * offset) / offset; + packs[0] = symbol - ((packs[3] * offset + packs[2]) * offset + packs[1] * offset); + packs[0] -= offset >> 1; + packs[1] -= offset >> 1; + packs[2] -= offset >> 1; + packs[3] -= offset >> 1; + symbol = ((packs[3] & 15) << 12) | ((packs[2] & 15) << 8) | ((packs[1] & 15) << 4) | (packs[0] & 15); + printf("{0x%.8x, %u, %i}", sym[i].Code << (32 - sym[i].Bits), sym[i].Bits, symbol); + if (i != 0) + printf(", "); + } + printf("\n}\n"); + break; + default: + if (print_type == 2) + qsort(sym, num_symbols, sizeof(huff_sym_t), + (int (*)(const void *, const void *)) _Huffman_CompSym); + else + qsort(sym, num_symbols, sizeof(huff_sym_t), + (int (*)(const void *, const void *)) _Huffman_CompBits); + + printf("Symbol Count Lenth Code\n"); + for( i = 0; i < num_symbols; i++) { + int k = sym[i].Bits - 1; + printf("%-10i %-10u %-10u ", sym[i].Symbol - offset, sym[i].Count, sym[i].Bits); + for (; k >= 0 ; k--) + printf("%u", (sym[i].Code >> k) & 1 ); + printf("\n"); + + total_cnt += sym[i].Count; + total_size += sym[i].Count * sym[i].Bits; + if (sym[i].Count != 0) + optim_size += sym[i].Count * __builtin_log2(sym[i].Count); + } + optim_size = total_cnt * __builtin_log2(total_cnt) - optim_size; + printf("\ncount : %u huff : %f bps ", total_cnt, (float)total_size / total_cnt); + printf("opt : %f bps ", (float)optim_size / total_cnt); + printf("loss : %f bps (%f %%)\n", (float)(total_size - optim_size) / total_cnt, (float)(total_size - optim_size) * 100 / optim_size); + break; + } +} + +#endif + + diff --git a/common/tags.c b/common/tags.c new file mode 100755 index 0000000..174cf74 --- /dev/null +++ b/common/tags.c @@ -0,0 +1,1134 @@ +/* + * Encoder tag handling + * + * (C) Frank Klemm 2002. Janne Hyv�inen 2002. All rights reserved. + * + * Principles: + * + * + * History: + * 2002-06 created + * 2002-08-12 added translation method 5 to addtag() + * Tags taken from source file can't overwrite already existing items + * added Init_Tags() + * 2002-08-13 Added all windows code pages + * 2002-10-09 Added code to parse tags from filename + * + * Global functions: + * - addtag() + * + * TODO: + * - '/' and '\' should be possible as PATH_SEP + */ + +// #include "mpcenc.h" +#include +#include + +#ifdef _WIN32 +# include +#endif + +#ifdef _MSC_VER +# define strncasecmp strnicmp +#endif + +// Path separator +#if defined __unix__ || defined __bsdi__ || defined __FreeBSD__ || defined __OpenBSD__ || defined __NetBSD__ || defined __APPLE__ +# define PATH_SEP '/' +# define DRIVE_SEP '\0' +#elif defined _WIN32 || defined __TURBOC__ || defined __ZTC__ || defined _MSC_VER +# define PATH_SEP '\\' +# define DRIVE_SEP ':' +#else +# define PATH_SEP '/' // Amiga: C:/ +# define DRIVE_SEP ':' +#endif + +#ifdef USE_WIDECHAR +# include +#endif + + +static const char* GenreList [] = { + "Blues", "Classic Rock", "Country", "Dance", "Disco", "Funk", "Grunge", + "Hip-Hop", "Jazz", "Metal", "New Age", "Oldies", "Other", "Pop", "R&B", + "Rap", "Reggae", "Rock", "Techno", "Industrial", "Alternative", "Ska", + "Death Metal", "Pranks", "Soundtrack", "Euro-Techno", "Ambient", + "Trip-Hop", "Vocal", "Jazz+Funk", "Fusion", "Trance", "Classical", + "Instrumental", "Acid", "House", "Game", "Sound Clip", "Gospel", "Noise", + "AlternRock", "Bass", "Soul", "Punk", "Space", "Meditative", + "Instrumental Pop", "Instrumental Rock", "Ethnic", "Gothic", "Darkwave", + "Techno-Industrial", "Electronic", "Pop-Folk", "Eurodance", "Dream", + "Southern Rock", "Comedy", "Cult", "Gangsta", "Top 40", "Christian Rap", + "Pop/Funk", "Jungle", "Native American", "Cabaret", "New Wave", + "Psychadelic", "Rave", "Showtunes", "Trailer", "Lo-Fi", "Tribal", + "Acid Punk", "Acid Jazz", "Polka", "Retro", "Musical", "Rock & Roll", + "Hard Rock", "Folk", "Folk/Rock", "National Folk", "Swing", "Fast-Fusion", + "Bebob", "Latin", "Revival", "Celtic", "Bluegrass", "Avantgarde", + "Gothic Rock", "Progressive Rock", "Psychedelic Rock", "Symphonic Rock", + "Slow Rock", "Big Band", "Chorus", "Easy Listening", "Acoustic", "Humour", + "Speech", "Chanson", "Opera", "Chamber Music", "Sonata", "Symphony", + "Booty Bass", "Primus", "Porn Groove", "Satire", "Slow Jam", "Club", + "Tango", "Samba", "Folklore", "Ballad", "Power Ballad", "Rhythmic Soul", + "Freestyle", "Duet", "Punk Rock", "Drum Solo", "A capella", "Euro-House", + "Dance Hall", "Goa", "Drum & Bass", "Club House", "Hardcore", "Terror", + "Indie", "BritPop", "NegerPunk", "Polsk Punk", "Beat", "Christian Gangsta", + "Heavy Metal", "Black Metal", "Crossover", "Contemporary C", + "Christian Rock", "Merengue", "Salsa", "Thrash Metal", "Anime", "JPop", + "SynthPop" +}; + + +struct APETagFooterStruct { + mpc_uint8_t ID [8]; // should equal 'APETAGEX' + mpc_uint8_t Version [4]; // currently 1000 (version 1.000) + mpc_uint8_t Length [4]; // the complete size of the tag, including this footer + mpc_uint8_t TagCount [4]; // the number of fields in the tag + mpc_uint8_t Flags [4]; // the tag flags (none currently defined) + mpc_uint8_t Reserved [8]; // reserved for later use +}; + + +typedef struct { + char* key; + size_t keylen; + unsigned char* value; + size_t valuelen; + unsigned int flags; +} TagItem_t; + + +static TagItem_t T [256]; // up to 256 items, otherwise program crashs +static unsigned int TagCount = 0; + +#if defined __TURBOC__ + +static unsigned short CP_850 [256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, + 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, + 0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x0131, 0x00CD, 0x00CE, 0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, + 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE, 0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4, + 0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, 0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0, +}; + +#elif defined _WIN32 + +static unsigned short CP_37 [256] = { // ??? + 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F, 0x0097, 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008F, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000A, 0x0017, 0x001B, 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x0005, 0x0006, 0x0007, + 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, 0x001A, + 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x00E0, 0x00E1, 0x00E3, 0x00E5, 0x00E7, 0x00F1, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, + 0x0026, 0x00E9, 0x00EA, 0x00EB, 0x00E8, 0x00ED, 0x00EE, 0x00EF, 0x00EC, 0x00DF, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC, + 0x002D, 0x002F, 0x00C2, 0x00C4, 0x00C0, 0x00C1, 0x00C3, 0x00C5, 0x00C7, 0x00D1, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, + 0x00F8, 0x00C9, 0x00CA, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, + 0x00D8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00AB, 0x00BB, 0x00F0, 0x00FD, 0x00FE, 0x00B1, + 0x00B0, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x00AA, 0x00BA, 0x00E6, 0x00B8, 0x00C6, 0x00A4, + 0x00B5, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x00A1, 0x00BF, 0x00D0, 0x00DD, 0x00DE, 0x00AE, + 0x005E, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC, 0x00BD, 0x00BE, 0x005B, 0x005D, 0x00AF, 0x00A8, 0x00B4, 0x00D7, + 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00AD, 0x00F4, 0x00F6, 0x00F2, 0x00F3, 0x00F5, + 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x00B9, 0x00FB, 0x00FC, 0x00F9, 0x00FA, 0x00FF, + 0x005C, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x00B2, 0x00D4, 0x00D6, 0x00D2, 0x00D3, 0x00D5, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00B3, 0x00DB, 0x00DC, 0x00D9, 0x00DA, 0x009F, +}; + +static unsigned short CP_42 [256] = { // CP_SYMBOLS + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0xF020, 0xF021, 0xF022, 0xF023, 0xF024, 0xF025, 0xF026, 0xF027, 0xF028, 0xF029, 0xF02A, 0xF02B, 0xF02C, 0xF02D, 0xF02E, 0xF02F, + 0xF030, 0xF031, 0xF032, 0xF033, 0xF034, 0xF035, 0xF036, 0xF037, 0xF038, 0xF039, 0xF03A, 0xF03B, 0xF03C, 0xF03D, 0xF03E, 0xF03F, + 0xF040, 0xF041, 0xF042, 0xF043, 0xF044, 0xF045, 0xF046, 0xF047, 0xF048, 0xF049, 0xF04A, 0xF04B, 0xF04C, 0xF04D, 0xF04E, 0xF04F, + 0xF050, 0xF051, 0xF052, 0xF053, 0xF054, 0xF055, 0xF056, 0xF057, 0xF058, 0xF059, 0xF05A, 0xF05B, 0xF05C, 0xF05D, 0xF05E, 0xF05F, + 0xF060, 0xF061, 0xF062, 0xF063, 0xF064, 0xF065, 0xF066, 0xF067, 0xF068, 0xF069, 0xF06A, 0xF06B, 0xF06C, 0xF06D, 0xF06E, 0xF06F, + 0xF070, 0xF071, 0xF072, 0xF073, 0xF074, 0xF075, 0xF076, 0xF077, 0xF078, 0xF079, 0xF07A, 0xF07B, 0xF07C, 0xF07D, 0xF07E, 0xF07F, + 0xF080, 0xF081, 0xF082, 0xF083, 0xF084, 0xF085, 0xF086, 0xF087, 0xF088, 0xF089, 0xF08A, 0xF08B, 0xF08C, 0xF08D, 0xF08E, 0xF08F, + 0xF090, 0xF091, 0xF092, 0xF093, 0xF094, 0xF095, 0xF096, 0xF097, 0xF098, 0xF099, 0xF09A, 0xF09B, 0xF09C, 0xF09D, 0xF09E, 0xF09F, + 0xF0A0, 0xF0A1, 0xF0A2, 0xF0A3, 0xF0A4, 0xF0A5, 0xF0A6, 0xF0A7, 0xF0A8, 0xF0A9, 0xF0AA, 0xF0AB, 0xF0AC, 0xF0AD, 0xF0AE, 0xF0AF, + 0xF0B0, 0xF0B1, 0xF0B2, 0xF0B3, 0xF0B4, 0xF0B5, 0xF0B6, 0xF0B7, 0xF0B8, 0xF0B9, 0xF0BA, 0xF0BB, 0xF0BC, 0xF0BD, 0xF0BE, 0xF0BF, + 0xF0C0, 0xF0C1, 0xF0C2, 0xF0C3, 0xF0C4, 0xF0C5, 0xF0C6, 0xF0C7, 0xF0C8, 0xF0C9, 0xF0CA, 0xF0CB, 0xF0CC, 0xF0CD, 0xF0CE, 0xF0CF, + 0xF0D0, 0xF0D1, 0xF0D2, 0xF0D3, 0xF0D4, 0xF0D5, 0xF0D6, 0xF0D7, 0xF0D8, 0xF0D9, 0xF0DA, 0xF0DB, 0xF0DC, 0xF0DD, 0xF0DE, 0xF0DF, + 0xF0E0, 0xF0E1, 0xF0E2, 0xF0E3, 0xF0E4, 0xF0E5, 0xF0E6, 0xF0E7, 0xF0E8, 0xF0E9, 0xF0EA, 0xF0EB, 0xF0EC, 0xF0ED, 0xF0EE, 0xF0EF, + 0xF0F0, 0xF0F1, 0xF0F2, 0xF0F3, 0xF0F4, 0xF0F5, 0xF0F6, 0xF0F7, 0xF0F8, 0xF0F9, 0xF0FA, 0xF0FB, 0xF0FC, 0xF0FD, 0xF0FE, 0xF0FF, +}; + +static unsigned short CP_437 [256] = { // MS-DOS: US + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, + 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, 0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, +}; + +static unsigned short CP_500 [256] = { // ??? + 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F, 0x0097, 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008F, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000A, 0x0017, 0x001B, 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x0005, 0x0006, 0x0007, + 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, 0x001A, + 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x00E0, 0x00E1, 0x00E3, 0x00E5, 0x00E7, 0x00F1, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, + 0x0026, 0x00E9, 0x00EA, 0x00EB, 0x00E8, 0x00ED, 0x00EE, 0x00EF, 0x00EC, 0x00DF, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, + 0x002D, 0x002F, 0x00C2, 0x00C4, 0x00C0, 0x00C1, 0x00C3, 0x00C5, 0x00C7, 0x00D1, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, + 0x00F8, 0x00C9, 0x00CA, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, + 0x00D8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00AB, 0x00BB, 0x00F0, 0x00FD, 0x00FE, 0x00B1, + 0x00B0, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x00AA, 0x00BA, 0x00E6, 0x00B8, 0x00C6, 0x00A4, + 0x00B5, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x00A1, 0x00BF, 0x00D0, 0x00DD, 0x00DE, 0x00AE, + 0x00A2, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC, 0x00BD, 0x00BE, 0x00AC, 0x007C, 0x00AF, 0x00A8, 0x00B4, 0x00D7, + 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00AD, 0x00F4, 0x00F6, 0x00F2, 0x00F3, 0x00F5, + 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x00B9, 0x00FB, 0x00FC, 0x00F9, 0x00FA, 0x00FF, + 0x005C, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x00B2, 0x00D4, 0x00D6, 0x00D2, 0x00D3, 0x00D5, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00B3, 0x00DB, 0x00DC, 0x00D9, 0x00DA, 0x009F, +}; + +static unsigned short CP_850 [256] = { // MS-DOS Latin 1 + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, + 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, + 0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x0131, 0x00CD, 0x00CE, 0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, + 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE, 0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4, + 0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, 0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0, +}; + +static unsigned short CP_860 [256] = { // MS-DOS: Portuguese + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E3, 0x00E0, 0x00C1, 0x00E7, 0x00EA, 0x00CA, 0x00E8, 0x00CD, 0x00D4, 0x00EC, 0x00C3, 0x00C2, + 0x00C9, 0x00C0, 0x00C8, 0x00F4, 0x00F5, 0x00F2, 0x00DA, 0x00F9, 0x00CC, 0x00D5, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x20A7, 0x00D3, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x00D2, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, +}; + +static unsigned short CP_861 [256] = { // MS-DOS: Iceland + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00D0, 0x00F0, 0x00DE, 0x00C4, 0x00C5, + 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00FE, 0x00FB, 0x00DD, 0x00FD, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00C1, 0x00CD, 0x00D3, 0x00DA, 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, +}; + +static unsigned short CP_863 [256] = { // MS-DOS: Canadian French + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00C2, 0x00E0, 0x00B6, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x2017, 0x00C0, 0x00A7, + 0x00C9, 0x00C8, 0x00CA, 0x00F4, 0x00CB, 0x00CF, 0x00FB, 0x00F9, 0x00A4, 0x00D4, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x00DB, 0x0192, + 0x00A6, 0x00B4, 0x00F3, 0x00FA, 0x00A8, 0x00B8, 0x00B3, 0x00AF, 0x00CE, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00BE, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, +}; + +static unsigned short CP_865 [256] = { // MS-DOS: Nordic + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, + 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00A4, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, +}; + +static unsigned short CP_874 [256] = { // MS-DOS: Thai + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x0081, 0x0082, 0x0083, 0x0084, 0x2026, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x0E01, 0x0E02, 0x0E03, 0x0E04, 0x0E05, 0x0E06, 0x0E07, 0x0E08, 0x0E09, 0x0E0A, 0x0E0B, 0x0E0C, 0x0E0D, 0x0E0E, 0x0E0F, + 0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15, 0x0E16, 0x0E17, 0x0E18, 0x0E19, 0x0E1A, 0x0E1B, 0x0E1C, 0x0E1D, 0x0E1E, 0x0E1F, + 0x0E20, 0x0E21, 0x0E22, 0x0E23, 0x0E24, 0x0E25, 0x0E26, 0x0E27, 0x0E28, 0x0E29, 0x0E2A, 0x0E2B, 0x0E2C, 0x0E2D, 0x0E2E, 0x0E2F, + 0x0E30, 0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37, 0x0E38, 0x0E39, 0x0E3A, 0xF8C1, 0xF8C2, 0xF8C3, 0xF8C4, 0x0E3F, + 0x0E40, 0x0E41, 0x0E42, 0x0E43, 0x0E44, 0x0E45, 0x0E46, 0x0E47, 0x0E48, 0x0E49, 0x0E4A, 0x0E4B, 0x0E4C, 0x0E4D, 0x0E4E, 0x0E4F, + 0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, 0x0E55, 0x0E56, 0x0E57, 0x0E58, 0x0E59, 0x0E5A, 0x0E5B, 0xF8C5, 0xF8C6, 0xF8C7, 0xF8C8, +}; + +static unsigned short CP_1250 [256] = { // Windows: Latin 2 + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x0081, 0x201A, 0x0083, 0x201E, 0x2026, 0x2020, 0x2021, 0x0088, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179, + 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0098, 0x2122, 0x0161, 0x203A, 0x015B, 0x0165, 0x017E, 0x017A, + 0x00A0, 0x02C7, 0x02D8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x017B, + 0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, 0x017C, + 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, + 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, + 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, + 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9, +}; + +static unsigned short CP_1251 [256] = { // Windows: Cyrillic + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021, 0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F, + 0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0098, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F, + 0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7, 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407, + 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7, 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457, + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, +}; + +static unsigned short CP_1252 [256] = { // Windows: Latin 1 + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008D, 0x017D, 0x008F, + 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x009D, 0x017E, 0x0178, + 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, + 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, + 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, + 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, + 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF, +}; + +static unsigned short CP_1253 [256] = { // Windows: Greek + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x0088, 0x2030, 0x008A, 0x2039, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0098, 0x2122, 0x009A, 0x203A, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x0385, 0x0386, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0xF8F9, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x2015, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, 0x00B6, 0x00B7, 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, + 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, + 0x03A0, 0x03A1, 0xF8FA, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, + 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, + 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0xF8FB, +}; + +static unsigned short CP_1254 [256] = { // Windows: Latin 5 + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008D, 0x008E, 0x008F, + 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x009D, 0x009E, 0x0178, + 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, + 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, + 0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, + 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, + 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF, +}; + +static unsigned short CP_1255 [256] = { // Windows: Hebrew + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, 0x008A, 0x2039, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x02DC, 0x2122, 0x009A, 0x203A, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AA, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, + 0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7, 0x05B8, 0x05B9, 0x05BA, 0x05BB, 0x05BC, 0x05BD, 0x05BE, 0x05BF, + 0x05C0, 0x05C1, 0x05C2, 0x05C3, 0x05F0, 0x05F1, 0x05F2, 0x05F3, 0x05F4, 0xF88D, 0xF88E, 0xF88F, 0xF890, 0xF891, 0xF892, 0xF893, + 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF, + 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, 0x05E8, 0x05E9, 0x05EA, 0xF894, 0xF895, 0x200E, 0x200F, 0xF896, +}; + +static unsigned short CP_1256 [256] = { // Windows: Arabic + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x067E, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688, + 0x06AF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x06A9, 0x2122, 0x0691, 0x203A, 0x0153, 0x200C, 0x200D, 0x06BA, + 0x00A0, 0x060C, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x06BE, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x061B, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x061F, + 0x06C1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, 0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F, + 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00D7, 0x0637, 0x0638, 0x0639, 0x063A, 0x0640, 0x0641, 0x0642, 0x0643, + 0x00E0, 0x0644, 0x00E2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0649, 0x064A, 0x00EE, 0x00EF, + 0x064B, 0x064C, 0x064D, 0x064E, 0x00F4, 0x064F, 0x0650, 0x00F7, 0x0651, 0x00F9, 0x0652, 0x00FB, 0x00FC, 0x200E, 0x200F, 0x06D2, +}; + +static unsigned short CP_1257 [256] = { // Windows: Baltic + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x0081, 0x201A, 0x0083, 0x201E, 0x2026, 0x2020, 0x2021, 0x0088, 0x2030, 0x008A, 0x2039, 0x008C, 0x00A8, 0x02C7, 0x00B8, + 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0098, 0x2122, 0x009A, 0x203A, 0x009C, 0x00AF, 0x02DB, 0x009F, + 0x00A0, 0xF8FC, 0x00A2, 0x00A3, 0x00A4, 0xF8FD, 0x00A6, 0x00A7, 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, + 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, + 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, 0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, + 0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C, + 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x02D9, +}; + +static unsigned short CP_1258 [256] = { // Windows: Vietnam + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, 0x008A, 0x2039, 0x0152, 0x008D, 0x008E, 0x008F, + 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x02DC, 0x2122, 0x009A, 0x203A, 0x0153, 0x009D, 0x009E, 0x0178, + 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, + 0x00C0, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x00C5, 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x0300, 0x00CD, 0x00CE, 0x00CF, + 0x0110, 0x00D1, 0x0309, 0x00D3, 0x00D4, 0x01A0, 0x00D6, 0x00D7, 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x01AF, 0x0303, 0x00DF, + 0x00E0, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0301, 0x00ED, 0x00EE, 0x00EF, + 0x0111, 0x00F1, 0x0323, 0x00F3, 0x00F4, 0x01A1, 0x00F6, 0x00F7, 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x01B0, 0x20AB, 0x00FF, +}; + +static unsigned short CP_10000 [256] = { // Apple Macintosh + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, + 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, + 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, + 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x2126, 0x00E6, 0x00F8, + 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, + 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, 0x00FF, 0x0178, 0x2044, 0x20AC, 0x2039, 0x203A, 0xFB01, 0xFB02, + 0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, + 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7, +}; + +static unsigned short CP_10079 [256] = { // ??? + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, + 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, + 0x00DD, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, + 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x2126, 0x00E6, 0x00F8, + 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, + 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, 0x00FF, 0x0178, 0x2044, 0x00A4, 0x00D0, 0x00F0, 0x00DE, 0x00FE, + 0x00FD, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, + 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7, +}; + +#endif + + +/* + * Resets Item Counter + * Do frees any memory. + */ + +void +Init_Tags ( void ) +{ + int i; + + for ( i = 0; i < (int)TagCount; i++ ) { + if ( T[i].key != NULL ) + free ( T[i].key ); + T[i].key = NULL; + if ( T[i].value != NULL ) + free ( T[i].value ); + T[i].value = NULL; + } + TagCount = 0; +} + + +int +gettag ( const char* key, char* dst, size_t len ) +{ + size_t valuelen; + size_t keylen = strlen (key); + int i; + + for ( i = 0; i < (int)TagCount; i++ ) + if ( keylen == T[i].keylen && 0 == memcmp (T[i].key, key, keylen) ) { + valuelen = len-1 > T[i].valuelen ? T[i].valuelen : len-1 ; + memcpy ( dst, T[i].value, valuelen ); + dst [valuelen] = '\0'; + return 0; + } + + memset ( dst, 0, len ); + return -1; +} + + +static unsigned char* +utf8char ( unsigned char* dst, unsigned long value ) +{ + if ( value == '\r' || value == 0xFFFE || value == 0xFFFF ) { + ; + } + else if ( value < 0x80 ) { + *dst++ = value; + } + else if ( value < 0x800 ) { + *dst++ = 0xC0 + ((value >> 6) & 0x1F); + *dst++ = 0x80 + ((value >> 0) & 0x3F); + } + else if ( value < 0x10000 ) { + *dst++ = 0xE0 + ((value >> 12) & 0x0F); + *dst++ = 0x80 + ((value >> 6) & 0x3F); + *dst++ = 0x80 + ((value >> 0) & 0x3F); + } + else if ( value < 0x200000 ) { + *dst++ = 0xF0 + ((value >> 18) & 0x07); + *dst++ = 0x80 + ((value >> 12) & 0x3F); + *dst++ = 0x80 + ((value >> 6) & 0x3F); + *dst++ = 0x80 + ((value >> 0) & 0x3F); + } + else if ( value < 0x4000000 ) { + *dst++ = 0xF8 + ((value >> 24) & 0x03); + *dst++ = 0x80 + ((value >> 18) & 0x3F); + *dst++ = 0x80 + ((value >> 12) & 0x3F); + *dst++ = 0x80 + ((value >> 6) & 0x3F); + *dst++ = 0x80 + ((value >> 0) & 0x3F); + } + else if ( value < 0x80000000 ) { + *dst++ = 0xFC + ((value >> 30) & 0x01); + *dst++ = 0x80 + ((value >> 24) & 0x3F); + *dst++ = 0x80 + ((value >> 18) & 0x3F); + *dst++ = 0x80 + ((value >> 12) & 0x3F); + *dst++ = 0x80 + ((value >> 6) & 0x3F); + *dst++ = 0x80 + ((value >> 0) & 0x3F); + } + + return dst; +} + + +/* + * IsUnicode() + * + * Gets a memory block and tries to find out whether this is binary data or a valid Windows Unicode file. + * When return 1, it is very likely (but not 100% secure) that the content is Unicode encoded. + */ + +static int +IsUnicode ( const char* src, size_t len ) +{ + if ( len <= 2 ) + return 0; + + if ( len & 1 ) // odd number of bytes? + return 0; + + if ( src [0] != (char)0xFF || src [1] != (char)0xFE ) // Microsoft Unicode preample (also useful to detect endianess, but currently only little endian is supported) + return 0; + + for ( len >>= 1; len > 0; len--, src += 2 ) { // Check for invalid codes (FFFE, FFFF, DC00...DFFF without a prepend D800...DBFF, D800...DBFF without a n appended DC00...DFFF) + if ( ( src [1] & 0xFC ) == 0xDC ) + return 0; + if ( src [1] == (char)0xFF && ( src [0] & 0xFE ) == 0xFE ) + return 0; + if ( ( src [1] & 0xFC ) == 0xD8 ) { + if ( len < 2 || ( src [3] & 0xFC ) != 0xDC ) + return 0; + } + else { + len--; + src += 2; + } + } + + return 1; // good chance to be a UTF-8 +} + +/* + * addtag() + * + * Add a item to the item list of a tag. Item key is given by (key,keylen), item value by (value,valuelen). + * + * The following value translation modes are possible: + * 0: no translation at all + * 1: translate from console charset to UTF-8 (currently ISO-8859-1 for non-Windows and non-DOS OS) + * 2: auto detect: contents is a valid Window Unicode File => translate to UTF-8, else no translation at all + * 3: like 1), but convert ';' to null character + * 4: UTF-16 LE => translate to UTF-8 + * 5: translate from ISO-8859-1 to UTF-8 + * 6: like 1), but convert from OEM codepage (Win32) + * (should become an enum) + * + * Note: + * Windows 95/98/ME has no usable NLS support + * + */ + +int +addtag ( const char* key, // the item key + size_t keylen, // length of item key, or 0 for auto-determine + const char* value, // the item value + size_t valuelen, // the length of the item value (before any possible translation) + int converttoutf8, // convert flags of item value + int flags ) // item flags proposal +{ + unsigned char* p; + unsigned char* q; + char ch; + size_t i; +#ifdef _WIN32 + const unsigned short* CP_ptr; + unsigned int Codepage; + + if ( converttoutf8 == 6 ) { + Codepage = GetOEMCP (); + converttoutf8 = 1; + } + else { + Codepage = GetACP (); + } + + switch ( Codepage ) { + case CP_ACP: CP_ptr = CP_1252; break; + case CP_OEMCP: CP_ptr = CP_850; break; + case CP_MACCP: CP_ptr = CP_10000; break; + case CP_THREAD_ACP: CP_ptr = CP_1252; break; + default: CP_ptr = CP_850; break; + case 37: CP_ptr = CP_37; break; + case 42: CP_ptr = CP_42; break; + case 437: CP_ptr = CP_437; break; + case 500: CP_ptr = CP_500; break; + case 850: CP_ptr = CP_850; break; + case 860: CP_ptr = CP_860; break; + case 861: CP_ptr = CP_861; break; + case 863: CP_ptr = CP_863; break; + case 865: CP_ptr = CP_865; break; + case 874: CP_ptr = CP_874; break; + case 1250: CP_ptr = CP_1250; break; + case 1251: CP_ptr = CP_1251; break; + case 1252: CP_ptr = CP_1252; break; + case 1253: CP_ptr = CP_1253; break; + case 1254: CP_ptr = CP_1254; break; + case 1255: CP_ptr = CP_1255; break; + case 1256: CP_ptr = CP_1256; break; + case 1257: CP_ptr = CP_1257; break; + case 1258: CP_ptr = CP_1258; break; + case 10000: CP_ptr = CP_10000; break; + case 10079: CP_ptr = CP_10079; break; + } +#endif + + + if ( converttoutf8 == 2 && IsUnicode ( value, valuelen ) ) { + converttoutf8 = 4; + value += 2; // remove first two bytes (zero width space 0xFEFF) + valuelen = ( valuelen - 2) >> 1; + flags &= ~2; // reset binary flag (it's now text) + } + + if ( keylen == 0 ) + keylen = strlen ( key ); + + p = malloc ( keylen ); + memcpy ( p, key, keylen ); + T [TagCount] . key = (char*) p; + T [TagCount] . keylen = keylen; + + switch ( converttoutf8 ) { + default: + p = malloc ( 1 * valuelen ); // copy + break; + case 1: // at most 1 native character => 3 UTF bytes + case 4: // at 1 wide => 3, 2 wide => 4 + p = malloc ( 3 * valuelen ); + break; + } + + q = p; + + for ( i = 0; i < valuelen; i++ ) { + ch = value [i]; + switch ( converttoutf8 ) { + default: // 0: no translation at all --or-- 2: auto detect: contents is a valid Window Unicode File => translate to UTF-8, else no translation at all + *q++ = ch; + break; + + case 5: // 5: translate from ISO-8859-1 to UTF-8 + q = utf8char ( q, ch ); + break; + + case 3: // 3: like 1), but convert ';' to null character + if ( ch == ';' ) + ch = '\0'; + /* fall through */ + + case 1: // 1: translate from console charset to UTF-8 (currently ISO-8859-1 for non-Windows and non-DOS OS) +#if defined __TURBOC__ + q = utf8char ( q, CP_850 [ch] ); +#elif defined _WIN32 + // fprintf ( stderr, "%c %02X U+%04X\n", ch, ch, CP_ptr [ch] ); + q = utf8char ( q, CP_ptr [ch] ); +#elif defined USE_WIDECHAR + { + int ret; + wchar_t wch = 0; + ret = mbtowc ( &wch, value + i, valuelen - i ); + if ( ret > 0 ) + q = utf8char ( q, wch ), i += ret - 1; + } +#else + q = utf8char ( q, ch ); +#endif + break; + + case 4: // 4: UTF-16 LE => translate to UTF-8 + if ( (value [i+i+1] & 0xFC ) == 0xD8 && (value [i+i+3] & 0xFC ) == 0xDC ) { // UTF-16 code (2x16 bit for Unicodes 0x010000...0x10FFFF) + q = utf8char ( q, ((value [i+i] + (value [i+i+1] << 8) - 0xD800) << 10) + (value [i+i+2] + (value [i+i+3] << 8) - 0xDC00) + 0x10000 ); + i++; + } + else { + q = utf8char ( q, value [i+i] + (value [i+i+1] << 8) ); + } + break; + } + } + + p = realloc ( p, valuelen = q-p ); + + for ( i = 0; i < TagCount; i++ ) + if ( T [i].keylen == T [TagCount].keylen && 0 == strncasecmp (T [i].key, T [TagCount].key, T [i].keylen ) ) { // found old tag with the same name => replace + free ( T [TagCount].key ); + free ( T [i].value ); + goto set; + } + + i = TagCount++; +set: + T [i] . value = p; + T [i] . valuelen = valuelen; + T [i] . flags = flags; + return 0; +} + + +static int mpc_cdecl +cmpfn2 ( const void* p1, const void* p2 ) +{ + const TagItem_t* q1 = (TagItem_t*) p1; + const TagItem_t* q2 = (TagItem_t*) p2; + + return q1 -> valuelen - q2 -> valuelen; +} + +#define TAG_NO_HEADER 1 +#define TAG_NO_FOOTER 2 +#define TAG_NO_PREAMBLE 4 + + +/** + * Writes collect tag items and write it to a file. + * Items are destroyed, so tags can only be written once. + * @param fp + * @param Version + * @param flags options for writing header / footer : + * 1 : do not write header + * 2 : do not write footer + * 4 : do not write "APETAGEX" + * @return + */ +int +FinalizeTags ( FILE* fp, unsigned int Version, unsigned int flags ) +{ + static unsigned char H [32] = "APETAGEX"; + unsigned char dw [8]; + unsigned long estimatedbytes = 32; // 32 byte footer + all items, these are the 32 bytes footer, the items are added later + unsigned long writtenbytes = -32; // actually writtenbytes-32, which should be equal to estimatedbytes (= footer + all items) + unsigned int i; + + if ( TagCount == 0 ) + return 0; + + if (flags & TAG_NO_PREAMBLE) { + estimatedbytes -= 8; + writtenbytes += 8; + } + if (flags & TAG_NO_FOOTER) + estimatedbytes = 0; + if (flags & TAG_NO_HEADER) + writtenbytes = 0; + + qsort ( T, TagCount, sizeof (*T), cmpfn2 ); + + for ( i = 0; i < TagCount; i++ ) + estimatedbytes += 9 + T[i] . keylen + T[i] . valuelen; + + if ( estimatedbytes >= 8192 + 103 ) + fprintf (stderr, "\nTag is %.1f Kbyte long. This is longer than the maximum recommended 8 KByte.\n\a", estimatedbytes/1024. ); + + H [ 8] = Version >> 0; + H [ 9] = Version >> 8; + H [10] = Version >> 16; + H [11] = Version >> 24; + H [12] = estimatedbytes >> 0; + H [13] = estimatedbytes >> 8; + H [14] = estimatedbytes >> 16; + H [15] = estimatedbytes >> 24; + H [16] = TagCount >> 0; + H [17] = TagCount >> 8; + H [18] = TagCount >> 16; + H [19] = TagCount >> 24; + + H [23] = 0x80 | 0x20; + if (!(flags & TAG_NO_HEADER)) { + if (flags & TAG_NO_PREAMBLE) + writtenbytes += fwrite ( H + 8, 1, 24, fp ); + else + writtenbytes += fwrite ( H, 1, 32, fp ); + } + + for ( i = 0; i < TagCount; i++ ) { + dw [0] = T [i] . valuelen >> 0; + dw [1] = T [i] . valuelen >> 8; + dw [2] = T [i] . valuelen >> 16; + dw [3] = T [i] . valuelen >> 24; + dw [4] = T [i] . flags >> 0; + dw [5] = T [i] . flags >> 8; + dw [6] = T [i] . flags >> 16; + dw [7] = T [i] . flags >> 24; + writtenbytes += fwrite ( dw , 1, 8 , fp ); + writtenbytes += fwrite ( T[i].key , 1, T[i].keylen , fp ); + writtenbytes += fwrite ( "" , 1, 1 , fp ); + if ( T[i].valuelen > 0 ) + writtenbytes += fwrite ( T[i].value, 1, T[i].valuelen, fp ); + } + + H [23] = 0x80; + if (!(flags & TAG_NO_FOOTER)) { + if (flags & TAG_NO_PREAMBLE) + writtenbytes += fwrite ( H + 8, 1, 24, fp ); + else + writtenbytes += fwrite ( H, 1, 32, fp ); + } + + if ( estimatedbytes != writtenbytes ) + fprintf (stderr, "\nError writing APE tag.\n" ); + + TagCount = 0; + return 0; +} + + +static int +TagKeyExists ( const char* key, size_t keylen ) +{ + unsigned int i; + + if ( keylen == 0 ) + keylen = strlen ( key ); + + for ( i = 0; i < TagCount; i++ ) + if ( T [i].keylen == keylen && 0 == strncasecmp (T [i].key, key, keylen ) ) + return 1; + + return 0; +} + + +/* + * Copies src to dst. Copying is stopped at `\0' char is detected or if + * len chars are copied. + * Trailing blanks are removed and the string is `\0` terminated. + */ + +static void +memcpy_crop ( const char* key, char* src, size_t len, int flags ) +{ + while ( len > 0 && ( src [len-1] == ' ' || src [len-1] == '\0' ) ) + len--; + + if ( len > 0 ) + if ( ! TagKeyExists ( key, 0 ) ) + addtag ( key, 0, src, len, 1, flags ); +} + + +static int +CopyTags_ID3 ( FILE* fp ) +{ + mpc_uint8_t tmp [128]; + + if ( -1 == fseek ( fp, -128L, SEEK_END ) ) + return -1; + + if ( 128 != fread(tmp, 1, 128, fp) ) + return -1; + + if ( 0 != memcmp ( tmp, "TAG", 3 ) ) { + return -1; + } + + if ( !tmp[3] && !tmp[33] && !tmp[63] && !tmp[93] && !tmp[97] ) + return -1; + + memcpy_crop ( "Title" , (char*)tmp + 3, 30, 0 ); + memcpy_crop ( "Artist" , (char*)tmp + 33, 30, 0 ); + memcpy_crop ( "Album" , (char*)tmp + 63, 30, 0 ); + memcpy_crop ( "Year" , (char*)tmp + 93, 4, 0 ); + memcpy_crop ( "Comment", (char*)tmp + 97, 30, 0 ); + + if ( tmp[127] < sizeof(GenreList)/sizeof(*GenreList) ) + if ( ! TagKeyExists ( "Genre", 0 ) ) + addtag ("Genre", 0, GenreList [tmp[127]], strlen (GenreList [tmp[127]]), 0, 0 ); + + if ( tmp[125] == 0 && tmp[126] != 0 ) + if ( ! TagKeyExists ( "Track", 0 ) ) { + sprintf ( (char*)tmp, "%u", tmp[126] ); + addtag ("Track", 0, (char*)tmp, strlen ((char*)tmp), 0, 0 ); + } + + return 0; +} + + +static unsigned int +Read_LE_Uint32 ( const unsigned char* p ) +{ + return ((mpc_uint32_t)p[0] << 0) | + ((mpc_uint32_t)p[1] << 8) | + ((mpc_uint32_t)p[2] << 16) | + ((mpc_uint32_t)p[3] << 24); +} + + +static int +CopyTags_APE ( FILE* fp ) +{ + mpc_uint32_t len; + mpc_uint32_t flags; + mpc_uint32_t version; + unsigned char buff [32768]; + unsigned char key [257]; + unsigned char* p; + struct APETagFooterStruct T; + mpc_uint32_t TagLen; + mpc_uint32_t TagCount; + + if ( -1 == fseek ( fp, -(long)sizeof T, SEEK_END ) ) + return -1; + if ( sizeof(T) != fread (&T, 1, sizeof T, fp) ) + return -1; + if ( memcmp ( T.ID, "APETAGEX", sizeof(T.ID) ) != 0 ) + return -1; + version = Read_LE_Uint32 (T.Version); + if ( version != 1000 && version != 2000 ) + return -1; + TagLen = Read_LE_Uint32 (T.Length); + if ( TagLen <= sizeof T ) + return -1; + if ( -1 == fseek ( fp, -(long)TagLen, SEEK_END ) ) + return -1; + memset ( buff, 0, sizeof(buff) ); + if ( TagLen - sizeof T != fread (buff, 1, TagLen - sizeof T, fp) ) + return -1; + + TagCount = Read_LE_Uint32 (T.TagCount); + for ( p = buff; TagCount--; ) { + len = Read_LE_Uint32 ( p ); p += 4; + flags = Read_LE_Uint32 ( p ); p += 4; + strcpy ( (char*)key, (char*)p ); p += strlen ((char*)key) + 1; + if ( ! TagKeyExists ( (char*)key, 0 ) ) + addtag ( (char*)key, 0, (char*)p, len > 0 && p [len-1] == '\0' ? len-1 : len, version >= 2000 ? 0 : 5, flags ); + p += len; + } + + return 0; +} + +/********************************************************************************************/ + +/* + +" " ' ' +" - " '-' +"." '.' +"/" '/' +" -- " '_' +"[#0]" '0' +"[#n]" [number] 'n' +"#n" number 'M' +"(#N)" (CD x) 'N' it should also be possible: (CD x/x), (DVD x), (DVD x/x) +"#A" Artist 'A' +"#C" CD/Album 'C' +"#T" Title 'T' +"#x" extention 'x' + + +/#C -- [#n] #A -- #T#x | Acid Jazz/100% Acid Jazz -- [04] Leena Conquest (and Hip Hop Fingers) -- Boundaries (Radio Edit).pac +/#C -- [#n] #A -- #C -- #T#x| Meditation/Jade Collection (1998) -- [10] Rhian -- Red Sun, Blue River -- The Miracle Song.mpc +/#A/#C -- [#n] #T#x | Andreas Vollenweider/Eolian Minstrel -- [02] Across the Iron River.pac +/#A/#C#N -- [#n] #T#x | Barbra Streisand/The Concert (CD 1) -- [01] Overture +/#A -- #C -- [#n] #T#x | Friedemann/Friedemann -- Aquamarin -- [09] In the Court of the Mermaid.pac +/#C/[#n] #A -- #T#x | Jazz Lyrik Prosa/[11] Eberhard Esche -- Anektode.pac +/#A -- #T#x | Lais/Lais -- 06.pac +/#C/(#N) -- [#n] #A -- #T#x | Tanz- und Folkfest 2001 -- Klingende Post/(CD 2) -- [09] Andy Irvine -- Gladiators.pac +/#A -- #C -- [#0]#x | Friedemann/Friedemann -- Aquamarin -- [00].pac +/#A/#C (#N) -- [#0]#x | Tangerine Dream/The Warsaw Concert (CD 2) -- [00].pac +/#A/#T#x | Heinz-Rudolf Kunze/Dein ist mein ganzes Herz.pac +/#A/#C -- [#0]#x | Sting/Nada como el Sol -- [00].mpc + +*/ + +static const char* const parser_strings [] = { + "/A_Tx", + "/A/Tx", + "/A_C_0x", + "/C_n A_Tx", + "/C_n A_C_Tx", // new + "/A/C_n Tx", + "/A/C N_n Tx", + "/A_C_n Tx", + "/C/n A_Tx", + "/C/N_n A_Tx", + "/A/C N_0x", + "/A/C_0x", +}; + +/* + * dst[0] = Artist + * dst[1] = CD + * dst[2] = Title + * dst[3] = +CD + * dst[4] = number + * dst[5] = ext + */ + +#ifndef isdigit +# define isdigit(x) ((unsigned int)((x) - '0') < 10) +#endif + +int +CopyTags ( const char* filename ) +{ + FILE* fp; + + if ( 0 == strncmp (filename, "/dev/", 5 ) ) + return 0; + + fp = fopen ( filename, "rb" ); + if ( fp == NULL ) + return -1; + + CopyTags_APE (fp); // APE tags have higher priority than ID3V1 tags + CopyTags_ID3 (fp); + + fclose (fp); + return 0; +} + +/* end of tags.c */ diff --git a/configure.in b/configure.in new file mode 100755 index 0000000..cda7d7f --- /dev/null +++ b/configure.in @@ -0,0 +1,51 @@ +AC_INIT([libmpcs], [0.1]) +AC_CONFIG_AUX_DIR([config]) +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_SRCDIR([libmpcdec/mpc_reader.c]) +AM_CONFIG_HEADER([include/config.h]) +AM_INIT_AUTOMAKE + +AC_LANG_C +AC_PROG_CC +AC_LIBTOOL_WIN32_DLL +AC_PROG_LIBTOOL + +AC_CHECK_HEADERS([replaygain/gain_analysis.h]) +AM_CONDITIONAL([MPC_GAIN], [test "x$ac_cv_header_replaygain_gain_analysis_h" = xyes]) + +AC_CANONICAL_HOST() +case $host_os in + *mingw32* ) + LDFLAGS="${LDFLAGS} -mwindows" + EXTRALIBS="-lwinmm" + ;; + * ) + EXTRALIBS="" + ;; +esac + +AC_SUBST([EXTRALIBS]) + +AC_ARG_ENABLE([mpcchap], [AS_HELP_STRING([--enable-mpcchap], [enable building mpcchap])]) +AM_CONDITIONAL([MPC_CHAP], [test "x$enable_mpcchap" = xyes]) + + +CHECK_VISIBILITY + +AC_CONFIG_FILES([ +Makefile +include/Makefile +libmpcdec/Makefile +libmpcenc/Makefile +libmpcpsy/Makefile +libwavformat/Makefile +mpc2sv8/Makefile +mpcchap/Makefile +mpccut/Makefile +mpcdec/Makefile +mpcenc/Makefile +mpcgain/Makefile +wavcmp/Makefile +]) + +AC_OUTPUT diff --git a/docs/Doxyfile b/docs/Doxyfile new file mode 100755 index 0000000..893e34c --- /dev/null +++ b/docs/Doxyfile @@ -0,0 +1,1161 @@ +# Doxyfile 1.3.9.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = libmpcdec + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 1.2.2 + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = docs + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of source +# files, where putting all generated files in the same directory would otherwise +# cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, +# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, +# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, +# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, +# Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# This tag can be used to specify the encoding used in the generated output. +# The encoding is not always determined by the language that is chosen, +# but also whether or not the output is meant for Windows or non-Windows users. +# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES +# forces the Windows encoding (this is the default for the Windows binary), +# whereas setting the tag to NO uses a Unix-style encoding (the default for +# all platforms other than Windows). + +USE_WINDOWS_ENCODING = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is used +# as the annotated text. Otherwise, the brief description is used as-is. If left +# blank, the following values are used ("$name" is automatically replaced with the +# name of the entity): "The $name class" "The $name widget" "The $name file" +# "is" "provides" "specifies" "contains" "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited +# members of a class in the documentation of that class as if those members were +# ordinary class members. Constructors, destructors and assignment operators of +# the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources +# only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. + +SHOW_DIRECTORIES = YES + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = include src + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp +# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = include/config.h + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories +# that are symbolic links (a Unix filesystem feature) are excluded from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = docs/custom.css + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse the +# parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. Note that this +# option is superseded by the HAVE_DOT option below. This is only a fallback. It is +# recommended to install and use dot, since it yields more powerful graphs. + +CLASS_DIAGRAMS = YES + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes that +# lay further from the root node will be omitted. Note that setting this option to +# 1 or 2 may greatly reduce the computation time needed for large code bases. Also +# note that a graph may be further truncated if the graph's image dimensions are +# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). +# If 0 is used for the depth value (the default), the graph is not depth-constrained. + +MAX_DOT_GRAPH_DEPTH = 0 + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/docs/custom.css b/docs/custom.css new file mode 100755 index 0000000..5116449 --- /dev/null +++ b/docs/custom.css @@ -0,0 +1,212 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: sans-serif; +} +h1 { + text-align: center; + text-transform: lowercase; + margin: 0.5em 0; +} +h2, h2 a { color: #f90; margin: 1em 0 0.25em 0; } +h3, h3 a { color: #88f; margin: 1em 0 0.25em 0; } + +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #eeeeff; + border: 1px solid #b0b0b0; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + text-align: center; + padding: 0.25em 0; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; + text-transform: lowercase; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; + text-transform: lowercase; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindex, A.qindexHL { padding: 0.1em 0.5em; } +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold; color: #d66; font-style: italic } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +hr { display: none } +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } +TD.md { font-weight: bold; } +TD.mdname1, TD.mdname { color: #088; font-weight: bold; } +TABLE[cellspacing="5"] { margin-left: 2em; } +TABLE[cellspacing="5"] dl em { color: #088; font-weight: bold; } +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 14px } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey, TD.indexvalue { + padding: 0.1em 1em 0.1em 0.1em; +} +TD.indexkey { + font-weight: bold; +} +TD.indexvalue { + font-style: italic; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdTable { +} +.mdRow { +} +.mdescLeft, .mdescRight { + font-style: italic; + font-size: 80%; +} +.mdescRight { +} +.memItemLeft { + font-style: italic; +} +.memItemLeft, .memItemRight { + font-size: 80%; +} +.memItemRight { +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 12px; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 13px; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 12px; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #eeeeff; +} +TD.tiny { font-size: 75%; +} +a { + color: #252E78; +} +a:visited { + color: #3D2185; +} diff --git a/docs/mainpage.txt b/docs/mainpage.txt new file mode 100755 index 0000000..41722e8 --- /dev/null +++ b/docs/mainpage.txt @@ -0,0 +1,38 @@ +/** + \mainpage libmpcdec documentation + + \section whats what is libmpcdec + libmpcdec is a library that decodes musepack compressed audio data. Musepack + is a free, high performance, high quality lossy audio compression codec. For + more information on musepack visit http://www.musepack.net. + + \section using using libmpcdec + + Using libmpcdec is very straightforward. There are typically four things you must + do to use libmpcdec in your application. + + \subsection step1 step 1: implement an mpc_reader to provide raw data to the decoder library + The role of the mpc_reader is to provide raw mpc stream data to the mpc decoding library. + This data can come from a file, a network socket, or any other source you wish. + + See the documentation of + \link mpc_reader_t mpc_reader \endlink + for more information. + + \subsection step2 step2: read the streaminfo properties structure from the stream + This is a simple matter of calling the streaminfo_init() and streaminfo_read() functions, + supplying your mpc_reader as a source of raw data. This reads the stream properties header from the + mpc stream. This information will be used to prime the decoder for decoding in + the next step. + + \subsection step3 step 3: initialize an mpc_decoder with your mpc_reader source + This is just a matter of calling the mpc_decoder_setup() and mpc_decoder_initialize() + functions with your mpc_decoder, mpc_reader data source and streaminfo information. + + \subsection step4 step 4: iteratively read raw sample data from the mpc decoder + Once you've initialized the decoding library you just iteratively call the + mpc_decoder_decode routine until it indicates that the entire stream has been read. + + For a simple example of all of these steps see the sample application distributed with + libmpcdec in src/sample.cpp. +*/ diff --git a/include/CMakeFiles/CMakeDirectoryInformation.cmake b/include/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f5f0d8d --- /dev/null +++ b/include/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/dewdude/musepack/musepack_src_r475") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/dewdude/musepack/musepack_src_r475") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/include/CMakeFiles/progress.marks b/include/CMakeFiles/progress.marks new file mode 100644 index 0000000..573541a --- /dev/null +++ b/include/CMakeFiles/progress.marks @@ -0,0 +1 @@ +0 diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt new file mode 100755 index 0000000..074461d --- /dev/null +++ b/include/CMakeLists.txt @@ -0,0 +1 @@ +INSTALL(DIRECTORY mpc DESTINATION include) diff --git a/include/Makefile b/include/Makefile new file mode 100644 index 0000000..9b7a25e --- /dev/null +++ b/include/Makefile @@ -0,0 +1,189 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# The main all target +all: cmake_check_build_system + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles /home/dewdude/musepack/musepack_src_r475/include//CMakeFiles/progress.marks + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 include/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 include/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 include/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 include/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/include/Makefile.am b/include/Makefile.am new file mode 100755 index 0000000..cf8e97d --- /dev/null +++ b/include/Makefile.am @@ -0,0 +1,12 @@ +## Process this file with automake to produce Makefile.in + +AUTOMAKE_OPTIONS = foreign + +nobase_include_HEADERS = \ + mpc/datatypes.h \ + mpc/minimax.h \ + mpc/mpcmath.h \ + mpc/mpc_types.h \ + mpc/mpcdec.h \ + mpc/reader.h \ + mpc/streaminfo.h diff --git a/include/cmake_install.cmake b/include/cmake_install.cmake new file mode 100644 index 0000000..cc95aa2 --- /dev/null +++ b/include/cmake_install.cmake @@ -0,0 +1,54 @@ +# Install script for directory: /home/dewdude/musepack/musepack_src_r475/include + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/include" TYPE DIRECTORY FILES "/home/dewdude/musepack/musepack_src_r475/include/mpc") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/home/dewdude/musepack/musepack_src_r475/include/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/include/mpc/.svn/all-wcprops b/include/mpc/.svn/all-wcprops new file mode 100755 index 0000000..7a84845 --- /dev/null +++ b/include/mpc/.svn/all-wcprops @@ -0,0 +1,47 @@ +K 25 +svn:wc:ra_dav:version-url +V 38 +/!svn/ver/474/libmpc/trunk/include/mpc +END +mpcmath.h +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/448/libmpc/trunk/include/mpc/mpcmath.h +END +mpcdec.h +K 25 +svn:wc:ra_dav:version-url +V 47 +/!svn/ver/431/libmpc/trunk/include/mpc/mpcdec.h +END +datatypes.h +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/294/libmpc/trunk/include/mpc/datatypes.h +END +minimax.h +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/294/libmpc/trunk/include/mpc/minimax.h +END +reader.h +K 25 +svn:wc:ra_dav:version-url +V 47 +/!svn/ver/431/libmpc/trunk/include/mpc/reader.h +END +mpc_types.h +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/474/libmpc/trunk/include/mpc/mpc_types.h +END +streaminfo.h +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/431/libmpc/trunk/include/mpc/streaminfo.h +END diff --git a/include/mpc/.svn/entries b/include/mpc/.svn/entries new file mode 100755 index 0000000..8a277d0 --- /dev/null +++ b/include/mpc/.svn/entries @@ -0,0 +1,266 @@ +10 + +dir +475 +http://svn.musepack.net/libmpc/trunk/include/mpc +http://svn.musepack.net + + + +2011-07-28T18:52:38.341038Z +474 +r2d + + + + + + + + + + + + + + +c51c8d5e-032a-db11-a0f2-0002b3467eef + +mpcmath.h +file + + + + +2009-07-31T12:37:44.714135Z +5864a365d13acd3dfcad6b415ca47ab7 +2009-07-31T12:37:44.714135Z +448 +r2d + + + + + + + + + + + + + + + + + + + + + +4640 + +mpcdec.h +file + + + + +2009-02-23T18:44:04.679955Z +df197a367c35e2087310a8dd6601da30 +2009-02-23T18:44:04.679955Z +431 +r2d + + + + + + + + + + + + + + + + + + + + + +6019 + +datatypes.h +file + + + + +2006-12-19T19:48:37.131091Z +28eba7b06a1097cced74126de5591864 +2006-12-19T19:48:37.131091Z +166 +zorg + + + + + + + + + + + + + + + + + + + + + +1245 + +minimax.h +file + + + + +2006-11-14T23:14:23.915140Z +e16ea369f1f8f048a68be7a0e541d655 +2006-11-14T23:14:23.915140Z +137 +r2d + + + + + + + + + + + + + + + + + + + + + +1748 + +reader.h +file + + + + +2009-02-23T18:44:04.679955Z +e1dc3d18cb0008dd9452ca5c34e6a03d +2009-02-23T18:44:04.679955Z +431 +r2d + + + + + + + + + + + + + + + + + + + + + +3594 + +mpc_types.h +file + + + + +2011-07-28T18:52:38.341038Z +c60439b860e4554aa3319788ac352c59 +2011-07-28T18:52:38.341038Z +474 +r2d + + + + + + + + + + + + + + + + + + + + + +4317 + +streaminfo.h +file + + + + +2009-02-23T18:44:04.679955Z +b5430525e3cc9a87ade3287cbcad7b7e +2009-02-23T18:44:04.679955Z +431 +r2d + + + + + + + + + + + + + + + + + + + + + +4497 + diff --git a/include/mpc/.svn/text-base/datatypes.h.svn-base b/include/mpc/.svn/text-base/datatypes.h.svn-base new file mode 100755 index 0000000..608ecfa --- /dev/null +++ b/include/mpc/.svn/text-base/datatypes.h.svn-base @@ -0,0 +1,38 @@ +/* + * Musepack audio compression + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#pragma once + +// mpcenc.h +#define CENTER 448 // offset for centering current data in Main-array +#define BLOCK 1152 // blocksize +#define ANABUFFER (BLOCK + CENTER) // size of PCM-data array for analysis + + +typedef struct { + float L [36]; + float R [36]; +} SubbandFloatTyp; + +typedef struct { + float L [ANABUFFER]; + float R [ANABUFFER]; + float M [ANABUFFER]; + float S [ANABUFFER]; +} PCMDataTyp; + diff --git a/include/mpc/.svn/text-base/minimax.h.svn-base b/include/mpc/.svn/text-base/minimax.h.svn-base new file mode 100755 index 0000000..1192626 --- /dev/null +++ b/include/mpc/.svn/text-base/minimax.h.svn-base @@ -0,0 +1,57 @@ +/* + * Musepack audio compression + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#pragma once + +# define clip(x,min,max) ( (x) < (min) ? (min) : (x) > (max) ? (max) : (x) ) + +#ifdef __cplusplus + +# define maxi(A,B) ( (A) >? (B) ) +# define mini(A,B) ( (A) ? (B) ) +# define mind(A,B) ( (A) ? (B) ) +# define minf(A,B) ( (A) (B) ? (A) : (B) ) +# define mini(A,B) ( (A) < (B) ? (A) : (B) ) +# define maxd(A,B) ( (A) > (B) ? (A) : (B) ) +# define mind(A,B) ( (A) < (B) ? (A) : (B) ) +# define maxf(A,B) ( (A) > (B) ? (A) : (B) ) +# define minf(A,B) ( (A) < (B) ? (A) : (B) ) + +#endif + +#ifdef __GNUC__ + +# define absi(A) abs (A) +# define absf(A) fabsf (A) +# define absd(A) fabs (A) + +#else + +# define absi(A) ( (A) >= 0 ? (A) : -(A) ) +# define absf(A) ( (A) >= 0.f ? (A) : -(A) ) +# define absd(A) ( (A) >= 0. ? (A) : -(A) ) + +#endif + diff --git a/include/mpc/.svn/text-base/mpc_types.h.svn-base b/include/mpc/.svn/text-base/mpc_types.h.svn-base new file mode 100755 index 0000000..e750dc3 --- /dev/null +++ b/include/mpc/.svn/text-base/mpc_types.h.svn-base @@ -0,0 +1,146 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +#ifndef _MPC_TYPES_H_ +#define _MPC_TYPES_H_ +#ifdef WIN32 +#pragma once +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef _MSC_VER +typedef __int8 mpc_int8_t; +typedef unsigned __int8 mpc_uint8_t; +typedef __int16 mpc_int16_t; +typedef unsigned __int16 mpc_uint16_t; +typedef __int32 mpc_int32_t; +typedef unsigned __int32 mpc_uint32_t; +typedef __int64 mpc_int64_t; +typedef unsigned __int64 mpc_uint64_t; +#define mpc_inline __inline +#else +#include +typedef int8_t mpc_int8_t; +typedef uint8_t mpc_uint8_t; +typedef int16_t mpc_int16_t; +typedef uint16_t mpc_uint16_t; +typedef int32_t mpc_int32_t; +typedef uint32_t mpc_uint32_t; +typedef int64_t mpc_int64_t; +typedef uint64_t mpc_uint64_t; +#define mpc_inline inline +#endif + +typedef int mpc_int_t; +typedef unsigned int mpc_uint_t; +typedef size_t mpc_size_t; +typedef mpc_uint8_t mpc_bool_t; + +// #define LONG_SEEK_TABLE +#ifdef LONG_SEEK_TABLE // define as needed (mpc_uint32_t supports files up to 512 MB) +typedef mpc_uint64_t mpc_seek_t; +#else +typedef mpc_uint32_t mpc_seek_t; +#endif + +# define mpc_int64_min -9223372036854775808ll +# define mpc_int64_max 9223372036854775807ll + +typedef struct mpc_quantizer { + mpc_int16_t L [36]; + mpc_int16_t R [36]; +} mpc_quantizer; + +/// Libmpcdec error codes +typedef enum mpc_status { + // Success. + MPC_STATUS_OK = 0, + // Generic failure (I/O error or invalid file). + MPC_STATUS_FAIL = -1 +} mpc_status; + + +#define MPC_FIXED_POINT_SHIFT 16 + +#ifdef MPC_FIXED_POINT +# define MPC_FIXED_POINT_FRACTPART 14 +# define MPC_FIXED_POINT_SCALE_SHIFT (MPC_FIXED_POINT_SHIFT + MPC_FIXED_POINT_FRACTPART) +# define MPC_FIXED_POINT_SCALE (1 << (MPC_FIXED_POINT_SCALE_SHIFT - 1)) +typedef mpc_int32_t MPC_SAMPLE_FORMAT; +#else +typedef float MPC_SAMPLE_FORMAT; +#endif + +enum { + MPC_FALSE = 0, + MPC_TRUE = !MPC_FALSE +}; + +//// 'Cdecl' forces the use of standard C/C++ calling convention /////// +#if defined _WIN32 +# define mpc_cdecl __cdecl +#elif defined __ZTC__ +# define mpc_cdecl _cdecl +#elif defined __TURBOC__ +# define mpc_cdecl cdecl +#else +# define mpc_cdecl +#endif + +/* DLL building support on win32 hosts */ +#ifndef MPC_API +# ifdef DLL_EXPORT /* defined by libtool (if required) */ +# define MPC_API __declspec(dllexport) +# endif +# ifdef MPC_DLL_IMPORT /* define if linking with this dll */ +# define MPC_API __declspec(dllimport) +# endif +# ifndef MPC_API /* static linking or !_WIN32 */ +# if defined(__GNUC__) && (__GNUC__ >= 4) +# define MPC_API __attribute__ ((visibility("default"))) +# else +# define MPC_API +# endif +# endif +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/mpc/.svn/text-base/mpcdec.h.svn-base b/include/mpc/.svn/text-base/mpcdec.h.svn-base new file mode 100755 index 0000000..c723595 --- /dev/null +++ b/include/mpc/.svn/text-base/mpcdec.h.svn-base @@ -0,0 +1,148 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file mpcdec.h +/// Top level include file for libmpcdec. +#ifndef _MPCDEC_H_ +#define _MPCDEC_H_ +#ifdef WIN32 +#pragma once +#endif + +#include "reader.h" +#include "streaminfo.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum { + MPC_FRAME_LENGTH = (36 * 32), ///< Samples per mpc frame + MPC_DECODER_BUFFER_LENGTH = (MPC_FRAME_LENGTH * 4), ///< Required buffer size for decoder + MPC_DECODER_SYNTH_DELAY = 481 +}; + +typedef struct mpc_decoder_t mpc_decoder; +typedef struct mpc_demux_t mpc_demux; + +typedef struct mpc_bits_reader_t { + unsigned char * buff; /// pointer on current byte + unsigned int count; /// unread bits in current byte +} mpc_bits_reader; + +typedef struct mpc_frame_info_t { + mpc_uint32_t samples; /// number of samples in the frame (counting once for multiple channels) + mpc_int32_t bits; /// number of bits consumed by this frame (-1) if end of stream + MPC_SAMPLE_FORMAT * buffer; /// frame samples buffer (size = samples * channels * sizeof(MPC_SAMPLE_FORMAT)) + mpc_bool_t is_key_frame; /// 1 if this frame is a key frame (first in block) 0 else. Set by the demuxer. +} mpc_frame_info; + +typedef struct mpc_chap_info_t { + mpc_uint64_t sample; /// sample where the chapter starts + mpc_uint16_t gain; /// replaygain chapter value + mpc_uint16_t peak; /// peak chapter loudness level + mpc_uint_t tag_size; /// size of the tag element (0 if no tag is present for this chapter) + char * tag; /// pointer to an APEv2 tag without the preamble +} mpc_chap_info; + +/// Initializes mpc decoder with the supplied stream info parameters. +/// \param si streaminfo structure indicating format of source stream +/// \return pointer on the initialized decoder structure if successful, 0 if not +MPC_API mpc_decoder * mpc_decoder_init(mpc_streaminfo *si); + +/// Releases input mpc decoder +MPC_API void mpc_decoder_exit(mpc_decoder *p_dec); + +/** + * Sets decoder sample scaling factor. All decoded samples will be multiplied + * by this factor. Useful for applying replay gain. + * @param scale_factor multiplicative scaling factor + */ +MPC_API void mpc_decoder_scale_output(mpc_decoder *p_dec, double scale_factor); + +MPC_API void mpc_decoder_decode_frame(mpc_decoder * d, mpc_bits_reader * r, mpc_frame_info * i); + +// This is the gain reference used in old replaygain +#define MPC_OLD_GAIN_REF 64.82 + +/** + * init demuxer + * @param p_reader initialized mpc_reader pointer + * @return an initialized mpc_demux pointer + */ +MPC_API mpc_demux * mpc_demux_init(mpc_reader * p_reader); +/// free demuxer +MPC_API void mpc_demux_exit(mpc_demux * d); +/** + * Calls mpc_decoder_scale_output to set the scaling factor according to the + * replay gain stream information and the supplied ouput level + * @param d pointer to a musepack demuxer + * @param level the desired ouput level (in db). Must be MPC_OLD_GAIN_REF (64.82 db) if you want to get the old replaygain behavior + * @param use_gain set it to MPC_TRUE if you want to set the scaling factor according to the stream gain + * @param use_title MPC_TRUE : uses the title gain, MPC_FALSE : uses the album gain + * @param clip_prevention MPC_TRUE : uses cliping prevention + */ +MPC_API void mpc_set_replay_level(mpc_demux * d, float level, mpc_bool_t use_gain, + mpc_bool_t use_title, mpc_bool_t clip_prevention); +/// decode frame +MPC_API mpc_status mpc_demux_decode(mpc_demux * d, mpc_frame_info * i); +/// get streaminfo +MPC_API void mpc_demux_get_info(mpc_demux * d, mpc_streaminfo * i); +/// seeks to a given sample +MPC_API mpc_status mpc_demux_seek_sample(mpc_demux * d, mpc_uint64_t destsample); +/// seeks to a given second +MPC_API mpc_status mpc_demux_seek_second(mpc_demux * d, double seconds); + +/// \return the current position in the stream (in bits) from the beginning of the file +MPC_API mpc_seek_t mpc_demux_pos(mpc_demux * d); + +/// chapters : only for sv8 streams +/** + * Gets the number of chapters in the stream + * @param d pointer to a musepack demuxer + * @return the number of chapters found in the stream + */ +MPC_API mpc_int_t mpc_demux_chap_nb(mpc_demux * d); +/** + * Gets datas associated to a given chapter + * The chapter tag is an APEv2 tag without the preamble + * @param d pointer to a musepack demuxer + * @param chap_nb chapter number you want datas (from 0 to mpc_demux_chap_nb(d) - 1) + * @return the chapter information structure + */ +MPC_API mpc_chap_info const * mpc_demux_chap(mpc_demux * d, int chap_nb); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/mpc/.svn/text-base/mpcmath.h.svn-base b/include/mpc/.svn/text-base/mpcmath.h.svn-base new file mode 100755 index 0000000..3b42a45 --- /dev/null +++ b/include/mpc/.svn/text-base/mpcmath.h.svn-base @@ -0,0 +1,155 @@ +/* + * Musepack audio compression + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include + +typedef union mpc_floatint +{ + float f; + mpc_int32_t n; +} mpc_floatint; + +typedef union mpc_doubleint +{ + double d; + mpc_int32_t n[2]; +} mpc_doubleint; + +static mpc_inline mpc_int32_t mpc_lrintf(float fVal) +{ + mpc_floatint tmp; + tmp.f = fVal + 0x00FF8000; + return tmp.n - 0x4B7F8000; +} + +#define mpc_round32 mpc_lrintf +#define mpc_nearbyintf mpc_lrintf + + +#ifndef M_PI +# define M_PI 3.1415926535897932384626433832795029 // 4*atan(1) +# define M_PIl 3.1415926535897932384626433832795029L +# define M_LN2 0.6931471805599453094172321214581766 // ln(2) +# define M_LN2l 0.6931471805599453094172321214581766L +# define M_LN10 2.3025850929940456840179914546843642 // ln 10 */ +# define M_LN10l 2.3025850929940456840179914546843642L +#endif + +// fast but maybe more inaccurate, use if you need speed +#if defined(__GNUC__) && !defined(__APPLE__) +# define SIN(x) sinf ((float)(x)) +# define COS(x) cosf ((float)(x)) +# define ATAN2(x,y) atan2f ((float)(x), (float)(y)) +# define SQRT(x) sqrtf ((float)(x)) +# define LOG(x) logf ((float)(x)) +# define LOG10(x) log10f ((float)(x)) +# define POW(x,y) expf (logf(x) * (y)) +# define POW10(x) expf (M_LN10 * (x)) +# define FLOOR(x) floorf ((float)(x)) +# define IFLOOR(x) (int) floorf ((float)(x)) +# define FABS(x) fabsf ((float)(x)) +#else +# define SIN(x) (float) sin (x) +# define COS(x) (float) cos (x) +# define ATAN2(x,y) (float) atan2 (x, y) +# define SQRT(x) (float) sqrt (x) +# define LOG(x) (float) log (x) +# define LOG10(x) (float) log10 (x) +# define POW(x,y) (float) pow (x,y) +# define POW10(x) (float) pow (10., (x)) +# define FLOOR(x) (float) floor (x) +# define IFLOOR(x) (int) floor (x) +# define FABS(x) (float) fabs (x) +#endif + +#define SQRTF(x) SQRT (x) +#ifdef FAST_MATH +# define TABSTEP 64 +# define COSF(x) my_cos ((float)(x)) +# define ATAN2F(x,y) my_atan2 ((float)(x), (float)(y)) +# define IFLOORF(x) my_ifloor ((float)(x)) + +void Init_FastMath ( void ); +extern const float tabatan2 [] [2]; +extern const float tabcos [] [2]; +extern const float tabsqrt_ex []; +extern const float tabsqrt_m [] [2]; + +static mpc_inline float my_atan2 ( float x, float y ) +{ + float t, ret; int i; mpc_floatint mx, my; + + mx.f = x; + my.f = y; + if ( (mx.n & 0x7FFFFFFF) < (my.n & 0x7FFFFFFF) ) { + i = mpc_round32 (t = TABSTEP * (mx.f / my.f)); + ret = tabatan2 [1*TABSTEP+i][0] + tabatan2 [1*TABSTEP+i][1] * (t-i); + if ( my.n < 0 ) + ret = (float)(ret - M_PI); + } + else if ( mx.n < 0 ) { + i = mpc_round32 (t = TABSTEP * (my.f / mx.f)); + ret = - M_PI/2 - tabatan2 [1*TABSTEP+i][0] + tabatan2 [1*TABSTEP+i][1] * (i-t); + } + else if ( mx.n > 0 ) { + i = mpc_round32 (t = TABSTEP * (my.f / mx.f)); + ret = + M_PI/2 - tabatan2 [1*TABSTEP+i][0] + tabatan2 [1*TABSTEP+i][1] * (i-t); + } + else { + ret = 0.; + } + return ret; +} + + +static mpc_inline float my_cos ( float x ) +{ + float t, ret; int i; + i = mpc_round32 (t = TABSTEP * x); + ret = tabcos [13*TABSTEP+i][0] + tabcos [13*TABSTEP+i][1] * (t-i); + return ret; +} + + +static mpc_inline int my_ifloor ( float x ) +{ + mpc_floatint mx; + mx.f = (float) (x + (0x0C00000L + 0.500000001)); + return mx.n - 1262485505; +} + + +static mpc_inline float my_sqrt ( float x ) +{ + float ret; int i, ex; mpc_floatint mx; + mx.f = x; + ex = mx.n >> 23; // get the exponent + mx.n = (mx.n & 0x7FFFFF) | 0x42800000; // delete the exponent + i = mpc_round32 (mx.f); // Integer-part of the mantissa (round ????????????) + ret = tabsqrt_m [i-TABSTEP][0] + tabsqrt_m [i-TABSTEP][1] * (mx.f-i); // calculate value + ret *= tabsqrt_ex [ex]; + return ret; +} +#else +# define COSF(x) COS (x) +# define ATAN2F(x,y) ATAN2 (x,y) +# define IFLOORF(x) IFLOOR (x) +#endif + diff --git a/include/mpc/.svn/text-base/reader.h.svn-base b/include/mpc/.svn/text-base/reader.h.svn-base new file mode 100755 index 0000000..1a93e06 --- /dev/null +++ b/include/mpc/.svn/text-base/reader.h.svn-base @@ -0,0 +1,98 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file reader.h +#ifndef _MPCDEC_READER_H_ +#define _MPCDEC_READER_H_ +#ifdef WIN32 +#pragma once +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/// \brief Stream reader interface structure. +/// +/// This is the structure you must supply to the musepack decoding library +/// to feed it with raw data. Implement the five member functions to provide +/// a functional reader. +typedef struct mpc_reader_t mpc_reader; +struct mpc_reader_t { + /// Reads size bytes of data into buffer at ptr. + mpc_int32_t (*read)(mpc_reader *p_reader, void *ptr, mpc_int32_t size); + + /// Seeks to byte position offset. + mpc_bool_t (*seek)(mpc_reader *p_reader, mpc_int32_t offset); + + /// Returns the current byte offset in the stream. + mpc_int32_t (*tell)(mpc_reader *p_reader); + + /// Returns the total length of the source stream, in bytes. + mpc_int32_t (*get_size)(mpc_reader *p_reader); + + /// True if the stream is a seekable stream. + mpc_bool_t (*canseek)(mpc_reader *p_reader); + + /// Field that can be used to identify a particular instance of + /// reader or carry along data associated with that reader. + void *data; +}; + +/// Initializes reader with default stdio file reader implementation. Use +/// this if you're just reading from a plain file. +/// +/// \param r p_reader handle to initialize +/// \param filename input filename to attach to the reader +MPC_API mpc_status mpc_reader_init_stdio(mpc_reader *p_reader, const char *filename); + +/// Initializes reader with default stdio file reader implementation. Use +/// this if you prefer to open the file yourself. +/// +/// \param r p_reader handle to initialize +/// \param p_file input file handle (already open) +MPC_API mpc_status mpc_reader_init_stdio_stream(mpc_reader * p_reader, FILE * p_file); + +/// Release reader with default stdio file reader implementation. +/// +/// \param r reader handle to release +MPC_API void mpc_reader_exit_stdio(mpc_reader *p_reader); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/mpc/.svn/text-base/streaminfo.h.svn-base b/include/mpc/.svn/text-base/streaminfo.h.svn-base new file mode 100755 index 0000000..a0a9470 --- /dev/null +++ b/include/mpc/.svn/text-base/streaminfo.h.svn-base @@ -0,0 +1,109 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file streaminfo.h +#ifndef _MPCDEC_STREAMINFO_H_ +#define _MPCDEC_STREAMINFO_H_ +#ifdef WIN32 +#pragma once +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +typedef mpc_int32_t mpc_streaminfo_off_t; + +/// \brief mpc stream properties structure +/// +/// Structure containing all the properties of an mpc stream. Populated +/// by the streaminfo_read function. +typedef struct mpc_streaminfo { + /// @name Core mpc stream properties + //@{ + mpc_uint32_t sample_freq; ///< Sample frequency of stream + mpc_uint32_t channels; ///< Number of channels in stream + mpc_uint32_t stream_version; ///< Streamversion of stream + mpc_uint32_t bitrate; ///< Bitrate of stream file (in bps) + double average_bitrate; ///< Average bitrate of stream (in bits/sec) + mpc_uint32_t max_band; ///< Maximum band-index used in stream (0...31) + mpc_uint32_t ms; ///< Mid/side stereo (0: off, 1: on) + mpc_uint32_t fast_seek; ///< True if stream supports fast-seeking (sv7) + mpc_uint32_t block_pwr; ///< Number of frames in a block = 2^block_pwr (sv8) + //@} + + /// @name Replaygain properties + //@{ + mpc_uint16_t gain_title; ///< Replaygain title value + mpc_uint16_t gain_album; ///< Replaygain album value + mpc_uint16_t peak_album; ///< Peak album loudness level + mpc_uint16_t peak_title; ///< Peak title loudness level + //@} + + /// @name True gapless properties + //@{ + mpc_uint32_t is_true_gapless; ///< True gapless? (0: no, 1: yes) + mpc_uint64_t samples; ///< Number of samples in the stream + mpc_uint64_t beg_silence; ///< Number of samples that must not be played at the beginning of the stream + //@} + + /// @name Encoder informations + //@{ + mpc_uint32_t encoder_version; ///< Version of encoder used + char encoder[256]; ///< Encoder name + mpc_bool_t pns; ///< pns used + float profile; ///< Quality profile of stream + const char* profile_name; ///< Name of profile used by stream + //@} + + + mpc_streaminfo_off_t header_position; ///< Byte offset of position of header in stream + mpc_streaminfo_off_t tag_offset; ///< Offset to file tags + mpc_streaminfo_off_t total_file_length; ///< Total length of underlying file +} mpc_streaminfo; + +/// Gets length of stream si, in seconds. +/// \return length of stream in seconds +MPC_API double mpc_streaminfo_get_length(mpc_streaminfo *si); + +/// Returns length of stream si, in samples. +/// \return length of stream in samples +MPC_API mpc_int64_t mpc_streaminfo_get_length_samples(mpc_streaminfo *si); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/mpc/datatypes.h b/include/mpc/datatypes.h new file mode 100755 index 0000000..608ecfa --- /dev/null +++ b/include/mpc/datatypes.h @@ -0,0 +1,38 @@ +/* + * Musepack audio compression + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#pragma once + +// mpcenc.h +#define CENTER 448 // offset for centering current data in Main-array +#define BLOCK 1152 // blocksize +#define ANABUFFER (BLOCK + CENTER) // size of PCM-data array for analysis + + +typedef struct { + float L [36]; + float R [36]; +} SubbandFloatTyp; + +typedef struct { + float L [ANABUFFER]; + float R [ANABUFFER]; + float M [ANABUFFER]; + float S [ANABUFFER]; +} PCMDataTyp; + diff --git a/include/mpc/minimax.h b/include/mpc/minimax.h new file mode 100755 index 0000000..1192626 --- /dev/null +++ b/include/mpc/minimax.h @@ -0,0 +1,57 @@ +/* + * Musepack audio compression + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#pragma once + +# define clip(x,min,max) ( (x) < (min) ? (min) : (x) > (max) ? (max) : (x) ) + +#ifdef __cplusplus + +# define maxi(A,B) ( (A) >? (B) ) +# define mini(A,B) ( (A) ? (B) ) +# define mind(A,B) ( (A) ? (B) ) +# define minf(A,B) ( (A) (B) ? (A) : (B) ) +# define mini(A,B) ( (A) < (B) ? (A) : (B) ) +# define maxd(A,B) ( (A) > (B) ? (A) : (B) ) +# define mind(A,B) ( (A) < (B) ? (A) : (B) ) +# define maxf(A,B) ( (A) > (B) ? (A) : (B) ) +# define minf(A,B) ( (A) < (B) ? (A) : (B) ) + +#endif + +#ifdef __GNUC__ + +# define absi(A) abs (A) +# define absf(A) fabsf (A) +# define absd(A) fabs (A) + +#else + +# define absi(A) ( (A) >= 0 ? (A) : -(A) ) +# define absf(A) ( (A) >= 0.f ? (A) : -(A) ) +# define absd(A) ( (A) >= 0. ? (A) : -(A) ) + +#endif + diff --git a/include/mpc/mpc_types.h b/include/mpc/mpc_types.h new file mode 100755 index 0000000..e750dc3 --- /dev/null +++ b/include/mpc/mpc_types.h @@ -0,0 +1,146 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +#ifndef _MPC_TYPES_H_ +#define _MPC_TYPES_H_ +#ifdef WIN32 +#pragma once +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef _MSC_VER +typedef __int8 mpc_int8_t; +typedef unsigned __int8 mpc_uint8_t; +typedef __int16 mpc_int16_t; +typedef unsigned __int16 mpc_uint16_t; +typedef __int32 mpc_int32_t; +typedef unsigned __int32 mpc_uint32_t; +typedef __int64 mpc_int64_t; +typedef unsigned __int64 mpc_uint64_t; +#define mpc_inline __inline +#else +#include +typedef int8_t mpc_int8_t; +typedef uint8_t mpc_uint8_t; +typedef int16_t mpc_int16_t; +typedef uint16_t mpc_uint16_t; +typedef int32_t mpc_int32_t; +typedef uint32_t mpc_uint32_t; +typedef int64_t mpc_int64_t; +typedef uint64_t mpc_uint64_t; +#define mpc_inline inline +#endif + +typedef int mpc_int_t; +typedef unsigned int mpc_uint_t; +typedef size_t mpc_size_t; +typedef mpc_uint8_t mpc_bool_t; + +// #define LONG_SEEK_TABLE +#ifdef LONG_SEEK_TABLE // define as needed (mpc_uint32_t supports files up to 512 MB) +typedef mpc_uint64_t mpc_seek_t; +#else +typedef mpc_uint32_t mpc_seek_t; +#endif + +# define mpc_int64_min -9223372036854775808ll +# define mpc_int64_max 9223372036854775807ll + +typedef struct mpc_quantizer { + mpc_int16_t L [36]; + mpc_int16_t R [36]; +} mpc_quantizer; + +/// Libmpcdec error codes +typedef enum mpc_status { + // Success. + MPC_STATUS_OK = 0, + // Generic failure (I/O error or invalid file). + MPC_STATUS_FAIL = -1 +} mpc_status; + + +#define MPC_FIXED_POINT_SHIFT 16 + +#ifdef MPC_FIXED_POINT +# define MPC_FIXED_POINT_FRACTPART 14 +# define MPC_FIXED_POINT_SCALE_SHIFT (MPC_FIXED_POINT_SHIFT + MPC_FIXED_POINT_FRACTPART) +# define MPC_FIXED_POINT_SCALE (1 << (MPC_FIXED_POINT_SCALE_SHIFT - 1)) +typedef mpc_int32_t MPC_SAMPLE_FORMAT; +#else +typedef float MPC_SAMPLE_FORMAT; +#endif + +enum { + MPC_FALSE = 0, + MPC_TRUE = !MPC_FALSE +}; + +//// 'Cdecl' forces the use of standard C/C++ calling convention /////// +#if defined _WIN32 +# define mpc_cdecl __cdecl +#elif defined __ZTC__ +# define mpc_cdecl _cdecl +#elif defined __TURBOC__ +# define mpc_cdecl cdecl +#else +# define mpc_cdecl +#endif + +/* DLL building support on win32 hosts */ +#ifndef MPC_API +# ifdef DLL_EXPORT /* defined by libtool (if required) */ +# define MPC_API __declspec(dllexport) +# endif +# ifdef MPC_DLL_IMPORT /* define if linking with this dll */ +# define MPC_API __declspec(dllimport) +# endif +# ifndef MPC_API /* static linking or !_WIN32 */ +# if defined(__GNUC__) && (__GNUC__ >= 4) +# define MPC_API __attribute__ ((visibility("default"))) +# else +# define MPC_API +# endif +# endif +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/mpc/mpcdec.h b/include/mpc/mpcdec.h new file mode 100755 index 0000000..c723595 --- /dev/null +++ b/include/mpc/mpcdec.h @@ -0,0 +1,148 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file mpcdec.h +/// Top level include file for libmpcdec. +#ifndef _MPCDEC_H_ +#define _MPCDEC_H_ +#ifdef WIN32 +#pragma once +#endif + +#include "reader.h" +#include "streaminfo.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum { + MPC_FRAME_LENGTH = (36 * 32), ///< Samples per mpc frame + MPC_DECODER_BUFFER_LENGTH = (MPC_FRAME_LENGTH * 4), ///< Required buffer size for decoder + MPC_DECODER_SYNTH_DELAY = 481 +}; + +typedef struct mpc_decoder_t mpc_decoder; +typedef struct mpc_demux_t mpc_demux; + +typedef struct mpc_bits_reader_t { + unsigned char * buff; /// pointer on current byte + unsigned int count; /// unread bits in current byte +} mpc_bits_reader; + +typedef struct mpc_frame_info_t { + mpc_uint32_t samples; /// number of samples in the frame (counting once for multiple channels) + mpc_int32_t bits; /// number of bits consumed by this frame (-1) if end of stream + MPC_SAMPLE_FORMAT * buffer; /// frame samples buffer (size = samples * channels * sizeof(MPC_SAMPLE_FORMAT)) + mpc_bool_t is_key_frame; /// 1 if this frame is a key frame (first in block) 0 else. Set by the demuxer. +} mpc_frame_info; + +typedef struct mpc_chap_info_t { + mpc_uint64_t sample; /// sample where the chapter starts + mpc_uint16_t gain; /// replaygain chapter value + mpc_uint16_t peak; /// peak chapter loudness level + mpc_uint_t tag_size; /// size of the tag element (0 if no tag is present for this chapter) + char * tag; /// pointer to an APEv2 tag without the preamble +} mpc_chap_info; + +/// Initializes mpc decoder with the supplied stream info parameters. +/// \param si streaminfo structure indicating format of source stream +/// \return pointer on the initialized decoder structure if successful, 0 if not +MPC_API mpc_decoder * mpc_decoder_init(mpc_streaminfo *si); + +/// Releases input mpc decoder +MPC_API void mpc_decoder_exit(mpc_decoder *p_dec); + +/** + * Sets decoder sample scaling factor. All decoded samples will be multiplied + * by this factor. Useful for applying replay gain. + * @param scale_factor multiplicative scaling factor + */ +MPC_API void mpc_decoder_scale_output(mpc_decoder *p_dec, double scale_factor); + +MPC_API void mpc_decoder_decode_frame(mpc_decoder * d, mpc_bits_reader * r, mpc_frame_info * i); + +// This is the gain reference used in old replaygain +#define MPC_OLD_GAIN_REF 64.82 + +/** + * init demuxer + * @param p_reader initialized mpc_reader pointer + * @return an initialized mpc_demux pointer + */ +MPC_API mpc_demux * mpc_demux_init(mpc_reader * p_reader); +/// free demuxer +MPC_API void mpc_demux_exit(mpc_demux * d); +/** + * Calls mpc_decoder_scale_output to set the scaling factor according to the + * replay gain stream information and the supplied ouput level + * @param d pointer to a musepack demuxer + * @param level the desired ouput level (in db). Must be MPC_OLD_GAIN_REF (64.82 db) if you want to get the old replaygain behavior + * @param use_gain set it to MPC_TRUE if you want to set the scaling factor according to the stream gain + * @param use_title MPC_TRUE : uses the title gain, MPC_FALSE : uses the album gain + * @param clip_prevention MPC_TRUE : uses cliping prevention + */ +MPC_API void mpc_set_replay_level(mpc_demux * d, float level, mpc_bool_t use_gain, + mpc_bool_t use_title, mpc_bool_t clip_prevention); +/// decode frame +MPC_API mpc_status mpc_demux_decode(mpc_demux * d, mpc_frame_info * i); +/// get streaminfo +MPC_API void mpc_demux_get_info(mpc_demux * d, mpc_streaminfo * i); +/// seeks to a given sample +MPC_API mpc_status mpc_demux_seek_sample(mpc_demux * d, mpc_uint64_t destsample); +/// seeks to a given second +MPC_API mpc_status mpc_demux_seek_second(mpc_demux * d, double seconds); + +/// \return the current position in the stream (in bits) from the beginning of the file +MPC_API mpc_seek_t mpc_demux_pos(mpc_demux * d); + +/// chapters : only for sv8 streams +/** + * Gets the number of chapters in the stream + * @param d pointer to a musepack demuxer + * @return the number of chapters found in the stream + */ +MPC_API mpc_int_t mpc_demux_chap_nb(mpc_demux * d); +/** + * Gets datas associated to a given chapter + * The chapter tag is an APEv2 tag without the preamble + * @param d pointer to a musepack demuxer + * @param chap_nb chapter number you want datas (from 0 to mpc_demux_chap_nb(d) - 1) + * @return the chapter information structure + */ +MPC_API mpc_chap_info const * mpc_demux_chap(mpc_demux * d, int chap_nb); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/mpc/mpcmath.h b/include/mpc/mpcmath.h new file mode 100755 index 0000000..3b42a45 --- /dev/null +++ b/include/mpc/mpcmath.h @@ -0,0 +1,155 @@ +/* + * Musepack audio compression + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include + +typedef union mpc_floatint +{ + float f; + mpc_int32_t n; +} mpc_floatint; + +typedef union mpc_doubleint +{ + double d; + mpc_int32_t n[2]; +} mpc_doubleint; + +static mpc_inline mpc_int32_t mpc_lrintf(float fVal) +{ + mpc_floatint tmp; + tmp.f = fVal + 0x00FF8000; + return tmp.n - 0x4B7F8000; +} + +#define mpc_round32 mpc_lrintf +#define mpc_nearbyintf mpc_lrintf + + +#ifndef M_PI +# define M_PI 3.1415926535897932384626433832795029 // 4*atan(1) +# define M_PIl 3.1415926535897932384626433832795029L +# define M_LN2 0.6931471805599453094172321214581766 // ln(2) +# define M_LN2l 0.6931471805599453094172321214581766L +# define M_LN10 2.3025850929940456840179914546843642 // ln 10 */ +# define M_LN10l 2.3025850929940456840179914546843642L +#endif + +// fast but maybe more inaccurate, use if you need speed +#if defined(__GNUC__) && !defined(__APPLE__) +# define SIN(x) sinf ((float)(x)) +# define COS(x) cosf ((float)(x)) +# define ATAN2(x,y) atan2f ((float)(x), (float)(y)) +# define SQRT(x) sqrtf ((float)(x)) +# define LOG(x) logf ((float)(x)) +# define LOG10(x) log10f ((float)(x)) +# define POW(x,y) expf (logf(x) * (y)) +# define POW10(x) expf (M_LN10 * (x)) +# define FLOOR(x) floorf ((float)(x)) +# define IFLOOR(x) (int) floorf ((float)(x)) +# define FABS(x) fabsf ((float)(x)) +#else +# define SIN(x) (float) sin (x) +# define COS(x) (float) cos (x) +# define ATAN2(x,y) (float) atan2 (x, y) +# define SQRT(x) (float) sqrt (x) +# define LOG(x) (float) log (x) +# define LOG10(x) (float) log10 (x) +# define POW(x,y) (float) pow (x,y) +# define POW10(x) (float) pow (10., (x)) +# define FLOOR(x) (float) floor (x) +# define IFLOOR(x) (int) floor (x) +# define FABS(x) (float) fabs (x) +#endif + +#define SQRTF(x) SQRT (x) +#ifdef FAST_MATH +# define TABSTEP 64 +# define COSF(x) my_cos ((float)(x)) +# define ATAN2F(x,y) my_atan2 ((float)(x), (float)(y)) +# define IFLOORF(x) my_ifloor ((float)(x)) + +void Init_FastMath ( void ); +extern const float tabatan2 [] [2]; +extern const float tabcos [] [2]; +extern const float tabsqrt_ex []; +extern const float tabsqrt_m [] [2]; + +static mpc_inline float my_atan2 ( float x, float y ) +{ + float t, ret; int i; mpc_floatint mx, my; + + mx.f = x; + my.f = y; + if ( (mx.n & 0x7FFFFFFF) < (my.n & 0x7FFFFFFF) ) { + i = mpc_round32 (t = TABSTEP * (mx.f / my.f)); + ret = tabatan2 [1*TABSTEP+i][0] + tabatan2 [1*TABSTEP+i][1] * (t-i); + if ( my.n < 0 ) + ret = (float)(ret - M_PI); + } + else if ( mx.n < 0 ) { + i = mpc_round32 (t = TABSTEP * (my.f / mx.f)); + ret = - M_PI/2 - tabatan2 [1*TABSTEP+i][0] + tabatan2 [1*TABSTEP+i][1] * (i-t); + } + else if ( mx.n > 0 ) { + i = mpc_round32 (t = TABSTEP * (my.f / mx.f)); + ret = + M_PI/2 - tabatan2 [1*TABSTEP+i][0] + tabatan2 [1*TABSTEP+i][1] * (i-t); + } + else { + ret = 0.; + } + return ret; +} + + +static mpc_inline float my_cos ( float x ) +{ + float t, ret; int i; + i = mpc_round32 (t = TABSTEP * x); + ret = tabcos [13*TABSTEP+i][0] + tabcos [13*TABSTEP+i][1] * (t-i); + return ret; +} + + +static mpc_inline int my_ifloor ( float x ) +{ + mpc_floatint mx; + mx.f = (float) (x + (0x0C00000L + 0.500000001)); + return mx.n - 1262485505; +} + + +static mpc_inline float my_sqrt ( float x ) +{ + float ret; int i, ex; mpc_floatint mx; + mx.f = x; + ex = mx.n >> 23; // get the exponent + mx.n = (mx.n & 0x7FFFFF) | 0x42800000; // delete the exponent + i = mpc_round32 (mx.f); // Integer-part of the mantissa (round ????????????) + ret = tabsqrt_m [i-TABSTEP][0] + tabsqrt_m [i-TABSTEP][1] * (mx.f-i); // calculate value + ret *= tabsqrt_ex [ex]; + return ret; +} +#else +# define COSF(x) COS (x) +# define ATAN2F(x,y) ATAN2 (x,y) +# define IFLOORF(x) IFLOOR (x) +#endif + diff --git a/include/mpc/reader.h b/include/mpc/reader.h new file mode 100755 index 0000000..1a93e06 --- /dev/null +++ b/include/mpc/reader.h @@ -0,0 +1,98 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file reader.h +#ifndef _MPCDEC_READER_H_ +#define _MPCDEC_READER_H_ +#ifdef WIN32 +#pragma once +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/// \brief Stream reader interface structure. +/// +/// This is the structure you must supply to the musepack decoding library +/// to feed it with raw data. Implement the five member functions to provide +/// a functional reader. +typedef struct mpc_reader_t mpc_reader; +struct mpc_reader_t { + /// Reads size bytes of data into buffer at ptr. + mpc_int32_t (*read)(mpc_reader *p_reader, void *ptr, mpc_int32_t size); + + /// Seeks to byte position offset. + mpc_bool_t (*seek)(mpc_reader *p_reader, mpc_int32_t offset); + + /// Returns the current byte offset in the stream. + mpc_int32_t (*tell)(mpc_reader *p_reader); + + /// Returns the total length of the source stream, in bytes. + mpc_int32_t (*get_size)(mpc_reader *p_reader); + + /// True if the stream is a seekable stream. + mpc_bool_t (*canseek)(mpc_reader *p_reader); + + /// Field that can be used to identify a particular instance of + /// reader or carry along data associated with that reader. + void *data; +}; + +/// Initializes reader with default stdio file reader implementation. Use +/// this if you're just reading from a plain file. +/// +/// \param r p_reader handle to initialize +/// \param filename input filename to attach to the reader +MPC_API mpc_status mpc_reader_init_stdio(mpc_reader *p_reader, const char *filename); + +/// Initializes reader with default stdio file reader implementation. Use +/// this if you prefer to open the file yourself. +/// +/// \param r p_reader handle to initialize +/// \param p_file input file handle (already open) +MPC_API mpc_status mpc_reader_init_stdio_stream(mpc_reader * p_reader, FILE * p_file); + +/// Release reader with default stdio file reader implementation. +/// +/// \param r reader handle to release +MPC_API void mpc_reader_exit_stdio(mpc_reader *p_reader); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/mpc/streaminfo.h b/include/mpc/streaminfo.h new file mode 100755 index 0000000..a0a9470 --- /dev/null +++ b/include/mpc/streaminfo.h @@ -0,0 +1,109 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file streaminfo.h +#ifndef _MPCDEC_STREAMINFO_H_ +#define _MPCDEC_STREAMINFO_H_ +#ifdef WIN32 +#pragma once +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +typedef mpc_int32_t mpc_streaminfo_off_t; + +/// \brief mpc stream properties structure +/// +/// Structure containing all the properties of an mpc stream. Populated +/// by the streaminfo_read function. +typedef struct mpc_streaminfo { + /// @name Core mpc stream properties + //@{ + mpc_uint32_t sample_freq; ///< Sample frequency of stream + mpc_uint32_t channels; ///< Number of channels in stream + mpc_uint32_t stream_version; ///< Streamversion of stream + mpc_uint32_t bitrate; ///< Bitrate of stream file (in bps) + double average_bitrate; ///< Average bitrate of stream (in bits/sec) + mpc_uint32_t max_band; ///< Maximum band-index used in stream (0...31) + mpc_uint32_t ms; ///< Mid/side stereo (0: off, 1: on) + mpc_uint32_t fast_seek; ///< True if stream supports fast-seeking (sv7) + mpc_uint32_t block_pwr; ///< Number of frames in a block = 2^block_pwr (sv8) + //@} + + /// @name Replaygain properties + //@{ + mpc_uint16_t gain_title; ///< Replaygain title value + mpc_uint16_t gain_album; ///< Replaygain album value + mpc_uint16_t peak_album; ///< Peak album loudness level + mpc_uint16_t peak_title; ///< Peak title loudness level + //@} + + /// @name True gapless properties + //@{ + mpc_uint32_t is_true_gapless; ///< True gapless? (0: no, 1: yes) + mpc_uint64_t samples; ///< Number of samples in the stream + mpc_uint64_t beg_silence; ///< Number of samples that must not be played at the beginning of the stream + //@} + + /// @name Encoder informations + //@{ + mpc_uint32_t encoder_version; ///< Version of encoder used + char encoder[256]; ///< Encoder name + mpc_bool_t pns; ///< pns used + float profile; ///< Quality profile of stream + const char* profile_name; ///< Name of profile used by stream + //@} + + + mpc_streaminfo_off_t header_position; ///< Byte offset of position of header in stream + mpc_streaminfo_off_t tag_offset; ///< Offset to file tags + mpc_streaminfo_off_t total_file_length; ///< Total length of underlying file +} mpc_streaminfo; + +/// Gets length of stream si, in seconds. +/// \return length of stream in seconds +MPC_API double mpc_streaminfo_get_length(mpc_streaminfo *si); + +/// Returns length of stream si, in samples. +/// \return length of stream in samples +MPC_API mpc_int64_t mpc_streaminfo_get_length_samples(mpc_streaminfo *si); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libmpc.kdevelop b/libmpc.kdevelop new file mode 100755 index 0000000..9b935d9 --- /dev/null +++ b/libmpc.kdevelop @@ -0,0 +1,265 @@ + + + + Nicolas Botti + + 0.1 + KDevAutoProject + C + + C + Code + + + . + false + + libmpc + + + + + mpcchap/mpcchap + optimized + + + + true + executable + + + + + ~/test1.mpc ~/test1-conv.mpc + + + + / + + true + + + + /home/nico/test.mpc /home/nico/chaps.ini + + + /home/nico/src/musepack/libmpc/optimized/./mpcchap + /home/nico/src/musepack/libmpc/optimized/./mpcchap + + + + + optimized + kdevgccoptions + kdevgppoptions + kdevg77options + -O3 -fomit-frame-pointer -pipe -Wall -m3dnow -msse -ffast-math + + + + -I/home/nico/src/musepack/libreplaygain/include + -L/home/nico/src/musepack/libreplaygain/src + + + + + + + + --enable-debug=full + debug + kdevgccoptions + kdevgppoptions + kdevg77options + -O0 -Wall -g3 + + + -I/home/nico/src/musepack/libreplaygain/include + -L/home/nico/src/musepack/libreplaygain/src + + + + + + + + + + + + + true + 1 + false + + 0 + + + + + ada + ada_bugs_gcc + bash + bash_bugs + clanlib + w3c-dom-level2-html + fortran_bugs_gcc + gnome1 + gnustep + gtk + gtk_bugs + haskell + haskell_bugs_ghc + java_bugs_gcc + java_bugs_sun + kde2book + libstdc++ + opengl + pascal_bugs_fp + php + php_bugs + perl + perl_bugs + python + python_bugs + qt-kdev3 + ruby + ruby_bugs + sdl + stl + w3c-svg + sw + w3c-uaag10 + wxwidgets_bugs + + + Guide to the Qt Translation Tools + Qt Assistant Manual + Qt Designer Manual + Qt Reference Documentation + qmake User Guide + + + KDE Libraries (Doxygen) + + + + + + + + + + + + + false + false + + + *.o,*.lo,CVS + false + + + + + Doxygen Documentation Collection + mpcenc.tag + + + + + mpcenc + mpcenc + Mpcenc + MPCENC + Nicolas Botti + + + GPL + COPYING + -I/usr/include + -lm + 0.1 + 2006 + /home/nico/src/musepack/svn/mpcenc-zorg/mpcenc + + + + + true + true + true + false + true + true + true + 250 + 400 + 250 + false + 0 + true + true + false + std=_GLIBCXX_STD;__gnu_cxx=std + true + false + false + false + false + true + true + false + .; + + + + set + m_,_ + theValue + true + true + + + false + 3 + 3 + + EmbeddedKDevDesigner + + + + + + false + true + Vertical + + + + + .h + .cpp + + + + + "/home/nico/test.wav" "/home/nico/test2.wav" + + libtool + + + + true + false + false + false + + + false + true + 10 + + + diff --git a/libmpcdec/AUTHORS b/libmpcdec/AUTHORS new file mode 100755 index 0000000..1bcac63 --- /dev/null +++ b/libmpcdec/AUTHORS @@ -0,0 +1,10 @@ +libmpcdec is the result of the work of many people: + +* Andree Buschmann and Frank Klemm + Original implementation and core development. + +* Peter Pawlowski and Benoit Amiaux + Portability and further optimizations. + +* Miles Egan + Port to pure C, documentation, and api refinements. diff --git a/libmpcdec/CMakeFiles/CMakeDirectoryInformation.cmake b/libmpcdec/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f5f0d8d --- /dev/null +++ b/libmpcdec/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/dewdude/musepack/musepack_src_r475") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/dewdude/musepack/musepack_src_r475") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/DependInfo.cmake b/libmpcdec/CMakeFiles/mpcdec.dir/DependInfo.cmake new file mode 100644 index 0000000..fa4da27 --- /dev/null +++ b/libmpcdec/CMakeFiles/mpcdec.dir/DependInfo.cmake @@ -0,0 +1,32 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/dewdude/musepack/musepack_src_r475/common/crc32.c" "libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o" "gcc" "libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcdec/huffman.c" "libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o" "gcc" "libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_bits_reader.c" "libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o" "gcc" "libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_decoder.c" "libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o" "gcc" "libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_demux.c" "libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o" "gcc" "libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_reader.c" "libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o" "gcc" "libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcdec/requant.c" "libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o" "gcc" "libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcdec/streaminfo.c" "libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o" "gcc" "libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcdec/synth_filter.c" "libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o" "gcc" "libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o.d" + "" "libmpcdec/libmpcdec.so" "gcc" "libmpcdec/CMakeFiles/mpcdec.dir/link.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o b/libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o new file mode 100644 index 0000000000000000000000000000000000000000..c4bfd4e056abe94c2b62d8d3fe125305eec63747 GIT binary patch literal 1768 zcmb_c&ubG=5T4gm8?`0=0)-0hrJ`UT-IRj%AStzWBSlc~C^6k`4A?Ybvw_xwQqq7$ zg#H=*3rg`6+d~gtnx1;>&0IWqX+*?0vzcj=#~uV7c=_IZ@0*!7Za?0GqMXeJb3hUGgeQeSfNYq?|@G-8!6F zJ+i9X-_mxSsMcY+(HtRS&aRUP6{!19B2GhvBg#4J{SBwOqny>B)N!KrwB2s+h3(J- z)Q;cIIPUQ_l5K9vQNOXThuB?COMi*2Yfg1f**nhXW<0TV;EZF|`>o2?Php_FziZcb z=^cCqLKrdv2Ea>@i88o(0@RpEUDh8g$ z8IP8Otoxe%S4$OL@{1+U4^}{j8N7TZ=VuEZ-{9ZC!f=}PStCt~{gd}+-(nOP#tqFh zB?M!gALS+c=Mkw6j~T8rPxB_e>u)4H@raBtlfH`@%4x>uS!hW?&SfzQ*tj9-m=KH- zFY}gTsV_K*2eKCp;aU_Kp?!?p0Ir^I2>tgQZ{Evj2j)4a8NdCP@h>nwYJL_!sLYAx zN42HC@KnaEjTAJw{w6tS7jV%xX2#S1gE>2-V1tvI{c~E9gmwvkqvG!|xyU*JGyV^x C5a+P~ literal 0 HcmV?d00001 diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o.d b/libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o.d new file mode 100644 index 0000000..14d8d94 --- /dev/null +++ b/libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o.d @@ -0,0 +1,3 @@ +libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o: \ + /home/dewdude/musepack/musepack_src_r475/common/crc32.c \ + /usr/include/stdc-predef.h diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/build.make b/libmpcdec/CMakeFiles/mpcdec.dir/build.make new file mode 100644 index 0000000..d86a671 --- /dev/null +++ b/libmpcdec/CMakeFiles/mpcdec.dir/build.make @@ -0,0 +1,242 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +# Include any dependencies generated for this target. +include libmpcdec/CMakeFiles/mpcdec.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.make + +# Include the progress variables for this target. +include libmpcdec/CMakeFiles/mpcdec.dir/progress.make + +# Include the compile flags for this target's objects. +include libmpcdec/CMakeFiles/mpcdec.dir/flags.make + +libmpcdec/CMakeFiles/mpcdec.dir/codegen: +.PHONY : libmpcdec/CMakeFiles/mpcdec.dir/codegen + +libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o: libmpcdec/CMakeFiles/mpcdec.dir/flags.make +libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o: libmpcdec/huffman.c +libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o: libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o -MF CMakeFiles/mpcdec.dir/huffman.c.o.d -o CMakeFiles/mpcdec.dir/huffman.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcdec/huffman.c + +libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcdec.dir/huffman.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcdec/huffman.c > CMakeFiles/mpcdec.dir/huffman.c.i + +libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcdec.dir/huffman.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcdec/huffman.c -o CMakeFiles/mpcdec.dir/huffman.c.s + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o: libmpcdec/CMakeFiles/mpcdec.dir/flags.make +libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o: libmpcdec/mpc_decoder.c +libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o: libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o -MF CMakeFiles/mpcdec.dir/mpc_decoder.c.o.d -o CMakeFiles/mpcdec.dir/mpc_decoder.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_decoder.c + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcdec.dir/mpc_decoder.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_decoder.c > CMakeFiles/mpcdec.dir/mpc_decoder.c.i + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcdec.dir/mpc_decoder.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_decoder.c -o CMakeFiles/mpcdec.dir/mpc_decoder.c.s + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o: libmpcdec/CMakeFiles/mpcdec.dir/flags.make +libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o: libmpcdec/mpc_reader.c +libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o: libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o -MF CMakeFiles/mpcdec.dir/mpc_reader.c.o.d -o CMakeFiles/mpcdec.dir/mpc_reader.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_reader.c + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcdec.dir/mpc_reader.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_reader.c > CMakeFiles/mpcdec.dir/mpc_reader.c.i + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcdec.dir/mpc_reader.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_reader.c -o CMakeFiles/mpcdec.dir/mpc_reader.c.s + +libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o: libmpcdec/CMakeFiles/mpcdec.dir/flags.make +libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o: libmpcdec/streaminfo.c +libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o: libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building C object libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o -MF CMakeFiles/mpcdec.dir/streaminfo.c.o.d -o CMakeFiles/mpcdec.dir/streaminfo.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcdec/streaminfo.c + +libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcdec.dir/streaminfo.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcdec/streaminfo.c > CMakeFiles/mpcdec.dir/streaminfo.c.i + +libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcdec.dir/streaminfo.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcdec/streaminfo.c -o CMakeFiles/mpcdec.dir/streaminfo.c.s + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o: libmpcdec/CMakeFiles/mpcdec.dir/flags.make +libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o: libmpcdec/mpc_bits_reader.c +libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o: libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building C object libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o -MF CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o.d -o CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_bits_reader.c + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcdec.dir/mpc_bits_reader.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_bits_reader.c > CMakeFiles/mpcdec.dir/mpc_bits_reader.c.i + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcdec.dir/mpc_bits_reader.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_bits_reader.c -o CMakeFiles/mpcdec.dir/mpc_bits_reader.c.s + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o: libmpcdec/CMakeFiles/mpcdec.dir/flags.make +libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o: libmpcdec/mpc_demux.c +libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o: libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building C object libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o -MF CMakeFiles/mpcdec.dir/mpc_demux.c.o.d -o CMakeFiles/mpcdec.dir/mpc_demux.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_demux.c + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcdec.dir/mpc_demux.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_demux.c > CMakeFiles/mpcdec.dir/mpc_demux.c.i + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcdec.dir/mpc_demux.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_demux.c -o CMakeFiles/mpcdec.dir/mpc_demux.c.s + +libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o: libmpcdec/CMakeFiles/mpcdec.dir/flags.make +libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o: libmpcdec/requant.c +libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o: libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building C object libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o -MF CMakeFiles/mpcdec.dir/requant.c.o.d -o CMakeFiles/mpcdec.dir/requant.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcdec/requant.c + +libmpcdec/CMakeFiles/mpcdec.dir/requant.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcdec.dir/requant.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcdec/requant.c > CMakeFiles/mpcdec.dir/requant.c.i + +libmpcdec/CMakeFiles/mpcdec.dir/requant.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcdec.dir/requant.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcdec/requant.c -o CMakeFiles/mpcdec.dir/requant.c.s + +libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o: libmpcdec/CMakeFiles/mpcdec.dir/flags.make +libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o: libmpcdec/synth_filter.c +libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o: libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building C object libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o -MF CMakeFiles/mpcdec.dir/synth_filter.c.o.d -o CMakeFiles/mpcdec.dir/synth_filter.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcdec/synth_filter.c + +libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcdec.dir/synth_filter.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcdec/synth_filter.c > CMakeFiles/mpcdec.dir/synth_filter.c.i + +libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcdec.dir/synth_filter.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcdec/synth_filter.c -o CMakeFiles/mpcdec.dir/synth_filter.c.s + +libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o: libmpcdec/CMakeFiles/mpcdec.dir/flags.make +libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o: common/crc32.c +libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o: libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Building C object libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o -MF CMakeFiles/mpcdec.dir/__/common/crc32.c.o.d -o CMakeFiles/mpcdec.dir/__/common/crc32.c.o -c /home/dewdude/musepack/musepack_src_r475/common/crc32.c + +libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcdec.dir/__/common/crc32.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/common/crc32.c > CMakeFiles/mpcdec.dir/__/common/crc32.c.i + +libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcdec.dir/__/common/crc32.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/common/crc32.c -o CMakeFiles/mpcdec.dir/__/common/crc32.c.s + +# Object files for target mpcdec +mpcdec_OBJECTS = \ +"CMakeFiles/mpcdec.dir/huffman.c.o" \ +"CMakeFiles/mpcdec.dir/mpc_decoder.c.o" \ +"CMakeFiles/mpcdec.dir/mpc_reader.c.o" \ +"CMakeFiles/mpcdec.dir/streaminfo.c.o" \ +"CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o" \ +"CMakeFiles/mpcdec.dir/mpc_demux.c.o" \ +"CMakeFiles/mpcdec.dir/requant.c.o" \ +"CMakeFiles/mpcdec.dir/synth_filter.c.o" \ +"CMakeFiles/mpcdec.dir/__/common/crc32.c.o" + +# External object files for target mpcdec +mpcdec_EXTERNAL_OBJECTS = + +libmpcdec/libmpcdec.so: libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o +libmpcdec/libmpcdec.so: libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o +libmpcdec/libmpcdec.so: libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o +libmpcdec/libmpcdec.so: libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o +libmpcdec/libmpcdec.so: libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o +libmpcdec/libmpcdec.so: libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o +libmpcdec/libmpcdec.so: libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o +libmpcdec/libmpcdec.so: libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o +libmpcdec/libmpcdec.so: libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o +libmpcdec/libmpcdec.so: libmpcdec/CMakeFiles/mpcdec.dir/build.make +libmpcdec/libmpcdec.so: libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.ts +libmpcdec/libmpcdec.so: libmpcdec/CMakeFiles/mpcdec.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_10) "Linking C shared library libmpcdec.so" + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/mpcdec.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +libmpcdec/CMakeFiles/mpcdec.dir/build: libmpcdec/libmpcdec.so +.PHONY : libmpcdec/CMakeFiles/mpcdec.dir/build + +libmpcdec/CMakeFiles/mpcdec.dir/clean: + cd /home/dewdude/musepack/musepack_src_r475/libmpcdec && $(CMAKE_COMMAND) -P CMakeFiles/mpcdec.dir/cmake_clean.cmake +.PHONY : libmpcdec/CMakeFiles/mpcdec.dir/clean + +libmpcdec/CMakeFiles/mpcdec.dir/depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/libmpcdec /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/libmpcdec /home/dewdude/musepack/musepack_src_r475/libmpcdec/CMakeFiles/mpcdec.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : libmpcdec/CMakeFiles/mpcdec.dir/depend + diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/cmake_clean.cmake b/libmpcdec/CMakeFiles/mpcdec.dir/cmake_clean.cmake new file mode 100644 index 0000000..8f01880 --- /dev/null +++ b/libmpcdec/CMakeFiles/mpcdec.dir/cmake_clean.cmake @@ -0,0 +1,28 @@ +file(REMOVE_RECURSE + "CMakeFiles/mpcdec.dir/link.d" + "CMakeFiles/mpcdec.dir/__/common/crc32.c.o" + "CMakeFiles/mpcdec.dir/__/common/crc32.c.o.d" + "CMakeFiles/mpcdec.dir/huffman.c.o" + "CMakeFiles/mpcdec.dir/huffman.c.o.d" + "CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o" + "CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o.d" + "CMakeFiles/mpcdec.dir/mpc_decoder.c.o" + "CMakeFiles/mpcdec.dir/mpc_decoder.c.o.d" + "CMakeFiles/mpcdec.dir/mpc_demux.c.o" + "CMakeFiles/mpcdec.dir/mpc_demux.c.o.d" + "CMakeFiles/mpcdec.dir/mpc_reader.c.o" + "CMakeFiles/mpcdec.dir/mpc_reader.c.o.d" + "CMakeFiles/mpcdec.dir/requant.c.o" + "CMakeFiles/mpcdec.dir/requant.c.o.d" + "CMakeFiles/mpcdec.dir/streaminfo.c.o" + "CMakeFiles/mpcdec.dir/streaminfo.c.o.d" + "CMakeFiles/mpcdec.dir/synth_filter.c.o" + "CMakeFiles/mpcdec.dir/synth_filter.c.o.d" + "libmpcdec.pdb" + "libmpcdec.so" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/mpcdec.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.internal b/libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.internal new file mode 100644 index 0000000..7417c48 --- /dev/null +++ b/libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.internal @@ -0,0 +1,646 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o + /home/dewdude/musepack/musepack_src_r475/common/crc32.c + /usr/include/stdc-predef.h + +libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcdec/huffman.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/huffman.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/long-double.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_bits_reader.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/huffman.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/internal.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_bits_reader.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/long-double.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_decoder.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/decoder.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/huffman.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/internal.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_bits_reader.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpcdec_math.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/requant.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/long-double.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_demux.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/decoder.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/huffman.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/internal.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_bits_reader.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-fast.h + /usr/include/bits/fp-logb.h + /usr/include/bits/iscanonical.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/long-double.h + /usr/include/bits/math-vector.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls-macros.h + /usr/include/bits/mathcalls-narrow.h + /usr/include/bits/mathcalls.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/math.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_reader.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/internal.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/long-double.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcdec/requant.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/decoder.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpcdec_math.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/requant.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/long-double.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcdec/streaminfo.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/huffman.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/internal.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_bits_reader.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-fast.h + /usr/include/bits/fp-logb.h + /usr/include/bits/iscanonical.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/long-double.h + /usr/include/bits/math-vector.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls-macros.h + /usr/include/bits/mathcalls-narrow.h + /usr/include/bits/mathcalls.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/math.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcdec/synth_filter.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/decoder.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpcdec_math.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/long-double.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcdec/libmpcdec.so + /usr/lib/crti.o + /usr/lib/crtn.o + /usr/lib/libc.so + /usr/lib/libgcc_s.so + /usr/lib/libgcc_s.so.1 + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a + /usr/lib/ld-linux-x86-64.so.2 + /usr/lib/libc.so.6 + /usr/lib/libc_nonshared.a + /home/dewdude/musepack/musepack_src_r475/libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o + diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.make b/libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.make new file mode 100644 index 0000000..8b253d8 --- /dev/null +++ b/libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.make @@ -0,0 +1,870 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o: common/crc32.c \ + /usr/include/stdc-predef.h + +libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o: libmpcdec/huffman.c \ + include/mpc/mpc_types.h \ + libmpcdec/huffman.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o: libmpcdec/mpc_bits_reader.c \ + include/mpc/mpc_types.h \ + include/mpc/mpcdec.h \ + include/mpc/reader.h \ + include/mpc/streaminfo.h \ + libmpcdec/huffman.h \ + libmpcdec/internal.h \ + libmpcdec/mpc_bits_reader.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o: libmpcdec/mpc_decoder.c \ + include/mpc/minimax.h \ + include/mpc/mpc_types.h \ + include/mpc/mpcdec.h \ + include/mpc/reader.h \ + include/mpc/streaminfo.h \ + libmpcdec/decoder.h \ + libmpcdec/huffman.h \ + libmpcdec/internal.h \ + libmpcdec/mpc_bits_reader.h \ + libmpcdec/mpcdec_math.h \ + libmpcdec/requant.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o: libmpcdec/mpc_demux.c \ + include/mpc/minimax.h \ + include/mpc/mpc_types.h \ + include/mpc/mpcdec.h \ + include/mpc/reader.h \ + include/mpc/streaminfo.h \ + libmpcdec/decoder.h \ + libmpcdec/huffman.h \ + libmpcdec/internal.h \ + libmpcdec/mpc_bits_reader.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/iscanonical.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/mathcalls.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/math.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o: libmpcdec/mpc_reader.c \ + include/mpc/mpc_types.h \ + include/mpc/mpcdec.h \ + include/mpc/reader.h \ + include/mpc/streaminfo.h \ + libmpcdec/internal.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o: libmpcdec/requant.c \ + include/mpc/mpc_types.h \ + include/mpc/mpcdec.h \ + include/mpc/reader.h \ + include/mpc/streaminfo.h \ + libmpcdec/decoder.h \ + libmpcdec/mpcdec_math.h \ + libmpcdec/requant.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o: libmpcdec/streaminfo.c \ + include/mpc/mpc_types.h \ + include/mpc/mpcdec.h \ + include/mpc/reader.h \ + include/mpc/streaminfo.h \ + libmpcdec/huffman.h \ + libmpcdec/internal.h \ + libmpcdec/mpc_bits_reader.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/iscanonical.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/mathcalls.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/math.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o: libmpcdec/synth_filter.c \ + include/mpc/mpc_types.h \ + include/mpc/mpcdec.h \ + include/mpc/reader.h \ + include/mpc/streaminfo.h \ + libmpcdec/decoder.h \ + libmpcdec/mpcdec_math.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcdec/libmpcdec.so: /usr/lib/crti.o \ + /usr/lib/crtn.o \ + /usr/lib/libc.so \ + /usr/lib/libgcc_s.so \ + /usr/lib/libgcc_s.so.1 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/ld-linux-x86-64.so.2 \ + /usr/lib/libc.so.6 \ + /usr/lib/libc_nonshared.a \ + libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o \ + libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o \ + libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o \ + libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o \ + libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o \ + libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o \ + libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o \ + libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o \ + libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o + + +libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o: + +libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o: + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o: + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o: + +/usr/lib/libc.so.6: + +libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o: + +/usr/lib/ld-linux-x86-64.so.2: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o: + +/usr/lib/libgcc_s.so.1: + +/usr/lib/libgcc_s.so: + +/usr/lib/crtn.o: + +libmpcdec/synth_filter.c: + +/usr/include/bits/mathcalls.h: + +libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o: + +/usr/include/bits/mathcalls-macros.h: + +/usr/include/bits/libm-simd-decl-stubs.h: + +/usr/include/bits/fp-logb.h: + +/usr/lib/libc.so: + +/usr/include/bits/fp-fast.h: + +/usr/include/bits/flt-eval-method.h: + +libmpcdec/mpc_demux.c: + +/usr/include/bits/types/struct_FILE.h: + +/usr/include/bits/math-vector.h: + +/usr/include/bits/types/__fpos_t.h: + +/usr/include/bits/types/__fpos64_t.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o: + +/usr/include/bits/types/FILE.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/types/__mbstate_t.h: + +include/mpc/streaminfo.h: + +libmpcdec/mpcdec_math.h: + +include/mpc/reader.h: + +include/mpc/mpcdec.h: + +/usr/lib/crti.o: + +libmpcdec/mpc_bits_reader.c: + +/usr/include/sys/cdefs.h: + +libmpcdec/huffman.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/thread-shared-types.h: + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o: + +/usr/include/bits/types/__locale_t.h: + +/usr/lib/libc_nonshared.a: + +libmpcdec/mpc_decoder.c: + +/usr/include/bits/types.h: + +/usr/include/bits/stdlib-bsearch.h: + +/usr/include/bits/types/__FILE.h: + +/usr/include/bits/stdlib-float.h: + +libmpcdec/decoder.h: + +/usr/include/bits/types/sigset_t.h: + +/usr/include/bits/stdint-least.h: + +/usr/include/alloca.h: + +/usr/include/bits/struct_mutex.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/select.h: + +/usr/include/features-time64.h: + +libmpcdec/requant.c: + +/usr/include/stdc-predef.h: + +/usr/include/bits/pthreadtypes-arch.h: + +/usr/include/bits/long-double.h: + +/usr/include/bits/stdint-intn.h: + +libmpcdec/huffman.c: + +/usr/include/bits/types/locale_t.h: + +libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h: + +include/mpc/mpc_types.h: + +libmpcdec/mpc_bits_reader.h: + +/usr/include/memory.h: + +/usr/include/bits/time64.h: + +/usr/include/string.h: + +/usr/include/bits/endianness.h: + +/usr/include/bits/floatn-common.h: + +libmpcdec/mpc_reader.c: + +libmpcdec/internal.h: + +common/crc32.c: + +/usr/include/bits/floatn.h: + +/usr/include/bits/timesize.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/types/__sigset_t.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/libc-header-start.h: + +/usr/include/strings.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/types/clock_t.h: + +/usr/include/bits/atomic_wide_counter.h: + +/usr/include/bits/types/clockid_t.h: + +/usr/include/bits/types/struct_timespec.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/types/struct_timeval.h: + +/usr/include/bits/mathcalls-helper-functions.h: + +libmpcdec/requant.h: + +/usr/include/bits/struct_rwlock.h: + +/usr/include/bits/types/time_t.h: + +/usr/include/stdlib.h: + +/usr/include/bits/mathcalls-narrow.h: + +/usr/include/stdio.h: + +/usr/include/bits/types/timer_t.h: + +include/mpc/minimax.h: + +/usr/include/bits/types/cookie_io_functions_t.h: + +/usr/include/bits/stdint-uintn.h: + +/usr/include/endian.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/uintn-identity.h: + +/usr/include/bits/wordsize.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/bits/wchar.h: + +libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o: + +/usr/include/features.h: + +/usr/include/math.h: + +/usr/include/bits/iscanonical.h: + +/usr/include/gnu/stubs.h: + +/usr/include/stdint.h: + +/usr/include/sys/select.h: + +/usr/include/sys/types.h: + +libmpcdec/streaminfo.c: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h: diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.ts b/libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.ts new file mode 100644 index 0000000..e6eb32d --- /dev/null +++ b/libmpcdec/CMakeFiles/mpcdec.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for mpcdec. diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/depend.make b/libmpcdec/CMakeFiles/mpcdec.dir/depend.make new file mode 100644 index 0000000..97ad193 --- /dev/null +++ b/libmpcdec/CMakeFiles/mpcdec.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for mpcdec. +# This may be replaced when dependencies are built. diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/flags.make b/libmpcdec/CMakeFiles/mpcdec.dir/flags.make new file mode 100644 index 0000000..5974f7d --- /dev/null +++ b/libmpcdec/CMakeFiles/mpcdec.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# compile C with /usr/bin/cc +C_DEFINES = -DCVD_FASTLOG -DFAST_MATH -Dmpcdec_EXPORTS + +C_INCLUDES = -I/home/dewdude/musepack/musepack_src_r475/include + +C_FLAGS = -O3 -Wall -fomit-frame-pointer -pipe -fPIC + diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o b/libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o new file mode 100644 index 0000000000000000000000000000000000000000..ebcf52529e2b5f4d4956ff8f462ed9f855841daf GIT binary patch literal 16144 zcmeHOd3aP+mOr(<_iB4p2>}WSqy&TnFeYp!$WjFfR5U;kkSI$Mff$t~KxlCmtOitw2+92Jt8n@$g~ijY77NK{p~=)ek|>e?#_oQ|=!VEoKH4dWV+V?27Y??> z{5)M4?B>q(frX3r_%aHJ z3Sx)CdqW*0R&DOAX${v+vqTyqvAvP=&Bb+|=Vw|DRMscS5BpxK*=R3{?TKuPTMl;Q zchsCJT6*HdQ{WaAdd1Ed7KUSIVc*_Or(vH9CWm(>>JZAqH0yllGEJU!#G>3m~)Qi6Hw z$je3pF)H3NPRy}Ng}I$GEvJj>7TLAp*!kG$qK$in7Oh_zDn8I2J06KOM>g)M6=283 z&dzY%0!#Q0;uvhYU|s)u(Z*N(7!+;%W6*e9ELVuu|CqUB^_HCiiPUYc!lQK;IPjd< zGt9OE4ll-ho9HYFmmO;W4cPaz9uM?*pvMC}9_aBvj|X}@(Bpv~5A=AT#{)ec=A$Z3;Zt=_Zh0bB`&W-|er(gD8y|k?!3XZYZ^OMm zSYNYl?V9S_q?(@{)d-;zw3AZ`P-c@?RfEp z=YR9-?f>!bzk2SMzxcOp|N1XK|JhG}^3RR`^pF4W?2n)MQN!Q=-QWJrJ$K(#b!X-B zWlQg->3hZ<$jvd)Cb2n{O(L%$QzSFl}l$G-dLni8oHj&%0s# zxUpkK=jL3Wech;$BQn!^ebava+}B@ydG<`(7pG61JaPP3>*q&5JM!t_Pg*{1{^-LG z{__5z|9bD;tl`719Xe$2HNlKQ1Jeie?-%IXr*~?K-=}*$ZkJP2700EE-(IlWtQP9* zpmt>nJ*PfI!?c4@tMi)>xjKm4U4Osz@)9N&D_M!FNJ;Bu$nkuieplL+mHFPgX7>sY z2p1DIK)(^{a`76^LFyCXAC<02~oKt zgN7<2$*+zjt2PlnntYj$ES=U4yY13NcnJP6w$lhAA;e=uQu+WX;IktL86#kf$UPFvHK|KNFzV^ z*wu6*ZIDS{o3-N-Hd6#D);rI;UFW_Q!7KLiGE!q8{U3sUnGT&iN-xsXK8Tn8@Wmh_ z$c6omZ-qMWmrbQ0X#EZkk)o4T1Q6uOdBHD){S4YQ(6~rbK&R?g3T7mj;?J;JeEONT z&X(Mq!Pi`$-79s_K%4i=vmKWXfAYoY15F=?Mo*bMp}=T}7sAI(I{4A$+=*J?kEmUz5=S4z zQIK3}7UC!yzRMA$lNT+x^%f+hDU*p_lOvwFon zcO$JWx&5~J^GcA*ie?msZ@gjL7$mMynZt(+9)!b(%;0rnPw!uK)AaG9`{>pO?z?y0 z+Ld=9CoV0UeRJ-01N-&u-OJ~4I&78)tI}x0vVdJEAndP({SjppO;jh7M_UwComFvi z-5Vk|a)ReULH1p3@`7noCgoqdcv0!C$g~AhC*+OD8a6bTQN2)TKk^#S`ZcTXskm+a zOsVtr!-ot=@w(L?)U3Gs4wwXkigREFjOd^0*Pwr;VL+Gum#ME`p}+L+L}eKA*f>hn zZX(6GC~k9AAurq;BoA!xcG(~jnGH$7YH^dttNZ+^Dc@yU0vGY@M?7l|H`x)ZR@F-u zO^=e(7b2HGNNzCjq)I0EuFvYT>2`-#@u(tO%8BoKhHxH&HalcEAVYx+6*4r)a6*O) zGTe~i@k3i8-A@+3)n<426jgJ&+#Vg^_qQm%%nwqhX$m_L}u3O3H!?*l?3R*I(gKYMJiX&Ye&|kxC=S0Fx+(T|xum7EV*rzEPDXNQX znwP9jf5_rWi<7$_WM^QXf@WikTXt~zfT2VBU)yh3pl{~zKD|d|Az|aj7AY1-KwP^a zagU3;7gstq7-z|9F)kl7zbnRKe{-9MJ#T^nSyIe&RM6IU-9q2sfIj2~b~T7}pSVgl^-Btq2f5Wx0i`$T>Ht!;!H}N?-{eHeJuZhl`2q6c?$M|CT)NxqL=<~8o0aSq ziW>RU0sTdMB9E#*tIa|r_nols-`6f8-rBJzUnx#%Q`+gI;-=$jZ#t$Op;j%Ojwt8p zuzH+Y)D!ffa*hruU(-8^i<)p2-cY`z{kRMEseS2Hq4uL% zwLd+E`{q&gC`HxJXoJH_HOeWfR??`-(Mfk|pHQWiLCfH?a^)oI0}Jx(w-j+)!d+^k zJpA?`$I$`bUc{YfhmRb%b1oR?j2z!kJ9xB#XDeu0K>x9JGT!V8>}uB2cQ)%sUTD@2 zZ*SHIH8y)bd$w60*wCzhy0ux)sBhLki8gx%P_y$meW-q6_@oIk_d!M+vR+nG==WM$ zbeFSFXqW4A+T}V5pLl3HQ!O0mulh9DD-*|K72syP4{aj zXoCuS9V+bAXc_!k4qui!+G!sAd5hXBKF8HBI>*(Y<~WZMhUe~^k?stAwzTfRF-S734?Dw9H?Dy)S{oXUQ-}NQErnzaK=0VJz zN6a~CJ9sxjPQ4wqqWu!$)8`ibL&Lhe<)Pl3n zg!OUo*$LgYL$^los0WWI)|F#j$kvHm3jf(UaCh3U)=o!Ng+9~1p(C0K9v3JMx<=4N zL01mC5RPgd{FwteLGUBnCFy?D2dDu-+X&hyXv;xc0-6wHikvNITQJuIJ>$?VY9)hb z31mmGZz0GhYuD$AF21spSZg!ZHiEa15dsgfCXQzm&k!!;SN8K`i&h`L@#w$d$iQiMHb`Z$o|4h&_+mJjOY#My*(GS71vjY!SXkZHssb z!Uq9|4>8ai=dc$MWVSm}jW}q<9(}Ia;zwP9=uwwFbks$3)Rjg@kY5g~7UZB_h)qAe zhd6r&IqGfINlmH)dB{rpkdt0Te8rVMu*m}-dExgI_z>}q9Q$3Z1#}-O{c(l~c`Xfj zO@W;{V#j} zPSk-GFFg$1AA~LUt8Scam41L+QG;B!R_zsCgK}YwGc{W6gbZhZR;e~x0o(6}tyQq| zPE-?>sJoYI3N6#pkPDpfuMYou;9tZGboE0wf^M?4Lnm>*TM#da*w&0#t4G+>A|@Y0 z%tsOX<%mHMr-Dx=;y#G@7cnmG5fPIigd*XtF}Em=LOJ4diFz@**lDB1PCG5qzNJ$5 zsYK*q#FdD(8Plds2xiWhH9squJ1%>4c5ZNV&ggNuxw)eaj?jjJc!^(&frzYRi3?07 zDvN2HhB?tJ_uoR64Svf2kE+#!I1^a9F+=pec$Vt^$E`Q(flW4RrAzmRb#1!a8qu{q zd#M1^5vCn11Xbw%r>uo~pw1T2gHPJSdgkMfu%5F?vDUiu%&;Dust2a({;9eac3Ue1 zk2l_YiztMp;x}QUl?pyZy8nk(&^~3Gst4=rMSA9wjsiXBab=pGw@I~SSo9q5#$1se z04?|#Yp?bu*xBjKRnNDr%RAjG5$wWuU4Y>OjQTO&!ZU`w=nuooLMlQjF(LdX+E}~< z-eUZGkLV!-#ShRJZ)AKZsBz+uxK_6#4h_Ptc zb_1_x9L1~AK483>aT%w_7%wr=pJP18_)vpO;)WJ-TR0O>VLSy}Yv{wcju z@et#qn9l^s2T#$2e?^F(Ez2N};{`Z(j_$CaW<`nMP-KAMvLBgW&*=bFSa zI>C6*nE)jHw~V(ipAgf#upeR{8yOepO|<@uhZqkhV9H{A1M~MVp3is<;~ef3VZ5Ai z87HNTmoP5(_fEze@d-k-Lx~4%U_8zr^!70xV?4@u9^=n29%MYi_%9`YR(u2FyCg0W z7g~GbL2pW&^=yY9MQdg}$_F%LphRaFZ(%%>aZy2~!qa}ti)Q3!JX3&6+l>i+8xA}L z$tuc$R?GNU#)IrgiH8_(;Tt!|dd_4#&iYIIcE)8~NxYKra*nHdmb*ss;rNvJ!;%lv z$#YXHarSdH^Lv_c8K06*qk$v8vERCUQnkLaa%IJ;?4=}nWtDfWSW&iOeGM(GSk*mP zS-rH(n4UAbESJP+-F+*|x(0G;bn;YUkeC|NJ(1`p;IZ9sqMLxnCCiWlIh7=1Tv@V= z@yV;?AhBvZ6BZ3E-EpD zo#~oj!v#D?27oc>5-_KWwtLgMZ8W49nV=Wvxe*xMh!_4syeJd}j*Ov1%oCh7Mk;Zu`vk@rOt`cK14(vL)*63vXy_zpZl zohUm*Z6@nmjVDB!7I+KSt1=%-ypiz+6Mc|znYSf9t_-7P3II*wvcBDJ!exDH{5Me& zy{vC#y(am{`c~ZQqDfrVw@oHo*0+aDcnkZhoS%|UoX1rrT-LXepQNv5x^@$N36G;( zh)DV%uCB5Nr z@Y!dgH<;s1-rJI1uCLT))pm-@@`rxZaWUjf|I?@DSs&K9cmZj%_v3%R082>p@9h&U$Px;j)e; zu6HE8tYd3UxJTAGT%SsMS>HC8@S$7}2l*-KW!<~Ygg?vcb6Ad~m-X;Y6JEgdAuhZm zeIx6=&xC)-cnN<{>7r-995UhQOkd95P<7F>KU+=sv%DX&{+0By-j?;R#AUr5eO4vbK*9RVf5(SO-?zdU!iuF0&kkKp6OaSulS#nzXPd*o5 zLiQz%c-HXxWK8tUw08m%DcY?623~L0OWH4Zi6;K8BY2wEZ{zh%f+(q(*W=6ctNK50 zLSj*b*9!lO6eQQn_`8~Hv1CJ*c*oyO`Cy1Nnva)xy+~8$*aJiw8~(g$((FHx4oxIt PIYn9jm@(>pGq3+|5IM60 literal 0 HcmV?d00001 diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o.d b/libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o.d new file mode 100644 index 0000000..1838936 --- /dev/null +++ b/libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o.d @@ -0,0 +1,35 @@ +libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o: \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/huffman.c \ + /usr/include/stdc-predef.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/huffman.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/stdlib.h /usr/include/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/time64.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/memory.h /usr/include/string.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/link.d b/libmpcdec/CMakeFiles/mpcdec.dir/link.d new file mode 100644 index 0000000..390df4e --- /dev/null +++ b/libmpcdec/CMakeFiles/mpcdec.dir/link.d @@ -0,0 +1,94 @@ +libmpcdec.so: \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o \ + CMakeFiles/mpcdec.dir/huffman.c.o \ + CMakeFiles/mpcdec.dir/mpc_decoder.c.o \ + CMakeFiles/mpcdec.dir/mpc_reader.c.o \ + CMakeFiles/mpcdec.dir/streaminfo.c.o \ + CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o \ + CMakeFiles/mpcdec.dir/mpc_demux.c.o \ + CMakeFiles/mpcdec.dir/requant.c.o \ + CMakeFiles/mpcdec.dir/synth_filter.c.o \ + CMakeFiles/mpcdec.dir/__/common/crc32.c.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/libc.so.6 \ + /usr/lib/libc_nonshared.a \ + /usr/lib/ld-linux-x86-64.so.2 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o: + +CMakeFiles/mpcdec.dir/huffman.c.o: + +CMakeFiles/mpcdec.dir/mpc_decoder.c.o: + +CMakeFiles/mpcdec.dir/mpc_reader.c.o: + +CMakeFiles/mpcdec.dir/streaminfo.c.o: + +CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o: + +CMakeFiles/mpcdec.dir/mpc_demux.c.o: + +CMakeFiles/mpcdec.dir/requant.c.o: + +CMakeFiles/mpcdec.dir/synth_filter.c.o: + +CMakeFiles/mpcdec.dir/__/common/crc32.c.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/libc.so.6: + +/usr/lib/libc_nonshared.a: + +/usr/lib/ld-linux-x86-64.so.2: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o: diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/link.txt b/libmpcdec/CMakeFiles/mpcdec.dir/link.txt new file mode 100644 index 0000000..0f1c601 --- /dev/null +++ b/libmpcdec/CMakeFiles/mpcdec.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -fPIC -O3 -Wall -fomit-frame-pointer -pipe -Wl,--dependency-file=CMakeFiles/mpcdec.dir/link.d -shared -Wl,-soname,libmpcdec.so -o libmpcdec.so CMakeFiles/mpcdec.dir/huffman.c.o CMakeFiles/mpcdec.dir/mpc_decoder.c.o CMakeFiles/mpcdec.dir/mpc_reader.c.o CMakeFiles/mpcdec.dir/streaminfo.c.o CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o CMakeFiles/mpcdec.dir/mpc_demux.c.o CMakeFiles/mpcdec.dir/requant.c.o CMakeFiles/mpcdec.dir/synth_filter.c.o CMakeFiles/mpcdec.dir/__/common/crc32.c.o diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o b/libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o new file mode 100644 index 0000000000000000000000000000000000000000..6d7efa8768d1071bf66a96a97f055aa19fb1b7bd GIT binary patch literal 7376 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 CLhYIW literal 0 HcmV?d00001 diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o.d b/libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o.d new file mode 100644 index 0000000..b073441 --- /dev/null +++ b/libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o.d @@ -0,0 +1,47 @@ +libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o: \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_bits_reader.c \ + /usr/include/stdc-predef.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/stdlib.h /usr/include/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/time64.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/memory.h /usr/include/string.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/internal.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/huffman.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_bits_reader.h diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o b/libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o new file mode 100644 index 0000000000000000000000000000000000000000..f2facf84533443b15c72ba69479335fb8b1c79c3 GIT binary patch literal 30312 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 Rzy2PZ{z?0m{+mhve*uNz?l}Me literal 0 HcmV?d00001 diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o.d b/libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o.d new file mode 100644 index 0000000..2a09950 --- /dev/null +++ b/libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o.d @@ -0,0 +1,53 @@ +libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o: \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_decoder.c \ + /usr/include/stdc-predef.h /usr/include/string.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/features-time64.h /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h /usr/include/bits/stdint-intn.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/memory.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/decoder.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/huffman.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/internal.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpcdec_math.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/requant.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_bits_reader.h diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o b/libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o new file mode 100644 index 0000000000000000000000000000000000000000..14a8cc52609c6e3440409bed1f7d7e70f82ed3a0 GIT binary patch literal 13784 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 G_WxgIS$&=W literal 0 HcmV?d00001 diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o.d b/libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o.d new file mode 100644 index 0000000..820ec74 --- /dev/null +++ b/libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o.d @@ -0,0 +1,57 @@ +libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o: \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_demux.c \ + /usr/include/stdc-predef.h /usr/include/math.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/features-time64.h /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/time64.h \ + /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/iscanonical.h /usr/include/string.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/memory.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/internal.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/decoder.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/huffman.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_bits_reader.h diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o b/libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o new file mode 100644 index 0000000000000000000000000000000000000000..e53207e0e0f6f4b5e28d5ef28a112108f18d9247 GIT binary patch literal 3456 zcmbtW>uVfU6u-Mk>^50vHq{S-Rx@HL>ubmaBidA%Buz4~E$h*hy%(j)xP(|%5 zpnGK-q~a`FrPEQPyf9y7G^-!?hbzmDqpO{ZJj-r>2>pxY*}ag4{KeZLt8~~(Y#D1C z7_n4V-!5ClFR{{5wyXX<7AHT+d7R=bQy)^jTE7og`60{u%}T6&hTE=%?%u~veBa11 z@7Gh7_t)ngKtEaKLr;qT4~KjyaZ^{t9ppa7RsEM|&0Q_rX@%2bthm z-k@fbf$;^Pk4;E9z;m-difP~ubyTwB zsMe9;fq}zXbokj*4{1h^-mM#2cUO0hVHn+<+zeL@emEH*u^jwxEPIru@V($S|x`jyb}HgIEapCS+B5xjt} z7<{Q!2@SRlQ5~KKTqgQQ6m1&tMuPKcX1{FL^Ed5GujW-ih1u=^Vn+87u8~K~32o$? zg!5T}j=dvZAe_$%bes+1R|)5{BE5;-MOtm?<0^k1Y9MGs@WcD&mly!`@DmO2Gl1`d zel{tQnC)x>{)Gm3u>pP&aLm6-BjxuLuqzGt9}*vi#Ko*GjHPB0V_7>sVQ2LOo3!1r z+|;~1mUAbjGAt2K=WKhLEZ0sZNyPwC_1Hi+bCAXyWH1MvQrfYp^b};pgm49CilySo zWG2C!L^6}JF~F|RXHI6uPRl+!FLF`;DO&NFZH3>T_`LvmN5b*^3w%|=!x9doM+IB(uS+hw^FJ)%a{f&z&)rfUP`RKRL$6j%zDHCAULahf6}eQ3Bai!Vjcm(@n`FQ2 z!wY2ReYogn*@thEUH0MPdAjApcbe66b164I&U84-)%Cp4vUW1AyLR4X`b6A~GkrXl zV|q4&2GR}P024_Z0S%lwJPGk6(-WCg%1%RQI^)_pe2N~+x$(p_*^}v6eI^S}L)M+6 z9QOG!CmT=M)ad_QG>FH0<$qI}fT5W3%>p~Z(b{D{sCbsl8pO3cB`nbS!Lx&^__E-? zACyDzL%azMNeaHY!bRzX$-jq~^S{O$5Q{mh{|a`}GEv{3SJW5lAjSK67pZ^$yu|)R zB@>i-^ZR{ImC;2+oF9%<#Ebdi_Xc|rJW#p3NA(W~fL77BSmS^TU8a8YFX#UX1YxUw z`U(O5zC{0`mIn&f_s4G#uqlYN`r{V?uQ$Ia5z7>Z^TYSGh!^v#R~tjVp&NROhJ)V* me6RcC@ty0x_W-dK`ipT54N3g7ZU$Pd3^KD|Ih!}WVEL*8<8Xs zBEcc3Mgj$xj#homb2X4*9W2SGR#3PkC$^Ctk{913XEEC9qo?P8$xZjC9#N)k9@%ek z%nhk>%WWdS#7nGL`2BfFKK%iiQ+KC5>f!IR5H3_ELqG>n1^uH-hjF;{k5+_XFDQR}Mn559B(IK9tjX0q?z_GPyn zY0mDy_pN7Qe7q;#8trL~-|UV?r0y}t$tW6R;)>H1NkEqrcRF#&PKY=fHlR7+q-z(5 z#aFFf)3|n>oTx=1ef{Ikrq@q@q;D*IU+nGpm4@C-=77@Hd+g*6CE1~-)TEMXPjw`d z$&^<}$FJa^!$uPBRGKAB!a*W&yvh$@JzMEoKS);+(&olkd=kmj#um=qU`tp#``%@; zU(e8bQTXZB%QXbuRI_V5cV!h|&p(cp5D#TGFyGHtlbg_Ou9;u-zK3y#siOa*7&m#R z>Q{AHVz6A?n4s)?1ra+sF;YxsSDo(Hjrf)BiyD?H~jSgJ&qH5uPqU Sn$W9PpP)^ljQJ+e;rhR1*6H#9 literal 0 HcmV?d00001 diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o.d b/libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o.d new file mode 100644 index 0000000..364a816 --- /dev/null +++ b/libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o.d @@ -0,0 +1,48 @@ +libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o: \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/requant.c \ + /usr/include/stdc-predef.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/stdlib.h /usr/include/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/time64.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/memory.h /usr/include/string.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/requant.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpcdec_math.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/decoder.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o b/libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o new file mode 100644 index 0000000000000000000000000000000000000000..8b7bcb983616f6fccae54607ff766c8a4842c1a7 GIT binary patch literal 8632 zcmc&&Z*W`3aX%2C2uLm-B{2$WdrUM##Uw4l04>#&C$;fNKs-sXOzTf2Cyr?d1Vlz8 z$Pl1SD{e*QiI#6*G##c zRXY$P3EjPS2RuDf(|;d&GkCZ6yWPEgdwaY0a5Nm*R%Nph*=*!tQW;5{9ec-Xs#b3OV;wLxX#6WgLzOe^1b6`03!%JDq(G&Z9$o%WqO zlt?60{aQWMmp>P3I-A}6mnxfOQ?^f&HKQJiEh1^_v?*O+Q!PKzp|5FRH)O z$*C%$j9);N=aumvARfzw*i;C#YSR(gmqX3^GAJ&7u4$Gn(d-srB3Z|nE!U(6as?bI z^+BRcyv@#uSy)@u7i#r_2dq0bPrv~*TaBDF`x)%Q%0!MT;aOaxtm8P&kc2X5aK7&I z`2s%w7NV@}j7SvdCn@VZd^(}j8~lgg?LjRj+gQb{5F!87yt-fgQ+1!Zci$e$eowXE zc&0n=Ksz$qoHX-rmM*dx?P85yw6k5#P*yF`Z_%b{${toG_Lr228hzgBnxfgxs{FF5 z6&2;gUa&r-OgwfI9{X=lwn~|}U)3+xs`|Vq>^i5vU#sQ|s_UFGx!}&lCET zQ@`v{CeOQWsQL%B`Q`i-*DsXGE3gZ&7YXIxb7;b{T`SmV>^yr%FWI${jcVshfKzz& zT~5AG7g*GW7A@zOwRs!cb9d&?o!Q5h*;zv#`C{imUYp_j^+W9u&R&|wBeNODpteRg4xuz5BYmF*fj<9>cGEij)wqO-JdTppj z)!+A^Oh}o0FYH=S^S=kNuT@1gZa(BHs`=~r1&9pS#RS{AiOq!A8JgMK;MA|#wQDvU zY47pCU>iUmC^}ez$7)r-R-3;wf; zfs>cH=(W|)-UX98FuspKxME~qhRD7KVGZgbMAc)LN;QOlUQ`P1hDg2DpdDz?Lm&$V zf!sA!y9fsD^m2pNuV7FlyTcY?Ze?=abcdq~f&slU-O+$?0mml4d~Ci1B-=w1;qmk7 z_9dm3hojl~*T)?2 zDknaG*^ukw%uYYe?!7{&K3_w#U$4JeDvh5}#yv2bd9?>sK~Bi5L6h!#^=YoLqYd71 zO1>96yF``dvoO>ttoq_7un2M^istK?4v)5ATT<3`)M~|hloJD}y2AmORio8D$EurZZxeyhQggUO0a{to<3g-SxaT_V&cT@ zS0;a5_!T%&sUO4T-avDpbcUKP(x#chFTiD7jlC+iunI~%gJDC-UuoGCaj?U3ACLoBDyIbDnS;umab$7!V=+}v)%44BY! z;F4Uvi23cArUdJ3gelm89JsmD2Q;{x)6GDGcR9W3G~_W4)SQs(?fgfsw-fAHE{5xY zmr>;+kX6W)zlkZ&mCG-<7Ntt$<7*gvjurUI%NZg(zy$OyJ zP60o=-hv9PedK^e>>=0tJOt?0x0LaRKzYTy@;)-Nd9W^Q=Q`ZW*?bXB8S8LrMW-@; z0}pdH)kfK6Lt{1-lr$=x?(hQ#$y+y@HP+I&rB z^EWLr>;YbLQEC*VYW2%b*Dv!Wt>Dlu*Jt;`CBkEoDD!t=8i#}F47sLo0h20BmCX*x{{Lpe6vdC{G8@eE32oFMRkNzWI2sHu3?c zs4Ts9OHMFis8!?xZSE-MF!_GszP+S;F($J=3 z#%6Hyin3x`m$1EfA_82>WR=JbaF9RnuxIHlCj$=4MnX!&wa7YQW;ZZnx`r|hv4XeU zDYl;$)?dX;NNA?Bjo#N89K8qMQSL%6Q&Zjy@G9hg$m5a${Ac8Hg9(b>ft;B;ND`HN zD)pakY1xyG9_){|w2+pTeaVy@?2h-xqp7%edA08cw5BCkklj&&xz2x4njzs(W($9JQCOQE0URY_UcQ6@8x_4yYAoRPV zJ$-}FgKf#4=x`5^;nDPPd;poYCsR?*-98-cONQc6oR-?Rn&<#5C0gk32pRiFLQdg# z;-5*h(kFdUUuE?FN41ZnV!Z>=WYQb(J?Qhp$KKXW-ktsNfdQ}Ix780ej;R&vo(R@` zzw_de&0RqQ8xsB8BgS~M7<)yZdxUg$bUfs3?A*1l$s5?>YxM=Zt^U?6fk2>@i@Y($2W3$D5;6&(tB6<3 z@asCzjU0#X4AI6!kAF`fzieJfKyNqUCK&LF9*L`*s3sl>h<=;E!xns}z}HytE`eKM zvX29w_V5=4j(cNn-F#3@9x#JI_Xzy+7QBy-S6fg*k{nq>oR*oiz%4L&PT*F1jtboB zpK*cX{+L^a57w0TQO><0aK8jZ{~GkxHF4^@@LLBvJS0MepD)1v0e&m-=LEleVR?pT zB`&srpCiCNgx^YfKE4fJ19q&$kKbx&XDz?35F*bUUf&R36u3NhI|SavzflP(M@9;& zL3E%mnHcoN$iPsn`%paH9Z$vvd*Z|0Fxi(pM3PbROnf-iH<;WN9f+q$DmpOKA5RR& zznUVxNJlF^w%{Xx4?jNs7#|PfV>3P;z(*TC0(^QaCpkMLOoTaGfb#{mkkk+?oKBF6 zb=_cQPj@do(5`15B>jVjK$nT(5EL=<_*Q{7{&KP5*aNMcI@p&^@pn!29f^}}c-3g^ zaCfZtaCaiw*KgJ%oq;~$qUJThS^e?kp>*%(6K-DjqzN~# zJ8>KRQzm}1{<9|BtpB_TH|u{xBn-5_-el(*Q34S6n()uw2H!1k>%PZCVYB+pDe@TV z|09!r<1@{OpFcF=I|RSfFXM2Z2{*^>S4_A$K7Rl@vEjOR!cXqYe;^3Wig$|hV#N>L z1~;@A_d$$*uKl0C6+FtdCaQ3w+qDc%uQA_4kRf--3^bahnA{CdNSv zo)u$i!T(B(yDa#3#Q1;(KPARbTks!>ajyl3PZ8dREcmn-k6Q4&7<)yJae_bDHVZ=H z@*Xf|!DYQaX~o4knX%xqPXCJqmvws4g3CHhe5vOK;9C;<^sv$QN@_UXAN8f4VDc(MOu=LLC;<;u<5P#82i z@`Sk8h~cO1On1Qqp3R_S5Pc4lA2cUULc>}o&kT;``NI1z;-YNf6mQ?QtSfQkHMdPL zaKi6@D<1$^)Mmgbv^I)d5F0!y0u$o{>$O!L)3P;o0U}*>_#~v?V!vg`?OI8GQP_XlP*Z+d<^L1< C%RYMm literal 0 HcmV?d00001 diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o.d b/libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o.d new file mode 100644 index 0000000..a438c7a --- /dev/null +++ b/libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o.d @@ -0,0 +1,55 @@ +libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o: \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/streaminfo.c \ + /usr/include/stdc-predef.h /usr/include/math.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/features-time64.h /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/time64.h \ + /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/iscanonical.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h /usr/include/bits/stdint-intn.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/memory.h /usr/include/string.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/internal.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/huffman.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_bits_reader.h diff --git a/libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o b/libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o new file mode 100644 index 0000000000000000000000000000000000000000..cc07304c4b36ad2a51dc9395a29763070f8dce2e GIT binary patch literal 14368 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 in src/) + * Added msvc project files + * Changed mpc_reader_t structure, any specific data of the reader's + implementations should be hidden behind the (void*) data pointer. (example + in default implementation mpc_reader_file) + * Renamed to libmpcdec (to make room for libmpcenc) + +1.1.1 + * fix for fixed-point mode bug + +1.1 + * add compliance & cleanup patches from Michael Roitzsch of xine project + * switch to BSD license + * port to pure C + * add doxygen documentation + * revise API somewhat + +1.0.3 + * autotools build process + * sample binary added + * floating-point mode by default diff --git a/libmpcdec/Makefile b/libmpcdec/Makefile new file mode 100644 index 0000000..24a1431 --- /dev/null +++ b/libmpcdec/Makefile @@ -0,0 +1,447 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# The main all target +all: cmake_check_build_system + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles /home/dewdude/musepack/musepack_src_r475/libmpcdec//CMakeFiles/progress.marks + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libmpcdec/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libmpcdec/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libmpcdec/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libmpcdec/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +libmpcdec/CMakeFiles/mpcdec.dir/rule: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libmpcdec/CMakeFiles/mpcdec.dir/rule +.PHONY : libmpcdec/CMakeFiles/mpcdec.dir/rule + +# Convenience name for target. +mpcdec: libmpcdec/CMakeFiles/mpcdec.dir/rule +.PHONY : mpcdec + +# fast build rule for target. +mpcdec/fast: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/build +.PHONY : mpcdec/fast + +__/common/crc32.o: __/common/crc32.c.o +.PHONY : __/common/crc32.o + +# target to build an object file +__/common/crc32.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.o +.PHONY : __/common/crc32.c.o + +__/common/crc32.i: __/common/crc32.c.i +.PHONY : __/common/crc32.i + +# target to preprocess a source file +__/common/crc32.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.i +.PHONY : __/common/crc32.c.i + +__/common/crc32.s: __/common/crc32.c.s +.PHONY : __/common/crc32.s + +# target to generate assembly for a file +__/common/crc32.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/__/common/crc32.c.s +.PHONY : __/common/crc32.c.s + +huffman.o: huffman.c.o +.PHONY : huffman.o + +# target to build an object file +huffman.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.o +.PHONY : huffman.c.o + +huffman.i: huffman.c.i +.PHONY : huffman.i + +# target to preprocess a source file +huffman.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.i +.PHONY : huffman.c.i + +huffman.s: huffman.c.s +.PHONY : huffman.s + +# target to generate assembly for a file +huffman.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/huffman.c.s +.PHONY : huffman.c.s + +mpc_bits_reader.o: mpc_bits_reader.c.o +.PHONY : mpc_bits_reader.o + +# target to build an object file +mpc_bits_reader.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.o +.PHONY : mpc_bits_reader.c.o + +mpc_bits_reader.i: mpc_bits_reader.c.i +.PHONY : mpc_bits_reader.i + +# target to preprocess a source file +mpc_bits_reader.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.i +.PHONY : mpc_bits_reader.c.i + +mpc_bits_reader.s: mpc_bits_reader.c.s +.PHONY : mpc_bits_reader.s + +# target to generate assembly for a file +mpc_bits_reader.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/mpc_bits_reader.c.s +.PHONY : mpc_bits_reader.c.s + +mpc_decoder.o: mpc_decoder.c.o +.PHONY : mpc_decoder.o + +# target to build an object file +mpc_decoder.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.o +.PHONY : mpc_decoder.c.o + +mpc_decoder.i: mpc_decoder.c.i +.PHONY : mpc_decoder.i + +# target to preprocess a source file +mpc_decoder.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.i +.PHONY : mpc_decoder.c.i + +mpc_decoder.s: mpc_decoder.c.s +.PHONY : mpc_decoder.s + +# target to generate assembly for a file +mpc_decoder.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/mpc_decoder.c.s +.PHONY : mpc_decoder.c.s + +mpc_demux.o: mpc_demux.c.o +.PHONY : mpc_demux.o + +# target to build an object file +mpc_demux.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.o +.PHONY : mpc_demux.c.o + +mpc_demux.i: mpc_demux.c.i +.PHONY : mpc_demux.i + +# target to preprocess a source file +mpc_demux.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.i +.PHONY : mpc_demux.c.i + +mpc_demux.s: mpc_demux.c.s +.PHONY : mpc_demux.s + +# target to generate assembly for a file +mpc_demux.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/mpc_demux.c.s +.PHONY : mpc_demux.c.s + +mpc_reader.o: mpc_reader.c.o +.PHONY : mpc_reader.o + +# target to build an object file +mpc_reader.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.o +.PHONY : mpc_reader.c.o + +mpc_reader.i: mpc_reader.c.i +.PHONY : mpc_reader.i + +# target to preprocess a source file +mpc_reader.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.i +.PHONY : mpc_reader.c.i + +mpc_reader.s: mpc_reader.c.s +.PHONY : mpc_reader.s + +# target to generate assembly for a file +mpc_reader.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/mpc_reader.c.s +.PHONY : mpc_reader.c.s + +requant.o: requant.c.o +.PHONY : requant.o + +# target to build an object file +requant.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/requant.c.o +.PHONY : requant.c.o + +requant.i: requant.c.i +.PHONY : requant.i + +# target to preprocess a source file +requant.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/requant.c.i +.PHONY : requant.c.i + +requant.s: requant.c.s +.PHONY : requant.s + +# target to generate assembly for a file +requant.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/requant.c.s +.PHONY : requant.c.s + +streaminfo.o: streaminfo.c.o +.PHONY : streaminfo.o + +# target to build an object file +streaminfo.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.o +.PHONY : streaminfo.c.o + +streaminfo.i: streaminfo.c.i +.PHONY : streaminfo.i + +# target to preprocess a source file +streaminfo.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.i +.PHONY : streaminfo.c.i + +streaminfo.s: streaminfo.c.s +.PHONY : streaminfo.s + +# target to generate assembly for a file +streaminfo.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/streaminfo.c.s +.PHONY : streaminfo.c.s + +synth_filter.o: synth_filter.c.o +.PHONY : synth_filter.o + +# target to build an object file +synth_filter.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.o +.PHONY : synth_filter.c.o + +synth_filter.i: synth_filter.c.i +.PHONY : synth_filter.i + +# target to preprocess a source file +synth_filter.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.i +.PHONY : synth_filter.c.i + +synth_filter.s: synth_filter.c.s +.PHONY : synth_filter.s + +# target to generate assembly for a file +synth_filter.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcdec/CMakeFiles/mpcdec.dir/build.make libmpcdec/CMakeFiles/mpcdec.dir/synth_filter.c.s +.PHONY : synth_filter.c.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... mpcdec" + @echo "... __/common/crc32.o" + @echo "... __/common/crc32.i" + @echo "... __/common/crc32.s" + @echo "... huffman.o" + @echo "... huffman.i" + @echo "... huffman.s" + @echo "... mpc_bits_reader.o" + @echo "... mpc_bits_reader.i" + @echo "... mpc_bits_reader.s" + @echo "... mpc_decoder.o" + @echo "... mpc_decoder.i" + @echo "... mpc_decoder.s" + @echo "... mpc_demux.o" + @echo "... mpc_demux.i" + @echo "... mpc_demux.s" + @echo "... mpc_reader.o" + @echo "... mpc_reader.i" + @echo "... mpc_reader.s" + @echo "... requant.o" + @echo "... requant.i" + @echo "... requant.s" + @echo "... streaminfo.o" + @echo "... streaminfo.i" + @echo "... streaminfo.s" + @echo "... synth_filter.o" + @echo "... synth_filter.i" + @echo "... synth_filter.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/libmpcdec/Makefile.am b/libmpcdec/Makefile.am new file mode 100755 index 0000000..48f3835 --- /dev/null +++ b/libmpcdec/Makefile.am @@ -0,0 +1,19 @@ +EXTRA_DIST = CMakeLists.txt + +AM_CPPFLAGS = -I$(top_srcdir)/include + +if HAVE_VISIBILITY + AM_CFLAGS = -fvisibility=hidden +endif + +common_sources = ../common/crc32.c \ + ../common/huffman-bcl.c + +METASOURCES = AUTO +lib_LTLIBRARIES = libmpcdec.la +libmpcdec_la_SOURCES = huffman.c mpc_decoder.c mpc_reader.c \ + requant.c streaminfo.c synth_filter.c mpc_bits_reader.c mpc_demux.c \ + mpc_bits_reader.h huffman.h decoder.h internal.h requant.h mpcdec_math.h \ + $(common_sources) + +libmpcdec_la_LDFLAGS = -no-undefined -version-info 7:0:1 diff --git a/libmpcdec/README b/libmpcdec/README new file mode 100755 index 0000000..cb4657c --- /dev/null +++ b/libmpcdec/README @@ -0,0 +1,6 @@ +Musepack Decoder Library: + +run "./configure [--prefix=/usr]; make" + +To create a sample app using the musepack decoder library +Check ../mpcdec/mpcdec.c and ../include/mpc/mpcdec.h for more details. diff --git a/libmpcdec/cmake_install.cmake b/libmpcdec/cmake_install.cmake new file mode 100644 index 0000000..818be4b --- /dev/null +++ b/libmpcdec/cmake_install.cmake @@ -0,0 +1,50 @@ +# Install script for directory: /home/dewdude/musepack/musepack_src_r475/libmpcdec + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/home/dewdude/musepack/musepack_src_r475/libmpcdec/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/libmpcdec/decoder.h b/libmpcdec/decoder.h new file mode 100755 index 0000000..3813fc0 --- /dev/null +++ b/libmpcdec/decoder.h @@ -0,0 +1,101 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file decoder.h +#ifndef _MPCDEC_DECODER_H_ +#define _MPCDEC_DECODER_H_ +#ifdef WIN32 +#pragma once +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SEEKING_TABLE_SIZE 256u +// set it to SLOW_SEEKING_WINDOW to not use fast seeking +#define FAST_SEEKING_WINDOW 32 +// set it to FAST_SEEKING_WINDOW to only use fast seeking +#define SLOW_SEEKING_WINDOW 0x80000000 + +enum { + MPC_V_MEM = 2304, + MPC_DECODER_MEMSIZE = 16384, // overall buffer size +}; + +struct mpc_decoder_t { + /// @name internal state variables + //@{ + mpc_uint32_t stream_version; ///< Streamversion of stream + mpc_int32_t max_band; ///< Maximum band-index used in stream (0...31) + mpc_uint32_t ms; ///< Mid/side stereo (0: off, 1: on) + mpc_uint32_t channels; ///< Number of channels in stream + + mpc_uint64_t samples; ///< Number of samples in stream + + mpc_uint64_t decoded_samples; ///< Number of samples decoded from file begining + mpc_uint32_t samples_to_skip; ///< Number samples to skip (used for seeking) + mpc_int32_t last_max_band; ///< number of bands used in the last frame + + // randomizer state variables + mpc_uint32_t __r1; + mpc_uint32_t __r2; + + mpc_int32_t SCF_Index_L [32] [3]; + mpc_int32_t SCF_Index_R [32] [3]; // holds scalefactor-indices + mpc_quantizer Q [32]; // holds quantized samples + mpc_int32_t Res_L [32]; + mpc_int32_t Res_R [32]; // holds the chosen quantizer for each subband + mpc_bool_t DSCF_Flag_L [32]; + mpc_bool_t DSCF_Flag_R [32]; // differential SCF used? + mpc_int32_t SCFI_L [32]; + mpc_int32_t SCFI_R [32]; // describes order of transmitted SCF + mpc_bool_t MS_Flag[32]; // MS used? +#ifdef MPC_FIXED_POINT + mpc_uint8_t SCF_shift[256]; +#endif + + MPC_SAMPLE_FORMAT V_L[MPC_V_MEM + 960]; + MPC_SAMPLE_FORMAT V_R[MPC_V_MEM + 960]; + MPC_SAMPLE_FORMAT Y_L[36][32]; + MPC_SAMPLE_FORMAT Y_R[36][32]; + MPC_SAMPLE_FORMAT SCF[256]; ///< holds adapted scalefactors (for clipping prevention) + //@} +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libmpcdec/huffman.c b/libmpcdec/huffman.c new file mode 100755 index 0000000..52cdfd9 --- /dev/null +++ b/libmpcdec/huffman.c @@ -0,0 +1,358 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file huffman.c +/// Implementations of sv7/sv8 huffman decoding functions. +#include "huffman.h" + + +// sv7 huffman tables +static const mpc_huffman mpc_table_HuffHdr [10] = { +{0x8000, 1, 0}, {0x6000, 3, 1}, {0x5e00, 7, -4}, {0x5d80, 9, 3}, {0x5d00, 9, 4}, {0x5c00, 8, -5}, {0x5800, 6, 2}, {0x5000, 5, -3}, {0x4000, 4, -2}, {0x0, 2, -1} +}; +mpc_lut_data mpc_HuffHdr = {mpc_table_HuffHdr}; + +const mpc_huffman mpc_table_HuffSCFI [4] = { + {0x8000, 1, 1}, {0x6000, 3, 2}, {0x4000, 3, 0}, {0x0, 2, 3} +}; + +static const mpc_huffman mpc_table_HuffDSCF [16] = { + {0xf800, 5, 5}, {0xf000, 5, -4}, {0xe000, 4, 3}, {0xd000, 4, -3}, {0xc000, 4, 8}, {0xa000, 3, 1}, {0x9000, 4, 0}, {0x8800, 5, -5}, {0x8400, 6, 7}, {0x8000, 6, -7}, {0x6000, 3, -1}, {0x4000, 3, 2}, {0x3000, 4, 4}, {0x2800, 5, 6}, {0x2000, 5, -6}, {0x0, 3, -2} +}; +mpc_lut_data mpc_HuffDSCF = {mpc_table_HuffDSCF}; + +static const mpc_huffman mpc_table_HuffQ1 [2] [27] = { + { + {0xe000, 3, 13}, {0xdc00, 6, 26}, {0xd800, 6, 0}, {0xd400, 6, 20}, {0xd000, 6, 6}, {0xc000, 4, 14}, {0xb000, 4, 12}, {0xa000, 4, 4}, {0x9000, 4, 22}, {0x8c00, 6, 8}, {0x8800, 6, 18}, {0x8400, 6, 24}, {0x8000, 6, 2}, {0x7000, 4, 16}, {0x6000, 4, 10}, {0x5800, 5, 17}, {0x5000, 5, 9}, {0x4800, 5, 1}, {0x4000, 5, 25}, {0x3800, 5, 5}, {0x3000, 5, 21}, {0x2800, 5, 3}, {0x2000, 5, 11}, {0x1800, 5, 15}, {0x1000, 5, 23}, {0x800, 5, 19}, {0x0, 5, 7} + }, { + {0x8000, 1, 13}, {0x7e00, 7, 15}, {0x7c00, 7, 1}, {0x7a00, 7, 11}, {0x7800, 7, 7}, {0x7600, 7, 17}, {0x7400, 7, 25}, {0x7200, 7, 19}, {0x7180, 9, 8}, {0x7100, 9, 18}, {0x7080, 9, 2}, {0x7000, 9, 24}, {0x6e00, 7, 3}, {0x6c00, 7, 23}, {0x6a00, 7, 21}, {0x6800, 7, 5}, {0x6700, 8, 0}, {0x6600, 8, 26}, {0x6500, 8, 6}, {0x6400, 8, 20}, {0x6000, 6, 9}, {0x5000, 4, 14}, {0x4000, 4, 12}, {0x3000, 4, 4}, {0x2000, 4, 22}, {0x1000, 4, 16}, {0x0, 4, 10} + } +}; + +static const mpc_huffman mpc_table_HuffQ2 [2] [25] = { + { + {0xf000, 4, 13}, {0xe000, 4, 17}, {0xd000, 4, 7}, {0xc000, 4, 11}, {0xbc00, 6, 1}, {0xb800, 6, 23}, {0xb600, 7, 4}, {0xb400, 7, 20}, {0xb200, 7, 0}, {0xb000, 7, 24}, {0xa800, 5, 22}, {0xa000, 5, 10}, {0x8000, 3, 12}, {0x7800, 5, 2}, {0x7000, 5, 14}, {0x6000, 4, 6}, {0x5000, 4, 18}, {0x4000, 4, 8}, {0x3000, 4, 16}, {0x2800, 5, 9}, {0x2000, 5, 5}, {0x1800, 5, 15}, {0x1000, 5, 21}, {0x800, 5, 19}, {0x0, 5, 3} + }, { + {0xf800, 5, 18}, {0xf000, 5, 6}, {0xe800, 5, 8}, {0xe700, 8, 3}, {0xe6c0, 10, 24}, {0xe680, 10, 4}, {0xe640, 10, 0}, {0xe600, 10, 20}, {0xe400, 7, 23}, {0xe200, 7, 1}, {0xe000, 7, 19}, {0xd800, 5, 16}, {0xd600, 7, 15}, {0xd400, 7, 21}, {0xd200, 7, 9}, {0xd000, 7, 5}, {0xcc00, 6, 2}, {0xc800, 6, 10}, {0xc400, 6, 14}, {0xc000, 6, 22}, {0x8000, 2, 12}, {0x6000, 3, 13}, {0x4000, 3, 17}, {0x2000, 3, 11}, {0x0, 3, 7} + } +}; + +static const mpc_huffman mpc_table_HuffQ3 [2] [7] = { + { + {0xe000, 3, 1}, {0xd000, 4, 3}, {0xc000, 4, -3}, {0xa000, 3, 2}, {0x8000, 3, -2}, {0x4000, 2, 0}, {0x0, 2, -1} + }, { + {0xc000, 2, 0}, {0x8000, 2, -1}, {0x4000, 2, 1}, {0x3000, 4, -2}, {0x2800, 5, 3}, {0x2000, 5, -3}, {0x0, 3, 2} + } +}; + +static const mpc_huffman mpc_table_HuffQ4 [2] [9] = { + { + {0xe000, 3, 0}, {0xc000, 3, -1}, {0xa000, 3, 1}, {0x8000, 3, -2}, {0x6000, 3, 2}, {0x5000, 4, -4}, {0x4000, 4, 4}, {0x2000, 3, 3}, {0x0, 3, -3} + }, { + {0xe000, 3, 1}, {0xd000, 4, 2}, {0xc000, 4, -3}, {0x8000, 2, 0}, {0x6000, 3, -2}, {0x5000, 4, 3}, {0x4800, 5, -4}, {0x4000, 5, 4}, {0x0, 2, -1} + } +}; + +static const mpc_huffman mpc_table_HuffQ5 [2] [15] = { + { + {0xf000, 4, 2}, {0xe800, 5, 5}, {0xe400, 6, -7}, {0xe000, 6, 7}, {0xd000, 4, -3}, {0xc000, 4, 3}, {0xb800, 5, -6}, {0xb000, 5, 6}, {0xa000, 4, -4}, {0x9000, 4, 4}, {0x8000, 4, -5}, {0x6000, 3, 0}, {0x4000, 3, -1}, {0x2000, 3, 1}, {0x0, 3, -2} + }, { + {0xf000, 4, 3}, {0xe800, 5, 4}, {0xe600, 7, 6}, {0xe500, 8, -7}, {0xe400, 8, 7}, {0xe000, 6, -6}, {0xc000, 3, 0}, {0xa000, 3, -1}, {0x8000, 3, 1}, {0x6000, 3, -2}, {0x4000, 3, 2}, {0x3800, 5, -5}, {0x3000, 5, 5}, {0x2000, 4, -4}, {0x0, 3, -3} + } +}; + +static const mpc_huffman mpc_table_HuffQ6 [2] [31] = { + { + {0xf800, 5, 3}, {0xf000, 5, -4}, {0xec00, 6, -11}, {0xe800, 6, 12}, {0xe000, 5, 4}, {0xd800, 5, 6}, {0xd000, 5, -5}, {0xc800, 5, 5}, {0xc000, 5, 7}, {0xb800, 5, -7}, {0xb400, 6, -12}, {0xb000, 6, -13}, {0xa800, 5, -6}, {0xa000, 5, 8}, {0x9800, 5, -8}, {0x9000, 5, 9}, {0x8800, 5, -9}, {0x8400, 6, 13}, {0x8200, 7, -15}, {0x8000, 7, 15}, {0x7000, 4, 0}, {0x6800, 5, -10}, {0x6000, 5, 10}, {0x5000, 4, -1}, {0x4000, 4, 2}, {0x3000, 4, 1}, {0x2000, 4, -2}, {0x1c00, 6, 14}, {0x1800, 6, -14}, {0x1000, 5, 11}, {0x0, 4, -3} + }, { + {0xf800, 5, -6}, {0xf000, 5, 6}, {0xe000, 4, 1}, {0xd000, 4, -1}, {0xce00, 7, 10}, {0xcc00, 7, -10}, {0xcb00, 8, -11}, {0xca80, 9, -12}, {0xca60, 11, 13}, {0xca58, 13, 15}, {0xca50, 13, -14}, {0xca48, 13, 14}, {0xca40, 13, -15}, {0xca00, 10, -13}, {0xc900, 8, 11}, {0xc800, 8, 12}, {0xc400, 6, -9}, {0xc000, 6, 9}, {0xb000, 4, -2}, {0xa000, 4, 2}, {0x9000, 4, 3}, {0x8000, 4, -3}, {0x7800, 5, -7}, {0x7000, 5, 7}, {0x6000, 4, -4}, {0x5000, 4, 4}, {0x4800, 5, -8}, {0x4000, 5, 8}, {0x3000, 4, 5}, {0x2000, 4, -5}, {0x0, 3, 0} + } +}; + +static const mpc_huffman mpc_table_HuffQ7 [2] [63] = { + { + {0xfc00, 6, 7}, {0xf800, 6, 8}, {0xf400, 6, 9}, {0xf000, 6, -8}, {0xec00, 6, 11}, {0xea00, 7, 21}, {0xe900, 8, -28}, {0xe800, 8, 28}, {0xe400, 6, -9}, {0xe200, 7, -22}, {0xe000, 7, -21}, {0xdc00, 6, -10}, {0xd800, 6, -11}, {0xd400, 6, 10}, {0xd000, 6, 12}, {0xcc00, 6, -13}, {0xca00, 7, 22}, {0xc800, 7, 23}, {0xc400, 6, -12}, {0xc000, 6, 13}, {0xbc00, 6, 14}, {0xb800, 6, -14}, {0xb600, 7, -23}, {0xb500, 8, -29}, {0xb400, 8, 29}, {0xb000, 6, -15}, {0xac00, 6, 15}, {0xa800, 6, 16}, {0xa400, 6, -16}, {0xa200, 7, -24}, {0xa000, 7, 24}, {0x9c00, 6, 17}, {0x9a00, 7, -25}, {0x9900, 8, -30}, {0x9800, 8, 30}, {0x9400, 6, -17}, {0x9000, 6, 18}, {0x8c00, 6, -18}, {0x8a00, 7, 25}, {0x8800, 7, 26}, {0x8400, 6, 19}, {0x8200, 7, -26}, {0x8000, 7, -27}, {0x7800, 5, 2}, {0x7400, 6, -19}, {0x7000, 6, 20}, {0x6800, 5, -1}, {0x6700, 8, -31}, {0x6600, 8, 31}, {0x6400, 7, 27}, {0x6000, 6, -20}, {0x5800, 5, 1}, {0x5000, 5, -5}, {0x4800, 5, -3}, {0x4000, 5, 3}, {0x3800, 5, 0}, {0x3000, 5, -2}, {0x2800, 5, -4}, {0x2000, 5, 4}, {0x1800, 5, 5}, {0x1000, 5, -6}, {0x800, 5, 6}, {0x0, 5, -7} + }, { + {0xf800, 5, -1}, {0xf000, 5, 2}, {0xe800, 5, -2}, {0xe000, 5, 3}, {0xdf00, 8, -20}, {0xdec0, 10, 24}, {0xdebc, 14, 28}, {0xdeb8, 14, -28}, {0xdeb4, 14, -30}, {0xdeb0, 14, 30}, {0xdea0, 12, -27}, {0xde9c, 14, 29}, {0xde98, 14, -29}, {0xde94, 14, 31}, {0xde90, 14, -31}, {0xde80, 12, 27}, {0xde00, 9, -22}, {0xdc00, 7, -17}, {0xd800, 6, -11}, {0xd000, 5, -3}, {0xc800, 5, 4}, {0xc000, 5, -4}, {0xbe00, 7, 17}, {0xbd00, 8, 20}, {0xbc80, 9, 22}, {0xbc40, 10, -25}, {0xbc00, 10, -26}, {0xb800, 6, 12}, {0xb000, 5, 5}, {0xa800, 5, -5}, {0xa000, 5, 6}, {0x9800, 5, -6}, {0x9400, 6, -12}, {0x9200, 7, -18}, {0x9000, 7, 18}, {0x8c00, 6, 13}, {0x8800, 6, -13}, {0x8000, 5, -7}, {0x7c00, 6, 14}, {0x7b00, 8, 21}, {0x7a00, 8, -21}, {0x7800, 7, -19}, {0x7000, 5, 7}, {0x6800, 5, 8}, {0x6400, 6, -14}, {0x6000, 6, -15}, {0x5800, 5, -8}, {0x5400, 6, 15}, {0x5200, 7, 19}, {0x51c0, 10, 25}, {0x5180, 10, 26}, {0x5100, 9, -23}, {0x5080, 9, 23}, {0x5000, 9, -24}, {0x4800, 5, -9}, {0x4000, 5, 9}, {0x3c00, 6, 16}, {0x3800, 6, -16}, {0x3000, 5, 10}, {0x2000, 4, 0}, {0x1800, 5, -10}, {0x1000, 5, 11}, {0x0, 4, 1} + } +}; + +mpc_lut_data mpc_HuffQ [7] [2] = { + {{mpc_table_HuffQ1[0]}, {mpc_table_HuffQ1[1]}}, + {{mpc_table_HuffQ2[0]}, {mpc_table_HuffQ2[1]}}, + {{mpc_table_HuffQ3[0]}, {mpc_table_HuffQ3[1]}}, + {{mpc_table_HuffQ4[0]}, {mpc_table_HuffQ4[1]}}, + {{mpc_table_HuffQ5[0]}, {mpc_table_HuffQ5[1]}}, + {{mpc_table_HuffQ6[0]}, {mpc_table_HuffQ6[1]}}, + {{mpc_table_HuffQ7[0]}, {mpc_table_HuffQ7[1]}} +}; + + +// sv8 huffman tables +static const mpc_huffman mpc_huff_SCFI_1 [3] = { + {0x8000, 1, 1}, {0x4000, 2, 2}, {0x0, 3, 3} +}; // 3 +static const mpc_int8_t mpc_sym_SCFI_1 [4] = { + 2, 3, 1, 0 +}; +static const mpc_huffman mpc_huff_SCFI_2 [5] = { + {0x8000, 2, 3}, {0x4000, 3, 5}, {0x1800, 5, 11}, {0x400, 6, 14}, {0x0, 7, 15} +}; // 5 +static const mpc_int8_t mpc_sym_SCFI_2 [16] = { + 15, 10, 14, 11, 13, 9, 7, 6, 5, 12, 8, 3, 2, 0, 4, 1 +}; +mpc_can_data mpc_can_SCFI[2] = {{mpc_huff_SCFI_1, mpc_sym_SCFI_1}, {mpc_huff_SCFI_2, mpc_sym_SCFI_2}}; + +static const mpc_huffman mpc_huff_DSCF_1 [12] = { + {0xa000, 3, 7}, {0x4000, 4, 12}, {0x2800, 5, 16}, {0x1800, 6, 21}, {0xe00, 7, 27}, {0x700, 8, 34}, {0x380, 9, 41}, {0x140, 10, 48}, {0x80, 11, 53}, {0x30, 12, 57}, {0x18, 13, 60}, {0x0, 14, 63} +}; // 12 +static const mpc_int8_t mpc_sym_DSCF_1 [64] = { + 35, 34, 33, 36, 32, 30, 29, 27, 26, 37, 28, 25, 39, 38, 24, 23, 40, 22, 21, 20, 19, 43, 42, 41, 18, 17, 16, 15, 46, 45, 44, 14, 13, 12, 11, 49, 48, 47, 31, 10, 9, 8, 7, 6, 52, 51, 50, 5, 4, 3, 54, 53, 2, 1, 0, 57, 56, 55, 63, 62, 61, 60, 59, 58 +}; +static const mpc_huffman mpc_huff_DSCF_2 [13] = { + {0x6000, 3, 7}, {0x3000, 4, 10}, {0x1800, 5, 13}, {0x1000, 6, 16}, {0xa00, 7, 20}, {0x600, 8, 25}, {0x380, 9, 31}, {0x1c0, 10, 38}, {0xe0, 11, 45}, {0x50, 12, 52}, {0x20, 13, 57}, {0xc, 14, 61}, {0x0, 15, 64} +}; // 13 +static const mpc_int8_t mpc_sym_DSCF_2 [65] = { + 33, 32, 31, 30, 29, 34, 28, 27, 36, 35, 26, 37, 25, 38, 24, 23, 40, 39, 22, 21, 42, 41, 20, 19, 18, 45, 44, 43, 17, 16, 15, 14, 48, 47, 46, 13, 12, 11, 10, 64, 52, 51, 50, 49, 9, 8, 7, 6, 55, 54, 53, 5, 4, 3, 58, 57, 56, 2, 1, 63, 62, 61, 60, 59, 0 +}; +mpc_can_data mpc_can_DSCF[2] = {{mpc_huff_DSCF_1, mpc_sym_DSCF_1}, {mpc_huff_DSCF_2, mpc_sym_DSCF_2}}; + +static const mpc_huffman mpc_huff_Bands [12] = { + {0x8000, 1, 1}, {0x4000, 2, 2}, {0x2000, 3, 3}, {0x1000, 5, 6}, {0x800, 6, 8}, {0x600, 7, 10}, {0x300, 8, 13}, {0x200, 9, 16}, {0x140, 10, 20}, {0xc0, 11, 25}, {0x10, 12, 31}, {0x0, 13, 32} +}; // 12 +static const mpc_int8_t mpc_sym_Bands [33] = { + 0, 32, 1, 31, 2, 30, 3, 4, 29, 6, 5, 28, 7, 27, 26, 8, 25, 24, 23, 9, 22, 21, 20, 18, 17, 16, 15, 14, 12, 11, 10, 19, 13 +}; +mpc_can_data mpc_can_Bands = {mpc_huff_Bands, mpc_sym_Bands}; + +static const mpc_huffman mpc_huff_Res_1 [16] = { + {0x8000, 1, 1}, {0x4000, 2, 2}, {0x2000, 3, 3}, {0x1000, 4, 4}, {0x800, 5, 5}, {0x400, 6, 6}, {0x200, 7, 7}, {0x100, 8, 8}, {0x80, 9, 9}, {0x40, 10, 10}, {0x20, 11, 11}, {0x10, 12, 12}, {0x8, 13, 13}, {0x4, 14, 14}, {0x2, 15, 15}, {0x0, 16, 16} +}; // 16 +static const mpc_int8_t mpc_sym_Res_1 [17] = { + 0, 1, 16, 2, 3, 4, 5, 15, 6, 7, 8, 9, 10, 11, 12, 14, 13 +}; +static const mpc_huffman mpc_huff_Res_2 [12] = { + {0x4000, 2, 3}, {0x2000, 3, 4}, {0x1000, 4, 5}, {0x800, 5, 6}, {0x400, 6, 7}, {0x200, 7, 8}, {0x100, 8, 9}, {0x80, 9, 10}, {0x40, 10, 11}, {0x20, 11, 12}, {0x10, 12, 13}, {0x0, 14, 16} +}; // 12 +static const mpc_int8_t mpc_sym_Res_2 [17] = { + 16, 1, 0, 2, 15, 3, 14, 4, 5, 13, 6, 12, 7, 11, 10, 9, 8 +}; +mpc_can_data mpc_can_Res[2] = {{mpc_huff_Res_1, mpc_sym_Res_1}, {mpc_huff_Res_2, mpc_sym_Res_2}}; + +static const mpc_huffman mpc_huff_Q1 [10] = { + {0x6000, 3, 7}, {0x1000, 4, 10}, {0x800, 5, 11}, {0x400, 6, 12}, {0x200, 7, 13}, {0x100, 8, 14}, {0x80, 9, 15}, {0x40, 10, 16}, {0x20, 11, 17}, {0x0, 12, 18} +}; // 10 +static const mpc_int8_t mpc_sym_Q1 [19] = { + 7, 6, 5, 4, 3, 10, 9, 8, 2, 1, 11, 0, 12, 13, 14, 15, 16, 18, 17 +}; +mpc_can_data mpc_can_Q1 = {mpc_huff_Q1, mpc_sym_Q1}; + +static const mpc_huffman mpc_huff_Q2_1 [10] = { + {0xe000, 3, 7}, {0x8000, 4, 14}, {0x3c00, 6, 38}, {0x2a00, 7, 53}, {0x1200, 8, 74}, {0x600, 9, 92}, {0x3c0, 10, 104}, {0x60, 11, 119}, {0x20, 12, 122}, {0x0, 13, 124} +}; // 10 +static const mpc_int8_t mpc_sym_Q2_1 [125] = { + 62, 87, 67, 63, 61, 57, 37, 93, 92, 88, 86, 83, 82, 81, 68, 66, 58, 56, 42, 41, 38, 36, 32, 31, 112, 91, 72, 64, 60, 52, 43, 33, 12, 117, 113, 111, 107, 97, 89, 85, 77, 73, 71, 69, 65, 59, 55, 53, 51, 47, 39, 35, 27, 17, 13, 11, 7, 118, 116, 108, 106, 98, 96, 94, 90, 84, 80, 78, 76, 48, 46, 44, 40, 34, 30, 28, 26, 18, 16, 8, 6, 122, 110, 102, 74, 70, 54, 50, 22, 2, 123, 121, 119, 115, 114, 109, 105, 103, 101, 99, 95, 79, 75, 49, 45, 29, 25, 23, 21, 19, 15, 14, 10, 9, 5, 3, 1, 124, 104, 20, 0, 120, 100, 24, 4 +}; +static const mpc_huffman mpc_huff_Q2_2 [9] = { + {0xf000, 4, 15}, {0x7000, 5, 30}, {0x4800, 6, 44}, {0x3c00, 7, 62}, {0xc00, 8, 92}, {0x780, 9, 104}, {0xc0, 10, 119}, {0x40, 11, 122}, {0x0, 12, 124} +}; // 9 +static const mpc_int8_t mpc_sym_Q2_2 [125] = { + 62, 92, 87, 86, 82, 68, 67, 66, 63, 61, 58, 57, 56, 42, 38, 37, 32, 93, 91, 88, 83, 81, 43, 41, 36, 33, 31, 112, 72, 64, 60, 52, 12, 118, 117, 116, 113, 111, 108, 107, 106, 98, 97, 96, 94, 90, 89, 85, 84, 80, 78, 77, 76, 73, 71, 69, 65, 59, 55, 53, 51, 48, 47, 46, 44, 40, 39, 35, 34, 30, 28, 27, 26, 18, 17, 16, 13, 11, 8, 7, 6, 122, 110, 74, 70, 54, 50, 22, 14, 2, 123, 121, 119, 115, 114, 109, 105, 103, 102, 101, 99, 95, 79, 75, 49, 45, 29, 25, 23, 21, 19, 15, 10, 9, 5, 3, 1, 124, 104, 20, 0, 120, 100, 24, 4 +}; + +static const mpc_huffman mpc_huff_Q3 [7] = { + {0xe000, 3, 7}, {0x8000, 4, 14}, {0x5000, 5, 22}, {0x2400, 6, 32}, {0xa00, 7, 41}, {0x200, 8, 46}, {0x0, 9, 48} +}; // 7 +static const mpc_int8_t mpc_sym_Q3 [49] = { + 0, 17, 16, 1, 15, -16, -1, 32, 31, 2, 14, -15, -32, 34, 33, 47, 46, 18, 30, -14, -2, -31, -17, -18, 49, 48, 63, 19, 29, 3, 13, -13, -3, -30, -47, -48, -33, 50, 62, 35, 45, -29, -19, -46, -34, 51, 61, -45, -35 +}; + +static const mpc_huffman mpc_huff_Q4 [8] = { + {0xf000, 4, 15}, {0x9000, 5, 30}, {0x3400, 6, 48}, {0x1800, 7, 61}, {0x500, 8, 73}, {0x100, 9, 78}, {0x0, 10, 80}, {0x0, 0, 90} +}; // 8 +static const mpc_int8_t mpc_sym_Q4 [91] = { + 0, 32, 17, 16, 31, 2, 1, 15, 14, -15, -16, -1, -32, 49, 48, 34, 33, 47, 46, 19, 18, 30, 29, 3, 13, -13, -14, -2, -3, -30, -31, -17, -18, -47, -48, -33, 64, 50, 63, 62, 35, 45, 4, 12, -29, -19, -46, -34, -64, -49, 66, 65, 79, 78, 51, 61, 36, 44, 20, 28, -12, -4, -28, -20, -45, -35, -62, -63, -50, 67, 77, 52, 60, -44, -36, -61, -51, 68, 76, -60, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +static const mpc_huffman mpc_huff_Q5_1 [6] = { + {0xc000, 2, 3}, {0x4000, 3, 6}, {0x2000, 4, 8}, {0x1000, 5, 10}, {0x800, 6, 12}, {0x0, 7, 14} +}; // 6 +static const mpc_int8_t mpc_sym_Q5_1 [15] = { + 0, 2, 1, -1, -2, 3, -3, 4, -4, 5, -5, 7, 6, -6, -7 +}; +static const mpc_huffman mpc_huff_Q5_2 [4] = { + {0x6000, 3, 7}, {0x2000, 4, 10}, {0x1000, 5, 12}, {0x0, 6, 14} +}; // 4 +static const mpc_int8_t mpc_sym_Q5_2 [15] = { + 2, 1, 0, -1, -2, 4, 3, -3, -4, 5, -5, 7, 6, -6, -7 +}; + +static const mpc_huffman mpc_huff_Q6_1 [8] = { + {0xc000, 2, 3}, {0x8000, 3, 6}, {0x4000, 4, 10}, {0x2800, 5, 14}, {0xc00, 6, 19}, {0x800, 7, 22}, {0x400, 8, 26}, {0x0, 9, 30} +}; // 8 +static const mpc_int8_t mpc_sym_Q6_1 [31] = { + 0, 1, -1, 3, 2, -2, -3, 4, -4, -5, 8, 7, 6, 5, -6, -7, -8, 9, -9, 11, 10, -10, -11, 15, 14, 13, 12, -12, -13, -14, -15 +}; +static const mpc_huffman mpc_huff_Q6_2 [5] = { + {0x5000, 4, 15}, {0x2000, 5, 20}, {0x1000, 6, 24}, {0x400, 7, 28}, {0x0, 8, 30} +}; // 5 +static const mpc_int8_t mpc_sym_Q6_2 [31] = { + 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, 8, 7, 6, -6, -7, -8, 10, 9, -9, -10, 13, 12, 11, -11, -12, -13, 15, 14, -14, -15 +}; + +static const mpc_huffman mpc_huff_Q7_1 [9] = { + {0xc000, 2, 3}, {0x8000, 3, 6}, {0x6000, 4, 10}, {0x4000, 5, 16}, {0x2800, 6, 24}, {0x1400, 7, 34}, {0xa00, 8, 44}, {0x400, 9, 54}, {0x0, 10, 62} +}; // 9 +static const mpc_int8_t mpc_sym_Q7_1 [63] = { + 0, 1, -1, 2, -2, 4, 3, -3, -4, 7, 6, 5, -5, -6, -7, 13, 11, 10, 9, 8, -8, -9, -10, -11, -12, 17, 16, 15, 14, 12, -13, -14, -15, -16, -17, 28, 27, 21, 20, 19, 18, -18, -19, -20, -21, -27, -28, 31, 30, 29, 26, 25, 24, 23, 22, -22, -23, -24, -25, -26, -29, -30, -31 +}; +static const mpc_huffman mpc_huff_Q7_2 [5] = { + {0x6000, 5, 31}, {0x2400, 6, 43}, {0x1000, 7, 52}, {0x200, 8, 60}, {0x0, 9, 62} +}; // 5 +static const mpc_int8_t mpc_sym_Q7_2 [63] = { + 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, 17, 16, 15, 14, 13, 12, 11, -10, -11, -12, -13, -14, -15, -16, -17, 22, 21, 20, 19, 18, -18, -19, -20, -21, -22, 29, 28, 27, 26, 25, 24, 23, -23, -24, -25, -26, -27, -28, -29, 31, 30, -30, -31 +}; + +static const mpc_huffman mpc_huff_Q8_1 [11] = { + {0xc000, 2, 3}, {0x8000, 3, 6}, {0x7000, 4, 10}, {0x5800, 5, 17}, {0x3800, 6, 28}, {0x2800, 7, 42}, {0x1900, 8, 62}, {0xd00, 9, 87}, {0x280, 10, 113}, {0x60, 11, 123}, {0x0, 12, 126} +}; // 11 +static const mpc_int8_t mpc_sym_Q8_1 [127] = { + 0, 1, -1, -2, 3, 2, -3, 7, 6, 5, 4, -4, -5, -6, -7, 11, 10, 9, 8, -8, -9, -10, -11, 19, 18, 17, 16, 15, 14, 13, 12, -12, -13, -14, -15, -16, -17, -19, 56, 55, 31, 28, 27, 26, 25, 24, 23, 22, 21, 20, -18, -20, -21, -22, -23, -24, -25, -26, -27, -33, -54, -56, 63, 62, 61, 60, 59, 58, 57, 54, 53, 43, 40, 39, 38, 37, 36, 35, 34, 33, 32, 30, 29, -28, -29, -30, -31, -32, -34, -35, -36, -37, -38, -39, -40, -41, -43, -53, -55, -57, -58, -59, -60, -61, 49, 47, 46, 45, 44, 42, 41, -42, -44, -45, -46, -47, -48, -49, -50, -62, -63, 52, 51, 50, 48, -51, -52 +}; +static const mpc_huffman mpc_huff_Q8_2 [4] = { + {0x9800, 6, 63}, {0x2a00, 7, 101}, {0x400, 8, 122}, {0x0, 9, 126} +}; // 4 +static const mpc_int8_t mpc_sym_Q8_2 [127] = { + 13, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 12, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32, -33, -34, -35, -36, -37, -38, -39, -40, -41, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, -42, -43, -44, -45, -46, -47, -48, -49, -50, -51, -52, -53, -54, -55, -56, -57, -58, -59, 63, 62, 61, 60, -60, -61, -62, -63 +}; + +static const mpc_huffman mpc_huff_Q9up [6] = { + {0xf800, 6, 63}, {0xac00, 7, 125}, {0x2600, 8, -45}, {0x280, 9, -7}, {0x40, 10, -2}, {0x0, 11, -1} +}; // 6 +static const mpc_int8_t mpc_sym_Q9up [256] = { + -128, 127, -108, -110, -111, -112, -113, -114, -115, -116, -117, -118, -119, -120, -121, -122, -123, -124, -125, -126, -127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, -44, -45, -46, -47, -48, -49, -50, -51, -52, -53, -54, -55, -56, -57, -58, -59, -60, -61, -62, -63, -64, -65, -66, -67, -68, -69, -70, -71, -72, -73, -74, -75, -76, -77, -78, -79, -80, -81, -82, -83, -84, -85, -86, -87, -88, -89, -90, -91, -92, -93, -94, -95, -96, -97, -98, -99, -100, -101, -102, -103, -104, -105, -106, -107, -109, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 40, 20, 19, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32, -33, -34, -35, -36, -37, -38, -39, -40, -41, -42, -43, 41, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, -3, -4, -5, -6, 4, 3, 2, 1, 0, -1, -2 +}; +mpc_can_data mpc_can_Q9up = {mpc_huff_Q9up, mpc_sym_Q9up}; + + +mpc_can_data mpc_can_Q [6][2] = { + {{mpc_huff_Q2_1, mpc_sym_Q2_1}, {mpc_huff_Q2_2, mpc_sym_Q2_2}}, + {{mpc_huff_Q3, mpc_sym_Q3}, {mpc_huff_Q4, mpc_sym_Q4}}, + {{mpc_huff_Q5_1, mpc_sym_Q5_1}, {mpc_huff_Q5_2, mpc_sym_Q5_2}}, + {{mpc_huff_Q6_1, mpc_sym_Q6_1}, {mpc_huff_Q6_2, mpc_sym_Q6_2}}, + {{mpc_huff_Q7_1, mpc_sym_Q7_1}, {mpc_huff_Q7_2, mpc_sym_Q7_2}}, + {{mpc_huff_Q8_1, mpc_sym_Q8_1}, {mpc_huff_Q8_2, mpc_sym_Q8_2}} +}; + +static void huff_fill_lut(const mpc_huffman * table, mpc_huff_lut * lut, const int bits) +{ + int i, idx = 0; + const int shift = 16 - bits; + for (i = (1 << bits) - 1; i >= 0 ; i--) { + if ((table[idx].Code >> shift) < i) { + lut[i].Length = table[idx].Length; + lut[i].Value = table[idx].Value; + } else { + if (table[idx].Length <= bits) { + lut[i].Length = table[idx].Length; + lut[i].Value = table[idx].Value; + } else { + lut[i].Length = 0; + lut[i].Value = idx; + } + if (i != 0) + do { + idx++; + } while ((table[idx].Code >> shift) == i); + } + } +} + +static void can_fill_lut(mpc_can_data * data, const int bits) +{ + int i, idx = 0; + const int shift = 16 - bits; + const mpc_huffman * table = data->table; + const mpc_int8_t * sym = data->sym; + mpc_huff_lut * lut = data->lut; + for (i = (1 << bits) - 1; i >= 0 ; i--) { + if ((table[idx].Code >> shift) < i) { + if (table[idx].Length <= bits) { + lut[i].Length = table[idx].Length; + lut[i].Value = sym[(table[idx].Value - (i >> (bits - table[idx].Length))) & 0xFF]; + } else { + lut[i].Length = 0; + lut[i].Value = idx; + } + } else { + if (table[idx].Length <= bits) { + lut[i].Length = table[idx].Length; + lut[i].Value = sym[(table[idx].Value - (i >> (bits - table[idx].Length))) & 0xFF]; + } else { + lut[i].Length = 0; + lut[i].Value = idx; + } + if (i != 0) + do { + idx++; + } while ((table[idx].Code >> shift) == i); + } + } +} + +void huff_init_lut(const int bits) +{ + int i, j; + + huff_fill_lut(mpc_HuffDSCF.table, mpc_HuffDSCF.lut, bits); + huff_fill_lut(mpc_HuffHdr.table, mpc_HuffHdr.lut, bits); + + can_fill_lut(&mpc_can_SCFI[0], bits); + can_fill_lut(&mpc_can_SCFI[1], bits); + can_fill_lut(&mpc_can_DSCF[0], bits); + can_fill_lut(&mpc_can_DSCF[1], bits); + can_fill_lut(&mpc_can_Res[0], bits); + can_fill_lut(&mpc_can_Res[1], bits); + can_fill_lut(&mpc_can_Q1, bits); + can_fill_lut(&mpc_can_Q9up, bits); + + + for( i = 0; i < 7; i++){ + for( j = 0; j < 2; j++){ + if (i != 6) can_fill_lut(&mpc_can_Q[i][j], bits); + huff_fill_lut(mpc_HuffQ[i][j].table, mpc_HuffQ[i][j].lut, bits); + } + } +} + + diff --git a/libmpcdec/huffman.h b/libmpcdec/huffman.h new file mode 100755 index 0000000..5b12bff --- /dev/null +++ b/libmpcdec/huffman.h @@ -0,0 +1,83 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file huffman.h +/// Data structures and functions for huffman coding. + +#ifndef _MPCDEC_HUFFMAN_H_ +#define _MPCDEC_HUFFMAN_H_ +#ifdef WIN32 +#pragma once +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +// LUT size parameter, LUT size is 1 << LUT_DEPTH +#define LUT_DEPTH 6 + +/// Huffman table entry. +typedef struct mpc_huffman_t { + mpc_uint16_t Code; + mpc_uint8_t Length; + mpc_int8_t Value; +} mpc_huffman; + +/// Huffman LUT entry. +typedef struct mpc_huff_lut_t { + mpc_uint8_t Length; + mpc_int8_t Value; +} mpc_huff_lut; + +/// Type used for huffman LUT decoding +typedef struct mpc_lut_data_t { + mpc_huffman const * const table; + mpc_huff_lut lut[1 << LUT_DEPTH]; +} mpc_lut_data; + +/// Type used for canonical huffman decoding +typedef struct mpc_can_data_t { + mpc_huffman const * const table; + mpc_int8_t const * const sym; + mpc_huff_lut lut[1 << LUT_DEPTH]; +} mpc_can_data; + +void huff_init_lut(const int bits); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libmpcdec/internal.h b/libmpcdec/internal.h new file mode 100755 index 0000000..48d78c1 --- /dev/null +++ b/libmpcdec/internal.h @@ -0,0 +1,110 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file internal.h +/// Definitions and structures used only internally by the libmpcdec. +#ifndef _MPCDEC_INTERNAL_H_ +#define _MPCDEC_INTERNAL_H_ +#ifdef WIN32 +#pragma once +#endif +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/// Big/little endian 32 bit byte swapping routine. +static mpc_inline +mpc_uint32_t mpc_swap32(mpc_uint32_t val) { + return (((val & 0xFF000000) >> 24) | ((val & 0x00FF0000) >> 8) + | ((val & 0x0000FF00) << 8) | ((val & 0x000000FF) << 24)); +} + +typedef struct mpc_block_t { + char key[2]; // block key + mpc_uint64_t size; // block size minus the block header size +} mpc_block; + +#define MAX_FRAME_SIZE 4352 +#define DEMUX_BUFFER_SIZE (65536 - MAX_FRAME_SIZE) // need some space as sand box + +struct mpc_demux_t { + mpc_reader * r; + mpc_decoder * d; + mpc_streaminfo si; + + // buffer + mpc_uint8_t buffer[DEMUX_BUFFER_SIZE + MAX_FRAME_SIZE]; + mpc_size_t bytes_total; + mpc_bits_reader bits_reader; + mpc_int32_t block_bits; /// bits remaining in current audio block + mpc_uint_t block_frames; /// frames remaining in current audio block + + // seeking + mpc_seek_t * seek_table; + mpc_uint_t seek_pwr; /// distance between 2 frames in seek_table = 2^seek_pwr + mpc_uint32_t seek_table_size; /// used size in seek_table + + // chapters + mpc_seek_t chap_pos; /// supposed position of the first chapter block + mpc_int_t chap_nb; /// number of chapters (-1 if unknown, 0 if no chapter) + mpc_chap_info * chap; /// chapters position and tag + +}; + +/** + * checks if a block key is valid + * @param key the two caracters key to check + * @return MPC_STATUS_FAIL if the key is invalid, MPC_STATUS_OK else + */ +static mpc_inline mpc_status mpc_check_key(char * key) +{ + if (key[0] < 65 || key[0] > 90 || key[1] < 65 || key[1] > 90) + return MPC_STATUS_FAIL; + return MPC_STATUS_OK; +} + +/// helper functions used by multiple files +mpc_uint32_t mpc_random_int(mpc_decoder *d); // in synth_filter.c +void mpc_decoder_init_quant(mpc_decoder *d, double scale_factor); +void mpc_decoder_synthese_filter_float(mpc_decoder *d, MPC_SAMPLE_FORMAT* OutData, mpc_int_t channels); + +#define MPC_IS_FAILURE(X) ((int)(X) < (int)MPC_STATUS_OK) +#define MPC_AUTO_FAIL(X) { mpc_status s = (X); if (MPC_IS_FAILURE(s)) return s; } + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libmpcdec/libmpcdec.so b/libmpcdec/libmpcdec.so new file mode 100755 index 0000000000000000000000000000000000000000..cfe78275acc4b9087f28909ce406af0f8d9b3d18 GIT binary patch literal 88392 zcmeFaePC3@^*_9uERbOI21Si6YP73n0d1maiJ<1fhTO%C1O-7w0Rt(v2uKn|MGb5s zT(1{Xwd%L8RNHTBZJ+Y{*#_Ufu**vlu*Hy6L~S*Iz%GdLQXxc0exJ|G+|At;`||wp zJkKA`!sgyNbLPyMGiT16Id|^tW2ND78D6i)`DA*o_w=Pao)VRjb#ouI#52-!8gkC} z3=z0Kr|>DRb1slT=jzFoX;SOQ+kF1PCtv(cUTc3N)6UghPSn??@YAjp*Gsr_b(iap ztW`r~JJPRH&y(d=U8LwLJ~NPHxf$ona_QGL3HCVGELEI5^7|VSIK{P4f<4YPz1((H zF8%6P<(w<);OCazHM9Qj)K{U(b!N(jq+frh+UH!I`X-_r%8PP;xeQhIkM{Fq)iu@4SV>yv;Cn8_SiCDbq;%5h)i-S@?fH1Z*z61EANF=m7`w)7cx&&bbMqI@ zTlrpRzlI-F+FE#U&ptJFV)YzhCvnz$^b$^UAgjnO_cC zcKPLc;(Ke~{`|fRK5Bn**S4RpUh&+O<3GQ6RsZ}4&L6FjrG z*6;iF+Z&!<{Kc2v6X#z#`S^o3%n!eebnM27A3Rm`)A+}i{kUk$=;4Q}elX(Vj|zVF zl;^~=3r=5fZ{Xg^&82tTw|!^huI7*LDjxLZBj<0R2)_37AbRD@Q{++)^G^Y<#CSUu z{^MT*@A(?~=Y9?Rb134e=->G@^g-s7eE#-p=*;|@dZ&C1{Rv+Kf9Y%B5eznG47Es~AXO6sh<|z0|4qSZt$&05&v^U2SeM|zD zD&u$q;}bcwup{)X!y z&l#TR#}eS^MknYHo_|;&X36Wf6+bhckmu5U z5eaAe`N>msI$xCO!$|Y<2EMF!#znH;sM3>uNK#K$DShKSz)z==&q1Zn_bdF*kw^Rz zh0k{K^NHd!KQ7Z^V#94e#m`E`59bkne&yh+b~*Yv8F{4Nc8NgqOqJ|<$`n5(mV{4~ z7tjAv@VXyKz!(KDfP5&o8H#>b!H+8Z1&W_56#RSzkJ=KjM8UT^d>&K)(B&uK$obbY zy-mR{$CdnhnkD>*ym&U?D&&8;Y|w%MG9%*DtJ-x);oFK%r|REf3SNQYq+d}W0b>+= zF|MRvGF;Mk?9xm{f2E@D_$|*Xc*P1yV40$`MbW7nD(N_O&oh1ccki7)Z+dmj%!M`6 zr+cP{CY4X0HGARg@7_~gGkf8r^09O0&zn7I=G}8=%e+(POs`xtb9&W1^JdPy=b_o2 zIki<))9;ygPtEkXwKbl57gSC+014hQc3d)H%vvb!D`(D|4tOY;NMbSP=GoQBjEO~k zx5c#!`V!)f6--RR#>|{IOO~u5=c4*#Ewg4<&PNNUFPvRHyJmWIWtAxAKmjB1+4tfm zB}265zS^1dQo({o&BEC;@4aVU)%>rN@Z39d?%es6De&2g?y2!qEu1|&1qu?grr&)} zO|>94z54#|c+h-8&__W@VIkTz|6YhTm4~ks9qAc6@B7o|&Ys7syq{k!%dm#&bLW2- zom>gR==aL+Pp_Qw{pnRR@0pvzkd(;us)aM}Mc+>!o7#x#2j|tyfdtX(bD=2HtLDz1 zi5h0#d++@FXM3uuXV3n=r>bW5+_`M&%vpjmZ-6Q!SzR;hp82RAuzNjKm2>A;OL2S! z$5Sj zRJpM7sw>5vkk@yqDAa6MJ+tRYHA;57E06e){&#EU2pXr%nO;5f-UV}&g3DUw&z*no z-J)aI+GNdlLxH|e(N->aP|%w-``+3`(-+K_DlSu%b7n4>KJRWr}NP?sqxCpUp74u(#Vrb2iea&&PaQ1?^GarN`?w_5iTGilV_VoF+H49)L z7R-OZGxwgmE3c@Yf5kPt13Rb`Nl#fgG-mAdE3YUTk-Y7@yYdPyXt+|tHv=m({$
  • )#S@6UHgrDV8SyzuOiKl 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%0DFbMCp;7(0=_{DMU4)l| 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 literal 0 HcmV?d00001 diff --git a/libmpcdec/mpc_bits_reader.c b/libmpcdec/mpc_bits_reader.c new file mode 100755 index 0000000..392aede --- /dev/null +++ b/libmpcdec/mpc_bits_reader.c @@ -0,0 +1,181 @@ +/* + Copyright (c) 2007-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include "internal.h" +#include "huffman.h" +#include "mpc_bits_reader.h" + +const mpc_uint32_t Cnk[MAX_ENUM / 2][MAX_ENUM] = +{ + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, + {0, 0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465}, + {0, 0, 0, 1, 4, 10, 20, 35, 56, 84, 120, 165, 220, 286, 364, 455, 560, 680, 816, 969, 1140, 1330, 1540, 1771, 2024, 2300, 2600, 2925, 3276, 3654, 4060, 4495}, + {0, 0, 0, 0, 1, 5, 15, 35, 70, 126, 210, 330, 495, 715, 1001, 1365, 1820, 2380, 3060, 3876, 4845, 5985, 7315, 8855, 10626, 12650, 14950, 17550, 20475, 23751, 27405, 31465}, + {0, 0, 0, 0, 0, 1, 6, 21, 56, 126, 252, 462, 792, 1287, 2002, 3003, 4368, 6188, 8568, 11628, 15504, 20349, 26334, 33649, 42504, 53130, 65780, 80730, 98280, 118755, 142506, 169911}, + {0, 0, 0, 0, 0, 0, 1, 7, 28, 84, 210, 462, 924, 1716, 3003, 5005, 8008, 12376, 18564, 27132, 38760, 54264, 74613, 100947, 134596, 177100, 230230, 296010, 376740, 475020, 593775, 736281}, + {0, 0, 0, 0, 0, 0, 0, 1, 8, 36, 120, 330, 792, 1716, 3432, 6435, 11440, 19448, 31824, 50388, 77520, 116280, 170544, 245157, 346104, 480700, 657800, 888030, 1184040, 1560780, 2035800, 2629575}, + {0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 45, 165, 495, 1287, 3003, 6435, 12870, 24310, 43758, 75582, 125970, 203490, 319770, 490314, 735471, 1081575, 1562275, 2220075, 3108105, 4292145, 5852925, 7888725}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10, 55, 220, 715, 2002, 5005, 11440, 24310, 48620, 92378, 167960, 293930, 497420, 817190, 1307504, 2042975, 3124550, 4686825, 6906900, 10015005, 14307150, 20160075}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 11, 66, 286, 1001, 3003, 8008, 19448, 43758, 92378, 184756, 352716, 646646, 1144066, 1961256, 3268760, 5311735, 8436285, 13123110, 20030010, 30045015, 44352165}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 78, 364, 1365, 4368, 12376, 31824, 75582, 167960, 352716, 705432, 1352078, 2496144, 4457400, 7726160, 13037895, 21474180, 34597290, 54627300, 84672315}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 13, 91, 455, 1820, 6188, 18564, 50388, 125970, 293930, 646646, 1352078, 2704156, 5200300, 9657700, 17383860, 30421755, 51895935, 86493225, 141120525}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 14, 105, 560, 2380, 8568, 27132, 77520, 203490, 497420, 1144066, 2496144, 5200300, 10400600, 20058300, 37442160, 67863915, 119759850, 206253075}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 15, 120, 680, 3060, 11628, 38760, 116280, 319770, 817190, 1961256, 4457400, 9657700, 20058300, 40116600, 77558760, 145422675, 265182525}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 16, 136, 816, 3876, 15504, 54264, 170544, 490314, 1307504, 3268760, 7726160, 17383860, 37442160, 77558760, 155117520, 300540195}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 153, 969, 4845, 20349, 74613, 245157, 735471, 2042975, 5311735, 13037895, 30421755, 67863915, 145422675, 300540195} +}; + +const mpc_uint8_t Cnk_len[MAX_ENUM / 2][MAX_ENUM] = +{ + {0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5}, + {0, 0, 2, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9}, + {0, 0, 0, 2, 4, 5, 6, 6, 7, 7, 8, 8, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13}, + {0, 0, 0, 0, 3, 4, 6, 7, 7, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 15, 16}, + {0, 0, 0, 0, 0, 3, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 13, 14, 14, 14, 15, 15, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18}, + {0, 0, 0, 0, 0, 0, 3, 5, 7, 8, 9, 10, 11, 12, 13, 13, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20}, + {0, 0, 0, 0, 0, 0, 0, 3, 6, 7, 9, 10, 11, 12, 13, 14, 15, 15, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 21, 22, 22}, + {0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 8, 9, 11, 12, 13, 14, 15, 16, 17, 17, 18, 19, 19, 20, 21, 21, 22, 22, 23, 23, 23, 24}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 8, 10, 11, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 21, 22, 23, 23, 24, 24, 25, 25}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 9, 10, 12, 13, 15, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24, 24, 25, 25, 26, 26}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 9, 11, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 23, 24, 25, 26, 26, 27, 27}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 9, 11, 13, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 25, 26, 27, 28, 28}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 10, 12, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 27, 28, 29}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 10, 12, 14, 16, 17, 19, 20, 21, 23, 24, 25, 26, 27, 28, 28, 29}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 10, 12, 14, 16, 18, 19, 21, 22, 23, 25, 26, 27, 28, 29, 30}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 10, 13, 15, 17, 18, 20, 21, 23, 24, 25, 27, 28, 29, 30} + +}; + +const mpc_uint32_t Cnk_lost[MAX_ENUM / 2][MAX_ENUM] = +{ + {0, 0, 1, 0, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, + {0, 0, 1, 2, 6, 1, 11, 4, 28, 19, 9, 62, 50, 37, 23, 8, 120, 103, 85, 66, 46, 25, 3, 236, 212, 187, 161, 134, 106, 77, 47, 16}, + {0, 0, 0, 0, 6, 12, 29, 8, 44, 8, 91, 36, 226, 148, 57, 464, 344, 208, 55, 908, 718, 508, 277, 24, 1796, 1496, 1171, 820, 442, 36, 3697, 3232}, + {0, 0, 0, 0, 3, 1, 29, 58, 2, 46, 182, 17, 309, 23, 683, 228, 1716, 1036, 220, 3347, 2207, 877, 7529, 5758, 3734, 1434, 15218, 12293, 9017, 5363, 1303, 29576}, + {0, 0, 0, 0, 0, 2, 11, 8, 2, 4, 50, 232, 761, 46, 1093, 3824, 2004, 7816, 4756, 880, 12419, 6434, 31887, 23032, 12406, 65292, 50342, 32792, 12317, 119638, 92233, 60768}, + {0, 0, 0, 0, 0, 0, 1, 4, 44, 46, 50, 100, 332, 1093, 3187, 184, 4008, 14204, 5636, 26776, 11272, 56459, 30125, 127548, 85044, 31914, 228278, 147548, 49268, 454801, 312295, 142384}, + {0, 0, 0, 0, 0, 0, 0, 0, 28, 8, 182, 232, 332, 664, 1757, 4944, 13320, 944, 15148, 53552, 14792, 91600, 16987, 178184, 43588, 390776, 160546, 913112, 536372, 61352, 1564729, 828448}, + {0, 0, 0, 0, 0, 0, 0, 0, 7, 19, 91, 17, 761, 1093, 1757, 3514, 8458, 21778, 55490, 5102, 58654, 204518, 33974, 313105, 1015577, 534877, 1974229, 1086199, 4096463, 2535683, 499883, 6258916}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 9, 36, 309, 46, 3187, 4944, 8458, 16916, 38694, 94184, 230358, 26868, 231386, 789648, 54177, 1069754, 3701783, 1481708, 6762211, 2470066, 13394357, 5505632}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 62, 226, 23, 1093, 184, 13320, 21778, 38694, 77388, 171572, 401930, 953086, 135896, 925544, 3076873, 8340931, 3654106, 13524422, 3509417, 22756699, 2596624}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 50, 148, 683, 3824, 4008, 944, 55490, 94184, 171572, 343144, 745074, 1698160, 3931208, 662448, 3739321, 12080252, 32511574, 12481564, 49545413, 5193248}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 37, 57, 228, 2004, 14204, 15148, 5102, 230358, 401930, 745074, 1490148, 3188308, 7119516, 16170572, 3132677, 15212929, 47724503, 127314931, 42642616}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 23, 464, 1716, 7816, 5636, 53552, 58654, 26868, 953086, 1698160, 3188308, 6376616, 13496132, 29666704, 66353813, 14457878, 62182381, 189497312}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 344, 1036, 4756, 26776, 14792, 204518, 231386, 135896, 3931208, 7119516, 13496132, 26992264, 56658968, 123012781, 3252931, 65435312}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 208, 220, 880, 11272, 91600, 33974, 789648, 925544, 662448, 16170572, 29666704, 56658968, 113317936, 236330717, 508019104}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 103, 55, 3347, 12419, 56459, 16987, 313105, 54177, 3076873, 3739321, 3132677, 66353813, 123012781, 236330717} +}; + +static const mpc_uint8_t log2[32] = +{ 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6}; + +static const mpc_uint8_t log2_lost[32] = +{ 0, 1, 0, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 31}; + +mpc_int32_t mpc_bits_golomb_dec(mpc_bits_reader * r, const mpc_uint_t k) +{ + unsigned int l = 0; + unsigned int code = r->buff[0] & ((1 << r->count) - 1); + + while( code == 0 ) { + l += r->count; + r->buff++; + code = r->buff[0]; + r->count = 8; + } + + while( ((1 << (r->count - 1)) & code) == 0 ) { + l++; + r->count--; + } + r->count--; + + while( r->count < k ) { + r->buff++; + r->count += 8; + code = (code << 8) | r->buff[0]; + } + + r->count -= k; + + return (l << k) | ((code >> r->count) & ((1 << k) - 1)); +} + +mpc_uint32_t mpc_bits_log_dec(mpc_bits_reader * r, mpc_uint_t max) +{ + mpc_uint32_t value = 0; + if (max == 0) + return 0; + if (log2[max - 1] > 1) + value = mpc_bits_read(r, log2[max - 1] - 1); + if (value >= log2_lost[max - 1]) + value = ((value << 1) | mpc_bits_read(r, 1)) - log2_lost[max - 1]; + return value; +} + +unsigned int mpc_bits_get_size(mpc_bits_reader * r, mpc_uint64_t * p_size) +{ + unsigned char tmp; + mpc_uint64_t size = 0; + unsigned int ret = 0; + + do { + tmp = mpc_bits_read(r, 8); + size = (size << 7) | (tmp & 0x7F); + ret++; + } while((tmp & 0x80)); + + *p_size = size; + return ret; +} + +int mpc_bits_get_block(mpc_bits_reader * r, mpc_block * p_block) +{ + int size = 2; + + p_block->size = 0; + p_block->key[0] = mpc_bits_read(r, 8); + p_block->key[1] = mpc_bits_read(r, 8); + + size += mpc_bits_get_size(r, &(p_block->size)); + + if (p_block->size >= size) // check if the block size doesn't conflict with the header size + p_block->size -= size; + + return size; +} + + + diff --git a/libmpcdec/mpc_bits_reader.h b/libmpcdec/mpc_bits_reader.h new file mode 100755 index 0000000..a7d8d66 --- /dev/null +++ b/libmpcdec/mpc_bits_reader.h @@ -0,0 +1,149 @@ +/* + Copyright (c) 2007-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define MAX_ENUM 32 + +MPC_API int mpc_bits_get_block(mpc_bits_reader * r, mpc_block * p_block); +mpc_int32_t mpc_bits_golomb_dec(mpc_bits_reader * r, const mpc_uint_t k); +MPC_API unsigned int mpc_bits_get_size(mpc_bits_reader * r, mpc_uint64_t * p_size); +mpc_uint32_t mpc_bits_log_dec(mpc_bits_reader * r, mpc_uint_t max); + +extern const mpc_uint32_t Cnk[MAX_ENUM / 2][MAX_ENUM]; +extern const mpc_uint8_t Cnk_len[MAX_ENUM / 2][MAX_ENUM]; +extern const mpc_uint32_t Cnk_lost[MAX_ENUM / 2][MAX_ENUM]; + +// can read up to 31 bits +static mpc_inline mpc_uint32_t mpc_bits_read(mpc_bits_reader * r, const unsigned int nb_bits) +{ + mpc_uint32_t ret; + + r->buff -= (int)(r->count - nb_bits) >> 3; + r->count = (r->count - nb_bits) & 0x07; + + ret = (r->buff[0] | (r->buff[-1] << 8)) >> r->count; + if (nb_bits > (16 - r->count)) { + ret |= (mpc_uint32_t)((r->buff[-2] << 16) | (r->buff[-3] << 24)) >> r->count; + if (nb_bits > 24 && r->count != 0) + ret |= r->buff[-4] << (32 - r->count); + } + + return ret & ((1 << nb_bits) - 1); +} + +// basic huffman decoding routine +// works with maximum lengths up to 16 +static mpc_inline mpc_int32_t mpc_bits_huff_dec(mpc_bits_reader * r, const mpc_huffman *Table) +{ + mpc_uint16_t code; + code = (mpc_uint16_t)((((r->buff[0] << 16) | (r->buff[1] << 8) | r->buff[2]) >> r->count) & 0xFFFF); + + while (code < Table->Code) Table++; + + r->buff -= (int)(r->count - Table->Length) >> 3; + r->count = (r->count - Table->Length) & 0x07; + + return Table->Value; +} + +static mpc_inline mpc_int32_t mpc_bits_can_dec(mpc_bits_reader * r, const mpc_can_data *can) +{ + mpc_uint16_t code; + mpc_huff_lut tmp; + const mpc_huffman * Table; + code = (mpc_uint16_t)((((r->buff[0] << 16) | (r->buff[1] << 8) | r->buff[2]) >> r->count) & 0xFFFF); + + tmp = can->lut[code >> (16 - LUT_DEPTH)]; + if (tmp.Length != 0) { + r->buff -= (int)(r->count - tmp.Length) >> 3; + r->count = (r->count - tmp.Length) & 0x07; + return tmp.Value; + } + + Table = can->table + (unsigned char)tmp.Value; + while (code < Table->Code) Table++; + + r->buff -= (int)(r->count - Table->Length) >> 3; + r->count = (r->count - Table->Length) & 0x07; + + return can->sym[(Table->Value - (code >> (16 - Table->Length))) & 0xFF] ; +} + +// LUT-based huffman decoding routine +// works with maximum lengths up to 16 +static mpc_inline mpc_int32_t mpc_bits_huff_lut(mpc_bits_reader * r, const mpc_lut_data *lut) +{ + mpc_uint16_t code; + mpc_huff_lut tmp; + const mpc_huffman * Table; + code = (mpc_uint16_t)((((r->buff[0] << 16) | (r->buff[1] << 8) | r->buff[2]) >> r->count) & 0xFFFF); + + tmp = lut->lut[code >> (16 - LUT_DEPTH)]; + if (tmp.Length != 0) { + r->buff -= (int)(r->count - tmp.Length) >> 3; + r->count = (r->count - tmp.Length) & 0x07; + return tmp.Value; + } + + Table = lut->table + (unsigned char)tmp.Value; + while (code < Table->Code) Table++; + + r->buff -= (int)(r->count - Table->Length) >> 3; + r->count = (r->count - Table->Length) & 0x07; + + return Table->Value; +} + +static mpc_inline mpc_uint32_t mpc_bits_enum_dec(mpc_bits_reader * r, mpc_uint_t k, mpc_uint_t n) +{ + mpc_uint32_t bits = 0; + mpc_uint32_t code; + const mpc_uint32_t * C = Cnk[k-1]; + + code = mpc_bits_read(r, Cnk_len[k-1][n-1] - 1); + + if (code >= Cnk_lost[k-1][n-1]) + code = ((code << 1) | mpc_bits_read(r, 1)) - Cnk_lost[k-1][n-1]; + + do { + n--; + if (code >= C[n]) { + bits |= 1 << n; + code -= C[n]; + C -= MAX_ENUM; + k--; + } + } while(k > 0); + + return bits; +} diff --git a/libmpcdec/mpc_decoder.c b/libmpcdec/mpc_decoder.c new file mode 100755 index 0000000..5f56c00 --- /dev/null +++ b/libmpcdec/mpc_decoder.c @@ -0,0 +1,681 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file mpc_decoder.c +/// Core decoding routines and logic. + +#include +#include +#include +#include "decoder.h" +#include "huffman.h" +#include "internal.h" +#include "mpcdec_math.h" +#include "requant.h" +#include "mpc_bits_reader.h" + +//SV7 tables +extern const mpc_lut_data mpc_HuffQ [7] [2]; +extern const mpc_lut_data mpc_HuffHdr; +extern const mpc_huffman mpc_table_HuffSCFI [ 4]; +extern const mpc_lut_data mpc_HuffDSCF; + +//SV8 tables +extern const mpc_can_data mpc_can_Bands; +extern const mpc_can_data mpc_can_SCFI[2]; +extern const mpc_can_data mpc_can_DSCF[2]; +extern const mpc_can_data mpc_can_Res [2]; +extern const mpc_can_data mpc_can_Q [8][2]; +extern const mpc_can_data mpc_can_Q1; +extern const mpc_can_data mpc_can_Q9up; + +//------------------------------------------------------------------------------ +// types +//------------------------------------------------------------------------------ +enum +{ + MEMSIZE = MPC_DECODER_MEMSIZE, // overall buffer size + MEMSIZE2 = (MEMSIZE/2), // size of one buffer + MEMMASK = (MEMSIZE-1) +}; + +//------------------------------------------------------------------------------ +// forward declarations +//------------------------------------------------------------------------------ +void mpc_decoder_read_bitstream_sv7(mpc_decoder * d, mpc_bits_reader * r); +void mpc_decoder_read_bitstream_sv8(mpc_decoder * d, mpc_bits_reader * r, + mpc_bool_t is_key_frame); +static void mpc_decoder_requantisierung(mpc_decoder *d); + +/** + * set the scf indexes for seeking use + * needed only for sv7 seeking + * @param d + */ +void mpc_decoder_reset_scf(mpc_decoder * d, int value) +{ + memset(d->SCF_Index_L, value, sizeof d->SCF_Index_L ); + memset(d->SCF_Index_R, value, sizeof d->SCF_Index_R ); +} + + +void mpc_decoder_setup(mpc_decoder *d) +{ + memset(d, 0, sizeof *d); + + d->__r1 = 1; + d->__r2 = 1; + + mpc_decoder_init_quant(d, 1.0f); +} + +void mpc_decoder_set_streaminfo(mpc_decoder *d, mpc_streaminfo *si) +{ + d->stream_version = si->stream_version; + d->ms = si->ms; + d->max_band = si->max_band; + d->channels = si->channels; + d->samples_to_skip = MPC_DECODER_SYNTH_DELAY + si->beg_silence; + + if (si->stream_version == 7 && si->is_true_gapless) + d->samples = ((si->samples + MPC_FRAME_LENGTH - 1) / MPC_FRAME_LENGTH) * MPC_FRAME_LENGTH; + else + d->samples = si->samples; +} + +mpc_decoder * mpc_decoder_init(mpc_streaminfo *si) +{ + mpc_decoder* p_tmp = malloc(sizeof(mpc_decoder)); + + if (p_tmp != 0) { + mpc_decoder_setup(p_tmp); + mpc_decoder_set_streaminfo(p_tmp, si); + huff_init_lut(LUT_DEPTH); // FIXME : this needs to be called only once when the library is loaded + } + + return p_tmp; +} + +void mpc_decoder_exit(mpc_decoder *d) +{ + free(d); +} + +void mpc_decoder_decode_frame(mpc_decoder * d, + mpc_bits_reader * r, + mpc_frame_info * i) +{ + mpc_bits_reader r_sav = *r; + mpc_int64_t samples_left; + + samples_left = d->samples - d->decoded_samples + MPC_DECODER_SYNTH_DELAY; + + if (samples_left <= 0 && d->samples != 0) { + i->samples = 0; + i->bits = -1; + return; + } + + if (d->stream_version == 8) + mpc_decoder_read_bitstream_sv8(d, r, i->is_key_frame); + else + mpc_decoder_read_bitstream_sv7(d, r); + + if (d->samples_to_skip < MPC_FRAME_LENGTH + MPC_DECODER_SYNTH_DELAY) { + mpc_decoder_requantisierung(d); + mpc_decoder_synthese_filter_float(d, i->buffer, d->channels); + } + + d->decoded_samples += MPC_FRAME_LENGTH; + + // reconstruct exact filelength + if (d->decoded_samples - d->samples < MPC_FRAME_LENGTH && d->stream_version == 7) { + int last_frame_samples = mpc_bits_read(r, 11); + if (d->decoded_samples == d->samples) { + if (last_frame_samples == 0) last_frame_samples = MPC_FRAME_LENGTH; + d->samples += last_frame_samples - MPC_FRAME_LENGTH; + samples_left += last_frame_samples - MPC_FRAME_LENGTH; + } + } + + i->samples = samples_left > MPC_FRAME_LENGTH ? MPC_FRAME_LENGTH : samples_left < 0 ? 0 : (mpc_uint32_t) samples_left; + i->bits = (mpc_uint32_t) (((r->buff - r_sav.buff) << 3) + r_sav.count - r->count); + + if (d->samples_to_skip) { + if (i->samples <= d->samples_to_skip) { + d->samples_to_skip -= i->samples; + i->samples = 0; + } else { + i->samples -= d->samples_to_skip; + memmove(i->buffer, i->buffer + d->samples_to_skip * d->channels, + i->samples * d->channels * sizeof (MPC_SAMPLE_FORMAT)); + d->samples_to_skip = 0; + } + } +} + +void +mpc_decoder_requantisierung(mpc_decoder *d) +{ + mpc_int32_t Band; + mpc_int32_t n; + MPC_SAMPLE_FORMAT facL; + MPC_SAMPLE_FORMAT facR; + MPC_SAMPLE_FORMAT templ; + MPC_SAMPLE_FORMAT tempr; + MPC_SAMPLE_FORMAT* YL; + MPC_SAMPLE_FORMAT* YR; + mpc_int16_t* L; + mpc_int16_t* R; + const mpc_int32_t Last_Band = d->max_band; + +#ifdef MPC_FIXED_POINT +#if MPC_FIXED_POINT_FRACTPART == 14 +#define MPC_MULTIPLY_SCF(CcVal, SCF_idx) \ + MPC_MULTIPLY_EX(CcVal, d->SCF[SCF_idx], d->SCF_shift[SCF_idx]) +#else + +#error FIXME, Cc table is in 18.14 format + +#endif +#else +#define MPC_MULTIPLY_SCF(CcVal, SCF_idx) \ + MPC_MULTIPLY(CcVal, d->SCF[SCF_idx]) +#endif + // requantization and scaling of subband-samples + for ( Band = 0; Band <= Last_Band; Band++ ) { // setting pointers + YL = d->Y_L[0] + Band; + YR = d->Y_R[0] + Band; + L = d->Q[Band].L; + R = d->Q[Band].R; + /************************** MS-coded **************************/ + if ( d->MS_Flag [Band] ) { + if ( d->Res_L [Band] ) { + if ( d->Res_R [Band] ) { // M!=0, S!=0 + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][0] & 0xFF); + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][0] & 0xFF); + for ( n = 0; n < 12; n++, YL += 32, YR += 32 ) { + *YL = (templ = MPC_MULTIPLY_FLOAT_INT(facL,*L++))+(tempr = MPC_MULTIPLY_FLOAT_INT(facR,*R++)); + *YR = templ - tempr; + } + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][1] & 0xFF); + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][1] & 0xFF); + for ( ; n < 24; n++, YL += 32, YR += 32 ) { + *YL = (templ = MPC_MULTIPLY_FLOAT_INT(facL,*L++))+(tempr = MPC_MULTIPLY_FLOAT_INT(facR,*R++)); + *YR = templ - tempr; + } + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][2] & 0xFF); + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][2] & 0xFF); + for ( ; n < 36; n++, YL += 32, YR += 32 ) { + *YL = (templ = MPC_MULTIPLY_FLOAT_INT(facL,*L++))+(tempr = MPC_MULTIPLY_FLOAT_INT(facR,*R++)); + *YR = templ - tempr; + } + } else { // M!=0, S==0 + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][0] & 0xFF); + for ( n = 0; n < 12; n++, YL += 32, YR += 32 ) { + *YR = *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + } + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][1] & 0xFF); + for ( ; n < 24; n++, YL += 32, YR += 32 ) { + *YR = *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + } + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][2] & 0xFF); + for ( ; n < 36; n++, YL += 32, YR += 32 ) { + *YR = *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + } + } + } else { + if (d->Res_R[Band]) // M==0, S!=0 + { + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][0] & 0xFF); + for ( n = 0; n < 12; n++, YL += 32, YR += 32 ) { + *YR = - (*YL = MPC_MULTIPLY_FLOAT_INT(facR,*(R++))); + } + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][1] & 0xFF); + for ( ; n < 24; n++, YL += 32, YR += 32 ) { + *YR = - (*YL = MPC_MULTIPLY_FLOAT_INT(facR,*(R++))); + } + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][2] & 0xFF); + for ( ; n < 36; n++, YL += 32, YR += 32 ) { + *YR = - (*YL = MPC_MULTIPLY_FLOAT_INT(facR,*(R++))); + } + } else { // M==0, S==0 + for ( n = 0; n < 36; n++, YL += 32, YR += 32 ) { + *YR = *YL = 0; + } + } + } + } + /************************** LR-coded **************************/ + else { + if ( d->Res_L [Band] ) { + if ( d->Res_R [Band] ) { // L!=0, R!=0 + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][0] & 0xFF); + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][0] & 0xFF); + for (n = 0; n < 12; n++, YL += 32, YR += 32 ) { + *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + *YR = MPC_MULTIPLY_FLOAT_INT(facR,*R++); + } + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][1] & 0xFF); + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][1] & 0xFF); + for (; n < 24; n++, YL += 32, YR += 32 ) { + *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + *YR = MPC_MULTIPLY_FLOAT_INT(facR,*R++); + } + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][2] & 0xFF); + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][2] & 0xFF); + for (; n < 36; n++, YL += 32, YR += 32 ) { + *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + *YR = MPC_MULTIPLY_FLOAT_INT(facR,*R++); + } + } else { // L!=0, R==0 + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][0] & 0xFF); + for ( n = 0; n < 12; n++, YL += 32, YR += 32 ) { + *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + *YR = 0; + } + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][1] & 0xFF); + for ( ; n < 24; n++, YL += 32, YR += 32 ) { + *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + *YR = 0; + } + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][2] & 0xFF); + for ( ; n < 36; n++, YL += 32, YR += 32 ) { + *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + *YR = 0; + } + } + } + else { + if ( d->Res_R [Band] ) { // L==0, R!=0 + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][0] & 0xFF); + for ( n = 0; n < 12; n++, YL += 32, YR += 32 ) { + *YL = 0; + *YR = MPC_MULTIPLY_FLOAT_INT(facR,*R++); + } + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][1] & 0xFF); + for ( ; n < 24; n++, YL += 32, YR += 32 ) { + *YL = 0; + *YR = MPC_MULTIPLY_FLOAT_INT(facR,*R++); + } + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][2] & 0xFF); + for ( ; n < 36; n++, YL += 32, YR += 32 ) { + *YL = 0; + *YR = MPC_MULTIPLY_FLOAT_INT(facR,*R++); + } + } else { // L==0, R==0 + for ( n = 0; n < 36; n++, YL += 32, YR += 32 ) { + *YR = *YL = 0; + } + } + } + } + } +} + +void mpc_decoder_read_bitstream_sv7(mpc_decoder * d, mpc_bits_reader * r) +{ + // these arrays hold decoding results for bundled quantizers (3- and 5-step) + static const mpc_int32_t idx30[] = { -1, 0, 1,-1, 0, 1,-1, 0, 1,-1, 0, 1,-1, 0, 1,-1, 0, 1,-1, 0, 1,-1, 0, 1,-1, 0, 1}; + static const mpc_int32_t idx31[] = { -1,-1,-1, 0, 0, 0, 1, 1, 1,-1,-1,-1, 0, 0, 0, 1, 1, 1,-1,-1,-1, 0, 0, 0, 1, 1, 1}; + static const mpc_int32_t idx32[] = { -1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + static const mpc_int32_t idx50[] = { -2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2}; + static const mpc_int32_t idx51[] = { -2,-2,-2,-2,-2,-1,-1,-1,-1,-1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2}; + + mpc_int32_t n, idx, Max_used_Band = 0; + + /***************************** Header *****************************/ + + // first subband + d->Res_L[0] = mpc_bits_read(r, 4); + d->Res_R[0] = mpc_bits_read(r, 4); + if (!(d->Res_L[0] == 0 && d->Res_R[0] == 0)) { + if (d->ms) + d->MS_Flag[0] = mpc_bits_read(r, 1); + Max_used_Band = 1; + } + + // consecutive subbands + for ( n = 1; n <= d->max_band; n++ ) { + idx = mpc_bits_huff_lut(r, & mpc_HuffHdr); + d->Res_L[n] = (idx!=4) ? d->Res_L[n - 1] + idx : (int) mpc_bits_read(r, 4); + + idx = mpc_bits_huff_lut(r, & mpc_HuffHdr); + d->Res_R[n] = (idx!=4) ? d->Res_R[n - 1] + idx : (int) mpc_bits_read(r, 4); + + if (!(d->Res_L[n] == 0 && d->Res_R[n] == 0)) { + if (d->ms) + d->MS_Flag[n] = mpc_bits_read(r, 1); + Max_used_Band = n + 1; + } + } + + /****************************** SCFI ******************************/ + for ( n = 0; n < Max_used_Band; n++ ) { + if (d->Res_L[n]) + d->SCFI_L[n] = mpc_bits_huff_dec(r, mpc_table_HuffSCFI); + if (d->Res_R[n]) + d->SCFI_R[n] = mpc_bits_huff_dec(r, mpc_table_HuffSCFI); + } + + /**************************** SCF/DSCF ****************************/ + for ( n = 0; n < Max_used_Band; n++ ) { + mpc_int32_t * SCF = d->SCF_Index_L[n]; + mpc_uint32_t Res = d->Res_L[n], SCFI = d->SCFI_L[n]; + do { + if (Res) { + switch (SCFI) { + case 1: + idx = mpc_bits_huff_lut(r, & mpc_HuffDSCF); + SCF[0] = (idx!=8) ? SCF[2] + idx : (int) mpc_bits_read(r, 6); + idx = mpc_bits_huff_lut(r, & mpc_HuffDSCF); + SCF[1] = (idx!=8) ? SCF[0] + idx : (int) mpc_bits_read(r, 6); + SCF[2] = SCF[1]; + break; + case 3: + idx = mpc_bits_huff_lut(r, & mpc_HuffDSCF); + SCF[0] = (idx!=8) ? SCF[2] + idx : (int) mpc_bits_read(r, 6); + SCF[1] = SCF[0]; + SCF[2] = SCF[1]; + break; + case 2: + idx = mpc_bits_huff_lut(r, & mpc_HuffDSCF); + SCF[0] = (idx!=8) ? SCF[2] + idx : (int) mpc_bits_read(r, 6); + SCF[1] = SCF[0]; + idx = mpc_bits_huff_lut(r, & mpc_HuffDSCF); + SCF[2] = (idx!=8) ? SCF[1] + idx : (int) mpc_bits_read(r, 6); + break; + case 0: + idx = mpc_bits_huff_lut(r, & mpc_HuffDSCF); + SCF[0] = (idx!=8) ? SCF[2] + idx : (int) mpc_bits_read(r, 6); + idx = mpc_bits_huff_lut(r, & mpc_HuffDSCF); + SCF[1] = (idx!=8) ? SCF[0] + idx : (int) mpc_bits_read(r, 6); + idx = mpc_bits_huff_lut(r, & mpc_HuffDSCF); + SCF[2] = (idx!=8) ? SCF[1] + idx : (int) mpc_bits_read(r, 6); + break; + default: + return; + } + if (SCF[0] > 1024) + SCF[0] = 0x8080; + if (SCF[1] > 1024) + SCF[1] = 0x8080; + if (SCF[2] > 1024) + SCF[2] = 0x8080; + } + Res = d->Res_R[n]; + SCFI = d->SCFI_R[n]; + } while ( SCF == d->SCF_Index_L[n] && (SCF = d->SCF_Index_R[n])); + } + +// if (d->seeking == TRUE) +// return; + + /***************************** Samples ****************************/ + for ( n = 0; n < Max_used_Band; n++ ) { + mpc_int16_t *q = d->Q[n].L, Res = d->Res_L[n]; + do { + mpc_int32_t k; + const mpc_lut_data *Table; + switch (Res) { + case -2: case -3: case -4: case -5: case -6: case -7: case -8: case -9: + case -10: case -11: case -12: case -13: case -14: case -15: case -16: case -17: case 0: + break; + case -1: + for (k=0; k<36; k++ ) { + mpc_uint32_t tmp = mpc_random_int(d); + q[k] = ((tmp >> 24) & 0xFF) + ((tmp >> 16) & 0xFF) + ((tmp >> 8) & 0xFF) + ((tmp >> 0) & 0xFF) - 510; + } + break; + case 1: + Table = & mpc_HuffQ[0][mpc_bits_read(r, 1)]; + for ( k = 0; k < 36; k += 3) { + idx = mpc_bits_huff_lut(r, Table); + q[k] = idx30[idx]; + q[k + 1] = idx31[idx]; + q[k + 2] = idx32[idx]; + } + break; + case 2: + Table = & mpc_HuffQ[1][mpc_bits_read(r, 1)]; + for ( k = 0; k < 36; k += 2) { + idx = mpc_bits_huff_lut(r, Table); + q[k] = idx50[idx]; + q[k + 1] = idx51[idx]; + } + break; + case 3: + case 4: + case 5: + case 6: + case 7: + Table = & mpc_HuffQ[Res - 1][mpc_bits_read(r, 1)]; + for ( k = 0; k < 36; k++ ) + q[k] = mpc_bits_huff_lut(r, Table); + break; + case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: + for ( k = 0; k < 36; k++ ) + q[k] = (mpc_int32_t)mpc_bits_read(r, Res_bit[Res]) - Dc[Res]; + break; + default: + return; + } + + Res = d->Res_R[n]; + } while (q == d->Q[n].L && (q = d->Q[n].R)); + } +} + +void mpc_decoder_read_bitstream_sv8(mpc_decoder * d, mpc_bits_reader * r, mpc_bool_t is_key_frame) +{ + // these arrays hold decoding results for bundled quantizers (3- and 5-step) + static const mpc_int8_t idx50[125] = {-2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2}; + static const mpc_int8_t idx51[125] = {-2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2}; + static const mpc_int8_t idx52[125] = {-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}; + + mpc_int32_t n, Max_used_Band; + const mpc_can_data * Table, * Tables[2]; + + /***************************** Header *****************************/ + + if (is_key_frame == MPC_TRUE) { + Max_used_Band = mpc_bits_log_dec(r, d->max_band + 1); + } else { + Max_used_Band = d->last_max_band + mpc_bits_can_dec(r, & mpc_can_Bands); + if (Max_used_Band > 32) Max_used_Band -= 33; + } + d->last_max_band = Max_used_Band; + + if (Max_used_Band) { + d->Res_L[Max_used_Band-1] = mpc_bits_can_dec(r, & mpc_can_Res[0]); + d->Res_R[Max_used_Band-1] = mpc_bits_can_dec(r, & mpc_can_Res[0]); + if (d->Res_L[Max_used_Band-1] > 15) d->Res_L[Max_used_Band-1] -= 17; + if (d->Res_R[Max_used_Band-1] > 15) d->Res_R[Max_used_Band-1] -= 17; + for ( n = Max_used_Band - 2; n >= 0; n--) { + d->Res_L[n] = mpc_bits_can_dec(r, & mpc_can_Res[d->Res_L[n + 1] > 2]) + d->Res_L[n + 1]; + if (d->Res_L[n] > 15) d->Res_L[n] -= 17; + d->Res_R[n] = mpc_bits_can_dec(r, & mpc_can_Res[d->Res_R[n + 1] > 2]) + d->Res_R[n + 1]; + if (d->Res_R[n] > 15) d->Res_R[n] -= 17; + } + + if (d->ms) { + mpc_uint_t cnt = 0, tot = 0; + mpc_uint32_t tmp = 0; + for( n = 0; n < Max_used_Band; n++) + if ( d->Res_L[n] != 0 || d->Res_R[n] != 0 ) + tot++; + cnt = mpc_bits_log_dec(r, tot); + if (cnt != 0 && cnt != tot) + tmp = mpc_bits_enum_dec(r, mini(cnt, tot-cnt), tot); + if (cnt * 2 > tot) tmp = ~tmp; + for( n = Max_used_Band - 1; n >= 0; n--) + if ( d->Res_L[n] != 0 || d->Res_R[n] != 0 ) { + d->MS_Flag[n] = tmp & 1; + tmp >>= 1; + } + } + } + + for( n = Max_used_Band; n <= d->max_band; n++) + d->Res_L[n] = d->Res_R[n] = 0; + + /****************************** SCFI ******************************/ + if (is_key_frame == MPC_TRUE){ + for( n = 0; n < 32; n++) + d->DSCF_Flag_L[n] = d->DSCF_Flag_R[n] = 1; // new block -> force key frame + } + + Tables[0] = & mpc_can_SCFI[0]; + Tables[1] = & mpc_can_SCFI[1]; + for ( n = 0; n < Max_used_Band; n++ ) { + int tmp = 0, cnt = -1; + if (d->Res_L[n]) cnt++; + if (d->Res_R[n]) cnt++; + if (cnt >= 0) { + tmp = mpc_bits_can_dec(r, Tables[cnt]); + if (d->Res_L[n]) d->SCFI_L[n] = tmp >> (2 * cnt); + if (d->Res_R[n]) d->SCFI_R[n] = tmp & 3; + } + } + + /**************************** SCF/DSCF ****************************/ + + for ( n = 0; n < Max_used_Band; n++ ) { + mpc_int32_t * SCF = d->SCF_Index_L[n]; + mpc_uint32_t Res = d->Res_L[n], SCFI = d->SCFI_L[n]; + mpc_bool_t * DSCF_Flag = &d->DSCF_Flag_L[n]; + + do { + if ( Res ) { + int m; + if (*DSCF_Flag == 1) { + SCF[0] = (mpc_int32_t)mpc_bits_read(r, 7) - 6; + *DSCF_Flag = 0; + } else { + mpc_uint_t tmp = mpc_bits_can_dec(r, & mpc_can_DSCF[1]); + if (tmp == 64) + tmp += mpc_bits_read(r, 6); + SCF[0] = ((SCF[2] - 25 + tmp) & 127) - 6; + } + for( m = 0; m < 2; m++){ + if (((SCFI << m) & 2) == 0) { + mpc_uint_t tmp = mpc_bits_can_dec(r, & mpc_can_DSCF[0]); + if (tmp == 31) + tmp = 64 + mpc_bits_read(r, 6); + SCF[m + 1] = ((SCF[m] - 25 + tmp) & 127) - 6; + } else + SCF[m + 1] = SCF[m]; + } + } + Res = d->Res_R[n]; + SCFI = d->SCFI_R[n]; + DSCF_Flag = &d->DSCF_Flag_R[n]; + } while ( SCF == d->SCF_Index_L[n] && (SCF = d->SCF_Index_R[n])); + } + + /***************************** Samples ****************************/ + for ( n = 0; n < Max_used_Band; n++ ) { + mpc_int16_t *q = d->Q[n].L, Res = d->Res_L[n]; + static const unsigned int thres[] = {0, 0, 3, 0, 0, 1, 3, 4, 8}; + static const mpc_int8_t HuffQ2_var[5*5*5] = + {6, 5, 4, 5, 6, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 6, 5, 4, 5, 6, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 3, 2, 1, 2, 3, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 3, 2, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 2, 3, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 3, 2, 1, 2, 3, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 6, 5, 4, 5, 6, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 6, 5, 4, 5, 6}; + + do { + mpc_uint32_t k = 0, idx = 1; + if (Res != 0) { + if (Res == 2) { + Tables[0] = & mpc_can_Q [0][0]; + Tables[1] = & mpc_can_Q [0][1]; + idx = 2 * thres[Res]; + for ( ; k < 36; k += 3) { + int tmp = mpc_bits_can_dec(r, Tables[idx > thres[Res]]); + q[k] = idx50[tmp]; + q[k + 1] = idx51[tmp]; + q[k + 2] = idx52[tmp]; + idx = (idx >> 1) + HuffQ2_var[tmp]; + } + } else if (Res == 1) { + Table = & mpc_can_Q1; + for( ; k < 36; ){ + mpc_uint32_t kmax = k + 18; + mpc_uint_t cnt = mpc_bits_can_dec(r, Table); + idx = 0; + if (cnt > 0 && cnt < 18) + idx = mpc_bits_enum_dec(r, cnt <= 9 ? cnt : 18 - cnt, 18); + if (cnt > 9) idx = ~idx; + for ( ; k < kmax; k++) { + q[k] = 0; + if ( idx & (1 << 17) ) + q[k] = (mpc_bits_read(r, 1) << 1) - 1; + idx <<= 1; + } + } + } else if (Res == -1) { + for ( ; k<36; k++ ) { + mpc_uint32_t tmp = mpc_random_int(d); + q[k] = ((tmp >> 24) & 0xFF) + ((tmp >> 16) & 0xFF) + ((tmp >> 8) & 0xFF) + ((tmp >> 0) & 0xFF) - 510; + } + } else if (Res <= 4) { + Table = & mpc_can_Q[1][Res - 3]; + for ( ; k < 36; k += 2 ) { + union { + mpc_int8_t sym; + struct { mpc_int8_t s1:4, s2:4; }; + } tmp; + tmp.sym = mpc_bits_can_dec(r, Table); + q[k] = tmp.s1; + q[k + 1] = tmp.s2; + } + } else if (Res <= 8) { + Tables[0] = & mpc_can_Q [Res - 3][0]; + Tables[1] = & mpc_can_Q [Res - 3][1]; + idx = 2 * thres[Res]; + for ( ; k < 36; k++ ) { + q[k] = mpc_bits_can_dec(r, Tables[idx > thres[Res]]); + idx = (idx >> 1) + absi(q[k]); + } + } else { + for ( ; k < 36; k++ ) { + q[k] = (unsigned char) mpc_bits_can_dec(r, & mpc_can_Q9up); + if (Res != 9) + q[k] = (q[k] << (Res - 9)) | mpc_bits_read(r, Res - 9); + q[k] -= Dc[Res]; + } + } + } + + Res = d->Res_R[n]; + } while (q == d->Q[n].L && (q = d->Q[n].R)); + } +} + diff --git a/libmpcdec/mpc_demux.c b/libmpcdec/mpc_demux.c new file mode 100755 index 0000000..63e58e6 --- /dev/null +++ b/libmpcdec/mpc_demux.c @@ -0,0 +1,738 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include +#include +#include +#include +#include "internal.h" +#include "decoder.h" +#include "huffman.h" +#include "mpc_bits_reader.h" + +/// maximum number of seek points in the table. The distance between points will +/// be adapted so this value is never exceeded. +#define MAX_SEEK_TABLE_SIZE 65536 + +// streaminfo.c +mpc_status streaminfo_read_header_sv8(mpc_streaminfo* si, + const mpc_bits_reader * r_in, + mpc_size_t block_size); +mpc_status streaminfo_read_header_sv7(mpc_streaminfo* si, mpc_bits_reader * r_in); +void streaminfo_encoder_info(mpc_streaminfo* si, const mpc_bits_reader * r_in); +void streaminfo_gain(mpc_streaminfo* si, const mpc_bits_reader * r_in); + +// mpc_decoder.c +void mpc_decoder_reset_scf(mpc_decoder * d, int value); + +enum { + MPC_BUFFER_SWAP = 1, + MPC_BUFFER_FULL = 2, +}; + +static void mpc_demux_clear_buff(mpc_demux * d) +{ + d->bytes_total = 0; + d->bits_reader.buff = d->buffer; + d->bits_reader.count = 8; + d->block_bits = 0; + d->block_frames = 0; +} + +// Returns the amount of unread bytes in the demux buffer. +// Unchecked version - may return a negative value when we've been reading +// past the end of the valid data as a result of some problem with the file. +static mpc_int32_t mpc_unread_bytes_unchecked(mpc_demux * d) { + return d->bytes_total + d->buffer - d->bits_reader.buff - ((8 - d->bits_reader.count) >> 3); +} + +// Returns the amount of unread bytes in the demux buffer. +static mpc_uint32_t mpc_unread_bytes(mpc_demux * d) { + mpc_int32_t unread_bytes = mpc_unread_bytes_unchecked(d); + + if (unread_bytes < 0) return 0; + + return (mpc_uint32_t) unread_bytes; +} + + + +// Returns the number of bytes available in the buffer. +static mpc_uint32_t +mpc_demux_fill(mpc_demux * d, mpc_uint32_t min_bytes, int flags) +{ + mpc_uint32_t unread_bytes = (mpc_uint32_t) mpc_unread_bytes_unchecked(d); + int offset = 0; + + if ((mpc_int32_t) + unread_bytes < 0) return 0; // Error - we've been reading past the end of the buffer - abort + + if (min_bytes == 0 || min_bytes > DEMUX_BUFFER_SIZE || + (unread_bytes < min_bytes && (flags & MPC_BUFFER_FULL) != 0 )) + min_bytes = DEMUX_BUFFER_SIZE; + + if (unread_bytes < min_bytes) { + mpc_uint32_t bytes2read = min_bytes - unread_bytes; + mpc_uint32_t bytes_free = DEMUX_BUFFER_SIZE - d->bytes_total; + mpc_uint32_t bytesread; + + if (flags & MPC_BUFFER_SWAP) { + bytes2read &= -1 << 2; + offset = (unread_bytes + 3) & ( -1 << 2); + offset -= unread_bytes; + } + + if (bytes2read > bytes_free) { + if (d->bits_reader.count == 0) { + d->bits_reader.count = 8; + d->bits_reader.buff++; + } + memmove(d->buffer + offset, d->bits_reader.buff, unread_bytes); + d->bits_reader.buff = d->buffer + offset; + d->bytes_total = unread_bytes + offset; + } + bytesread = d->r->read(d->r, d->buffer + d->bytes_total, bytes2read); + if (bytesread < bytes2read) { + memset(d->buffer + d->bytes_total + bytesread, 0, bytes2read - bytesread); // FIXME : why ? + } + if (flags & MPC_BUFFER_SWAP) { + unsigned int i, * tmp = (unsigned int *) (d->buffer + d->bytes_total); + for(i = 0 ;i < (bytes2read >> 2); i++) + tmp[i] = mpc_swap32(tmp[i]); + } + d->bytes_total += bytesread; + unread_bytes += bytesread; + } + + return unread_bytes; +} + +/** + * seek to a bit position in the stream + * @param d demuxer context + * @param fpos position in the stream in bits from the beginning of mpc datas + * @param min_bytes number of bytes to load after seeking + */ +static mpc_status +mpc_demux_seek(mpc_demux * d, mpc_seek_t fpos, mpc_uint32_t min_bytes) { + mpc_seek_t start_pos, end_pos; + mpc_int_t bit_offset; + + // get current buffer position + end_pos = ((mpc_seek_t)(d->r->tell(d->r))) << 3; + start_pos = end_pos - (d->bytes_total << 3); + + if (fpos >= start_pos && fpos < end_pos) { + d->bits_reader.buff = d->buffer + ((fpos - start_pos) >> 3); + bit_offset = fpos & 7; + d->block_bits = 0; + d->block_frames = 0; + } else { + mpc_seek_t next_pos = fpos >> 3; + if (d->si.stream_version == 7) + next_pos = ((next_pos - d->si.header_position) & (-1 << 2)) + d->si.header_position; + bit_offset = (int) (fpos - (next_pos << 3)); + + mpc_demux_clear_buff(d); + if (!d->r->seek(d->r, (mpc_int32_t) next_pos)) + return MPC_STATUS_FAIL; + } + + if (d->si.stream_version == 7) + mpc_demux_fill(d, (min_bytes + ((bit_offset + 7) >> 3) + 3) & (~3), MPC_BUFFER_SWAP); + else + mpc_demux_fill(d, min_bytes + ((bit_offset + 7) >> 3), 0); + d->bits_reader.buff += bit_offset >> 3; + d->bits_reader.count = 8 - (bit_offset & 7); + + return MPC_STATUS_OK; +} + +/** + * return the current position in the stream (in bits) from the beginning + * of the file + * @param d demuxer context + * @return current stream position in bits + */ +mpc_seek_t mpc_demux_pos(mpc_demux * d) +{ + return (((mpc_seek_t)(d->r->tell(d->r)) - d->bytes_total + + d->bits_reader.buff - d->buffer) << 3) + 8 - d->bits_reader.count; +} + +/** + * Searches for a ID3v2-tag and reads the length (in bytes) of it. + * + * @param d demuxer context + * @return size of tag, in bytes + * @return MPC_STATUS_FAIL on errors of any kind + */ +static mpc_int32_t mpc_demux_skip_id3v2(mpc_demux * d) +{ + mpc_uint8_t tmp [4]; + mpc_bool_t footerPresent; // ID3v2.4-flag + mpc_int32_t size; + + // we must be at the beginning of the stream + mpc_demux_fill(d, 3, 0); + + // check id3-tag + if ( 0 != memcmp( d->bits_reader.buff, "ID3", 3 ) ) + return 0; + + mpc_demux_fill(d, 10, 0); + + mpc_bits_read(&d->bits_reader, 24); // read ID3 + mpc_bits_read(&d->bits_reader, 16); // read tag version + + tmp[0] = mpc_bits_read(&d->bits_reader, 8); // read flags + footerPresent = tmp[0] & 0x10; + if ( tmp[0] & 0x0F ) + return MPC_STATUS_FAIL; // not (yet???) allowed + + tmp[0] = mpc_bits_read(&d->bits_reader, 8); // read size + tmp[1] = mpc_bits_read(&d->bits_reader, 8); // read size + tmp[2] = mpc_bits_read(&d->bits_reader, 8); // read size + tmp[3] = mpc_bits_read(&d->bits_reader, 8); // read size + + if ( (tmp[0] | tmp[1] | tmp[2] | tmp[3]) & 0x80 ) + return MPC_STATUS_FAIL; // not allowed + + // read headerSize (syncsave: 4 * $0xxxxxxx = 28 significant bits) + size = tmp[0] << 21; + size |= tmp[1] << 14; + size |= tmp[2] << 7; + size |= tmp[3]; + + size += 10; //header + + if ( footerPresent ) size += 10; + + // This is called before file headers get read, streamversion etc isn't yet known, demuxing isn't properly initialized and we can't call mpc_demux_seek() from here. + mpc_demux_clear_buff(d); + if (!d->r->seek(d->r, size)) + return MPC_STATUS_FAIL; + + return size; +} + +static mpc_status mpc_demux_seek_init(mpc_demux * d) +{ + size_t seek_table_size; + if (d->seek_table != 0) + return MPC_STATUS_OK; + + d->seek_pwr = 6; + if (d->si.block_pwr > d->seek_pwr) + d->seek_pwr = d->si.block_pwr; + seek_table_size = (2 + d->si.samples / (MPC_FRAME_LENGTH << d->seek_pwr)); + while (seek_table_size > MAX_SEEK_TABLE_SIZE) { + d->seek_pwr++; + seek_table_size = (2 + d->si.samples / (MPC_FRAME_LENGTH << d->seek_pwr)); + } + d->seek_table = malloc((size_t)(seek_table_size * sizeof(mpc_seek_t))); + if (d->seek_table == 0) + return MPC_STATUS_FAIL; + d->seek_table[0] = (mpc_seek_t)mpc_demux_pos(d); + d->seek_table_size = 1; + + return MPC_STATUS_OK; +} + +static mpc_status mpc_demux_ST(mpc_demux * d) +{ + mpc_uint64_t tmp; + mpc_seek_t * table, last[2]; + mpc_bits_reader r = d->bits_reader; + mpc_uint_t i, diff_pwr = 0, mask; + mpc_uint32_t file_table_size; + + if (d->seek_table != 0) + return MPC_STATUS_OK; + + mpc_bits_get_size(&r, &tmp); + file_table_size = (mpc_seek_t) tmp; + d->seek_pwr = d->si.block_pwr + mpc_bits_read(&r, 4); + + tmp = 2 + d->si.samples / (MPC_FRAME_LENGTH << d->seek_pwr); + while (tmp > MAX_SEEK_TABLE_SIZE) { + d->seek_pwr++; + diff_pwr++; + tmp = 2 + d->si.samples / (MPC_FRAME_LENGTH << d->seek_pwr); + } + if ((file_table_size >> diff_pwr) > tmp) + file_table_size = tmp << diff_pwr; + d->seek_table = malloc((size_t) (tmp * sizeof(mpc_seek_t))); + d->seek_table_size = (file_table_size + ((1 << diff_pwr) - 1)) >> diff_pwr; + + table = d->seek_table; + mpc_bits_get_size(&r, &tmp); + table[0] = last[0] = (mpc_seek_t) (tmp + d->si.header_position) * 8; + + if (d->seek_table_size == 1) + return MPC_STATUS_OK; + + mpc_bits_get_size(&r, &tmp); + last[1] = (mpc_seek_t) (tmp + d->si.header_position) * 8; + if (diff_pwr == 0) table[1] = last[1]; + + mask = (1 << diff_pwr) - 1; + for (i = 2; i < file_table_size; i++) { + int code = mpc_bits_golomb_dec(&r, 12); + if (code & 1) + code = -(code & (-1 << 1)); + code <<= 2; + last[i & 1] = code + 2 * last[(i-1) & 1] - last[i & 1]; + if ((i & mask) == 0) + table[i >> diff_pwr] = last[i & 1]; + } + return MPC_STATUS_OK; +} + +static mpc_status mpc_demux_SP(mpc_demux * d, int size, int block_size) +{ + mpc_seek_t cur; + mpc_uint64_t ptr; + mpc_block b; + int st_head_size; + + cur = mpc_demux_pos(d); + mpc_bits_get_size(&d->bits_reader, &ptr); + MPC_AUTO_FAIL( mpc_demux_seek(d, (ptr - size) * 8 + cur, 11) ); + st_head_size = mpc_bits_get_block(&d->bits_reader, &b); + if (memcmp(b.key, "ST", 2) == 0) { + d->chap_pos = (ptr - size + b.size + st_head_size) * 8 + cur; + d->chap_nb = -1; + if (mpc_demux_fill(d, (mpc_uint32_t) b.size, 0) < b.size) + return MPC_STATUS_FAIL; + MPC_AUTO_FAIL( mpc_demux_ST(d) ); + } + return mpc_demux_seek(d, cur, 11 + block_size); +} + +static void mpc_demux_chap_empty(mpc_demux * d) { + free(d->chap); d->chap = 0; + d->chap_nb = 0; // -1 for undefined, 0 for no chapters + d->chap_pos = 0; +} + +static mpc_status mpc_demux_chap_find_inner(mpc_demux * d) +{ + mpc_block b; + int tag_size = 0, chap_size = 0, size, i = 0; + + d->chap_nb = 0; + + if (d->si.stream_version < 8) + return MPC_STATUS_OK; + + if (d->chap_pos == 0) { + mpc_uint64_t cur_pos = (d->si.header_position + 4) * 8; + MPC_AUTO_FAIL( mpc_demux_seek(d, cur_pos, 11) ); // seek to the beginning of the stream + size = mpc_bits_get_block(&d->bits_reader, &b); + while (memcmp(b.key, "SE", 2) != 0) { + mpc_uint64_t new_pos = cur_pos + (size + b.size) * 8; + MPC_AUTO_FAIL(mpc_check_key(b.key)); + + if (memcmp(b.key, "CT", 2) == 0) { + if (d->chap_pos == 0) d->chap_pos = cur_pos; + } else { + d->chap_pos = 0; + } + if (new_pos <= cur_pos) + return MPC_STATUS_FAIL; + cur_pos = new_pos; + + MPC_AUTO_FAIL( mpc_demux_seek(d, cur_pos, 11) ); + size = mpc_bits_get_block(&d->bits_reader, &b); + } + if (d->chap_pos == 0) + d->chap_pos = cur_pos; + } + + mpc_demux_seek(d, d->chap_pos, 20); + size = mpc_bits_get_block(&d->bits_reader, &b); + while (memcmp(b.key, "CT", 2) == 0) { + mpc_uint64_t chap_sample; + d->chap_nb++; + chap_size += size; + size = mpc_bits_get_size(&d->bits_reader, &chap_sample) + 4; + chap_size += size; + tag_size += b.size - size; + MPC_AUTO_FAIL( mpc_demux_seek(d, d->chap_pos + (chap_size + tag_size) * 8, 20) ); + size = mpc_bits_get_block(&d->bits_reader, &b); + } + + if (d->chap_nb > 0) { + char * ptag; + d->chap = malloc(sizeof(mpc_chap_info) * d->chap_nb + tag_size); + if (d->chap == 0) + return MPC_STATUS_FAIL; + + ptag = (char*)(d->chap + d->chap_nb); + + MPC_AUTO_FAIL( mpc_demux_seek(d, d->chap_pos, 11) ); + size = mpc_bits_get_block(&d->bits_reader, &b); + while (memcmp(b.key, "CT", 2) == 0) { + mpc_uint_t tmp_size; + char * tmp_ptag = ptag; + if (mpc_demux_fill(d, 11 + (mpc_uint32_t) b.size, 0) < b.size) + return MPC_STATUS_FAIL; + size = mpc_bits_get_size(&d->bits_reader, &d->chap[i].sample) + 4; + d->chap[i].gain = (mpc_uint16_t) mpc_bits_read(&d->bits_reader, 16); + d->chap[i].peak = (mpc_uint16_t) mpc_bits_read(&d->bits_reader, 16); + + tmp_size = b.size - size; + do { + mpc_uint_t rd_size = tmp_size; + mpc_uint8_t * tmp_buff = d->bits_reader.buff + ((8 - d->bits_reader.count) >> 3); + mpc_uint32_t avail_bytes = d->bytes_total + d->buffer - tmp_buff; + rd_size = mini(rd_size, avail_bytes); + memcpy(tmp_ptag, tmp_buff, rd_size); + tmp_size -= rd_size; + tmp_ptag += rd_size; + d->bits_reader.buff += rd_size; + mpc_demux_fill(d, tmp_size, 0); + } while (tmp_size > 0); + + d->chap[i].tag_size = b.size - size; + d->chap[i].tag = ptag; + ptag += b.size - size; + i++; + size = mpc_bits_get_block(&d->bits_reader, &b); + } + } + + d->bits_reader.buff -= size; + return MPC_STATUS_OK; +} + +static mpc_status mpc_demux_chap_find(mpc_demux * d) { + mpc_status s = mpc_demux_chap_find_inner(d); + if (MPC_IS_FAILURE(s)) + mpc_demux_chap_empty(d); + return s; +} + +/** + * Gets the number of chapters in the stream + * @param d pointer to a musepack demuxer + * @return the number of chapters found in the stream + */ +mpc_int_t mpc_demux_chap_nb(mpc_demux * d) +{ + if (d->chap_nb == -1) + mpc_demux_chap_find(d); + return d->chap_nb; +} + +/** + * Gets datas associated to a given chapter + * The chapter tag is an APEv2 tag without the preamble + * @param d pointer to a musepack demuxer + * @param chap_nb chapter number you want datas (from 0 to mpc_demux_chap_nb(d) - 1) + * @return the chapter information structure + */ +mpc_chap_info const * mpc_demux_chap(mpc_demux * d, int chap_nb) +{ + if (d->chap_nb == -1) + mpc_demux_chap_find(d); + if (chap_nb >= d->chap_nb || chap_nb < 0) + return 0; + return &d->chap[chap_nb]; +} + +static mpc_status mpc_demux_header(mpc_demux * d) +{ + char magic[4]; + + d->si.pns = 0xFF; + d->si.profile_name = "n.a."; + + // get header position + d->si.header_position = mpc_demux_skip_id3v2(d); + if(d->si.header_position < 0) + return MPC_STATUS_FAIL; + + d->si.tag_offset = d->si.total_file_length = d->r->get_size(d->r); + + mpc_demux_fill(d, 4, 0); + magic[0] = mpc_bits_read(&d->bits_reader, 8); + magic[1] = mpc_bits_read(&d->bits_reader, 8); + magic[2] = mpc_bits_read(&d->bits_reader, 8); + magic[3] = mpc_bits_read(&d->bits_reader, 8); + + if (memcmp(magic, "MP+", 3) == 0) { + d->si.stream_version = magic[3] & 15; + d->si.pns = magic[3] >> 4; + if (d->si.stream_version != 7) + return MPC_STATUS_FAIL; + if (mpc_demux_fill(d, 6 * 4, MPC_BUFFER_SWAP) < 6 * 4) // header block size + endian convertion + return MPC_STATUS_FAIL; + MPC_AUTO_FAIL( streaminfo_read_header_sv7(&d->si, &d->bits_reader) ); + } else if (memcmp(magic, "MPCK", 4) == 0) { + mpc_block b; + int size; + mpc_demux_fill(d, 11, 0); // max header block size + size = mpc_bits_get_block(&d->bits_reader, &b); + while( memcmp(b.key, "AP", 2) != 0 ){ // scan all blocks until audio + if (mpc_check_key(b.key) != MPC_STATUS_OK) + return MPC_STATUS_FAIL; + if (b.size > (mpc_uint64_t) DEMUX_BUFFER_SIZE - 11) + return MPC_STATUS_FAIL; + + if (mpc_demux_fill(d, 11 + (mpc_uint32_t) b.size, 0) <= b.size) + return MPC_STATUS_FAIL; + + if (memcmp(b.key, "SH", 2) == 0) { + MPC_AUTO_FAIL( streaminfo_read_header_sv8(&d->si, &d->bits_reader, (mpc_uint32_t) b.size) ); + } else if (memcmp(b.key, "RG", 2) == 0) { + streaminfo_gain(&d->si, &d->bits_reader); + } else if (memcmp(b.key, "EI", 2) == 0) { + streaminfo_encoder_info(&d->si, &d->bits_reader); + } else if (memcmp(b.key, "SO", 2) == 0) { + MPC_AUTO_FAIL( mpc_demux_SP(d, size, (mpc_uint32_t) b.size) ); + } else if (memcmp(b.key, "ST", 2) == 0) { + MPC_AUTO_FAIL( mpc_demux_ST(d) ); + } + d->bits_reader.buff += b.size; + size = mpc_bits_get_block(&d->bits_reader, &b); + } + d->bits_reader.buff -= size; + if (d->si.stream_version == 0) // si not initialized !!! + return MPC_STATUS_FAIL; + } else { + return MPC_STATUS_FAIL; + } + + return MPC_STATUS_OK; +} + +mpc_demux * mpc_demux_init(mpc_reader * p_reader) +{ + mpc_demux* p_tmp = malloc(sizeof(mpc_demux)); + + if (p_tmp != 0) { + memset(p_tmp, 0, sizeof(mpc_demux)); + p_tmp->r = p_reader; + p_tmp->chap_nb = -1; + mpc_demux_clear_buff(p_tmp); + if (mpc_demux_header(p_tmp) == MPC_STATUS_OK && + mpc_demux_seek_init(p_tmp) == MPC_STATUS_OK) { + p_tmp->d = mpc_decoder_init(&p_tmp->si); + } else { + if (p_tmp->seek_table) + free(p_tmp->seek_table); + free(p_tmp); + p_tmp = 0; + } + } + + return p_tmp; +} + +void mpc_demux_exit(mpc_demux * d) +{ + mpc_decoder_exit(d->d); + free(d->seek_table); + free(d->chap); + free(d); +} + +void mpc_demux_get_info(mpc_demux * d, mpc_streaminfo * i) +{ + memcpy(i, &d->si, sizeof d->si); +} + +static mpc_status mpc_demux_decode_inner(mpc_demux * d, mpc_frame_info * i) +{ + mpc_bits_reader r; + if (d->si.stream_version >= 8) { + i->is_key_frame = MPC_FALSE; + + if (d->block_frames == 0) { + mpc_block b = {{0,0},0}; + d->bits_reader.count &= -8; + if (d->d->decoded_samples == (d->seek_table_size << d->seek_pwr) * MPC_FRAME_LENGTH) { + d->seek_table[d->seek_table_size] = (mpc_seek_t) mpc_demux_pos(d); + d->seek_table_size ++; + } + mpc_demux_fill(d, 11, MPC_BUFFER_FULL); // max header block size + mpc_bits_get_block(&d->bits_reader, &b); + while( memcmp(b.key, "AP", 2) != 0 ) { // scan all blocks until audio + MPC_AUTO_FAIL( mpc_check_key(b.key) ); + + if (memcmp(b.key, "SE", 2) == 0) { // end block + i->bits = -1; + return MPC_STATUS_OK; + } + + if (mpc_demux_fill(d, 11 + (mpc_uint32_t) b.size, MPC_BUFFER_FULL) < b.size) + return MPC_STATUS_FAIL; + + d->bits_reader.buff += b.size; + mpc_bits_get_block(&d->bits_reader, &b); + } + d->block_bits = (mpc_uint32_t) b.size * 8; + d->block_frames = 1 << d->si.block_pwr; + i->is_key_frame = MPC_TRUE; + } + if (d->buffer + d->bytes_total - d->bits_reader.buff <= MAX_FRAME_SIZE) + mpc_demux_fill(d, (d->block_bits >> 3) + 1, MPC_BUFFER_FULL); + r = d->bits_reader; + mpc_decoder_decode_frame(d->d, &d->bits_reader, i); + d->block_bits -= ((d->bits_reader.buff - r.buff) << 3) + r.count - d->bits_reader.count; + d->block_frames--; + if (d->block_bits < 0 || (d->block_frames == 0 && d->block_bits > 7)) + return MPC_STATUS_FAIL; + } else { + if (d->d->decoded_samples == (d->seek_table_size << d->seek_pwr) * MPC_FRAME_LENGTH) { + d->seek_table[d->seek_table_size] = (mpc_seek_t) mpc_demux_pos(d); + d->seek_table_size ++; + } + mpc_demux_fill(d, MAX_FRAME_SIZE, MPC_BUFFER_FULL | MPC_BUFFER_SWAP); + d->block_bits = (mpc_int_t) mpc_bits_read(&d->bits_reader, 20); // read frame size + if (MPC_FRAME_LENGTH > d->d->samples - d->d->decoded_samples - 1) d->block_bits += 11; // we will read last frame size + r = d->bits_reader; + mpc_decoder_decode_frame(d->d, &d->bits_reader, i); + if (i->bits != -1 && d->block_bits != ((d->bits_reader.buff - r.buff) << 3) + r.count - d->bits_reader.count) + return MPC_STATUS_FAIL; + } + if (i->bits != -1 && d->buffer + d->bytes_total < d->bits_reader.buff + ((8 - d->bits_reader.count) >> 3)) + return MPC_STATUS_FAIL; + + return MPC_STATUS_OK; +} + +mpc_status mpc_demux_decode(mpc_demux * d, mpc_frame_info * i) { + mpc_status s = mpc_demux_decode_inner(d, i); + if (MPC_IS_FAILURE(s)) + i->bits = -1; // we pretend it's end of file + return s; +} + +mpc_status mpc_demux_seek_second(mpc_demux * d, double seconds) +{ + return mpc_demux_seek_sample(d, (mpc_int64_t)(seconds * (double)d->si.sample_freq + 0.5)); +} + +mpc_status mpc_demux_seek_sample(mpc_demux * d, mpc_uint64_t destsample) +{ + mpc_uint32_t fwd, samples_to_skip, i; + mpc_uint32_t block_samples = MPC_FRAME_LENGTH << d->si.block_pwr; + mpc_seek_t fpos; + + destsample += d->si.beg_silence; + if (destsample > d->si.samples) destsample = d->si.samples; + fwd = (mpc_uint32_t) (destsample / block_samples); + samples_to_skip = MPC_DECODER_SYNTH_DELAY + + (mpc_uint32_t) (destsample % block_samples); + if (d->si.stream_version == 7) { + if (fwd > 32) { + fwd -= 32; + samples_to_skip += MPC_FRAME_LENGTH * 32; + } else { + samples_to_skip += MPC_FRAME_LENGTH * fwd; + fwd = 0; + } + } + + i = fwd >> (d->seek_pwr - d->si.block_pwr); + if (i >= d->seek_table_size) + i = d->seek_table_size - 1; + fpos = d->seek_table[i]; + i <<= d->seek_pwr - d->si.block_pwr; + d->d->decoded_samples = i * block_samples; + + if (d->si.stream_version >= 8) { + mpc_block b; + int size; + mpc_demux_seek(d, fpos, 11); + size = mpc_bits_get_block(&d->bits_reader, &b); + while(i < fwd) { + if (memcmp(b.key, "AP", 2) == 0) { + if (d->d->decoded_samples == (d->seek_table_size << d->seek_pwr) * MPC_FRAME_LENGTH) { + d->seek_table[d->seek_table_size] = (mpc_seek_t) mpc_demux_pos(d) - 8 * size; + d->seek_table_size ++; + } + d->d->decoded_samples += block_samples; + i++; + } + fpos += ((mpc_uint32_t)b.size + size) * 8; + mpc_demux_seek(d, fpos, 11); + size = mpc_bits_get_block(&d->bits_reader, &b); + } + d->bits_reader.buff -= size; + } else { + mpc_decoder_reset_scf(d->d, fwd != 0); + mpc_demux_seek(d, fpos, 4); + for( ; i < fwd; i++){ + if (d->d->decoded_samples == (d->seek_table_size << d->seek_pwr) * MPC_FRAME_LENGTH) { + d->seek_table[d->seek_table_size] = (mpc_seek_t) mpc_demux_pos(d); + d->seek_table_size ++; + } + d->d->decoded_samples += block_samples; + fpos += mpc_bits_read(&d->bits_reader, 20) + 20; + mpc_demux_seek(d, fpos, 4); + } + } + d->d->samples_to_skip = samples_to_skip; + return MPC_STATUS_OK; +} + +void mpc_set_replay_level(mpc_demux * d, float level, mpc_bool_t use_gain, + mpc_bool_t use_title, mpc_bool_t clip_prevention) +{ + float peak = (float) ( use_title ? d->si.peak_title : d->si.peak_album ); + float gain = (float) ( use_title ? d->si.gain_title : d->si.gain_album ); + + if(!use_gain && !clip_prevention) + return; + + if(!peak) + peak = 1.; + else + peak = (float) ( (1 << 15) / pow(10, peak / (20 * 256)) ); + + if(!gain) + gain = 1.; + else + gain = (float) pow(10, (level - gain / 256) / 20); + + if(clip_prevention && (peak < gain || !use_gain)) + gain = peak; + + mpc_decoder_scale_output(d->d, gain); +} diff --git a/libmpcdec/mpc_reader.c b/libmpcdec/mpc_reader.c new file mode 100755 index 0000000..06aa49e --- /dev/null +++ b/libmpcdec/mpc_reader.c @@ -0,0 +1,144 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file mpc_reader.c +/// Contains implementations for simple file-based mpc_reader +#include +#include "internal.h" +#include + +#define STDIO_MAGIC 0xF34B963C ///< Just a random safe-check value... +typedef struct mpc_reader_stdio_t { + FILE *p_file; + int file_size; + mpc_bool_t is_seekable; + mpc_int32_t magic; +} mpc_reader_stdio; + +/// mpc_reader callback implementations +static mpc_int32_t +read_stdio(mpc_reader *p_reader, void *ptr, mpc_int32_t size) +{ + mpc_reader_stdio *p_stdio = (mpc_reader_stdio*) p_reader->data; + if(p_stdio->magic != STDIO_MAGIC) return MPC_STATUS_FAIL; + return (mpc_int32_t) fread(ptr, 1, size, p_stdio->p_file); +} + +static mpc_bool_t +seek_stdio(mpc_reader *p_reader, mpc_int32_t offset) +{ + mpc_reader_stdio *p_stdio = (mpc_reader_stdio*) p_reader->data; + if(p_stdio->magic != STDIO_MAGIC) return MPC_FALSE; + return p_stdio->is_seekable ? fseek(p_stdio->p_file, offset, SEEK_SET) == 0 : MPC_FALSE; +} + +static mpc_int32_t +tell_stdio(mpc_reader *p_reader) +{ + mpc_reader_stdio *p_stdio = (mpc_reader_stdio*) p_reader->data; + if(p_stdio->magic != STDIO_MAGIC) return MPC_STATUS_FAIL; + return ftell(p_stdio->p_file); +} + +static mpc_int32_t +get_size_stdio(mpc_reader *p_reader) +{ + mpc_reader_stdio *p_stdio = (mpc_reader_stdio*) p_reader->data; + if(p_stdio->magic != STDIO_MAGIC) return MPC_STATUS_FAIL; + return p_stdio->file_size; +} + +static mpc_bool_t +canseek_stdio(mpc_reader *p_reader) +{ + mpc_reader_stdio *p_stdio = (mpc_reader_stdio*) p_reader->data; + if(p_stdio->magic != STDIO_MAGIC) return MPC_FALSE; + return p_stdio->is_seekable; +} + +mpc_status +mpc_reader_init_stdio_stream(mpc_reader * p_reader, FILE * p_file) +{ + mpc_reader tmp_reader; mpc_reader_stdio *p_stdio; int err; + + p_stdio = NULL; + memset(&tmp_reader, 0, sizeof tmp_reader); + p_stdio = malloc(sizeof *p_stdio); + if(!p_stdio) return MPC_STATUS_FAIL; + memset(p_stdio, 0, sizeof *p_stdio); + + p_stdio->magic = STDIO_MAGIC; + p_stdio->p_file = p_file; + p_stdio->is_seekable = MPC_TRUE; + err = fseek(p_stdio->p_file, 0, SEEK_END); + if(err < 0) goto clean; + err = ftell(p_stdio->p_file); + if(err < 0) goto clean; + p_stdio->file_size = err; + err = fseek(p_stdio->p_file, 0, SEEK_SET); + if(err < 0) goto clean; + + tmp_reader.data = p_stdio; + tmp_reader.canseek = canseek_stdio; + tmp_reader.get_size = get_size_stdio; + tmp_reader.read = read_stdio; + tmp_reader.seek = seek_stdio; + tmp_reader.tell = tell_stdio; + + *p_reader = tmp_reader; + return MPC_STATUS_OK; +clean: + if(p_stdio && p_stdio->p_file) + fclose(p_stdio->p_file); + free(p_stdio); + return MPC_STATUS_FAIL; +} + +mpc_status +mpc_reader_init_stdio(mpc_reader *p_reader, const char *filename) +{ + FILE * stream = fopen(filename, "rb"); + if (stream == NULL) return MPC_STATUS_FAIL; + return mpc_reader_init_stdio_stream(p_reader,stream); +} + +void +mpc_reader_exit_stdio(mpc_reader *p_reader) +{ + mpc_reader_stdio *p_stdio = (mpc_reader_stdio*) p_reader->data; + if(p_stdio->magic != STDIO_MAGIC) return; + fclose(p_stdio->p_file); + free(p_stdio); + p_reader->data = NULL; +} + diff --git a/libmpcdec/mpcdec_math.h b/libmpcdec/mpcdec_math.h new file mode 100755 index 0000000..59a77a4 --- /dev/null +++ b/libmpcdec/mpcdec_math.h @@ -0,0 +1,135 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file mpcdec_math.h +/// Libmpcdec internal math routines. +#ifndef _MPCDEC_MATH_H_ +#define _MPCDEC_MATH_H_ +#ifdef WIN32 +#pragma once +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef MPC_FIXED_POINT + +#ifdef _WIN32_WCE +#include +#define MPC_HAVE_MULHIGH +#endif + +//in fixedpoint mode, results in decode output buffer are in -MPC_FIXED_POINT_SCALE ... MPC_FIXED_POINT_SCALE range + +typedef mpc_int64_t MPC_SAMPLE_FORMAT_MULTIPLY; + +#define MAKE_MPC_SAMPLE(X) (MPC_SAMPLE_FORMAT)((double)(X) * (double)(((mpc_int64_t)1)<> MPC_FIXED_POINT_FRACTPART) + +#define MPC_MULTIPLY_EX_NOTRUNCATE(X,Y,Z) \ + (((MPC_SAMPLE_FORMAT_MULTIPLY)(X) * (MPC_SAMPLE_FORMAT_MULTIPLY)(Y)) >> (Z)) + +#ifdef _DEBUG +static mpc_inline MPC_SAMPLE_FORMAT MPC_MULTIPLY(MPC_SAMPLE_FORMAT item1,MPC_SAMPLE_FORMAT item2) +{ + MPC_SAMPLE_FORMAT_MULTIPLY temp = MPC_MULTIPLY_NOTRUNCATE(item1,item2); + assert(temp == (MPC_SAMPLE_FORMAT_MULTIPLY)(MPC_SAMPLE_FORMAT)temp); + return (MPC_SAMPLE_FORMAT)temp; +} + +static mpc_inline MPC_SAMPLE_FORMAT MPC_MULTIPLY_EX(MPC_SAMPLE_FORMAT item1,MPC_SAMPLE_FORMAT item2,unsigned shift) +{ + MPC_SAMPLE_FORMAT_MULTIPLY temp = MPC_MULTIPLY_EX_NOTRUNCATE(item1,item2,shift); + assert(temp == (MPC_SAMPLE_FORMAT_MULTIPLY)(MPC_SAMPLE_FORMAT)temp); + return (MPC_SAMPLE_FORMAT)temp; +} + +#else + +#define MPC_MULTIPLY(X,Y) ((MPC_SAMPLE_FORMAT)MPC_MULTIPLY_NOTRUNCATE(X,Y)) +#define MPC_MULTIPLY_EX(X,Y,Z) ((MPC_SAMPLE_FORMAT)MPC_MULTIPLY_EX_NOTRUNCATE(X,Y,Z)) + +#endif + +#ifdef MPC_HAVE_MULHIGH +#define MPC_MULTIPLY_FRACT(X,Y) _MulHigh(X,Y) +#else +#define MPC_MULTIPLY_FRACT(X,Y) MPC_MULTIPLY_EX(X,Y,32) +#endif + +#define MPC_MAKE_FRACT_CONST(X) (MPC_SAMPLE_FORMAT)((X) * (double)(((mpc_int64_t)1)<<32) ) +#define MPC_MULTIPLY_FRACT_CONST(X,Y) MPC_MULTIPLY_FRACT(X,MPC_MAKE_FRACT_CONST(Y)) +#define MPC_MULTIPLY_FRACT_CONST_FIX(X,Y,Z) ( MPC_MULTIPLY_FRACT(X,MPC_MAKE_FRACT_CONST( Y / (1<<(Z)) )) << (Z) ) +#define MPC_MULTIPLY_FRACT_CONST_SHR(X,Y,Z) MPC_MULTIPLY_FRACT(X,MPC_MAKE_FRACT_CONST( Y / (1<<(Z)) )) + +#define MPC_MULTIPLY_FLOAT_INT(X,Y) ((X)*(Y)) +#define MPC_SCALE_CONST(X,Y,Z) MPC_MULTIPLY_EX(X,MAKE_MPC_SAMPLE_EX(Y,Z),(Z)) +#define MPC_SCALE_CONST_SHL(X,Y,Z,S) MPC_MULTIPLY_EX(X,MAKE_MPC_SAMPLE_EX(Y,Z),(Z)-(S)) +#define MPC_SCALE_CONST_SHR(X,Y,Z,S) MPC_MULTIPLY_EX(X,MAKE_MPC_SAMPLE_EX(Y,Z),(Z)+(S)) +#define MPC_SHR(X,Y) ((X)>>(Y)) +#define MPC_SHL(X,Y) ((X)<<(Y)) + +#else + +//in floating-point mode, decoded samples are in -1...1 range + +#define MAKE_MPC_SAMPLE(X) ((MPC_SAMPLE_FORMAT)(X)) +#define MAKE_MPC_SAMPLE_EX(X,Y) ((MPC_SAMPLE_FORMAT)(X)) + +#define MPC_MULTIPLY_FRACT(X,Y) ((X)*(Y)) +#define MPC_MAKE_FRACT_CONST(X) (X) +#define MPC_MULTIPLY_FRACT_CONST(X,Y) MPC_MULTPLY_FRACT(X,MPC_MAKE_FRACT_CONST(Y)) +#define MPC_MULTIPLY_FRACT_CONST_SHR(X,Y,Z) MPC_MULTIPLY_FRACT(X,MPC_MAKE_FRACT_CONST( Y )) +#define MPC_MULTIPLY_FRACT_CONST_FIX(X,Y,Z) MPC_MULTIPLY_FRACT(X,MPC_MAKE_FRACT_CONST( Y )) + +#define MPC_MULTIPLY_FLOAT_INT(X,Y) ((X)*(Y)) +#define MPC_MULTIPLY(X,Y) ((X)*(Y)) +#define MPC_MULTIPLY_EX(X,Y,Z) ((X)*(Y)) +#define MPC_SCALE_CONST(X,Y,Z) ((X)*(Y)) +#define MPC_SCALE_CONST_SHL(X,Y,Z,S) ((X)*(Y)) +#define MPC_SCALE_CONST_SHR(X,Y,Z,S) ((X)*(Y)) +#define MPC_SHR(X,Y) (X) +#define MPC_SHL(X,Y) (X) + +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libmpcdec/requant.c b/libmpcdec/requant.c new file mode 100755 index 0000000..c74d145 --- /dev/null +++ b/libmpcdec/requant.c @@ -0,0 +1,124 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file requant.c +/// Requantization function implementations. +/// \todo document me +#include + +#include "requant.h" +#include "mpcdec_math.h" +#include "decoder.h" + +/* C O N S T A N T S */ +// Bits per sample for chosen quantizer +const mpc_uint8_t Res_bit [18] = { + 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 +}; + +// Requantization coefficients +// 65536/step bzw. 65536/(2*D+1) + +#define _(X) MAKE_MPC_SAMPLE_EX(X,14) + +const MPC_SAMPLE_FORMAT __Cc [1 + 18] = { + _(111.285962475327f), // 32768/2/255*sqrt(3) + _(65536.000000000000f), _(21845.333333333332f), _(13107.200000000001f), _(9362.285714285713f), + _(7281.777777777777f), _(4369.066666666666f), _(2114.064516129032f), _(1040.253968253968f), + _(516.031496062992f), _(257.003921568627f), _(128.250489236790f), _(64.062561094819f), + _(32.015632633121f), _(16.003907203907f), _(8.000976681723f), _(4.000244155527f), + _(2.000061037018f), _(1.000015259021f) +}; + +#undef _ + +// Requantization offset +// 2*D+1 = steps of quantizer +const mpc_int16_t __Dc [1 + 18] = { + 2, + 0, 1, 2, 3, 4, 7, 15, 31, 63, + 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767 +}; + +#ifdef MPC_FIXED_POINT +static mpc_uint32_t find_shift(double fval) +{ + mpc_int64_t val = (mpc_int64_t) fval; + mpc_uint32_t ptr = 0; + if(val<0) + val = -val; + while(val) + { + val >>= 1; + ptr++; + } + return ptr > 31 ? 0 : 31 - ptr; +} +#endif + +/* F U N C T I O N S */ + +#define SET_SCF(N,X) d->SCF[N] = MAKE_MPC_SAMPLE_EX(X,d->SCF_shift[N] = (mpc_uint8_t) find_shift(X)); + +void +mpc_decoder_scale_output(mpc_decoder *d, double factor) +{ + mpc_int32_t n; double f1, f2; + +#ifndef MPC_FIXED_POINT + factor *= 1.0 / (double) (1<<(MPC_FIXED_POINT_SHIFT-1)); +#else + factor *= 1.0 / (double) (1<<(16-MPC_FIXED_POINT_SHIFT)); +#endif + f1 = f2 = factor; + + // handles +1.58...-98.41 dB, where's scf[n] / scf[n-1] = 1.20050805774840750476 + + SET_SCF(1,factor); + + f1 *= 0.83298066476582673961; + f2 *= 1/0.83298066476582673961; + + for ( n = 1; n <= 128; n++ ) { + SET_SCF((mpc_uint8_t)(1+n),f1); + SET_SCF((mpc_uint8_t)(1-n),f2); + f1 *= 0.83298066476582673961; + f2 *= 1/0.83298066476582673961; + } +} + +void +mpc_decoder_init_quant(mpc_decoder *d, double scale_factor) +{ + mpc_decoder_scale_output(d, scale_factor); +} diff --git a/libmpcdec/requant.h b/libmpcdec/requant.h new file mode 100755 index 0000000..c95101f --- /dev/null +++ b/libmpcdec/requant.h @@ -0,0 +1,61 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file requant.h +/// Requantization function definitions. +#ifndef _MPCDEC_REQUANT_H_ +#define _MPCDEC_REQUANT_H_ +#ifdef WIN32 +#pragma once +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* C O N S T A N T S */ +extern const mpc_uint8_t Res_bit [18]; ///< Bits per sample for chosen quantizer +extern const MPC_SAMPLE_FORMAT __Cc [1 + 18]; ///< Requantization coefficients +extern const mpc_int16_t __Dc [1 + 18]; ///< Requantization offset + +#define Cc (__Cc + 1) +#define Dc (__Dc + 1) + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libmpcdec/streaminfo.c b/libmpcdec/streaminfo.c new file mode 100755 index 0000000..0e2e844 --- /dev/null +++ b/libmpcdec/streaminfo.c @@ -0,0 +1,245 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file streaminfo.c +/// Implementation of streaminfo reading functions. + +#include +#include +#include +#include +#include "internal.h" +#include "huffman.h" +#include "mpc_bits_reader.h" + +unsigned long mpc_crc32(unsigned char *buf, int len); + +static const char na[] = "n.a."; +static char const * const versionNames[] = { + na, "'Unstable/Experimental'", na, na, na, "'quality 0'", "'quality 1'", + "'Telephone'", "'Thumb'", "'Radio'", "'Standard'", "'Extreme'", "'Insane'", + "'BrainDead'", "'quality 9'", "'quality 10'" +}; +static const mpc_int32_t samplefreqs[8] = { 44100, 48000, 37800, 32000 }; + +static const char * +mpc_get_version_string(float profile) // profile is 0...15, where 7...13 is used +{ + return profile >= sizeof versionNames / sizeof *versionNames ? na : versionNames[(int)profile]; +} + +static void +mpc_get_encoder_string(mpc_streaminfo* si) +{ + int ver = si->encoder_version; + if (si->stream_version >= 8) + ver = (si->encoder_version >> 24) * 100 + ((si->encoder_version >> 16) & 0xFF); + if (ver <= 116) { + if (ver == 0) { + sprintf(si->encoder, "Buschmann 1.7.0...9, Klemm 0.90...1.05"); + } else { + switch (ver % 10) { + case 0: + sprintf(si->encoder, "Release %u.%u", ver / 100, + ver / 10 % 10); + break; + case 2: case 4: case 6: case 8: + sprintf(si->encoder, "Beta %u.%02u", ver / 100, + ver % 100); + break; + default: + sprintf(si->encoder, "--Alpha-- %u.%02u", + ver / 100, ver % 100); + break; + } + } + } else { + int major = si->encoder_version >> 24; + int minor = (si->encoder_version >> 16) & 0xFF; + int build = (si->encoder_version >> 8) & 0xFF; + char * tmp = "--Stable--"; + + if (minor & 1) + tmp = "--Unstable--"; + + sprintf(si->encoder, "%s %u.%u.%u", tmp, major, minor, build); + } +} + +static mpc_status check_streaminfo(mpc_streaminfo * si) +{ + if (si->max_band == 0 || si->max_band >= 32 + || si->channels > 2 || si->channels == 0 || si->sample_freq == 0) + return MPC_STATUS_FAIL; + return MPC_STATUS_OK; +} + +/// Reads streaminfo from SV7 header. +mpc_status +streaminfo_read_header_sv7(mpc_streaminfo* si, mpc_bits_reader * r) +{ + mpc_uint16_t Estimatedpeak_title = 0; + mpc_uint32_t frames, last_frame_samples; + + si->bitrate = 0; + frames = (mpc_bits_read(r, 16) << 16) | mpc_bits_read(r, 16); + mpc_bits_read(r, 1); // intensity stereo : should be 0 + si->ms = mpc_bits_read(r, 1); + si->max_band = mpc_bits_read(r, 6); + si->profile = mpc_bits_read(r, 4); + si->profile_name = mpc_get_version_string(si->profile); + mpc_bits_read(r, 2); // Link ? + si->sample_freq = samplefreqs[mpc_bits_read(r, 2)]; + Estimatedpeak_title = (mpc_uint16_t) mpc_bits_read(r, 16); // read the ReplayGain data + si->gain_title = (mpc_uint16_t) mpc_bits_read(r, 16); + si->peak_title = (mpc_uint16_t) mpc_bits_read(r, 16); + si->gain_album = (mpc_uint16_t) mpc_bits_read(r, 16); + si->peak_album = (mpc_uint16_t) mpc_bits_read(r, 16); + si->is_true_gapless = mpc_bits_read(r, 1); // true gapless: used? + last_frame_samples = mpc_bits_read(r, 11); // true gapless: valid samples for last frame + si->fast_seek = mpc_bits_read(r, 1); // fast seeking + mpc_bits_read(r, 19); // unused + si->encoder_version = mpc_bits_read(r, 8); + si->channels = 2; + si->block_pwr = 0; + + // convert gain info + if (si->gain_title != 0) { + int tmp = (int)((MPC_OLD_GAIN_REF - (mpc_int16_t)si->gain_title / 100.) * 256. + .5); + if (tmp >= (1 << 16) || tmp < 0) tmp = 0; + si->gain_title = (mpc_int16_t) tmp; + } + + if (si->gain_album != 0) { + int tmp = (int)((MPC_OLD_GAIN_REF - (mpc_int16_t)si->gain_album / 100.) * 256. + .5); + if (tmp >= (1 << 16) || tmp < 0) tmp = 0; + si->gain_album = (mpc_int16_t) tmp; + } + + if (si->peak_title != 0) + si->peak_title = (mpc_uint16_t) (log10(si->peak_title) * 20 * 256 + .5); + + if (si->peak_album != 0) + si->peak_album = (mpc_uint16_t) (log10(si->peak_album) * 20 * 256 + .5); + + mpc_get_encoder_string(si); + + if (last_frame_samples == 0) last_frame_samples = MPC_FRAME_LENGTH; + else if (last_frame_samples > MPC_FRAME_LENGTH) return MPC_STATUS_FAIL; + si->samples = (mpc_int64_t) frames * MPC_FRAME_LENGTH; + if (si->is_true_gapless) + si->samples -= (MPC_FRAME_LENGTH - last_frame_samples); + else + si->samples -= MPC_DECODER_SYNTH_DELAY; + + si->average_bitrate = (si->tag_offset - si->header_position) * 8.0 + * si->sample_freq / si->samples; + + return check_streaminfo(si); +} + +/// Reads replay gain datas +void streaminfo_gain(mpc_streaminfo* si, const mpc_bits_reader * r_in) +{ + mpc_bits_reader r = *r_in; + + int version = mpc_bits_read(&r, 8); // gain version + if (version != 1) // we only know ver 1 + return; + si->gain_title = (mpc_uint16_t) mpc_bits_read(&r, 16); + si->peak_title = (mpc_uint16_t) mpc_bits_read(&r, 16); + si->gain_album = (mpc_uint16_t) mpc_bits_read(&r, 16); + si->peak_album = (mpc_uint16_t) mpc_bits_read(&r, 16); +} + +/// Reads streaminfo from SV8 header. +mpc_status +streaminfo_read_header_sv8(mpc_streaminfo* si, const mpc_bits_reader * r_in, + mpc_size_t block_size) +{ + mpc_uint32_t CRC; + mpc_bits_reader r = *r_in; + + CRC = (mpc_bits_read(&r, 16) << 16) | mpc_bits_read(&r, 16); + if (CRC != mpc_crc32(r.buff + 1 - (r.count >> 3), (int)block_size - 4)) + return MPC_STATUS_FAIL; + + si->stream_version = mpc_bits_read(&r, 8); + if (si->stream_version != 8) + return MPC_STATUS_FAIL; + + mpc_bits_get_size(&r, &si->samples); + mpc_bits_get_size(&r, &si->beg_silence); + + si->is_true_gapless = 1; + si->sample_freq = samplefreqs[mpc_bits_read(&r, 3)]; + si->max_band = mpc_bits_read(&r, 5) + 1; + si->channels = mpc_bits_read(&r, 4) + 1; + si->ms = mpc_bits_read(&r, 1); + si->block_pwr = mpc_bits_read(&r, 3) * 2; + + si->bitrate = 0; + + if ((si->samples - si->beg_silence) != 0) + si->average_bitrate = (si->tag_offset - si->header_position) * 8.0 + * si->sample_freq / (si->samples - si->beg_silence); + + return check_streaminfo(si); +} + +/// Reads encoder informations +void streaminfo_encoder_info(mpc_streaminfo* si, const mpc_bits_reader * r_in) +{ + mpc_bits_reader r = *r_in; + + si->profile = mpc_bits_read(&r, 7) / 8.; + si->profile_name = mpc_get_version_string(si->profile); + si->pns = mpc_bits_read(&r, 1); + si->encoder_version = mpc_bits_read(&r, 8) << 24; // major + si->encoder_version |= mpc_bits_read(&r, 8) << 16; // minor + si->encoder_version |= mpc_bits_read(&r, 8) << 8; // build + + + mpc_get_encoder_string(si); +} + +double +mpc_streaminfo_get_length(mpc_streaminfo * si) +{ + return (double) (si->samples - si->beg_silence) / si->sample_freq; +} + +mpc_int64_t mpc_streaminfo_get_length_samples(mpc_streaminfo *si) +{ + return si->samples - si->beg_silence; +} diff --git a/libmpcdec/synth_filter.c b/libmpcdec/synth_filter.c new file mode 100755 index 0000000..0d0c345 --- /dev/null +++ b/libmpcdec/synth_filter.c @@ -0,0 +1,430 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file synth_filter.c +/// Synthesis functions. +/// \todo document me +#include +#include +#include "decoder.h" +#include "mpcdec_math.h" + +/* C O N S T A N T S */ +#define MPC_FIXED_POINT_SYNTH_FIX 2 + +#undef _ +#ifdef MPC_FIXED_POINT +#define _(value) MPC_MAKE_FRACT_CONST((double)value/(double)(0x40000)) +#else +#define _(value) MAKE_MPC_SAMPLE((double)value/(double)(0x10000)) +#endif + + +static const MPC_SAMPLE_FORMAT Di_opt [32] [16] = { + { _( 0), _( -29), _( 213), _( -459), _( 2037), _(-5153), _( 6574), _(-37489), _(75038), _(37489), _(6574), _( 5153), _(2037), _( 459), _(213), _(29) }, + { _( -1), _( -31), _( 218), _( -519), _( 2000), _(-5517), _( 5959), _(-39336), _(74992), _(35640), _(7134), _( 4788), _(2063), _( 401), _(208), _(26) }, + { _( -1), _( -35), _( 222), _( -581), _( 1952), _(-5879), _( 5288), _(-41176), _(74856), _(33791), _(7640), _( 4425), _(2080), _( 347), _(202), _(24) }, + { _( -1), _( -38), _( 225), _( -645), _( 1893), _(-6237), _( 4561), _(-43006), _(74630), _(31947), _(8092), _( 4063), _(2087), _( 294), _(196), _(21) }, + { _( -1), _( -41), _( 227), _( -711), _( 1822), _(-6589), _( 3776), _(-44821), _(74313), _(30112), _(8492), _( 3705), _(2085), _( 244), _(190), _(19) }, + { _( -1), _( -45), _( 228), _( -779), _( 1739), _(-6935), _( 2935), _(-46617), _(73908), _(28289), _(8840), _( 3351), _(2075), _( 197), _(183), _(17) }, + { _( -1), _( -49), _( 228), _( -848), _( 1644), _(-7271), _( 2037), _(-48390), _(73415), _(26482), _(9139), _( 3004), _(2057), _( 153), _(176), _(16) }, + { _( -2), _( -53), _( 227), _( -919), _( 1535), _(-7597), _( 1082), _(-50137), _(72835), _(24694), _(9389), _( 2663), _(2032), _( 111), _(169), _(14) }, + { _( -2), _( -58), _( 224), _( -991), _( 1414), _(-7910), _( 70), _(-51853), _(72169), _(22929), _(9592), _( 2330), _(2001), _( 72), _(161), _(13) }, + { _( -2), _( -63), _( 221), _(-1064), _( 1280), _(-8209), _( -998), _(-53534), _(71420), _(21189), _(9750), _( 2006), _(1962), _( 36), _(154), _(11) }, + { _( -2), _( -68), _( 215), _(-1137), _( 1131), _(-8491), _( -2122), _(-55178), _(70590), _(19478), _(9863), _( 1692), _(1919), _( 2), _(147), _(10) }, + { _( -3), _( -73), _( 208), _(-1210), _( 970), _(-8755), _( -3300), _(-56778), _(69679), _(17799), _(9935), _( 1388), _(1870), _( -29), _(139), _( 9) }, + { _( -3), _( -79), _( 200), _(-1283), _( 794), _(-8998), _( -4533), _(-58333), _(68692), _(16155), _(9966), _( 1095), _(1817), _( -57), _(132), _( 8) }, + { _( -4), _( -85), _( 189), _(-1356), _( 605), _(-9219), _( -5818), _(-59838), _(67629), _(14548), _(9959), _( 814), _(1759), _( -83), _(125), _( 7) }, + { _( -4), _( -91), _( 177), _(-1428), _( 402), _(-9416), _( -7154), _(-61289), _(66494), _(12980), _(9916), _( 545), _(1698), _(-106), _(117), _( 7) }, + { _( -5), _( -97), _( 163), _(-1498), _( 185), _(-9585), _( -8540), _(-62684), _(65290), _(11455), _(9838), _( 288), _(1634), _(-127), _(111), _( 6) }, + { _( -5), _(-104), _( 146), _(-1567), _( -45), _(-9727), _( -9975), _(-64019), _(64019), _( 9975), _(9727), _( 45), _(1567), _(-146), _(104), _( 5) }, + { _( -6), _(-111), _( 127), _(-1634), _( -288), _(-9838), _(-11455), _(-65290), _(62684), _( 8540), _(9585), _( -185), _(1498), _(-163), _( 97), _( 5) }, + { _( -7), _(-117), _( 106), _(-1698), _( -545), _(-9916), _(-12980), _(-66494), _(61289), _( 7154), _(9416), _( -402), _(1428), _(-177), _( 91), _( 4) }, + { _( -7), _(-125), _( 83), _(-1759), _( -814), _(-9959), _(-14548), _(-67629), _(59838), _( 5818), _(9219), _( -605), _(1356), _(-189), _( 85), _( 4) }, + { _( -8), _(-132), _( 57), _(-1817), _(-1095), _(-9966), _(-16155), _(-68692), _(58333), _( 4533), _(8998), _( -794), _(1283), _(-200), _( 79), _( 3) }, + { _( -9), _(-139), _( 29), _(-1870), _(-1388), _(-9935), _(-17799), _(-69679), _(56778), _( 3300), _(8755), _( -970), _(1210), _(-208), _( 73), _( 3) }, + { _(-10), _(-147), _( -2), _(-1919), _(-1692), _(-9863), _(-19478), _(-70590), _(55178), _( 2122), _(8491), _(-1131), _(1137), _(-215), _( 68), _( 2) }, + { _(-11), _(-154), _( -36), _(-1962), _(-2006), _(-9750), _(-21189), _(-71420), _(53534), _( 998), _(8209), _(-1280), _(1064), _(-221), _( 63), _( 2) }, + { _(-13), _(-161), _( -72), _(-2001), _(-2330), _(-9592), _(-22929), _(-72169), _(51853), _( -70), _(7910), _(-1414), _( 991), _(-224), _( 58), _( 2) }, + { _(-14), _(-169), _(-111), _(-2032), _(-2663), _(-9389), _(-24694), _(-72835), _(50137), _(-1082), _(7597), _(-1535), _( 919), _(-227), _( 53), _( 2) }, + { _(-16), _(-176), _(-153), _(-2057), _(-3004), _(-9139), _(-26482), _(-73415), _(48390), _(-2037), _(7271), _(-1644), _( 848), _(-228), _( 49), _( 1) }, + { _(-17), _(-183), _(-197), _(-2075), _(-3351), _(-8840), _(-28289), _(-73908), _(46617), _(-2935), _(6935), _(-1739), _( 779), _(-228), _( 45), _( 1) }, + { _(-19), _(-190), _(-244), _(-2085), _(-3705), _(-8492), _(-30112), _(-74313), _(44821), _(-3776), _(6589), _(-1822), _( 711), _(-227), _( 41), _( 1) }, + { _(-21), _(-196), _(-294), _(-2087), _(-4063), _(-8092), _(-31947), _(-74630), _(43006), _(-4561), _(6237), _(-1893), _( 645), _(-225), _( 38), _( 1) }, + { _(-24), _(-202), _(-347), _(-2080), _(-4425), _(-7640), _(-33791), _(-74856), _(41176), _(-5288), _(5879), _(-1952), _( 581), _(-222), _( 35), _( 1) }, + { _(-26), _(-208), _(-401), _(-2063), _(-4788), _(-7134), _(-35640), _(-74992), _(39336), _(-5959), _(5517), _(-2000), _( 519), _(-218), _( 31), _( 1) } +}; + +#undef _ + +static void +mpc_compute_new_V(const MPC_SAMPLE_FORMAT* p_sample, MPC_SAMPLE_FORMAT* pV) +{ + // Calculating new V-buffer values for left channel + // calculate new V-values (ISO-11172-3, p. 39) + // based upon fast-MDCT algorithm by Byeong Gi Lee + MPC_SAMPLE_FORMAT A00, A01, A02, A03, A04, A05, A06, A07, A08, A09, A10, A11, A12, A13, A14, A15; + MPC_SAMPLE_FORMAT B00, B01, B02, B03, B04, B05, B06, B07, B08, B09, B10, B11, B12, B13, B14, B15; + MPC_SAMPLE_FORMAT tmp; + + A00 = p_sample[ 0] + p_sample[31]; + A01 = p_sample[ 1] + p_sample[30]; + A02 = p_sample[ 2] + p_sample[29]; + A03 = p_sample[ 3] + p_sample[28]; + A04 = p_sample[ 4] + p_sample[27]; + A05 = p_sample[ 5] + p_sample[26]; + A06 = p_sample[ 6] + p_sample[25]; + A07 = p_sample[ 7] + p_sample[24]; + A08 = p_sample[ 8] + p_sample[23]; + A09 = p_sample[ 9] + p_sample[22]; + A10 = p_sample[10] + p_sample[21]; + A11 = p_sample[11] + p_sample[20]; + A12 = p_sample[12] + p_sample[19]; + A13 = p_sample[13] + p_sample[18]; + A14 = p_sample[14] + p_sample[17]; + A15 = p_sample[15] + p_sample[16]; + + B00 = A00 + A15; + B01 = A01 + A14; + B02 = A02 + A13; + B03 = A03 + A12; + B04 = A04 + A11; + B05 = A05 + A10; + B06 = A06 + A09; + B07 = A07 + A08;; + B08 = MPC_SCALE_CONST((A00 - A15) , 0.5024192929f , 31); + B09 = MPC_SCALE_CONST((A01 - A14) , 0.5224986076f , 31); + B10 = MPC_SCALE_CONST((A02 - A13) , 0.5669440627f , 31); + B11 = MPC_SCALE_CONST((A03 - A12) , 0.6468217969f , 31); + B12 = MPC_SCALE_CONST((A04 - A11) , 0.7881546021f , 31); + B13 = MPC_SCALE_CONST((A05 - A10) , 1.0606776476f , 30); + B14 = MPC_SCALE_CONST((A06 - A09) , 1.7224471569f , 30); + B15 = MPC_SCALE_CONST((A07 - A08) , 5.1011486053f , 28); + + A00 = B00 + B07; + A01 = B01 + B06; + A02 = B02 + B05; + A03 = B03 + B04; + A04 = MPC_SCALE_CONST((B00 - B07) , 0.5097956061f , 31); + A05 = MPC_SCALE_CONST((B01 - B06) , 0.6013448834f , 31); + A06 = MPC_SCALE_CONST((B02 - B05) , 0.8999761939f , 31); + A07 = MPC_SCALE_CONST((B03 - B04) , 2.5629155636f , 29); + A08 = B08 + B15; + A09 = B09 + B14; + A10 = B10 + B13; + A11 = B11 + B12; + A12 = MPC_SCALE_CONST((B08 - B15) , 0.5097956061f , 31); + A13 = MPC_SCALE_CONST((B09 - B14) , 0.6013448834f , 31); + A14 = MPC_SCALE_CONST((B10 - B13) , 0.8999761939f , 31); + A15 = MPC_SCALE_CONST((B11 - B12) , 2.5629155636f , 29); + + B00 = A00 + A03; + B01 = A01 + A02; + B02 = MPC_MULTIPLY_FRACT_CONST_FIX((A00 - A03) , 0.5411961079f , 1); + B03 = MPC_MULTIPLY_FRACT_CONST_FIX((A01 - A02) , 1.3065630198f , 2); + B04 = A04 + A07; + B05 = A05 + A06; + B06 = MPC_MULTIPLY_FRACT_CONST_FIX((A04 - A07) , 0.5411961079f , 1); + B07 = MPC_MULTIPLY_FRACT_CONST_FIX((A05 - A06) , 1.3065630198f , 2); + B08 = A08 + A11; + B09 = A09 + A10; + B10 = MPC_MULTIPLY_FRACT_CONST_FIX((A08 - A11) , 0.5411961079f , 1); + B11 = MPC_MULTIPLY_FRACT_CONST_FIX((A09 - A10) , 1.3065630198f , 2); + B12 = A12 + A15; + B13 = A13 + A14; + B14 = MPC_MULTIPLY_FRACT_CONST_FIX((A12 - A15) , 0.5411961079f , 1); + B15 = MPC_MULTIPLY_FRACT_CONST_FIX((A13 - A14) , 1.3065630198f , 2); + + A00 = B00 + B01; + A01 = MPC_MULTIPLY_FRACT_CONST_FIX((B00 - B01) , 0.7071067691f , 1); + A02 = B02 + B03; + A03 = MPC_MULTIPLY_FRACT_CONST_FIX((B02 - B03) , 0.7071067691f , 1); + A04 = B04 + B05; + A05 = MPC_MULTIPLY_FRACT_CONST_FIX((B04 - B05) , 0.7071067691f , 1); + A06 = B06 + B07; + A07 = MPC_MULTIPLY_FRACT_CONST_FIX((B06 - B07) , 0.7071067691f , 1); + A08 = B08 + B09; + A09 = MPC_MULTIPLY_FRACT_CONST_FIX((B08 - B09) , 0.7071067691f , 1); + A10 = B10 + B11; + A11 = MPC_MULTIPLY_FRACT_CONST_FIX((B10 - B11) , 0.7071067691f , 1); + A12 = B12 + B13; + A13 = MPC_MULTIPLY_FRACT_CONST_FIX((B12 - B13) , 0.7071067691f , 1); + A14 = B14 + B15; + A15 = MPC_MULTIPLY_FRACT_CONST_FIX((B14 - B15) , 0.7071067691f , 1); + + pV[48] = -A00; + pV[ 0] = A01; + pV[40] = -A02 - (pV[ 8] = A03); + pV[36] = -((pV[ 4] = A05 + (pV[12] = A07)) + A06); + pV[44] = - A04 - A06 - A07; + pV[ 6] = (pV[10] = A11 + (pV[14] = A15)) + A13; + pV[38] = (pV[34] = -(pV[ 2] = A09 + A13 + A15) - A14) + A09 - A10 - A11; + pV[46] = (tmp = -(A12 + A14 + A15)) - A08; + pV[42] = tmp - A10 - A11; + + A00 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 0] - p_sample[31]) , 0.5006030202f , MPC_FIXED_POINT_SYNTH_FIX); + A01 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 1] - p_sample[30]) , 0.5054709315f , MPC_FIXED_POINT_SYNTH_FIX); + A02 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 2] - p_sample[29]) , 0.5154473186f , MPC_FIXED_POINT_SYNTH_FIX); + A03 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 3] - p_sample[28]) , 0.5310425758f , MPC_FIXED_POINT_SYNTH_FIX); + A04 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 4] - p_sample[27]) , 0.5531039238f , MPC_FIXED_POINT_SYNTH_FIX); + A05 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 5] - p_sample[26]) , 0.5829349756f , MPC_FIXED_POINT_SYNTH_FIX); + A06 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 6] - p_sample[25]) , 0.6225041151f , MPC_FIXED_POINT_SYNTH_FIX); + A07 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 7] - p_sample[24]) , 0.6748083234f , MPC_FIXED_POINT_SYNTH_FIX); + A08 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 8] - p_sample[23]) , 0.7445362806f , MPC_FIXED_POINT_SYNTH_FIX); + A09 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 9] - p_sample[22]) , 0.8393496275f , MPC_FIXED_POINT_SYNTH_FIX); + A10 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[10] - p_sample[21]) , 0.9725682139f , MPC_FIXED_POINT_SYNTH_FIX); +#if MPC_FIXED_POINT_SYNTH_FIX>=2 + A11 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[11] - p_sample[20]) , 1.1694399118f , MPC_FIXED_POINT_SYNTH_FIX); + A12 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[12] - p_sample[19]) , 1.4841645956f , MPC_FIXED_POINT_SYNTH_FIX); +#else + A11 = MPC_SCALE_CONST_SHR ((p_sample[11] - p_sample[20]) , 1.1694399118f , 30, MPC_FIXED_POINT_SYNTH_FIX); + A12 = MPC_SCALE_CONST_SHR ((p_sample[12] - p_sample[19]) , 1.4841645956f , 30, MPC_FIXED_POINT_SYNTH_FIX); +#endif + A13 = MPC_SCALE_CONST_SHR ((p_sample[13] - p_sample[18]) , 2.0577809811f , 29, MPC_FIXED_POINT_SYNTH_FIX); + A14 = MPC_SCALE_CONST_SHR ((p_sample[14] - p_sample[17]) , 3.4076085091f , 29, MPC_FIXED_POINT_SYNTH_FIX); + A15 = MPC_SCALE_CONST_SHR ((p_sample[15] - p_sample[16]) , 10.1900081635f, 27 ,MPC_FIXED_POINT_SYNTH_FIX); + + B00 = A00 + A15; + B01 = A01 + A14; + B02 = A02 + A13; + B03 = A03 + A12; + B04 = A04 + A11; + B05 = A05 + A10; + B06 = A06 + A09; + B07 = A07 + A08; + B08 = MPC_SCALE_CONST((A00 - A15) , 0.5024192929f , 31); + B09 = MPC_SCALE_CONST((A01 - A14) , 0.5224986076f , 31); + B10 = MPC_SCALE_CONST((A02 - A13) , 0.5669440627f , 31); + B11 = MPC_SCALE_CONST((A03 - A12) , 0.6468217969f , 31); + B12 = MPC_SCALE_CONST((A04 - A11) , 0.7881546021f , 31); + B13 = MPC_SCALE_CONST((A05 - A10) , 1.0606776476f , 30); + B14 = MPC_SCALE_CONST((A06 - A09) , 1.7224471569f , 30); + B15 = MPC_SCALE_CONST((A07 - A08) , 5.1011486053f , 28); + + A00 = B00 + B07; + A01 = B01 + B06; + A02 = B02 + B05; + A03 = B03 + B04; + A04 = MPC_SCALE_CONST((B00 - B07) , 0.5097956061f , 31); + A05 = MPC_SCALE_CONST((B01 - B06) , 0.6013448834f , 31); + A06 = MPC_SCALE_CONST((B02 - B05) , 0.8999761939f , 31); + A07 = MPC_SCALE_CONST((B03 - B04) , 2.5629155636f , 29); + A08 = B08 + B15; + A09 = B09 + B14; + A10 = B10 + B13; + A11 = B11 + B12; + A12 = MPC_SCALE_CONST((B08 - B15) , 0.5097956061f , 31); + A13 = MPC_SCALE_CONST((B09 - B14) , 0.6013448834f , 31); + A14 = MPC_SCALE_CONST((B10 - B13) , 0.8999761939f , 31); + A15 = MPC_SCALE_CONST((B11 - B12) , 2.5629155636f , 29); + + B00 = A00 + A03; + B01 = A01 + A02; + B02 = MPC_SCALE_CONST((A00 - A03) , 0.5411961079f , 31); + B03 = MPC_SCALE_CONST((A01 - A02) , 1.3065630198f , 30); + B04 = A04 + A07; + B05 = A05 + A06; + B06 = MPC_SCALE_CONST((A04 - A07) , 0.5411961079f , 31); + B07 = MPC_SCALE_CONST((A05 - A06) , 1.3065630198f , 30); + B08 = A08 + A11; + B09 = A09 + A10; + B10 = MPC_SCALE_CONST((A08 - A11) , 0.5411961079f , 31); + B11 = MPC_SCALE_CONST((A09 - A10) , 1.3065630198f , 30); + B12 = A12 + A15; + B13 = A13 + A14; + B14 = MPC_SCALE_CONST((A12 - A15) , 0.5411961079f , 31); + B15 = MPC_SCALE_CONST((A13 - A14) , 1.3065630198f , 30); + + A00 = MPC_SHL(B00 + B01, MPC_FIXED_POINT_SYNTH_FIX); + A01 = MPC_SCALE_CONST_SHL((B00 - B01) , 0.7071067691f , 31, MPC_FIXED_POINT_SYNTH_FIX); + A02 = MPC_SHL(B02 + B03, MPC_FIXED_POINT_SYNTH_FIX); + A03 = MPC_SCALE_CONST_SHL((B02 - B03) , 0.7071067691f , 31, MPC_FIXED_POINT_SYNTH_FIX); + A04 = MPC_SHL(B04 + B05, MPC_FIXED_POINT_SYNTH_FIX); + A05 = MPC_SCALE_CONST_SHL((B04 - B05) , 0.7071067691f , 31, MPC_FIXED_POINT_SYNTH_FIX); + A06 = MPC_SHL(B06 + B07, MPC_FIXED_POINT_SYNTH_FIX); + A07 = MPC_SCALE_CONST_SHL((B06 - B07) , 0.7071067691f , 31, MPC_FIXED_POINT_SYNTH_FIX); + A08 = MPC_SHL(B08 + B09, MPC_FIXED_POINT_SYNTH_FIX); + A09 = MPC_SCALE_CONST_SHL((B08 - B09) , 0.7071067691f , 31, MPC_FIXED_POINT_SYNTH_FIX); + A10 = MPC_SHL(B10 + B11, MPC_FIXED_POINT_SYNTH_FIX); + A11 = MPC_SCALE_CONST_SHL((B10 - B11) , 0.7071067691f , 31, MPC_FIXED_POINT_SYNTH_FIX); + A12 = MPC_SHL(B12 + B13, MPC_FIXED_POINT_SYNTH_FIX); + A13 = MPC_SCALE_CONST_SHL((B12 - B13) , 0.7071067691f , 31, MPC_FIXED_POINT_SYNTH_FIX); + A14 = MPC_SHL(B14 + B15, MPC_FIXED_POINT_SYNTH_FIX); + A15 = MPC_SCALE_CONST_SHL((B14 - B15) , 0.7071067691f , 31, MPC_FIXED_POINT_SYNTH_FIX); + + // mehrfach verwendete Ausdrcke: A04+A06+A07, A09+A13+A15 + pV[ 5] = (pV[11] = (pV[13] = A07 + (pV[15] = A15)) + A11) + A05 + A13; + pV[ 7] = (pV[ 9] = A03 + A11 + A15) + A13; + pV[33] = -(pV[ 1] = A01 + A09 + A13 + A15) - A14; + pV[35] = -(pV[ 3] = A05 + A07 + A09 + A13 + A15) - A06 - A14; + pV[37] = (tmp = -(A10 + A11 + A13 + A14 + A15)) - A05 - A06 - A07; + pV[39] = tmp - A02 - A03; // abh�gig vom Befehl drber + pV[41] = (tmp += A13 - A12) - A02 - A03; // abh�gig vom Befehl 2 drber + pV[43] = tmp - A04 - A06 - A07; // abh�gig von Befehlen 1 und 3 drber + pV[47] = (tmp = -(A08 + A12 + A14 + A15)) - A00; + pV[45] = tmp - A04 - A06 - A07; // abh�gig vom Befehl drber + + pV[32] = -pV[ 0]; + pV[31] = -pV[ 1]; + pV[30] = -pV[ 2]; + pV[29] = -pV[ 3]; + pV[28] = -pV[ 4]; + pV[27] = -pV[ 5]; + pV[26] = -pV[ 6]; + pV[25] = -pV[ 7]; + pV[24] = -pV[ 8]; + pV[23] = -pV[ 9]; + pV[22] = -pV[10]; + pV[21] = -pV[11]; + pV[20] = -pV[12]; + pV[19] = -pV[13]; + pV[18] = -pV[14]; + pV[17] = -pV[15]; + + pV[63] = pV[33]; + pV[62] = pV[34]; + pV[61] = pV[35]; + pV[60] = pV[36]; + pV[59] = pV[37]; + pV[58] = pV[38]; + pV[57] = pV[39]; + pV[56] = pV[40]; + pV[55] = pV[41]; + pV[54] = pV[42]; + pV[53] = pV[43]; + pV[52] = pV[44]; + pV[51] = pV[45]; + pV[50] = pV[46]; + pV[49] = pV[47]; +} + +static void +mpc_synthese_filter_float_internal(MPC_SAMPLE_FORMAT* p_out, MPC_SAMPLE_FORMAT* pV, const MPC_SAMPLE_FORMAT* pY, mpc_int_t channels) +{ + mpc_uint32_t n; + for ( n = 0; n < 36; n++, pY += 32 ) + { + MPC_SAMPLE_FORMAT* pData = p_out; + const MPC_SAMPLE_FORMAT* pD = (const MPC_SAMPLE_FORMAT*) &Di_opt; + mpc_int32_t k; + pV -= 64; + mpc_compute_new_V( pY, pV ); + for ( k = 0; k < 32; k++, pD += 16, pV++ ) + { + *pData = MPC_SHL( + MPC_MULTIPLY_FRACT(pV[ 0], pD[ 0]) + MPC_MULTIPLY_FRACT(pV[ 96], pD[ 1]) + MPC_MULTIPLY_FRACT(pV[128], pD[ 2]) + MPC_MULTIPLY_FRACT(pV[224], pD[ 3]) + + MPC_MULTIPLY_FRACT(pV[256], pD[ 4]) + MPC_MULTIPLY_FRACT(pV[352], pD[ 5]) + MPC_MULTIPLY_FRACT(pV[384], pD[ 6]) + MPC_MULTIPLY_FRACT(pV[480], pD[ 7]) + + MPC_MULTIPLY_FRACT(pV[512], pD[ 8]) + MPC_MULTIPLY_FRACT(pV[608], pD[ 9]) + MPC_MULTIPLY_FRACT(pV[640], pD[10]) + MPC_MULTIPLY_FRACT(pV[736], pD[11]) + + MPC_MULTIPLY_FRACT(pV[768], pD[12]) + MPC_MULTIPLY_FRACT(pV[864], pD[13]) + MPC_MULTIPLY_FRACT(pV[896], pD[14]) + MPC_MULTIPLY_FRACT(pV[992], pD[15]) + , 2); + pData += channels; + } + pV -= 32; //bleh + p_out += 32 * channels; + } +} + +void +mpc_decoder_synthese_filter_float(mpc_decoder* p_dec, MPC_SAMPLE_FORMAT* p_out, mpc_int_t channels) +{ + /********* left channel ********/ + memmove(&p_dec->V_L[MPC_V_MEM], p_dec->V_L, 960 * sizeof *p_dec->V_L); + mpc_synthese_filter_float_internal(p_out, &p_dec->V_L[MPC_V_MEM], p_dec->Y_L[0], channels); + + /******** right channel ********/ + if (channels > 1) { + memmove(&p_dec->V_R[MPC_V_MEM], p_dec->V_R, 960 * sizeof *p_dec->V_R); + mpc_synthese_filter_float_internal(p_out + 1, &p_dec->V_R[MPC_V_MEM], p_dec->Y_R[0], channels); + } +} + +/*******************************************/ +/* */ +/* dithered synthesis */ +/* */ +/*******************************************/ + +static const mpc_uint8_t Parity [256] = { // parity + 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, + 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, + 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, + 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, + 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, + 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, + 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, + 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0 +}; + +/* + * This is a simple random number generator with good quality for audio purposes. + * It consists of two polycounters with opposite rotation direction and different + * periods. The periods are coprime, so the total period is the product of both. + * + * ------------------------------------------------------------------------------------------------- + * +-> |31:30:29:28:27:26:25:24:23:22:21:20:19:18:17:16:15:14:13:12:11:10: 9: 8: 7: 6: 5: 4: 3: 2: 1: 0| + * | ------------------------------------------------------------------------------------------------- + * | | | | | | | + * | +--+--+--+-XOR-+--------+ + * | | + * +--------------------------------------------------------------------------------------+ + * + * ------------------------------------------------------------------------------------------------- + * |31:30:29:28:27:26:25:24:23:22:21:20:19:18:17:16:15:14:13:12:11:10: 9: 8: 7: 6: 5: 4: 3: 2: 1: 0| <-+ + * ------------------------------------------------------------------------------------------------- | + * | | | | | + * +--+----XOR----+--+ | + * | | + * +----------------------------------------------------------------------------------------+ + * + * + * The first has an period of 3*5*17*257*65537, the second of 7*47*73*178481, + * which gives a period of 18.410.713.077.675.721.215. The result is the + * XORed values of both generators. + */ +mpc_uint32_t +mpc_random_int(mpc_decoder* p_dec) +{ +#if 1 + mpc_uint32_t t1, t2, t3, t4; + + t3 = t1 = p_dec->__r1; t4 = t2 = p_dec->__r2; // Parity calculation is done via table lookup, this is also available + t1 &= 0xF5; t2 >>= 25; // on CPUs without parity, can be implemented in C and avoid unpredictable + t1 = Parity[t1]; t2 &= 0x63; // jumps and slow rotate through the carry flag operations. + t1 <<= 31; t2 = Parity[t2]; + + return (p_dec->__r1 = (t3 >> 1) | t1 ) ^ (p_dec->__r2 = (t4 + t4) | t2 ); +#else + return (p_dec->__r1 = (p_dec->__r1 >> 1) | ((mpc_uint32_t) Parity[ p_dec->__r1 & 0xF5] << 31)) + ^ (p_dec->__r2 = (p_dec->__r2 << 1) | (mpc_uint32_t) Parity[(p_dec->__r2 >> 25) & 0x63]); +#endif +} diff --git a/libmpcenc/CMakeFiles/CMakeDirectoryInformation.cmake b/libmpcenc/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f5f0d8d --- /dev/null +++ b/libmpcenc/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/dewdude/musepack/musepack_src_r475") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/dewdude/musepack/musepack_src_r475") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/libmpcenc/CMakeFiles/mpcenc_static.dir/DependInfo.cmake b/libmpcenc/CMakeFiles/mpcenc_static.dir/DependInfo.cmake new file mode 100644 index 0000000..47784cf --- /dev/null +++ b/libmpcenc/CMakeFiles/mpcenc_static.dir/DependInfo.cmake @@ -0,0 +1,28 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/dewdude/musepack/musepack_src_r475/common/crc32.c" "libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o" "gcc" "libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcenc/analy_filter.c" "libmpcenc/CMakeFiles/mpcenc_static.dir/analy_filter.c.o" "gcc" "libmpcenc/CMakeFiles/mpcenc_static.dir/analy_filter.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcenc/bitstream.c" "libmpcenc/CMakeFiles/mpcenc_static.dir/bitstream.c.o" "gcc" "libmpcenc/CMakeFiles/mpcenc_static.dir/bitstream.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcenc/encode_sv7.c" "libmpcenc/CMakeFiles/mpcenc_static.dir/encode_sv7.c.o" "gcc" "libmpcenc/CMakeFiles/mpcenc_static.dir/encode_sv7.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcenc/huffsv7.c" "libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.o" "gcc" "libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcenc/quant.c" "libmpcenc/CMakeFiles/mpcenc_static.dir/quant.c.o" "gcc" "libmpcenc/CMakeFiles/mpcenc_static.dir/quant.c.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o b/libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o new file mode 100644 index 0000000000000000000000000000000000000000..c4bfd4e056abe94c2b62d8d3fe125305eec63747 GIT binary patch literal 1768 zcmb_c&ubG=5T4gm8?`0=0)-0hrJ`UT-IRj%AStzWBSlc~C^6k`4A?Ybvw_xwQqq7$ zg#H=*3rg`6+d~gtnx1;>&0IWqX+*?0vzcj=#~uV7c=_IZ@0*!7Za?0GqMXeJb3hUGgeQeSfNYq?|@G-8!6F zJ+i9X-_mxSsMcY+(HtRS&aRUP6{!19B2GhvBg#4J{SBwOqny>B)N!KrwB2s+h3(J- z)Q;cIIPUQ_l5K9vQNOXThuB?COMi*2Yfg1f**nhXW<0TV;EZF|`>o2?Php_FziZcb z=^cCqLKrdv2Ea>@i88o(0@RpEUDh8g$ z8IP8Otoxe%S4$OL@{1+U4^}{j8N7TZ=VuEZ-{9ZC!f=}PStCt~{gd}+-(nOP#tqFh zB?M!gALS+c=Mkw6j~T8rPxB_e>u)4H@raBtlfH`@%4x>uS!hW?&SfzQ*tj9-m=KH- zFY}gTsV_K*2eKCp;aU_Kp?!?p0Ir^I2>tgQZ{Evj2j)4a8NdCP@h>nwYJL_!sLYAx zN42HC@KnaEjTAJw{w6tS7jV%xX2#S1gE>2-V1tvI{c~E9gmwvkqvG!|xyU*JGyV^x C5a+P~ literal 0 HcmV?d00001 diff --git a/libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o.d b/libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o.d new file mode 100644 index 0000000..bb16eab --- /dev/null +++ b/libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o.d @@ -0,0 +1,3 @@ +libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o: \ + /home/dewdude/musepack/musepack_src_r475/common/crc32.c \ + /usr/include/stdc-predef.h diff --git a/libmpcenc/CMakeFiles/mpcenc_static.dir/analy_filter.c.o b/libmpcenc/CMakeFiles/mpcenc_static.dir/analy_filter.c.o new file mode 100644 index 0000000000000000000000000000000000000000..d9f50b4c45e34b59f19f2e7a9dae5259f067c3bc GIT binary patch literal 35488 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 A4*&oF literal 0 HcmV?d00001 diff --git a/libmpcenc/CMakeFiles/mpcenc_static.dir/analy_filter.c.o.d b/libmpcenc/CMakeFiles/mpcenc_static.dir/analy_filter.c.o.d new file mode 100644 index 0000000..79ff946 --- /dev/null +++ b/libmpcenc/CMakeFiles/mpcenc_static.dir/analy_filter.c.o.d @@ -0,0 +1,43 @@ +libmpcenc/CMakeFiles/mpcenc_static.dir/analy_filter.c.o: \ + /home/dewdude/musepack/musepack_src_r475/libmpcenc/analy_filter.c \ + /usr/include/stdc-predef.h /usr/include/string.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/features-time64.h /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcmath.h \ + /usr/include/math.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/time64.h \ + /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/iscanonical.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/memory.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/datatypes.h diff --git a/libmpcenc/CMakeFiles/mpcenc_static.dir/bitstream.c.o b/libmpcenc/CMakeFiles/mpcenc_static.dir/bitstream.c.o new file mode 100644 index 0000000000000000000000000000000000000000..8b49ea78dc88ebadbc8dcf9095bf3344a4f356ba GIT binary patch literal 12256 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 K CMakeFiles/mpcenc_static.dir/analy_filter.c.i + +libmpcenc/CMakeFiles/mpcenc_static.dir/analy_filter.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcenc_static.dir/analy_filter.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcenc/analy_filter.c -o CMakeFiles/mpcenc_static.dir/analy_filter.c.s + +libmpcenc/CMakeFiles/mpcenc_static.dir/bitstream.c.o: libmpcenc/CMakeFiles/mpcenc_static.dir/flags.make +libmpcenc/CMakeFiles/mpcenc_static.dir/bitstream.c.o: libmpcenc/bitstream.c +libmpcenc/CMakeFiles/mpcenc_static.dir/bitstream.c.o: libmpcenc/CMakeFiles/mpcenc_static.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object libmpcenc/CMakeFiles/mpcenc_static.dir/bitstream.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcenc/CMakeFiles/mpcenc_static.dir/bitstream.c.o -MF CMakeFiles/mpcenc_static.dir/bitstream.c.o.d -o CMakeFiles/mpcenc_static.dir/bitstream.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcenc/bitstream.c + +libmpcenc/CMakeFiles/mpcenc_static.dir/bitstream.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcenc_static.dir/bitstream.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcenc/bitstream.c > CMakeFiles/mpcenc_static.dir/bitstream.c.i + +libmpcenc/CMakeFiles/mpcenc_static.dir/bitstream.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcenc_static.dir/bitstream.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcenc/bitstream.c -o CMakeFiles/mpcenc_static.dir/bitstream.c.s + +libmpcenc/CMakeFiles/mpcenc_static.dir/encode_sv7.c.o: libmpcenc/CMakeFiles/mpcenc_static.dir/flags.make +libmpcenc/CMakeFiles/mpcenc_static.dir/encode_sv7.c.o: libmpcenc/encode_sv7.c +libmpcenc/CMakeFiles/mpcenc_static.dir/encode_sv7.c.o: libmpcenc/CMakeFiles/mpcenc_static.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object libmpcenc/CMakeFiles/mpcenc_static.dir/encode_sv7.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcenc/CMakeFiles/mpcenc_static.dir/encode_sv7.c.o -MF CMakeFiles/mpcenc_static.dir/encode_sv7.c.o.d -o CMakeFiles/mpcenc_static.dir/encode_sv7.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcenc/encode_sv7.c + +libmpcenc/CMakeFiles/mpcenc_static.dir/encode_sv7.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcenc_static.dir/encode_sv7.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcenc/encode_sv7.c > CMakeFiles/mpcenc_static.dir/encode_sv7.c.i + +libmpcenc/CMakeFiles/mpcenc_static.dir/encode_sv7.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcenc_static.dir/encode_sv7.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcenc/encode_sv7.c -o CMakeFiles/mpcenc_static.dir/encode_sv7.c.s + +libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.o: libmpcenc/CMakeFiles/mpcenc_static.dir/flags.make +libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.o: libmpcenc/huffsv7.c +libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.o: libmpcenc/CMakeFiles/mpcenc_static.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building C object libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.o -MF CMakeFiles/mpcenc_static.dir/huffsv7.c.o.d -o CMakeFiles/mpcenc_static.dir/huffsv7.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcenc/huffsv7.c + +libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcenc_static.dir/huffsv7.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcenc/huffsv7.c > CMakeFiles/mpcenc_static.dir/huffsv7.c.i + +libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcenc_static.dir/huffsv7.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcenc/huffsv7.c -o CMakeFiles/mpcenc_static.dir/huffsv7.c.s + +libmpcenc/CMakeFiles/mpcenc_static.dir/quant.c.o: libmpcenc/CMakeFiles/mpcenc_static.dir/flags.make +libmpcenc/CMakeFiles/mpcenc_static.dir/quant.c.o: libmpcenc/quant.c +libmpcenc/CMakeFiles/mpcenc_static.dir/quant.c.o: libmpcenc/CMakeFiles/mpcenc_static.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building C object libmpcenc/CMakeFiles/mpcenc_static.dir/quant.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcenc/CMakeFiles/mpcenc_static.dir/quant.c.o -MF CMakeFiles/mpcenc_static.dir/quant.c.o.d -o CMakeFiles/mpcenc_static.dir/quant.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcenc/quant.c + +libmpcenc/CMakeFiles/mpcenc_static.dir/quant.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcenc_static.dir/quant.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcenc/quant.c > CMakeFiles/mpcenc_static.dir/quant.c.i + +libmpcenc/CMakeFiles/mpcenc_static.dir/quant.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcenc_static.dir/quant.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcenc/quant.c -o CMakeFiles/mpcenc_static.dir/quant.c.s + +libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o: libmpcenc/CMakeFiles/mpcenc_static.dir/flags.make +libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o: common/crc32.c +libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o: libmpcenc/CMakeFiles/mpcenc_static.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building C object libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o -MF CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o.d -o CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o -c /home/dewdude/musepack/musepack_src_r475/common/crc32.c + +libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcenc_static.dir/__/common/crc32.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/common/crc32.c > CMakeFiles/mpcenc_static.dir/__/common/crc32.c.i + +libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcenc_static.dir/__/common/crc32.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/common/crc32.c -o CMakeFiles/mpcenc_static.dir/__/common/crc32.c.s + +# Object files for target mpcenc_static +mpcenc_static_OBJECTS = \ +"CMakeFiles/mpcenc_static.dir/analy_filter.c.o" \ +"CMakeFiles/mpcenc_static.dir/bitstream.c.o" \ +"CMakeFiles/mpcenc_static.dir/encode_sv7.c.o" \ +"CMakeFiles/mpcenc_static.dir/huffsv7.c.o" \ +"CMakeFiles/mpcenc_static.dir/quant.c.o" \ +"CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o" + +# External object files for target mpcenc_static +mpcenc_static_EXTERNAL_OBJECTS = + +libmpcenc/libmpcenc_static.a: libmpcenc/CMakeFiles/mpcenc_static.dir/analy_filter.c.o +libmpcenc/libmpcenc_static.a: libmpcenc/CMakeFiles/mpcenc_static.dir/bitstream.c.o +libmpcenc/libmpcenc_static.a: libmpcenc/CMakeFiles/mpcenc_static.dir/encode_sv7.c.o +libmpcenc/libmpcenc_static.a: libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.o +libmpcenc/libmpcenc_static.a: libmpcenc/CMakeFiles/mpcenc_static.dir/quant.c.o +libmpcenc/libmpcenc_static.a: libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o +libmpcenc/libmpcenc_static.a: libmpcenc/CMakeFiles/mpcenc_static.dir/build.make +libmpcenc/libmpcenc_static.a: libmpcenc/CMakeFiles/mpcenc_static.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Linking C static library libmpcenc_static.a" + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && $(CMAKE_COMMAND) -P CMakeFiles/mpcenc_static.dir/cmake_clean_target.cmake + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/mpcenc_static.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +libmpcenc/CMakeFiles/mpcenc_static.dir/build: libmpcenc/libmpcenc_static.a +.PHONY : libmpcenc/CMakeFiles/mpcenc_static.dir/build + +libmpcenc/CMakeFiles/mpcenc_static.dir/clean: + cd /home/dewdude/musepack/musepack_src_r475/libmpcenc && $(CMAKE_COMMAND) -P CMakeFiles/mpcenc_static.dir/cmake_clean.cmake +.PHONY : libmpcenc/CMakeFiles/mpcenc_static.dir/clean + +libmpcenc/CMakeFiles/mpcenc_static.dir/depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/libmpcenc /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/libmpcenc /home/dewdude/musepack/musepack_src_r475/libmpcenc/CMakeFiles/mpcenc_static.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : libmpcenc/CMakeFiles/mpcenc_static.dir/depend + diff --git a/libmpcenc/CMakeFiles/mpcenc_static.dir/cmake_clean.cmake b/libmpcenc/CMakeFiles/mpcenc_static.dir/cmake_clean.cmake new file mode 100644 index 0000000..84916a6 --- /dev/null +++ b/libmpcenc/CMakeFiles/mpcenc_static.dir/cmake_clean.cmake @@ -0,0 +1,21 @@ +file(REMOVE_RECURSE + "CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o" + "CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o.d" + "CMakeFiles/mpcenc_static.dir/analy_filter.c.o" + "CMakeFiles/mpcenc_static.dir/analy_filter.c.o.d" + "CMakeFiles/mpcenc_static.dir/bitstream.c.o" + "CMakeFiles/mpcenc_static.dir/bitstream.c.o.d" + "CMakeFiles/mpcenc_static.dir/encode_sv7.c.o" + "CMakeFiles/mpcenc_static.dir/encode_sv7.c.o.d" + "CMakeFiles/mpcenc_static.dir/huffsv7.c.o" + "CMakeFiles/mpcenc_static.dir/huffsv7.c.o.d" + "CMakeFiles/mpcenc_static.dir/quant.c.o" + "CMakeFiles/mpcenc_static.dir/quant.c.o.d" + "libmpcenc_static.a" + "libmpcenc_static.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/mpcenc_static.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/libmpcenc/CMakeFiles/mpcenc_static.dir/cmake_clean_target.cmake b/libmpcenc/CMakeFiles/mpcenc_static.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..ed9d6d2 --- /dev/null +++ b/libmpcenc/CMakeFiles/mpcenc_static.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libmpcenc_static.a" +) diff --git a/libmpcenc/CMakeFiles/mpcenc_static.dir/compiler_depend.internal b/libmpcenc/CMakeFiles/mpcenc_static.dir/compiler_depend.internal new file mode 100644 index 0000000..96aca14 --- /dev/null +++ b/libmpcenc/CMakeFiles/mpcenc_static.dir/compiler_depend.internal @@ -0,0 +1,384 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o + /home/dewdude/musepack/musepack_src_r475/common/crc32.c + /usr/include/stdc-predef.h + +libmpcenc/CMakeFiles/mpcenc_static.dir/analy_filter.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcenc/analy_filter.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/datatypes.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcmath.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-fast.h + /usr/include/bits/fp-logb.h + /usr/include/bits/iscanonical.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/long-double.h + /usr/include/bits/math-vector.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls-macros.h + /usr/include/bits/mathcalls-narrow.h + /usr/include/bits/mathcalls.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/math.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcenc/CMakeFiles/mpcenc_static.dir/bitstream.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcenc/bitstream.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/libmpcenc/libmpcenc.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/confname.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/environments.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/getopt_core.h + /usr/include/bits/getopt_posix.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/long-double.h + /usr/include/bits/posix_opt.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/unistd_ext.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/include/unistd.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcenc/CMakeFiles/mpcenc_static.dir/encode_sv7.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcenc/encode_sv7.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/libmpcenc/libmpcenc.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/long-double.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcenc/huffsv7.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/libmpcenc/libmpcenc.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/long-double.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcenc/CMakeFiles/mpcenc_static.dir/quant.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcenc/quant.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcmath.h + /home/dewdude/musepack/musepack_src_r475/libmpcenc/libmpcenc.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-fast.h + /usr/include/bits/fp-logb.h + /usr/include/bits/iscanonical.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/long-double.h + /usr/include/bits/math-vector.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls-macros.h + /usr/include/bits/mathcalls-narrow.h + /usr/include/bits/mathcalls.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/math.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + diff --git a/libmpcenc/CMakeFiles/mpcenc_static.dir/compiler_depend.make b/libmpcenc/CMakeFiles/mpcenc_static.dir/compiler_depend.make new file mode 100644 index 0000000..2017e9e --- /dev/null +++ b/libmpcenc/CMakeFiles/mpcenc_static.dir/compiler_depend.make @@ -0,0 +1,568 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +libmpcenc/CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o: common/crc32.c \ + /usr/include/stdc-predef.h + +libmpcenc/CMakeFiles/mpcenc_static.dir/analy_filter.c.o: libmpcenc/analy_filter.c \ + include/mpc/datatypes.h \ + include/mpc/mpc_types.h \ + include/mpc/mpcmath.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/iscanonical.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/mathcalls.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/math.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcenc/CMakeFiles/mpcenc_static.dir/bitstream.c.o: libmpcenc/bitstream.c \ + include/mpc/mpc_types.h \ + libmpcenc/libmpcenc.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/confname.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/environments.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_posix.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/posix_opt.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/unistd_ext.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/include/unistd.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcenc/CMakeFiles/mpcenc_static.dir/encode_sv7.c.o: libmpcenc/encode_sv7.c \ + include/mpc/minimax.h \ + include/mpc/mpc_types.h \ + libmpcenc/libmpcenc.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.o: libmpcenc/huffsv7.c \ + include/mpc/mpc_types.h \ + libmpcenc/libmpcenc.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcenc/CMakeFiles/mpcenc_static.dir/quant.c.o: libmpcenc/quant.c \ + include/mpc/minimax.h \ + include/mpc/mpc_types.h \ + include/mpc/mpcmath.h \ + libmpcenc/libmpcenc.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/iscanonical.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/mathcalls.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/math.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + + +/usr/include/unistd.h: + +/usr/include/bits/types/struct_FILE.h: + +/usr/include/bits/types/__mbstate_t.h: + +/usr/include/bits/types/__fpos64_t.h: + +/usr/include/bits/types/FILE.h: + +/usr/include/bits/unistd_ext.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/getopt_posix.h: + +/usr/include/bits/confname.h: + +libmpcenc/libmpcenc.h: + +libmpcenc/bitstream.c: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/include/bits/environments.h: + +/usr/include/sys/select.h: + +/usr/include/sys/cdefs.h: + +/usr/include/strings.h: + +/usr/include/stdlib.h: + +/usr/include/memory.h: + +/usr/include/bits/select.h: + +/usr/include/features-time64.h: + +libmpcenc/huffsv7.c: + +/usr/include/features.h: + +/usr/include/bits/types/__fpos_t.h: + +/usr/include/bits/math-vector.h: + +/usr/include/stdio.h: + +/usr/include/bits/mathcalls-narrow.h: + +/usr/include/bits/types/timer_t.h: + +/usr/include/bits/long-double.h: + +/usr/include/bits/fp-logb.h: + +/usr/include/bits/mathcalls-macros.h: + +/usr/include/bits/types/clock_t.h: + +/usr/include/bits/libc-header-start.h: + +/usr/include/math.h: + +/usr/include/gnu/stubs.h: + +/usr/include/bits/iscanonical.h: + +/usr/include/bits/fp-fast.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/bits/flt-eval-method.h: + +/usr/include/bits/types/__locale_t.h: + +/usr/include/bits/pthreadtypes-arch.h: + +/usr/include/stdc-predef.h: + +/usr/include/bits/wordsize.h: + +/usr/include/bits/stdint-intn.h: + +/usr/include/stdint.h: + +include/mpc/datatypes.h: + +include/mpc/mpc_types.h: + +/usr/include/bits/uintn-identity.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/endianness.h: + +/usr/include/bits/libm-simd-decl-stubs.h: + +/usr/include/bits/floatn-common.h: + +common/crc32.c: + +/usr/include/bits/floatn.h: + +/usr/include/bits/timesize.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/types/__sigset_t.h: + +/usr/include/bits/waitflags.h: + +/usr/include/alloca.h: + +libmpcenc/analy_filter.c: + +/usr/include/bits/stdint-least.h: + +/usr/include/bits/byteswap.h: + +/usr/include/string.h: + +/usr/include/bits/time64.h: + +/usr/include/bits/pthreadtypes.h: + +include/mpc/minimax.h: + +/usr/include/bits/types/cookie_io_functions_t.h: + +/usr/include/endian.h: + +/usr/include/bits/stdint-uintn.h: + +libmpcenc/encode_sv7.c: + +/usr/include/bits/stdlib-bsearch.h: + +/usr/include/bits/types/__FILE.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/bits/types/sigset_t.h: + +/usr/include/bits/struct_mutex.h: + +include/mpc/mpcmath.h: + +/usr/include/gnu/stubs-64.h: + +libmpcenc/quant.c: + +/usr/include/bits/thread-shared-types.h: + +/usr/include/bits/getopt_core.h: + +/usr/include/bits/types.h: + +/usr/include/bits/atomic_wide_counter.h: + +/usr/include/bits/types/clockid_t.h: + +/usr/include/bits/types/locale_t.h: + +/usr/include/bits/types/struct_timespec.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/types/struct_timeval.h: + +/usr/include/bits/mathcalls-helper-functions.h: + +/usr/include/bits/struct_rwlock.h: + +/usr/include/bits/types/time_t.h: + +/usr/include/bits/wchar.h: diff --git a/libmpcenc/CMakeFiles/mpcenc_static.dir/compiler_depend.ts b/libmpcenc/CMakeFiles/mpcenc_static.dir/compiler_depend.ts new file mode 100644 index 0000000..c62ca5d --- /dev/null +++ b/libmpcenc/CMakeFiles/mpcenc_static.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for mpcenc_static. diff --git a/libmpcenc/CMakeFiles/mpcenc_static.dir/depend.make b/libmpcenc/CMakeFiles/mpcenc_static.dir/depend.make new file mode 100644 index 0000000..94808fb --- /dev/null +++ b/libmpcenc/CMakeFiles/mpcenc_static.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for mpcenc_static. +# This may be replaced when dependencies are built. diff --git a/libmpcenc/CMakeFiles/mpcenc_static.dir/encode_sv7.c.o b/libmpcenc/CMakeFiles/mpcenc_static.dir/encode_sv7.c.o new file mode 100644 index 0000000000000000000000000000000000000000..0afe064d67af6dc9e26e0230c0a6c26a11bf97b4 GIT binary patch literal 19784 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 literal 0 HcmV?d00001 diff --git a/libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.o.d b/libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.o.d new file mode 100644 index 0000000..f09e60a --- /dev/null +++ b/libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.o.d @@ -0,0 +1,42 @@ +libmpcenc/CMakeFiles/mpcenc_static.dir/huffsv7.c.o: \ + /home/dewdude/musepack/musepack_src_r475/libmpcenc/huffsv7.c \ + /usr/include/stdc-predef.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcenc/libmpcenc.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/stdlib.h /usr/include/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/time64.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/memory.h /usr/include/string.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h diff --git a/libmpcenc/CMakeFiles/mpcenc_static.dir/link.txt b/libmpcenc/CMakeFiles/mpcenc_static.dir/link.txt new file mode 100644 index 0000000..1cde7d1 --- /dev/null +++ b/libmpcenc/CMakeFiles/mpcenc_static.dir/link.txt @@ -0,0 +1,2 @@ +/usr/bin/ar qc libmpcenc_static.a CMakeFiles/mpcenc_static.dir/analy_filter.c.o CMakeFiles/mpcenc_static.dir/bitstream.c.o CMakeFiles/mpcenc_static.dir/encode_sv7.c.o CMakeFiles/mpcenc_static.dir/huffsv7.c.o CMakeFiles/mpcenc_static.dir/quant.c.o CMakeFiles/mpcenc_static.dir/__/common/crc32.c.o +/usr/bin/ranlib libmpcenc_static.a diff --git a/libmpcenc/CMakeFiles/mpcenc_static.dir/progress.make b/libmpcenc/CMakeFiles/mpcenc_static.dir/progress.make new file mode 100644 index 0000000..e726ba1 --- /dev/null +++ b/libmpcenc/CMakeFiles/mpcenc_static.dir/progress.make @@ -0,0 +1,8 @@ +CMAKE_PROGRESS_1 = 25 +CMAKE_PROGRESS_2 = 26 +CMAKE_PROGRESS_3 = 27 +CMAKE_PROGRESS_4 = 28 +CMAKE_PROGRESS_5 = 29 +CMAKE_PROGRESS_6 = 30 +CMAKE_PROGRESS_7 = 31 + diff --git a/libmpcenc/CMakeFiles/mpcenc_static.dir/quant.c.o b/libmpcenc/CMakeFiles/mpcenc_static.dir/quant.c.o new file mode 100644 index 0000000000000000000000000000000000000000..e99437af7abe84c6c83e9e3e25378dae2bc717ab GIT binary patch literal 8176 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 z36 + +#include +#include + +#define FASTER + +/* C O N S T A N T S */ + +#undef _ +#define _(value) (float)(value##.##L / 0x200000) + +static float Ci_opt [512] = { + _( 0), _( 213), _( 2037), _( 6574), _(75038), _( 6574), _(2037), _(213), + _( -1), _( 218), _( 2000), _( 5959), _(74992), _( 7134), _(2063), _(208), + _( -1), _( 222), _( 1952), _( 5288), _(74856), _( 7640), _(2080), _(202), + _( -1), _( 225), _( 1893), _( 4561), _(74630), _( 8092), _(2087), _(196), + _( -1), _( 227), _( 1822), _( 3776), _(74313), _( 8492), _(2085), _(190), + _( -1), _( 228), _( 1739), _( 2935), _(73908), _( 8840), _(2075), _(183), + _( -1), _( 228), _( 1644), _( 2037), _(73415), _( 9139), _(2057), _(176), + _( -2), _( 227), _( 1535), _( 1082), _(72835), _( 9389), _(2032), _(169), + _( -2), _( 224), _( 1414), _( 70), _(72169), _( 9592), _(2001), _(161), + _( -2), _( 221), _( 1280), _( -998), _(71420), _( 9750), _(1962), _(154), + _( -2), _( 215), _( 1131), _( -2122), _(70590), _( 9863), _(1919), _(147), + _( -3), _( 208), _( 970), _( -3300), _(69679), _( 9935), _(1870), _(139), + _( -3), _( 200), _( 794), _( -4533), _(68692), _( 9966), _(1817), _(132), + _( -4), _( 189), _( 605), _( -5818), _(67629), _( 9959), _(1759), _(125), + _( -4), _( 177), _( 402), _( -7154), _(66494), _( 9916), _(1698), _(117), + _( -5), _( 163), _( 185), _( -8540), _(65290), _( 9838), _(1634), _(111), + _( -5), _( 146), _( -45), _( -9975), _(64019), _( 9727), _(1567), _(104), + _( -6), _( 127), _( -288), _(-11455), _(62684), _( 9585), _(1498), _( 97), + _( -7), _( 106), _( -545), _(-12980), _(61289), _( 9416), _(1428), _( 91), + _( -7), _( 83), _( -814), _(-14548), _(59838), _( 9219), _(1356), _( 85), + _( -8), _( 57), _(-1095), _(-16155), _(58333), _( 8998), _(1283), _( 79), + _( -9), _( 29), _(-1388), _(-17799), _(56778), _( 8755), _(1210), _( 73), + _( -10), _( -2), _(-1692), _(-19478), _(55178), _( 8491), _(1137), _( 68), + _( -11), _( -36), _(-2006), _(-21189), _(53534), _( 8209), _(1064), _( 63), + _( -13), _( -72), _(-2330), _(-22929), _(51853), _( 7910), _( 991), _( 58), + _( -14), _( -111), _(-2663), _(-24694), _(50137), _( 7597), _( 919), _( 53), + _( -16), _( -153), _(-3004), _(-26482), _(48390), _( 7271), _( 848), _( 49), + _( -17), _( -197), _(-3351), _(-28289), _(46617), _( 6935), _( 779), _( 45), + _( -19), _( -244), _(-3705), _(-30112), _(44821), _( 6589), _( 711), _( 41), + _( -21), _( -294), _(-4063), _(-31947), _(43006), _( 6237), _( 645), _( 38), + _( -24), _( -347), _(-4425), _(-33791), _(41176), _( 5879), _( 581), _( 35), + _( -26), _( -401), _(-4788), _(-35640), _(39336), _( 5517), _( 519), _( 31), + _( -29), _( -459), _(-5153), _(-37489), _(37489), _( 5153), _( 459), _( 29), + _( -31), _( -519), _(-5517), _(-39336), _(35640), _( 4788), _( 401), _( 26), + _( -35), _( -581), _(-5879), _(-41176), _(33791), _( 4425), _( 347), _( 24), + _( -38), _( -645), _(-6237), _(-43006), _(31947), _( 4063), _( 294), _( 21), + _( -41), _( -711), _(-6589), _(-44821), _(30112), _( 3705), _( 244), _( 19), + _( -45), _( -779), _(-6935), _(-46617), _(28289), _( 3351), _( 197), _( 17), + _( -49), _( -848), _(-7271), _(-48390), _(26482), _( 3004), _( 153), _( 16), + _( -53), _( -919), _(-7597), _(-50137), _(24694), _( 2663), _( 111), _( 14), + _( -58), _( -991), _(-7910), _(-51853), _(22929), _( 2330), _( 72), _( 13), + _( -63), _(-1064), _(-8209), _(-53534), _(21189), _( 2006), _( 36), _( 11), + _( -68), _(-1137), _(-8491), _(-55178), _(19478), _( 1692), _( 2), _( 10), + _( -73), _(-1210), _(-8755), _(-56778), _(17799), _( 1388), _( -29), _( 9), + _( -79), _(-1283), _(-8998), _(-58333), _(16155), _( 1095), _( -57), _( 8), + _( -85), _(-1356), _(-9219), _(-59838), _(14548), _( 814), _( -83), _( 7), + _( -91), _(-1428), _(-9416), _(-61289), _(12980), _( 545), _(-106), _( 7), + _( -97), _(-1498), _(-9585), _(-62684), _(11455), _( 288), _(-127), _( 6), + _(-104), _(-1567), _(-9727), _(-64019), _( 9975), _( 45), _(-146), _( 5), + _(-111), _(-1634), _(-9838), _(-65290), _( 8540), _( -185), _(-163), _( 5), + _(-117), _(-1698), _(-9916), _(-66494), _( 7154), _( -402), _(-177), _( 4), + _(-125), _(-1759), _(-9959), _(-67629), _( 5818), _( -605), _(-189), _( 4), + _(-132), _(-1817), _(-9966), _(-68692), _( 4533), _( -794), _(-200), _( 3), + _(-139), _(-1870), _(-9935), _(-69679), _( 3300), _( -970), _(-208), _( 3), + _(-147), _(-1919), _(-9863), _(-70590), _( 2122), _(-1131), _(-215), _( 2), + _(-154), _(-1962), _(-9750), _(-71420), _( 998), _(-1280), _(-221), _( 2), + _(-161), _(-2001), _(-9592), _(-72169), _( -70), _(-1414), _(-224), _( 2), + _(-169), _(-2032), _(-9389), _(-72835), _(-1082), _(-1535), _(-227), _( 2), + _(-176), _(-2057), _(-9139), _(-73415), _(-2037), _(-1644), _(-228), _( 1), + _(-183), _(-2075), _(-8840), _(-73908), _(-2935), _(-1739), _(-228), _( 1), + _(-190), _(-2085), _(-8492), _(-74313), _(-3776), _(-1822), _(-227), _( 1), + _(-196), _(-2087), _(-8092), _(-74630), _(-4561), _(-1893), _(-225), _( 1), + _(-202), _(-2080), _(-7640), _(-74856), _(-5288), _(-1952), _(-222), _( 1), + _(-208), _(-2063), _(-7134), _(-74992), _(-5959), _(-2000), _(-218), _( 1), +}; +#undef _ + + +static float M [1024]; + +void +Klemm ( void ) +{ + int i; + int k; + float S [512]; + + for ( i=0; i<32; i++ ) { + for ( k=0; k<32; k++ ) { + M [i*32 + k] = (float) cos ( ((2*i+1)*k & 127) * M_PI/64 ); + } + } + +#ifdef FASTER + for ( i = 0; i < 384; i++ ) + S[i] = Ci_opt[i]; + for ( i = 384; i < 392; i++ ) + S[i] = 0; + for ( i = 392; i < 512; i++ ) + S[i] = -Ci_opt[i]; + for ( i = 0; i < 512; i++ ) + Ci_opt[i] = S[i]; + for ( i = 0; i < 128; i++ ) + Ci_opt[i] = S[(i&7) + 120 - (i&120)]; + for ( i = 128; i < 384; i++ ) + Ci_opt[i] = S[i]; + for ( i = 384; i < 512; i++ ) + Ci_opt[i] = S[ 384 + (i&7) + 120 - (i&120)]; +#endif +} + + /* D E F I N E S */ +#define X_MEM 1152 + +/* V A R I A B L E S */ +float X_L [ X_MEM + 480 ]; +float X_R [ X_MEM + 480 ]; + + +/* F U N C T I O N S */ +// vectoring & partial calculation + +static void +Vectoring ( const float* x, float* y ) +{ +#ifdef FASTER + int i = 0; + const float* c1; + const float* c2; + const float* x1; + const float* x2; + +# define EXPR(c,x) (c[0]*x[0] + c[1]*x[64] + c[2]*x[128] + c[3]*x[192] + c[4]*x[256] + c[5]*x[320] + c[6]*x[384] + c[7]*x[448]) + + i++; + *y++ = EXPR ((Ci_opt+128),(x+31)); + + c1 = Ci_opt - 8; + c2 = Ci_opt + 128; + x1 = x + 16; + x2 = x + 31; + do { + x1--, x2--, i++; + c1 += 8, c2 += 8; + *y++ = EXPR (c1,x1) + EXPR (c2,x2); + } while ( i < 16 ); + + i++; + *y++ = EXPR ((Ci_opt+120),(x+0)) + EXPR ((Ci_opt+256),(x+32)); + + c1 = Ci_opt + 384 - 8; + c2 = Ci_opt + 256; + x1 = x + 47; + x2 = x + 32; + + do { + x1++, x2++, i++; + c1 += 8, c2 += 8; + *y++ = EXPR (c1,x1) + EXPR (c2,x2); + } while ( i < 32 ); +#else + int i; + const float* c = Ci_opt; + + for ( i = 0; i < 16; i++, c += 32, x += 4, y += 4 ) { + y[0] = c[ 0] * x[ 0] + c[ 1] * x[ 64] + c[ 2] * x[128] + c[ 3] * x[192] + c[ 4] * x[256] + c[ 5] * x[320] + c[ 6] * x[384] + c[ 7] * x[448]; + y[1] = c[ 8] * x[ 1] + c[ 9] * x[ 65] + c[10] * x[129] + c[11] * x[193] + c[12] * x[257] + c[13] * x[321] + c[14] * x[385] + c[15] * x[449]; + y[2] = c[16] * x[ 2] + c[17] * x[ 66] + c[18] * x[130] + c[19] * x[194] + c[20] * x[258] + c[21] * x[322] + c[22] * x[386] + c[23] * x[450]; + y[3] = c[24] * x[ 3] + c[25] * x[ 67] + c[26] * x[131] + c[27] * x[195] + c[28] * x[259] + c[29] * x[323] + c[30] * x[387] + c[31] * x[451]; + } +#endif +} + +// matrixing with Mi[32][32] = Mi[1024] + +static void +Matrixing ( const int MaxBand, const float* mi, const float* y, float* samples ) +{ + int i; +#ifdef FASTER + for ( i = 0; i <= MaxBand; i++, mi += 32, samples += 72 ) { // 144 = sizeof(SubbandFloatTyp)/sizeof(float) + samples[0] = y[ 0] + mi[ 1] * y[ 1] + mi[ 2] * y[ 2] + mi[ 3] * y[ 3] + + mi[ 4] * y[ 4] + mi[ 5] * y[ 5] + mi[ 6] * y[ 6] + mi[ 7] * y[ 7] + + mi[ 8] * y[ 8] + mi[ 9] * y[ 9] + mi[10] * y[10] + mi[11] * y[11] + + mi[12] * y[12] + mi[13] * y[13] + mi[14] * y[14] + mi[15] * y[15] + + mi[16] * y[16] + mi[17] * y[17] + mi[18] * y[18] + mi[19] * y[19] + + mi[20] * y[20] + mi[21] * y[21] + mi[22] * y[22] + mi[23] * y[23] + + mi[24] * y[24] + mi[25] * y[25] + mi[26] * y[26] + mi[27] * y[27] + + mi[28] * y[28] + mi[29] * y[29] + mi[30] * y[30] + mi[31] * y[31]; + } +#else + for ( i = 0; i <= MaxBand; i++, mi += 32, samples += 72 ) { // 144 = sizeof(SubbandFloatTyp)/sizeof(float) + samples[0] = y[16] + mi[ 1] * (y[15]+y[17]) + + mi[ 2] * (y[14]+y[18]) + mi[ 3] * (y[13]+y[19]) + + mi[ 4] * (y[12]+y[20]) + mi[ 5] * (y[11]+y[21]) + + mi[ 6] * (y[10]+y[22]) + mi[ 7] * (y[ 9]+y[23]) + + mi[ 8] * (y[ 8]+y[24]) + mi[ 9] * (y[ 7]+y[25]) + + mi[10] * (y[ 6]+y[26]) + mi[11] * (y[ 5]+y[27]) + + mi[12] * (y[ 4]+y[28]) + mi[13] * (y[ 3]+y[29]) + + mi[14] * (y[ 2]+y[30]) + mi[15] * (y[ 1]+y[31]) + + mi[16] * (y[ 0]+y[32]) + + mi[31] * (y[47]-y[49]) + mi[30] * (y[46]-y[50]) + + mi[29] * (y[45]-y[51]) + mi[28] * (y[44]-y[52]) + + mi[27] * (y[43]-y[53]) + mi[26] * (y[42]-y[54]) + + mi[25] * (y[41]-y[55]) + mi[24] * (y[40]-y[56]) + + mi[23] * (y[39]-y[57]) + mi[22] * (y[38]-y[58]) + + mi[21] * (y[37]-y[59]) + mi[20] * (y[36]-y[60]) + + mi[19] * (y[35]-y[61]) + mi[18] * (y[34]-y[62]) + + mi[17] * (y[33]-y[63]); + } +#endif +} + +// Analysis-Filterbank +void +Analyse_Filter ( const PCMDataTyp* in, SubbandFloatTyp* out, const int MaxBand ) +{ +#ifdef FASTER + float Y_L [32]; + float Y_R [32]; +#else + float Y_L [64]; + float Y_R [64]; +#endif + float* x; + const float* pcm; + int n; + int i; + + /************************* calculate L-signal ***************************/ + memcpy ( X_L + X_MEM, X_L, 480*sizeof(*X_L) ); + x = X_L + X_MEM; + pcm = in->L + 479; // 479 = CENTER + 31 + for ( n = 0; n < 36; n++, pcm += 64 ) { + x -= 32; // updating vector x +#ifdef FASTER + for ( i = 0; i < 16; i++ ) + x[i] = *pcm--; + for ( i = 31; i >= 16; i-- ) + x[i] = *pcm--; +#else + for ( i = 0; i < 32; i++ ) + x[i] = *pcm--; +#endif + Vectoring ( x, Y_L ); // vectoring & partial calculation + Matrixing ( MaxBand, M, Y_L, &out[0].L[n] ); // matrixing + } + + /************************* calculate R-signal ***************************/ + memcpy ( X_R + X_MEM, X_R, 480*sizeof(*X_R) ); + x = X_R + X_MEM; + pcm = in->R + 479; // 479 = CENTER + 31 + for ( n = 0; n < 36; n++, pcm += 64 ) { + x -= 32; // updating vector x +#ifdef FASTER + for ( i = 0; i < 16; i++ ) + x[i] = *pcm--; + for ( i = 31; i >= 16; i-- ) + x[i] = *pcm--; +#else + for ( i = 0; i < 32; i++ ) + x[i] = *pcm--; +#endif + Vectoring ( x, Y_R ); // vectoring & partial calculation + Matrixing ( MaxBand, M, Y_R, &out[0].R[n] ); // matrixing + } +} + +void +Analyse_Init ( float Left, float Right, SubbandFloatTyp* out, const int MaxBand ) +{ +#ifdef FASTER + float Y_L [32]; + float Y_R [32]; +#else + float Y_L [64]; + float Y_R [64]; +#endif + float* x; + int n; + int i; + + /************************* calculate L-signal ***************************/ + memcpy ( X_L + X_MEM, X_L, 480*sizeof(*X_L) ); + x = X_L + X_MEM; + + for ( n = 0; n < 36; n++ ) { + x -= 32; // updating vector x +#ifdef FASTER + for ( i = 0; i < 16; i++ ) + x[i] = Left; + for ( i = 31; i >= 16; i-- ) + x[i] = Left; +#else + for ( i = 0; i < 32; i++ ) + x[i] = Left; +#endif + Vectoring ( x, Y_L ); // vectoring & partial calculation + Matrixing ( MaxBand, M, Y_L, &out[0].L[n] ); // matrixing + } + + /************************* calculate R-signal ***************************/ + memcpy ( X_R + X_MEM, X_R, 480*sizeof(*X_R) ); + x = X_R + X_MEM; + for ( n = 0; n < 36; n++ ) { + x -= 32; // updating vector x +#ifdef FASTER + for ( i = 0; i < 16; i++ ) + x[i] = Right; + for ( i = 31; i >= 16; i-- ) + x[i] = Right; +#else + for ( i = 0; i < 32; i++ ) + x[i] = Right; +#endif + Vectoring ( x, Y_R ); // vectoring & partial calculation + Matrixing ( MaxBand, M, Y_R, &out[0].R[n] ); // matrixing + } +} + +/* end of analy_filter.c */ diff --git a/libmpcenc/bitstream.c b/libmpcenc/bitstream.c new file mode 100755 index 0000000..0650ee2 --- /dev/null +++ b/libmpcenc/bitstream.c @@ -0,0 +1,271 @@ +/* + * Musepack audio compression + * Copyright (c) 2005-2009, The Musepack Development Team + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifdef _WIN32 +#include +#define sleep(t) Sleep((t) * 1000) +#else +#include +#endif + +#include "libmpcenc.h" +#include "stdio.h" + +unsigned long mpc_crc32(unsigned char *buf, int len); + +#define MAX_ENUM 32 + +static const mpc_uint32_t Cnk[MAX_ENUM / 2][MAX_ENUM] = +{ + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, + {0, 0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465}, + {0, 0, 0, 1, 4, 10, 20, 35, 56, 84, 120, 165, 220, 286, 364, 455, 560, 680, 816, 969, 1140, 1330, 1540, 1771, 2024, 2300, 2600, 2925, 3276, 3654, 4060, 4495}, + {0, 0, 0, 0, 1, 5, 15, 35, 70, 126, 210, 330, 495, 715, 1001, 1365, 1820, 2380, 3060, 3876, 4845, 5985, 7315, 8855, 10626, 12650, 14950, 17550, 20475, 23751, 27405, 31465}, + {0, 0, 0, 0, 0, 1, 6, 21, 56, 126, 252, 462, 792, 1287, 2002, 3003, 4368, 6188, 8568, 11628, 15504, 20349, 26334, 33649, 42504, 53130, 65780, 80730, 98280, 118755, 142506, 169911}, + {0, 0, 0, 0, 0, 0, 1, 7, 28, 84, 210, 462, 924, 1716, 3003, 5005, 8008, 12376, 18564, 27132, 38760, 54264, 74613, 100947, 134596, 177100, 230230, 296010, 376740, 475020, 593775, 736281}, + {0, 0, 0, 0, 0, 0, 0, 1, 8, 36, 120, 330, 792, 1716, 3432, 6435, 11440, 19448, 31824, 50388, 77520, 116280, 170544, 245157, 346104, 480700, 657800, 888030, 1184040, 1560780, 2035800, 2629575}, + {0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 45, 165, 495, 1287, 3003, 6435, 12870, 24310, 43758, 75582, 125970, 203490, 319770, 490314, 735471, 1081575, 1562275, 2220075, 3108105, 4292145, 5852925, 7888725}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10, 55, 220, 715, 2002, 5005, 11440, 24310, 48620, 92378, 167960, 293930, 497420, 817190, 1307504, 2042975, 3124550, 4686825, 6906900, 10015005, 14307150, 20160075}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 11, 66, 286, 1001, 3003, 8008, 19448, 43758, 92378, 184756, 352716, 646646, 1144066, 1961256, 3268760, 5311735, 8436285, 13123110, 20030010, 30045015, 44352165}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 78, 364, 1365, 4368, 12376, 31824, 75582, 167960, 352716, 705432, 1352078, 2496144, 4457400, 7726160, 13037895, 21474180, 34597290, 54627300, 84672315}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 13, 91, 455, 1820, 6188, 18564, 50388, 125970, 293930, 646646, 1352078, 2704156, 5200300, 9657700, 17383860, 30421755, 51895935, 86493225, 141120525}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 14, 105, 560, 2380, 8568, 27132, 77520, 203490, 497420, 1144066, 2496144, 5200300, 10400600, 20058300, 37442160, 67863915, 119759850, 206253075}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 15, 120, 680, 3060, 11628, 38760, 116280, 319770, 817190, 1961256, 4457400, 9657700, 20058300, 40116600, 77558760, 145422675, 265182525}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 16, 136, 816, 3876, 15504, 54264, 170544, 490314, 1307504, 3268760, 7726160, 17383860, 37442160, 77558760, 155117520, 300540195}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 153, 969, 4845, 20349, 74613, 245157, 735471, 2042975, 5311735, 13037895, 30421755, 67863915, 145422675, 300540195} +}; + +static const mpc_uint8_t Cnk_len[MAX_ENUM / 2][MAX_ENUM] = +{ + {0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5}, + {0, 0, 2, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9}, + {0, 0, 0, 2, 4, 5, 6, 6, 7, 7, 8, 8, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13}, + {0, 0, 0, 0, 3, 4, 6, 7, 7, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 15, 16}, + {0, 0, 0, 0, 0, 3, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 13, 14, 14, 14, 15, 15, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18}, + {0, 0, 0, 0, 0, 0, 3, 5, 7, 8, 9, 10, 11, 12, 13, 13, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20}, + {0, 0, 0, 0, 0, 0, 0, 3, 6, 7, 9, 10, 11, 12, 13, 14, 15, 15, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 21, 22, 22}, + {0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 8, 9, 11, 12, 13, 14, 15, 16, 17, 17, 18, 19, 19, 20, 21, 21, 22, 22, 23, 23, 23, 24}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 8, 10, 11, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 21, 22, 23, 23, 24, 24, 25, 25}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 9, 10, 12, 13, 15, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24, 24, 25, 25, 26, 26}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 9, 11, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 23, 24, 25, 26, 26, 27, 27}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 9, 11, 13, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 25, 26, 27, 28, 28}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 10, 12, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 27, 28, 29}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 10, 12, 14, 16, 17, 19, 20, 21, 23, 24, 25, 26, 27, 28, 28, 29}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 10, 12, 14, 16, 18, 19, 21, 22, 23, 25, 26, 27, 28, 29, 30}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 10, 13, 15, 17, 18, 20, 21, 23, 24, 25, 27, 28, 29, 30} + +}; + +static const mpc_uint32_t Cnk_lost[MAX_ENUM / 2][MAX_ENUM] = +{ + {0, 0, 1, 0, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, + {0, 0, 1, 2, 6, 1, 11, 4, 28, 19, 9, 62, 50, 37, 23, 8, 120, 103, 85, 66, 46, 25, 3, 236, 212, 187, 161, 134, 106, 77, 47, 16}, + {0, 0, 0, 0, 6, 12, 29, 8, 44, 8, 91, 36, 226, 148, 57, 464, 344, 208, 55, 908, 718, 508, 277, 24, 1796, 1496, 1171, 820, 442, 36, 3697, 3232}, + {0, 0, 0, 0, 3, 1, 29, 58, 2, 46, 182, 17, 309, 23, 683, 228, 1716, 1036, 220, 3347, 2207, 877, 7529, 5758, 3734, 1434, 15218, 12293, 9017, 5363, 1303, 29576}, + {0, 0, 0, 0, 0, 2, 11, 8, 2, 4, 50, 232, 761, 46, 1093, 3824, 2004, 7816, 4756, 880, 12419, 6434, 31887, 23032, 12406, 65292, 50342, 32792, 12317, 119638, 92233, 60768}, + {0, 0, 0, 0, 0, 0, 1, 4, 44, 46, 50, 100, 332, 1093, 3187, 184, 4008, 14204, 5636, 26776, 11272, 56459, 30125, 127548, 85044, 31914, 228278, 147548, 49268, 454801, 312295, 142384}, + {0, 0, 0, 0, 0, 0, 0, 0, 28, 8, 182, 232, 332, 664, 1757, 4944, 13320, 944, 15148, 53552, 14792, 91600, 16987, 178184, 43588, 390776, 160546, 913112, 536372, 61352, 1564729, 828448}, + {0, 0, 0, 0, 0, 0, 0, 0, 7, 19, 91, 17, 761, 1093, 1757, 3514, 8458, 21778, 55490, 5102, 58654, 204518, 33974, 313105, 1015577, 534877, 1974229, 1086199, 4096463, 2535683, 499883, 6258916}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 9, 36, 309, 46, 3187, 4944, 8458, 16916, 38694, 94184, 230358, 26868, 231386, 789648, 54177, 1069754, 3701783, 1481708, 6762211, 2470066, 13394357, 5505632}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 62, 226, 23, 1093, 184, 13320, 21778, 38694, 77388, 171572, 401930, 953086, 135896, 925544, 3076873, 8340931, 3654106, 13524422, 3509417, 22756699, 2596624}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 50, 148, 683, 3824, 4008, 944, 55490, 94184, 171572, 343144, 745074, 1698160, 3931208, 662448, 3739321, 12080252, 32511574, 12481564, 49545413, 5193248}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 37, 57, 228, 2004, 14204, 15148, 5102, 230358, 401930, 745074, 1490148, 3188308, 7119516, 16170572, 3132677, 15212929, 47724503, 127314931, 42642616}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 23, 464, 1716, 7816, 5636, 53552, 58654, 26868, 953086, 1698160, 3188308, 6376616, 13496132, 29666704, 66353813, 14457878, 62182381, 189497312}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 344, 1036, 4756, 26776, 14792, 204518, 231386, 135896, 3931208, 7119516, 13496132, 26992264, 56658968, 123012781, 3252931, 65435312}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 208, 220, 880, 11272, 91600, 33974, 789648, 925544, 662448, 16170572, 29666704, 56658968, 113317936, 236330717, 508019104}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 103, 55, 3347, 12419, 56459, 16987, 313105, 54177, 3076873, 3739321, 3132677, 66353813, 123012781, 236330717} +}; + +static const mpc_uint8_t log2[32] = +{ 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6}; + +static const mpc_uint8_t log2_lost[32] = +{ 0, 1, 0, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 31}; + +void emptyBits(mpc_encoder_t * e) +{ + while( e->bitsCount >= 8 ){ + e->bitsCount -= 8; + e->buffer[e->pos] = (mpc_uint8_t) (e->bitsBuff >> e->bitsCount); + e->pos++; + } +} + +unsigned int encodeSize(mpc_uint64_t size, char * buff, mpc_bool_t addCodeSize) +{ + unsigned int i = 1; + int j; + + if (addCodeSize) { + while ((1ull << (7 * i)) - i <= size) i++; + size += i; + } else + while ((1ull << (7 * i)) <= size) i++; + + for( j = i - 1; j >= 0; j--){ + buff[j] = (char) (size | 0x80); + size >>= 7; + } + buff[i - 1] &= 0x7F; + + return i; +} + +static void encodeGolomb(mpc_encoder_t * e, mpc_uint32_t nb, mpc_uint_t k) +{ + unsigned int l = (nb >> k) + 1; + nb &= (1 << k) - 1; + + while( l > 31 ){ + writeBits(e, 0, 31); + l -= 31; + } + writeBits(e, 1, l); + writeBits(e, nb, k); +} + +void encodeEnum(mpc_encoder_t * e, const mpc_uint32_t bits, const mpc_uint_t N) +{ + mpc_uint32_t code = 0; + const mpc_uint32_t * C = Cnk[0]; + unsigned int n = 0, k = 0; + + for( ; n < N; n++){ + if ((bits >> n) & 1) { + code += C[n]; + C += MAX_ENUM; + k++; + } + } + + if (k == 0) return; + + if (code < Cnk_lost[k-1][n-1]) + writeBits(e, code, Cnk_len[k-1][n-1] - 1); + else + writeBits(e, code + Cnk_lost[k-1][n-1], Cnk_len[k-1][n-1]); +} + +void encodeLog(mpc_encoder_t * e, mpc_uint32_t value, mpc_uint32_t max) +{ + if (value < log2_lost[max - 1]) + writeBits(e, value, log2[max - 1] - 1); + else + writeBits(e, value + log2_lost[max - 1], log2[max - 1]); +} + +void writeMagic(mpc_encoder_t * e) +{ + fwrite("MPCK", sizeof(char), 4, e->outputFile); + e->outputBits += 32; + e->framesInBlock = 0; +} + +mpc_uint32_t writeBlock ( mpc_encoder_t * e, const char * key, const mpc_bool_t addCRC, mpc_uint32_t min_size) +{ + FILE * fp = e->outputFile; + mpc_uint32_t written = 0; + mpc_uint8_t * datas = e->buffer; + char blockSize[10]; + mpc_uint32_t len; + + writeBits(e, 0, (8 - e->bitsCount) % 8); + emptyBits(e); + + // write block header (key / length) + len = e->pos + (addCRC > 0) * 4; + if (min_size <= len) + min_size = len; + else { + mpc_uint32_t pad = min_size - len, i; + for(i = 0; i < pad; i++) + writeBits(e, 0, 8); + emptyBits(e); + } + len = encodeSize(min_size + 2, blockSize, MPC_TRUE); + fwrite(key, sizeof(char), 2, fp); + fwrite(blockSize, sizeof(char), len, fp); + e->outputBits += (len + 2) * 8; + + if (addCRC) { + char tmp[4]; + unsigned long CRC32 = mpc_crc32((unsigned char *) e->buffer, e->pos); + tmp[0] = (char) (CRC32 >> 24); + tmp[1] = (char) (CRC32 >> 16); + tmp[2] = (char) (CRC32 >> 8); + tmp[3] = (char) CRC32; + fwrite(tmp, sizeof(char), 4, fp); + e->outputBits += 32; + } + + // write datas + while ( e->pos != 0 ) { + written = fwrite ( datas, sizeof(*e->buffer), e->pos, fp ); + if ( written == 0 ) { + fprintf(stderr, "\b\n WARNING: Disk full?, retry after 10 sec ...\a"); + sleep (10); + } + if ( written > 0 ) { + datas += written; + e->pos -= written; + } + } + e->framesInBlock = 0; + + return min_size; +} + +void writeSeekTable (mpc_encoder_t * e) +{ + mpc_uint32_t i, len; + mpc_uint32_t * table = e->seek_table; + mpc_uint8_t tmp[10]; + + // write the position to header + i = ftell(e->outputFile); // get the seek table position + len = encodeSize(i - e->seek_ptr, (char*)tmp, MPC_FALSE); + fseek(e->outputFile, e->seek_ptr + 3, SEEK_SET); + fwrite(tmp, sizeof(mpc_uint8_t), len, e->outputFile); + fseek(e->outputFile, i, SEEK_SET); + + // write the seek table datas + len = encodeSize(e->seek_pos, (char*)tmp, MPC_FALSE); + for( i = 0; i < len; i++) + writeBits ( e, tmp[i], 8 ); + writeBits ( e, e->seek_pwr, 4 ); + + len = encodeSize(table[0] - e->seek_ref, (char*)tmp, MPC_FALSE); + for( i = 0; i < len; i++) + writeBits ( e, tmp[i], 8 ); + if (e->seek_pos > 1) { + len = encodeSize(table[1] - e->seek_ref, (char*)tmp, MPC_FALSE); + for( i = 0; i < len; i++) + writeBits ( e, tmp[i], 8 ); + } + + for( i = 2; i < e->seek_pos; i++){ + int code = (table[i] - 2 * table[i-1] + table[i-2]) << 1; + if (code < 0) + code = -code | 1; + encodeGolomb(e, code, 12); + } +} + +/* end of bitstream.c */ diff --git a/libmpcenc/cmake_install.cmake b/libmpcenc/cmake_install.cmake new file mode 100644 index 0000000..4d9dabf --- /dev/null +++ b/libmpcenc/cmake_install.cmake @@ -0,0 +1,50 @@ +# Install script for directory: /home/dewdude/musepack/musepack_src_r475/libmpcenc + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/home/dewdude/musepack/musepack_src_r475/libmpcenc/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/libmpcenc/encode_sv7.c b/libmpcenc/encode_sv7.c new file mode 100755 index 0000000..68de5ae --- /dev/null +++ b/libmpcenc/encode_sv7.c @@ -0,0 +1,492 @@ +/* + * Musepack audio compression + * Copyright (c) 2005-2009, The Musepack Development Team + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include + +#include "libmpcenc.h" +#include + +void Klemm ( void ); +void Init_Skalenfaktoren ( void ); + +// huffsv7.c +extern Huffman_t const HuffBands [33]; +extern Huffman_t const HuffRes [2][17]; +extern Huffman_t const HuffSCFI_1 [4]; // contains tables for SV7-scalefactor select +extern Huffman_t const HuffSCFI_2 [16]; // contains tables for SV7-scalefactor select +extern Huffman_t const HuffDSCF_1 [64]; // contains tables for SV7-scalefactor coding +extern Huffman_t const HuffDSCF_2 [65]; // contains tables for SV7-scalefactor coding +extern Huffman_t const * const HuffQ [2][8]; // points to tables for SV7-sample coding +extern Huffman_t const HuffQ9up [256]; + +/* + * SV1: DATE 13.12.1998 + * SV2: DATE 12.06.1999 + * SV3: DATE 19.10.1999 + * SV4: DATE 20.10.1999 + * SV5: DATE 18.06.2000 + * SV6: DATE 10.08.2000 + * SV7: DATE 23.08.2000 + * SV7.f: DATE 20.07.2002 + */ + +// initialize SV8 +void +mpc_encoder_init ( mpc_encoder_t * e, + mpc_uint64_t SamplesInWAVE, + unsigned int FramesBlockPwr, + unsigned int SeekDistance ) +{ + Init_Skalenfaktoren (); + Klemm (); + + memset(e, 0, sizeof(*e)); + + if (SeekDistance > 15) + SeekDistance = 1; + if (FramesBlockPwr > 14) + FramesBlockPwr = 6; + + e->seek_pwr = SeekDistance; + e->frames_per_block_pwr = FramesBlockPwr; + + if (SamplesInWAVE == 0) + e->seek_table = malloc((1 << 16) * sizeof(mpc_uint32_t)); + else + e->seek_table = malloc((size_t)(2 + SamplesInWAVE / (MPC_FRAME_LENGTH << (e->seek_pwr + e->frames_per_block_pwr))) * sizeof(mpc_uint32_t)); + + e->buffer = malloc(MAX_FRAME_SIZE * (1 << e->frames_per_block_pwr) * sizeof(mpc_uint8_t)); +} + +void +mpc_encoder_exit ( mpc_encoder_t * e ) +{ + free(e->seek_table); + free(e->buffer); +} + +// writes replay gain info +void writeGainInfo ( mpc_encoder_t * e, + unsigned short t_gain, + unsigned short t_peak, + unsigned short a_gain, + unsigned short a_peak) +{ + writeBits ( e, 1, 8 ); // version + writeBits ( e, t_gain, 16 ); // Title gain + writeBits ( e, t_peak, 16 ); // Title peak + writeBits ( e, a_gain, 16 ); // Album gain + writeBits ( e, a_peak, 16 ); // Album peak +} + +// writes SV8-header +void +writeStreamInfo ( mpc_encoder_t*e, + const unsigned int MaxBand, + const unsigned int MS_on, + const unsigned int SamplesCount, + const unsigned int SamplesSkip, + const unsigned int SampleFreq, + const unsigned int ChannelCount) +{ + unsigned char tmp[10]; + int i, len; + + writeBits ( e, 8, 8 ); // StreamVersion + + len = encodeSize(SamplesCount, (char *)tmp, MPC_FALSE); + for( i = 0; i < len; i++) // nb of samples + writeBits ( e, tmp[i], 8 ); + len = encodeSize(SamplesSkip, (char *)tmp, MPC_FALSE); + for( i = 0; i < len; i++) // nb of samples to skip at beginning + writeBits ( e, tmp[i], 8 ); + + switch ( SampleFreq ) { + case 44100: writeBits ( e, 0, 3 ); break; + case 48000: writeBits ( e, 1, 3 ); break; + case 37800: writeBits ( e, 2, 3 ); break; + case 32000: writeBits ( e, 3, 3 ); break; + default : fprintf(stderr, "Internal error\n");// FIXME : stderr_printf ( "Internal error\n"); + exit (1); + } + + writeBits ( e, MaxBand - 1 , 5 ); // Bandwidth + writeBits ( e, ChannelCount - 1 , 4 ); // Channels + writeBits ( e, MS_on , 1 ); // MS-Coding Flag + writeBits ( e, e->frames_per_block_pwr >> 1, 3 ); // frames per block (log4 unit) +} + +// writes encoder signature +void writeEncoderInfo ( mpc_encoder_t * e, + const float profile, + const int PNS_on, + const int version_major, + const int version_minor, + const int version_build ) +{ + writeBits ( e, (mpc_uint32_t)(profile * 8 + .5), 7 ); + writeBits ( e, PNS_on, 1 ); + writeBits ( e, version_major, 8 ); + writeBits ( e, version_minor, 8 ); + writeBits ( e, version_build, 8 ); +} + +// formatting and writing SV8-bitstream for one frame +void +writeBitstream_SV8 ( mpc_encoder_t* e, int MaxBand) +{ + int n; + const Huffman_t * Table, * Tables[2]; + mpc_int32_t * Res_L = e->Res_L; + mpc_int32_t * Res_R = e->Res_R; + mpc_bool_t * DSCF_Flag_L = e->DSCF_Flag_L; + mpc_bool_t * DSCF_Flag_R = e->DSCF_Flag_R; + mpc_int32_t * SCF_Last_L = e->SCF_Last_L; + mpc_int32_t * SCF_Last_R = e->SCF_Last_R; + + for( n = MaxBand; n >= 0; n--) + if (Res_L[n] != 0 || Res_R[n] != 0) break; + + n++; + if (e->framesInBlock == 0) { + encodeLog(e, n, MaxBand + 1); + MaxBand = e->MaxBand = n; + } else { + n = n - e->MaxBand; + MaxBand = e->MaxBand = n + e->MaxBand; + if (n < 0) n += 33; + writeBits(e, HuffBands[n].Code, HuffBands[n].Length); + } + + /************************************ Resolution *********************************/ + + if (MaxBand) { + { + int tmp = Res_L[MaxBand - 1]; + if (tmp < 0) tmp += 17; + writeBits(e, HuffRes[0][tmp].Code, HuffRes[0][tmp].Length); + tmp = Res_R[MaxBand - 1]; + if (tmp < 0) tmp += 17; + writeBits(e, HuffRes[0][tmp].Code, HuffRes[0][tmp].Length); + } + for ( n = MaxBand - 2; n >= 0; n--) { + int tmp = Res_L[n] - Res_L[n + 1]; + if (tmp < 0) tmp += 17; + writeBits(e, HuffRes[Res_L[n + 1] > 2][tmp].Code, HuffRes[Res_L[n + 1] > 2][tmp].Length); + + tmp = Res_R[n] - Res_R[n + 1]; + if (tmp < 0) tmp += 17; + writeBits(e, HuffRes[Res_R[n + 1] > 2][tmp].Code, HuffRes[Res_R[n + 1] > 2][tmp].Length); + } + + if (e->MS_Channelmode > 0) { + mpc_uint32_t tmp = 0; + int cnt = 0, tot = 0; + mpc_bool_t * MS_Flag = e->MS_Flag; + for( n = 0; n < MaxBand; n++) { + if ( Res_L[n] != 0 || Res_R[n] != 0 ) { + tmp = (tmp << 1) | MS_Flag[n]; + cnt += MS_Flag[n]; + tot++; + } + } + encodeLog(e, cnt, tot); + if (cnt * 2 > tot) tmp = ~tmp; + encodeEnum(e, tmp, tot); + } + } + + /************************************ SCF encoding type ***********************************/ + + if (e->framesInBlock == 0){ + for( n = 0; n < 32; n++) + DSCF_Flag_L[n] = DSCF_Flag_R[n] = 1; // new block -> force key frame + } + + Tables[0] = HuffSCFI_1; + Tables[1] = HuffSCFI_2; + for ( n = 0; n < MaxBand; n++ ) { + int tmp = 0, cnt = -1; + if (Res_L[n]) { + tmp = (e->SCF_Index_L[n][1] == e->SCF_Index_L[n][0]) * 2 + (e->SCF_Index_L[n][2] == e->SCF_Index_L[n][1]); + cnt++; + } + if (Res_R[n]) { + tmp = (tmp << 2) | ((e->SCF_Index_R[n][1] == e->SCF_Index_R[n][0]) * 2 + (e->SCF_Index_R[n][2] == e->SCF_Index_R[n][1])); + cnt++; + } + if (cnt >= 0) + writeBits(e, Tables[cnt][tmp].Code, Tables[cnt][tmp].Length); + } + + /************************************* SCF **********************************/ + + for ( n = 0; n < MaxBand; n++ ) { + if ( Res_L[n] ) { + int m; + mpc_int32_t * SCFI_L_n = e->SCF_Index_L[n]; + if (DSCF_Flag_L[n] == 1) { + writeBits(e, SCFI_L_n[0] + 6, 7); + DSCF_Flag_L[n] = 0; + } else { + unsigned int tmp = (SCFI_L_n[0] - SCF_Last_L[n] + 31) & 127; + if (tmp < 64) + writeBits(e, HuffDSCF_2[tmp].Code, HuffDSCF_2[tmp].Length); + else { + writeBits(e, HuffDSCF_2[64].Code, HuffDSCF_2[64].Length); + writeBits(e, tmp - 64, 6); + } + } + for( m = 0; m < 2; m++){ + if (SCFI_L_n[m+1] != SCFI_L_n[m]) { + unsigned int tmp = (SCFI_L_n[m+1] - SCFI_L_n[m] + 31) & 127; + if (tmp < 64) + writeBits(e, HuffDSCF_1[tmp].Code, HuffDSCF_1[tmp].Length); + else { + writeBits(e, HuffDSCF_1[31].Code, HuffDSCF_1[31].Length); + writeBits(e, tmp - 64, 6); + } + } + } + SCF_Last_L[n] = SCFI_L_n[2]; + } + if ( Res_R[n] ) { + int m; + mpc_int32_t * SCFI_R_n = e->SCF_Index_R[n]; + if (DSCF_Flag_R[n] == 1) { + writeBits(e, SCFI_R_n[0] + 6, 7); + DSCF_Flag_R[n] = 0; + } else { + unsigned int tmp = (SCFI_R_n[0] - SCF_Last_R[n] + 31) & 127; + if (tmp < 64) + writeBits(e, HuffDSCF_2[tmp].Code, HuffDSCF_2[tmp].Length); + else { + writeBits(e, HuffDSCF_2[64].Code, HuffDSCF_2[64].Length); + writeBits(e, tmp - 64, 6); + } + } + for( m = 0; m < 2; m++){ + if (SCFI_R_n[m+1] != SCFI_R_n[m]) { + unsigned int tmp = (SCFI_R_n[m+1] - SCFI_R_n[m] + 31) & 127; + if (tmp < 64) + writeBits(e, HuffDSCF_1[tmp].Code, HuffDSCF_1[tmp].Length); + else { + writeBits(e, HuffDSCF_1[31].Code, HuffDSCF_1[31].Length); + writeBits(e, tmp - 64, 6); + } + } + } + SCF_Last_R[n] = SCFI_R_n[2]; + } + } + + /*********************************** Samples *********************************/ + for ( n = 0; n < MaxBand; n++ ) { + int Res = Res_L[n]; + const mpc_int16_t * q = e->Q[n].L; + static const unsigned int thres[] = {0, 0, 3, 7, 9, 1, 3, 4, 8}; + static const int HuffQ2_var[5*5*5] = + {6, 5, 4, 5, 6, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 6, 5, 4, 5, 6, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 3, 2, 1, 2, 3, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 3, 2, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 2, 3, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 3, 2, 1, 2, 3, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 6, 5, 4, 5, 6, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 6, 5, 4, 5, 6}; + + do { + int k = 0, idx = 1, cnt = 0, sng; + switch ( Res ) { + case -1: + case 0: + break; + case 1: + Table = HuffQ [0][0]; + for( ; k < 36; ){ + int kmax = k + 18; + cnt = 0, sng = 0; + for ( ; k < kmax; k++) { + idx <<= 1; + if (q[k] != 1) { + cnt++; + idx |= 1; + sng = (sng << 1) | (q[k] >> 1); + } + } + writeBits(e, Table[cnt].Code, Table[cnt].Length); + if (cnt > 0) { + if (cnt > 9) idx = ~idx; + encodeEnum(e, idx, 18); + writeBits(e, sng, cnt); + } + } + break; + case 2: + Tables[0] = HuffQ [0][1]; + Tables[1] = HuffQ [1][1]; + idx = 2 * thres[Res]; + for ( ; k < 36; k += 3) { + int tmp = q[k] + 5*q[k+1] + 25*q[k+2]; + writeBits ( e, Tables[idx > thres[Res]][tmp].Code, + Tables[idx > thres[Res]][tmp].Length ); + idx = (idx >> 1) + HuffQ2_var[tmp]; + } + break; + case 3: + case 4: + Table = HuffQ [0][Res - 1]; + for ( ; k < 36; k += 2 ) { + int tmp = q[k] + thres[Res]*q[k+1]; + writeBits ( e, Table[tmp].Code, Table[tmp].Length ); + } + break; + case 5: + case 6: + case 7: + case 8: + Tables[0] = HuffQ [0][Res - 1]; + Tables[1] = HuffQ [1][Res - 1]; + idx = 2 * thres[Res]; + for ( ; k < 36; k++ ) { + int tmp = q[k] - (1 << (Res - 2)) + 1; + writeBits ( e, Tables[idx > thres[Res]][q[k]].Code, + Tables[idx > thres[Res]][q[k]].Length ); + if (tmp < 0) tmp = -tmp; + idx = (idx >> 1) + tmp; + } + break; + default: + for ( ; k < 36; k++ ) { + writeBits ( e, HuffQ9up[q[k] >> (Res - 9)].Code, + HuffQ9up[q[k] >> (Res - 9)].Length ); + if (Res != 9) + writeBits ( e, q[k] & ((1 << (Res - 9)) - 1), Res - 9); + } + break; + } + + Res = Res_R[n]; + } while (q == e->Q[n].L && (q = e->Q[n].R)); + } + + e->framesInBlock++; + if (e->framesInBlock == (1 << e->frames_per_block_pwr)) { + if ((e->block_cnt & ((1 << e->seek_pwr) - 1)) == 0) { + e->seek_table[e->seek_pos] = ftell(e->outputFile); + e->seek_pos++; + } + e->block_cnt++; + writeBlock(e, "AP", MPC_FALSE, 0); + } +} + +#if 0 + +typedef struct { + int Symbol; + unsigned int Count; + unsigned int Code; + unsigned int Bits; +} huff_sym_t; + +void _Huffman_MakeTree( huff_sym_t *sym, unsigned int num_symbols); +void _Huffman_PrintCodes(huff_sym_t * sym, unsigned int num_symbols, int print_type, int offset); + +void print_histo(void) +{ + int i, j; + huff_sym_t sym[HISTO_NB][HISTO_LEN]; + unsigned int dist[HISTO_NB]; + unsigned int size[HISTO_NB]; + unsigned int cnt[HISTO_NB]; + unsigned int total_cnt, total_size, full_count = 0, full_size = 0; + double optim_size, full_optim = 0; + + return; + + memset(dist, 1, sizeof dist); + memset(sym, 0, sizeof(huff_sym_t) * HISTO_LEN * HISTO_NB); + + for(j = 0 ; j < HISTO_NB ; j++) { + for(i = 0 ; i < HISTO_LEN; i++) { + sym[j][i].Symbol = i; + sym[j][i].Count = histo[j][i]; + if (sym[j][i].Count == 0) + sym[j][i].Count = 1; + } + _Huffman_MakeTree(sym[j], HISTO_LEN); + _Huffman_PrintCodes(sym[j], HISTO_LEN, 3, 0); + _Huffman_PrintCodes(sym[j], HISTO_LEN, 0, 0); + _Huffman_PrintCodes(sym[j], HISTO_LEN, 1, 0); + total_cnt = 0; + total_size = 0; + optim_size = 0; + for( i = 0; i < HISTO_LEN; i++) { + total_cnt += sym[j][i].Count; + total_size += sym[j][i].Count * sym[j][i].Bits; + if (sym[j][i].Count != 0) + optim_size += sym[j][i].Count * __builtin_log2(sym[j][i].Count); + } + full_count += total_cnt; + full_size += total_size; + optim_size = total_cnt * __builtin_log2(total_cnt) - optim_size; + full_optim += optim_size; + size[j] = total_size; + cnt[j] = total_cnt; + printf("%u count : %u huff : %f bps ", j, total_cnt, (float)total_size / total_cnt); + printf("opt : %f bps ", (float)optim_size / total_cnt); + printf("loss : %f bps (%f %%)\n", (float)(total_size - optim_size) / total_cnt, (float)(total_size - optim_size) * 100 / optim_size); + for( i = 0; i < HISTO_LEN; i++){ + printf("%u ", sym[j][i].Bits); + } + + printf("\n\n"); + } + printf("cnt : %u size %f optim %f\n", full_count, (float)full_size / full_count, (float)full_optim / full_count); + printf("loss : %f bps (%f %%)\n", (float)(full_size - full_optim) / full_count, (float)(full_size - full_optim) * 100 / full_optim); + + + printf("\n"); +} + +void +Dump ( const unsigned int* q, const int Res ) +{ + switch ( Res ) { + case 1: + for ( k = 0; k < 36; k++, q++ ) + printf ("%2d%c", *q-1, k==35?'\n':' '); + break; + case 2: + for ( k = 0; k < 36; k++, q++ ) + printf ("%2d%c", *q-2, k==35?'\n':' '); + break; + case 3: case 4: case 5: case 6: case 7: + if ( Res == 5 ) + for ( k = 0; k < 36; k++, q++ ) + printf ("%2d%c", *q-7, k==35?'\n':' '); + break; + case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: + printf ("%2u: ", Res-1 ); + for ( k = 0; k < 36; k++, q++ ) { + printf ("%6d", *q - (1 << (Res-2)) ); + } + printf ("\n"); + break; + } +} +#endif + +/* end of encode_sv7.c */ diff --git a/libmpcenc/huffsv7.c b/libmpcenc/huffsv7.c new file mode 100755 index 0000000..dd13f8e --- /dev/null +++ b/libmpcenc/huffsv7.c @@ -0,0 +1,112 @@ +/* + * Musepack audio compression + * Copyright (c) 2005-2009, The Musepack Development Team + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "libmpcenc.h" + +const Huffman_t HuffBands [33] = { + {1, 1}, {1, 3}, {2, 5}, {2, 6}, {3, 7}, {3, 8}, {4, 8}, {4, 9}, {5, 10}, {6, 11}, {1, 12}, {2, 12}, {3, 12}, {0, 13}, {4, 12}, {5, 12}, {6, 12}, {7, 12}, {8, 12}, {1, 13}, {9, 12}, {10, 12}, {11, 12}, {7, 11}, {8, 11}, {9, 11}, {6, 10}, {7, 10}, {5, 9}, {5, 8}, {3, 6}, {3, 5}, {1, 2} +}; + +const Huffman_t HuffRes [2] [17] = { + { + {1, 1}, {1, 2}, {1, 4}, {1, 5}, {1, 6}, {1, 7}, {1, 9}, {1, 10}, {1, 11}, {1, 12}, {1, 13}, {1, 14}, {1, 15}, {0, 16}, {1, 16}, {1, 8}, {1, 3} + }, { + {1, 2}, {2, 2}, {1, 3}, {1, 5}, {1, 7}, {1, 8}, {1, 10}, {1, 12}, {0, 14}, {1, 14}, {2, 14}, {3, 14}, {1, 11}, {1, 9}, {1, 6}, {1, 4}, {3, 2} + } +}; + +const Huffman_t HuffSCFI_1 [4] = { + {0, 3}, {1, 3}, {1, 1}, {1, 2} +}; + +const Huffman_t HuffSCFI_2 [16] = { + {1, 6}, {0, 7}, {2, 6}, {3, 6}, {1, 7}, {3, 5}, {4, 5}, {5, 5}, {4, 6}, {6, 5}, {2, 2}, {2, 3}, {5, 6}, {7, 5}, {3, 3}, {3, 2} +}; + +const Huffman_t HuffDSCF_1 [64] = { + {3, 12}, {4, 12}, {5, 12}, {4, 11}, {5, 11}, {6, 11}, {5, 10}, {6, 10}, {7, 10}, {8, 10}, {9, 10}, {7, 9}, {8, 9}, {9, 9}, {10, 9}, {7, 8}, {8, 8}, {9, 8}, {10, 8}, {7, 7}, {8, 7}, {9, 7}, {10, 7}, {6, 6}, {7, 6}, {5, 5}, {4, 4}, {5, 4}, {6, 5}, {6, 4}, {7, 4}, {10, 10}, {8, 4}, {5, 3}, {6, 3}, {7, 3}, {9, 4}, {7, 5}, {8, 6}, {9, 6}, {11, 7}, {11, 8}, {12, 8}, {13, 8}, {11, 9}, {12, 9}, {13, 9}, {11, 10}, {12, 10}, {13, 10}, {7, 11}, {8, 11}, {9, 11}, {6, 12}, {7, 12}, {3, 13}, {4, 13}, {5, 13}, {0, 14}, {1, 14}, {2, 14}, {3, 14}, {4, 14}, {5, 14} +}; + +const Huffman_t HuffDSCF_2 [65] = { + {0, 15}, {3, 14}, {4, 14}, {4, 13}, {5, 13}, {6, 13}, {5, 12}, {6, 12}, {7, 12}, {8, 12}, {7, 11}, {8, 11}, {9, 11}, {10, 11}, {7, 10}, {8, 10}, {9, 10}, {10, 10}, {7, 9}, {8, 9}, {9, 9}, {6, 8}, {7, 8}, {5, 7}, {6, 7}, {4, 6}, {3, 5}, {3, 4}, {4, 4}, {3, 3}, {4, 3}, {5, 3}, {6, 3}, {7, 3}, {5, 4}, {4, 5}, {5, 5}, {5, 6}, {7, 7}, {8, 8}, {9, 8}, {10, 9}, {11, 9}, {11, 10}, {12, 10}, {13, 10}, {11, 11}, {12, 11}, {13, 11}, {9, 12}, {10, 12}, {11, 12}, {12, 12}, {7, 13}, {8, 13}, {9, 13}, {5, 14}, {6, 14}, {7, 14}, {1, 15}, {2, 15}, {3, 15}, {4, 15}, {5, 15}, {13, 12} +}; + +static const Huffman_t HuffQ1 [19] = { + {1, 6}, {1, 4}, {2, 4}, {3, 3}, {4, 3}, {5, 3}, {6, 3}, {7, 3}, {3, 4}, {4, 4}, {5, 4}, {1, 5}, {1, 7}, {1, 8}, {1, 9}, {1, 10}, {1, 11}, {0, 12}, {1, 12} +}; + +static const Huffman_t HuffQ2 [2] [5*5*5] = { + { + {2, 12}, {3, 11}, {15, 10}, {4, 11}, {0, 13}, {5, 11}, {12, 9}, {18, 8}, {13, 9}, {6, 11}, {7, 11}, {19, 8}, {21, 7}, {20, 8}, {8, 11}, {9, 11}, {14, 9}, {21, 8}, {15, 9}, {10, 11}, {3, 12}, {11, 11}, {16, 10}, {12, 11}, {1, 13}, {13, 11}, {16, 9}, {22, 8}, {17, 9}, {14, 11}, {18, 9}, {15, 6}, {16, 6}, {22, 7}, {19, 9}, {23, 8}, {17, 6}, {8, 4}, {18, 6}, {24, 8}, {20, 9}, {19, 6}, {20, 6}, {23, 7}, {21, 9}, {15, 11}, {22, 9}, {25, 8}, {23, 9}, {16, 11}, {17, 10}, {26, 8}, {24, 7}, {27, 8}, {18, 10}, {28, 8}, {21, 6}, {9, 4}, {22, 6}, {29, 8}, {25, 7}, {10, 4}, {7, 3}, {11, 4}, {26, 7}, {30, 8}, {23, 6}, {12, 4}, {24, 6}, {31, 8}, {19, 10}, {32, 8}, {27, 7}, {33, 8}, {20, 10}, {17, 11}, {24, 9}, {34, 8}, {25, 9}, {18, 11}, {26, 9}, {25, 6}, {26, 6}, {27, 6}, {27, 9}, {35, 8}, {28, 6}, {13, 4}, {29, 6}, {36, 8}, {28, 9}, {28, 7}, {30, 6}, {31, 6}, {29, 9}, {19, 11}, {30, 9}, {37, 8}, {31, 9}, {20, 11}, {2, 13}, {21, 11}, {21, 10}, {22, 11}, {4, 12}, {23, 11}, {32, 9}, {38, 8}, {33, 9}, {24, 11}, {22, 10}, {39, 8}, {29, 7}, {40, 8}, {25, 11}, {26, 11}, {34, 9}, {41, 8}, {35, 9}, {27, 11}, {3, 13}, {28, 11}, {23, 10}, {29, 11}, {5, 12} + }, { + {2, 11}, {3, 10}, {15, 9}, {4, 10}, {0, 12}, {5, 10}, {12, 8}, {13, 8}, {14, 8}, {6, 10}, {7, 10}, {15, 8}, {30, 7}, {16, 8}, {16, 9}, {8, 10}, {17, 8}, {18, 8}, {19, 8}, {9, 10}, {3, 11}, {10, 10}, {17, 9}, {11, 10}, {1, 12}, {12, 10}, {20, 8}, {21, 8}, {22, 8}, {13, 10}, {23, 8}, {18, 6}, {14, 5}, {19, 6}, {24, 8}, {25, 8}, {20, 6}, {15, 5}, {16, 5}, {26, 8}, {27, 8}, {21, 6}, {17, 5}, {22, 6}, {28, 8}, {14, 10}, {29, 8}, {30, 8}, {31, 8}, {15, 10}, {18, 9}, {32, 8}, {31, 7}, {33, 8}, {19, 9}, {34, 8}, {18, 5}, {19, 5}, {20, 5}, {35, 8}, {32, 7}, {21, 5}, {15, 4}, {22, 5}, {33, 7}, {36, 8}, {23, 5}, {24, 5}, {25, 5}, {37, 8}, {20, 9}, {38, 8}, {34, 7}, {39, 8}, {21, 9}, {16, 10}, {40, 8}, {41, 8}, {42, 8}, {17, 10}, {43, 8}, {23, 6}, {26, 5}, {24, 6}, {44, 8}, {45, 8}, {27, 5}, {28, 5}, {25, 6}, {46, 8}, {47, 8}, {26, 6}, {29, 5}, {27, 6}, {48, 8}, {18, 10}, {49, 8}, {50, 8}, {51, 8}, {19, 10}, {2, 12}, {20, 10}, {21, 10}, {22, 10}, {4, 11}, {23, 10}, {52, 8}, {53, 8}, {54, 8}, {24, 10}, {22, 9}, {55, 8}, {35, 7}, {56, 8}, {25, 10}, {26, 10}, {57, 8}, {58, 8}, {59, 8}, {27, 10}, {3, 12}, {28, 10}, {23, 9}, {29, 10}, {5, 11} + } +}; + +static const Huffman_t HuffQ3 [49] = { + {0, 9}, {2, 8}, {5, 7}, {6, 7}, {7, 7}, {3, 8}, {1, 9}, {4, 8}, {9, 6}, {10, 6}, {10, 5}, {11, 6}, {8, 7}, {5, 8}, {9, 7}, {12, 6}, {8, 4}, {9, 4}, {11, 5}, {13, 6}, {10, 7}, {11, 7}, {12, 5}, {10, 4}, {7, 3}, {11, 4}, {13, 5}, {12, 7}, {13, 7}, {14, 6}, {14, 5}, {12, 4}, {13, 4}, {15, 6}, {14, 7}, {6, 8}, {16, 6}, {17, 6}, {15, 5}, {18, 6}, {19, 6}, {7, 8}, {2, 9}, {8, 8}, {15, 7}, {16, 7}, {17, 7}, {9, 8}, {3, 9} +}; + +static const Huffman_t HuffQ4 [81] = { + {0, 10}, {2, 9}, {5, 8}, {12, 7}, {13, 7}, {6, 8}, {7, 8}, {3, 9}, {1, 10}, {4, 9}, {8, 8}, {14, 7}, {13, 6}, {14, 6}, {15, 6}, {15, 7}, {9, 8}, {5, 9}, {10, 8}, {16, 7}, {16, 6}, {17, 6}, {18, 5}, {18, 6}, {19, 6}, {17, 7}, {11, 8}, {12, 8}, {20, 6}, {21, 6}, {19, 5}, {20, 5}, {21, 5}, {22, 6}, {23, 6}, {13, 8}, {18, 7}, {24, 6}, {22, 5}, {23, 5}, {15, 4}, {24, 5}, {25, 5}, {25, 6}, {19, 7}, {14, 8}, {26, 6}, {27, 6}, {26, 5}, {27, 5}, {28, 5}, {28, 6}, {29, 6}, {15, 8}, {16, 8}, {20, 7}, {30, 6}, {31, 6}, {29, 5}, {32, 6}, {33, 6}, {21, 7}, {17, 8}, {6, 9}, {18, 8}, {22, 7}, {23, 7}, {34, 6}, {35, 6}, {24, 7}, {19, 8}, {7, 9}, {2, 10}, {8, 9}, {20, 8}, {21, 8}, {25, 7}, {22, 8}, {23, 8}, {9, 9}, {3, 10} +}; + +static const Huffman_t HuffQ5 [2] [15] = { + { + {0, 7}, {1, 7}, {2, 6}, {2, 5}, {2, 4}, {2, 3}, {3, 3}, {3, 2}, {4, 3}, {5, 3}, {3, 4}, {3, 5}, {3, 6}, {2, 7}, {3, 7} + }, { + {0, 6}, {1, 6}, {2, 5}, {2, 4}, {3, 4}, {3, 3}, {4, 3}, {5, 3}, {6, 3}, {7, 3}, {4, 4}, {5, 4}, {3, 5}, {2, 6}, {3, 6} + } +}; + +static const Huffman_t HuffQ6 [2] [31] = { + { + {0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 8}, {5, 8}, {4, 7}, {3, 6}, {4, 6}, {5, 6}, {5, 5}, {6, 5}, {4, 4}, {5, 4}, {4, 3}, {3, 2}, {5, 3}, {6, 4}, {7, 4}, {7, 5}, {6, 6}, {7, 6}, {8, 6}, {9, 6}, {5, 7}, {6, 8}, {7, 8}, {4, 9}, {5, 9}, {6, 9}, {7, 9} + }, { + {0, 8}, {1, 8}, {2, 7}, {3, 7}, {4, 7}, {4, 6}, {5, 6}, {4, 5}, {5, 5}, {6, 5}, {5, 4}, {6, 4}, {7, 4}, {8, 4}, {9, 4}, {10, 4}, {11, 4}, {12, 4}, {13, 4}, {14, 4}, {15, 4}, {7, 5}, {8, 5}, {9, 5}, {6, 6}, {7, 6}, {5, 7}, {6, 7}, {7, 7}, {2, 8}, {3, 8} + } +}; + +static const Huffman_t HuffQ7 [2] [63] = { + { + {0, 10}, {1, 10}, {2, 10}, {8, 9}, {9, 9}, {3, 10}, {4, 10}, {5, 10}, {6, 10}, {7, 10}, {10, 9}, {11, 9}, {12, 9}, {13, 9}, {10, 8}, {11, 8}, {12, 8}, {13, 8}, {14, 8}, {10, 7}, {11, 7}, {12, 7}, {13, 7}, {14, 7}, {10, 6}, {11, 6}, {12, 6}, {8, 5}, {9, 5}, {6, 4}, {4, 3}, {3, 2}, {5, 3}, {7, 4}, {10, 5}, {11, 5}, {13, 6}, {14, 6}, {15, 6}, {15, 7}, {16, 7}, {17, 7}, {18, 7}, {15, 8}, {19, 7}, {16, 8}, {17, 8}, {18, 8}, {19, 8}, {14, 9}, {15, 9}, {16, 9}, {17, 9}, {8, 10}, {9, 10}, {10, 10}, {11, 10}, {12, 10}, {18, 9}, {19, 9}, {13, 10}, {14, 10}, {15, 10} + }, { + {0, 9}, {1, 9}, {2, 8}, {3, 8}, {4, 8}, {5, 8}, {6, 8}, {7, 8}, {8, 8}, {8, 7}, {9, 7}, {10, 7}, {11, 7}, {12, 7}, {9, 6}, {10, 6}, {11, 6}, {12, 6}, {13, 6}, {14, 6}, {15, 6}, {16, 6}, {12, 5}, {13, 5}, {14, 5}, {15, 5}, {16, 5}, {17, 5}, {18, 5}, {19, 5}, {20, 5}, {21, 5}, {22, 5}, {23, 5}, {24, 5}, {25, 5}, {26, 5}, {27, 5}, {28, 5}, {29, 5}, {30, 5}, {31, 5}, {17, 6}, {18, 6}, {19, 6}, {20, 6}, {21, 6}, {22, 6}, {23, 6}, {13, 7}, {14, 7}, {15, 7}, {16, 7}, {17, 7}, {9, 8}, {10, 8}, {11, 8}, {12, 8}, {13, 8}, {14, 8}, {15, 8}, {2, 9}, {3, 9} + } +}; + +static const Huffman_t HuffQ8 [2] [127] = { + { + {3, 11}, {4, 11}, {10, 10}, {11, 10}, {12, 10}, {13, 10}, {14, 10}, {26, 9}, {15, 10}, {27, 9}, {16, 10}, {0, 12}, {1, 12}, {5, 11}, {6, 11}, {7, 11}, {8, 11}, {9, 11}, {10, 11}, {11, 11}, {17, 10}, {12, 11}, {18, 10}, {19, 10}, {20, 10}, {21, 10}, {22, 10}, {23, 10}, {24, 10}, {25, 10}, {28, 9}, {26, 10}, {27, 10}, {28, 10}, {29, 10}, {30, 10}, {29, 9}, {30, 9}, {31, 9}, {32, 9}, {33, 9}, {34, 9}, {35, 9}, {36, 9}, {25, 8}, {37, 9}, {26, 8}, {27, 8}, {28, 8}, {29, 8}, {30, 8}, {31, 8}, {20, 7}, {21, 7}, {22, 7}, {23, 7}, {14, 6}, {15, 6}, {16, 6}, {17, 6}, {11, 5}, {7, 4}, {4, 3}, {3, 2}, {5, 3}, {12, 5}, {13, 5}, {18, 6}, {19, 6}, {20, 6}, {21, 6}, {24, 7}, {25, 7}, {26, 7}, {27, 7}, {32, 8}, {33, 8}, {34, 8}, {35, 8}, {36, 8}, {37, 8}, {38, 8}, {39, 8}, {38, 9}, {39, 9}, {40, 9}, {41, 9}, {42, 9}, {43, 9}, {44, 9}, {45, 9}, {46, 9}, {31, 10}, {32, 10}, {47, 9}, {33, 10}, {34, 10}, {35, 10}, {36, 10}, {37, 10}, {38, 10}, {39, 10}, {40, 10}, {41, 10}, {13, 11}, {14, 11}, {42, 10}, {15, 11}, {16, 11}, {17, 11}, {18, 11}, {2, 12}, {19, 11}, {3, 12}, {4, 12}, {5, 12}, {43, 10}, {44, 10}, {48, 9}, {49, 9}, {45, 10}, {46, 10}, {47, 10}, {48, 10}, {49, 10}, {50, 10}, {51, 10} + }, { + {0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 8}, {5, 8}, {6, 8}, {7, 8}, {8, 8}, {9, 8}, {10, 8}, {11, 8}, {12, 8}, {13, 8}, {14, 8}, {15, 8}, {16, 8}, {17, 8}, {18, 8}, {19, 8}, {20, 8}, {21, 8}, {21, 7}, {22, 7}, {23, 7}, {24, 7}, {25, 7}, {26, 7}, {27, 7}, {28, 7}, {29, 7}, {30, 7}, {31, 7}, {32, 7}, {33, 7}, {34, 7}, {35, 7}, {36, 7}, {37, 7}, {38, 7}, {39, 7}, {40, 7}, {41, 7}, {42, 7}, {43, 7}, {44, 7}, {45, 7}, {46, 7}, {47, 7}, {48, 7}, {38, 6}, {39, 6}, {40, 6}, {41, 6}, {42, 6}, {43, 6}, {44, 6}, {45, 6}, {46, 6}, {47, 6}, {48, 6}, {49, 6}, {50, 6}, {51, 6}, {52, 6}, {53, 6}, {54, 6}, {55, 6}, {56, 6}, {57, 6}, {58, 6}, {59, 6}, {60, 6}, {61, 6}, {62, 6}, {49, 7}, {63, 6}, {50, 7}, {51, 7}, {52, 7}, {53, 7}, {54, 7}, {55, 7}, {56, 7}, {57, 7}, {58, 7}, {59, 7}, {60, 7}, {61, 7}, {62, 7}, {63, 7}, {64, 7}, {65, 7}, {66, 7}, {67, 7}, {68, 7}, {69, 7}, {70, 7}, {71, 7}, {72, 7}, {73, 7}, {74, 7}, {75, 7}, {22, 8}, {23, 8}, {24, 8}, {25, 8}, {26, 8}, {27, 8}, {28, 8}, {29, 8}, {30, 8}, {31, 8}, {32, 8}, {33, 8}, {34, 8}, {35, 8}, {36, 8}, {37, 8}, {38, 8}, {39, 8}, {40, 8}, {41, 8}, {4, 9}, {5, 9}, {6, 9}, {7, 9} + } +}; + +const Huffman_t HuffQ9up [256] = { + {1, 10}, {2, 10}, {3, 10}, {4, 10}, {5, 10}, {5, 9}, {6, 9}, {7, 9}, {8, 9}, {9, 9}, {10, 9}, {11, 9}, {12, 9}, {13, 9}, {14, 9}, {15, 9}, {16, 9}, {17, 9}, {18, 9}, {38, 8}, {39, 8}, {19, 9}, {20, 9}, {21, 9}, {22, 9}, {23, 9}, {24, 9}, {25, 9}, {26, 9}, {27, 9}, {28, 9}, {29, 9}, {30, 9}, {31, 9}, {32, 9}, {33, 9}, {34, 9}, {35, 9}, {36, 9}, {37, 9}, {40, 8}, {38, 9}, {41, 8}, {42, 8}, {43, 8}, {44, 8}, {45, 8}, {46, 8}, {47, 8}, {48, 8}, {49, 8}, {50, 8}, {51, 8}, {52, 8}, {53, 8}, {54, 8}, {55, 8}, {56, 8}, {57, 8}, {58, 8}, {59, 8}, {60, 8}, {61, 8}, {62, 8}, {63, 8}, {64, 8}, {65, 8}, {66, 8}, {67, 8}, {68, 8}, {69, 8}, {70, 8}, {71, 8}, {72, 8}, {73, 8}, {74, 8}, {75, 8}, {76, 8}, {77, 8}, {78, 8}, {79, 8}, {80, 8}, {81, 8}, {82, 8}, {83, 8}, {84, 8}, {85, 8}, {86, 8}, {87, 8}, {88, 8}, {89, 8}, {90, 8}, {91, 8}, {92, 8}, {93, 8}, {94, 8}, {95, 8}, {96, 8}, {97, 8}, {98, 8}, {99, 8}, {100, 8}, {101, 8}, {102, 8}, {103, 8}, {104, 8}, {105, 8}, {106, 8}, {86, 7}, {87, 7}, {88, 7}, {89, 7}, {90, 7}, {91, 7}, {92, 7}, {93, 7}, {94, 7}, {95, 7}, {96, 7}, {97, 7}, {98, 7}, {99, 7}, {100, 7}, {101, 7}, {102, 7}, {103, 7}, {104, 7}, {62, 6}, {63, 6}, {105, 7}, {106, 7}, {107, 7}, {108, 7}, {109, 7}, {110, 7}, {111, 7}, {112, 7}, {113, 7}, {114, 7}, {115, 7}, {116, 7}, {117, 7}, {118, 7}, {119, 7}, {120, 7}, {121, 7}, {122, 7}, {107, 8}, {123, 7}, {108, 8}, {109, 8}, {110, 8}, {111, 8}, {112, 8}, {113, 8}, {114, 8}, {115, 8}, {116, 8}, {117, 8}, {118, 8}, {119, 8}, {120, 8}, {121, 8}, {122, 8}, {123, 8}, {124, 8}, {125, 8}, {126, 8}, {127, 8}, {128, 8}, {129, 8}, {130, 8}, {131, 8}, {132, 8}, {133, 8}, {134, 8}, {135, 8}, {136, 8}, {137, 8}, {138, 8}, {139, 8}, {140, 8}, {141, 8}, {142, 8}, {143, 8}, {144, 8}, {145, 8}, {146, 8}, {147, 8}, {148, 8}, {149, 8}, {150, 8}, {151, 8}, {152, 8}, {153, 8}, {154, 8}, {155, 8}, {156, 8}, {157, 8}, {158, 8}, {159, 8}, {160, 8}, {161, 8}, {162, 8}, {163, 8}, {164, 8}, {165, 8}, {166, 8}, {167, 8}, {168, 8}, {169, 8}, {170, 8}, {171, 8}, {39, 9}, {40, 9}, {41, 9}, {42, 9}, {43, 9}, {44, 9}, {45, 9}, {46, 9}, {47, 9}, {48, 9}, {49, 9}, {50, 9}, {51, 9}, {52, 9}, {53, 9}, {54, 9}, {55, 9}, {56, 9}, {57, 9}, {58, 9}, {59, 9}, {60, 9}, {61, 9}, {62, 9}, {63, 9}, {64, 9}, {65, 9}, {66, 9}, {67, 9}, {68, 9}, {69, 9}, {70, 9}, {71, 9}, {72, 9}, {73, 9}, {74, 9}, {75, 9}, {6, 10}, {7, 10}, {8, 10}, {9, 10}, {0, 11}, {1, 11} +}; + +Huffman_t const * const HuffQ [2] [8] = { + { HuffQ1, HuffQ2[0], HuffQ3, HuffQ4, HuffQ5[0], HuffQ6[0], HuffQ7[0], HuffQ8[0] }, + { HuffQ1, HuffQ2[1], HuffQ3, HuffQ4, HuffQ5[1], HuffQ6[1], HuffQ7[1], HuffQ8[1] } +}; + +/* end of huffsv7.c */ diff --git a/libmpcenc/libmpcenc.h b/libmpcenc/libmpcenc.h new file mode 100755 index 0000000..e9d5f19 --- /dev/null +++ b/libmpcenc/libmpcenc.h @@ -0,0 +1,122 @@ +/* + * Musepack audio compression + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#pragma once + +#include +#include + +// FIXME : define this somewhere else +#ifndef NULL +#define NULL 0 +#endif + +#define MPC_FRAME_LENGTH (36 * 32) +#define MAX_FRAME_SIZE 4352 + +typedef struct { + mpc_uint16_t Code; // >= 14 bit + mpc_uint16_t Length; // >= 4 bit +} Huffman_t; + +typedef struct { + mpc_uint_t pos; // next free byte position in the buffer + mpc_uint_t bitsCount; // number of used bits in bitsBuff + mpc_uint64_t outputBits; // Counter for the number of written bits in the bitstream + mpc_uint32_t bitsBuff; // bits buffer + mpc_uint8_t * buffer; // Buffer for bitstream-file + mpc_uint_t framesInBlock; // Number of frames in current block + mpc_uint_t frames_per_block_pwr; // Number of frame in a block = 1 << frames_per_block_pwr + + // seeking + mpc_uint32_t * seek_table; + mpc_uint32_t seek_pos; /// current position in the seek table + mpc_uint32_t seek_ref; /// reference position for the seek information + mpc_uint32_t seek_ptr; /// position of the seek pointer block + mpc_uint32_t seek_pwr; /// keep a seek table entry every 2^seek_pwr block + mpc_uint32_t block_cnt; /// number of encoded blocks + + FILE * outputFile; // ouput file + + mpc_uint32_t MS_Channelmode; + mpc_uint32_t Overflows; // = 0; // number of internal (filterbank) clippings + mpc_uint32_t MaxBand; /// number of non zero bands in last frame + + mpc_int32_t SCF_Index_L [32] [3]; + mpc_int32_t SCF_Index_R [32] [3]; // holds scalefactor-indices + mpc_int32_t SCF_Last_L [32]; + mpc_int32_t SCF_Last_R [32]; // Last coded SCF value + mpc_quantizer Q [32]; // holds quantized samples + mpc_int32_t Res_L [32]; + mpc_int32_t Res_R [32]; // holds the chosen quantizer for each subband + mpc_bool_t DSCF_Flag_L [32]; + mpc_bool_t DSCF_Flag_R [32]; // differential SCF used? + mpc_bool_t MS_Flag[32]; // MS used? + } mpc_encoder_t; + + void mpc_encoder_init ( mpc_encoder_t * e, + mpc_uint64_t SamplesInWAVE, + unsigned int FramesBlockPwr, + unsigned int SeekDistance ); + void mpc_encoder_exit ( mpc_encoder_t * e ); + void writeStreamInfo ( mpc_encoder_t*e, + const unsigned int MaxBand, + const unsigned int MS_on, + const unsigned int SamplesCount, + const unsigned int SamplesSkip, + const unsigned int SampleFreq, + const unsigned int ChannelCount); + void writeGainInfo ( mpc_encoder_t * e, + unsigned short t_gain, + unsigned short t_peak, + unsigned short a_gain, + unsigned short a_peak); + void writeEncoderInfo ( mpc_encoder_t * e, + const float profile, + const int PNS_on, + const int version_major, + const int version_minor, + const int version_build ); + mpc_uint32_t writeBlock ( mpc_encoder_t *, const char *, const mpc_bool_t, mpc_uint32_t); + void writeMagic (mpc_encoder_t * e); + void emptyBits(mpc_encoder_t * e); + + /// maximum number of output bits is 31 ! + static mpc_inline void writeBits (mpc_encoder_t * e, mpc_uint32_t input, unsigned int bits ) + { + e->outputBits += bits; + + if (e->bitsCount + bits > sizeof(e->bitsBuff) * 8) { + int tmp = (sizeof(e->bitsBuff) * 8 - e->bitsCount); + bits -= tmp; + e->bitsBuff = (e->bitsBuff << tmp) | (input >> bits); + e->bitsCount = sizeof(e->bitsBuff) * 8; + emptyBits(e); + input &= (1 << bits) - 1; + } + e->bitsBuff = (e->bitsBuff << bits) | input; + e->bitsCount += bits; + } + void writeSeekTable (mpc_encoder_t * e); + void writeBitstream_SV8 ( mpc_encoder_t*, int); + + unsigned int encodeSize(mpc_uint64_t, char *, mpc_bool_t); + void encodeEnum(mpc_encoder_t * e, const mpc_uint32_t bits, const mpc_uint_t N); + void encodeLog(mpc_encoder_t * e, mpc_uint32_t value, mpc_uint32_t max); + + diff --git a/libmpcenc/libmpcenc_static.a b/libmpcenc/libmpcenc_static.a new file mode 100644 index 0000000000000000000000000000000000000000..8f16cf90291c45f4b63137e03cf822185fd55894 GIT binary patch literal 86344 zcmdRXeSB2ang1CQARuxFi5e@_vAyjMEz)4I4HDZKn8*zdm@TMDr4oc7R9>_ zP0);C+O%a?+GV%tmUh{e{WZH~YY0&%yo7*n0ek^P9WiP^(5MIzQGVa=bIzTa452T( zfBZhb`}y3t=RD7Ip7We@p7Wfy=ia%haL%&13%)V*E55#0ep*zA(|>)wYbUrA!Xq(xRnv@6y2;6%}{QoO8#b3bnX$?rhCy+3bbnpAM*~20++MnX_<7@sjyV zP4cQ`6>}D+;zc6KvJ`;w3C-*ow-hL6#r*kytA8h~sFXlx#^f7jUy}-slOTY_1}Z@f z{Z_?t!A_d9WZrVcN|-(4t~rY;mdu}XSJl#G6-(6Y*&xU7!X0784KoAE?jb_)YRN%bH93x`bwrMrfFh-!EpsHw0!6sw)yP&(&A(1j$Qhdp3~Qa8!2`i4ryT&Pls2U6jH1Ov)a!_^0t zcOav9UdX2to1Ptx-IV=-RW@a%6MJ~&V5P#b8v=;`XeAgs6ZSeWNn!nT+q4O7LF=b& zp`1M*Sfy<)3n3jqmKm_Deqh=Cz`*{Tw1fJAK{QP_Vvtq)Q;WhkC@_SK5H36+4&maV zoNZR^-GaO|-||-nEWcCk)ExCXHQf=*U)gE-7xXwaZC=YCh=eTvGq?|0{_;jVOBzB} z`^zs|?N8Mq@H7IS))iU)_bmUrzy_ME_Ky&6|KMf(JW*%0A9)$zb#YXa<*#d$M`y?y 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 +#include + +/* V A R I A B L E S */ +float __SCF [128 + 6]; // tabulated scalefactors +#define SCF ( __SCF + 6 ) +float __invSCF [128 + 6]; // inverted scalefactors +#define invSCF (__invSCF + 6) + + +// Quantization-coefficients: step/65536 bzw. (2*D[Res]+1)/65536 +static const float __A [1 + 18] = { + 0.0000762939453125f, + 0.0000000000000000f, 0.0000457763671875f, 0.0000762939453125f, 0.0001068115234375f, + 0.0001373291015625f, 0.0002288818359375f, 0.0004730224609375f, 0.0009613037109375f, + 0.0019378662109375f, 0.0038909912109375f, 0.0077972412109375f, 0.0156097412109375f, + 0.0312347412109375f, 0.0624847412109375f, 0.1249847412109375f, 0.2499847412109375f, + 0.4999847412109375f +}; + + +// Requantization-coefficients: 65536/step bzw. 1/A[Res] +static const float __C [1 + 18] = { + 13107.200000000001f, + 65535.000000000000f, 21845.333333333332f, 13107.200000000001f, 9362.285714285713f, + 7281.777777777777f, 4369.066666666666f, 2114.064516129032f, 1040.253968253968f, + 516.031496062992f, 257.003921568627f, 128.250489236790f, 64.062561094819f, + 32.015632633121f, 16.003907203907f, 8.000976681723f, 4.000244155527f, + 2.000061037018f, 1.000015259022f +}; + + +// Requantization-Offset: 2*D+1 = steps of quantizer +static const int __D [1 + 18] = { + 2, + 0, 1, 2, 3, 4, 7, 15, 31, 63, + 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767 +}; + +#define A (__A + 1) +#define C (__C + 1) +#define D (__D + 1) + +// Generation of the scalefactors and their inverses +void +Init_Skalenfaktoren ( void ) +{ + int n; + + for ( n = -6; n < 128; n++ ) { + SCF[n] = (float) ( pow(10.,-0.1*(n-1)/1.26) ); + invSCF[n] = (float) ( pow(10., 0.1*(n-1)/1.26) ); + } +} + +#ifdef WIN32 +#pragma warning ( disable : 4305 ) +#endif + +static float NoiseInjectionCompensation1D [18] = { +#if 1 + 1.f, + 0.884621, + 0.935711, + 0.970829, + 0.987941, + 0.994315, + 0.997826, + 0.999744, + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1. +#else + 1., + 0.907073, // -1...+1 + 0.946334, // -2...+2 + 0.974793, // -3...+3 + 0.987647, // -4...+4 + 0.994330, // -7...+7 + 0.997846, // -15...+15 + 1., // -31...+31 + 1., + 1., + 1., + 1., + 1., + 1., + 1., + 1., + 1., + 1., +#endif +} ; + +#if 0 +static float NoiseInjectionCompensation2D [18] [32] = { + { 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, }, + { 0.931595, 0.891390, 0.852494, 0.872420, 0.904053, 0.933716, 0.958976, 0.977719, 0.993979, 1.009011, 1.020961, 1.029564, 1.026582, 1.026753, 1.035573, 1.053251, 1.073429, 1.096344, 1.096344, 1.096344, 1.096344, 1.096344, 1.096344, 1.096344, 1.096344, 1.096344, 1.096344, 1.096344, 1.096344, 1.096344, 1.096344, 1.096344, }, + { 0.878264, 0.882351, 0.904261, 0.930843, 0.949243, 0.966741, 0.980500, 0.988182, 0.993361, 0.997112, 0.998918, 0.999501, 1.003179, 1.007445, 1.008678, 0.995890, 0.991015, 0.988019, 0.985479, 0.987646, 1.003605, 1.029301, 1.040511, 1.061531, 1.083302, 1.083302, 1.083302, 1.083302, 1.083302, 1.083302, 1.083302, 1.083302, }, + { 0.866977, 0.943500, 0.941561, 0.953049, 0.967274, 0.980476, 0.988678, 0.993240, 0.996376, 0.998513, 0.999545, 0.999775, 1.000898, 1.003954, 1.006308, 1.004932, 1.002867, 1.002922, 1.003624, 1.005487, 1.003919, 1.008022, 0.987693, 1.000358, 1.017461, 1.039166, 1.056053, 1.068191, 1.068191, 1.068191, 1.068191, 1.068191, }, + { 0.880390, 0.976713, 0.976180, 0.976596, 0.982011, 0.988786, 0.993619, 0.996641, 0.998824, 1.000297, 1.001195, 1.001718, 1.002395, 1.003503, 1.005617, 1.005072, 1.002409, 1.003703, 1.003412, 1.003318, 1.005290, 1.007112, 1.014370, 1.010040, 1.000780, 1.005700, 1.020505, 1.030123, 1.030123, 1.030123, 1.030123, 1.030123, }, + { 0.916894, 0.987164, 0.988734, 0.992318, 0.995268, 0.996932, 0.998141, 0.999072, 0.999674, 1.000104, 1.000292, 1.000386, 1.000399, 1.000222, 1.000671, 1.002127, 1.000137, 1.000046, 0.999644, 0.999156, 1.000568, 1.000098, 0.993764, 0.993954, 0.998971, 1.002835, 1.002972, 0.995376, 1.001643, 1.001643, 1.001643, 1.001643, }, + { 0.982771, 0.995034, 0.997118, 0.998294, 0.998652, 0.999016, 0.999382, 0.999598, 0.999746, 0.999851, 0.999837, 0.999881, 0.999847, 1.000154, 0.999885, 1.000222, 0.999963, 1.000934, 0.999804, 0.999927, 1.000379, 0.997574, 0.997943, 0.998748, 0.998151, 0.997458, 1.000319, 1.001091, 0.998461, 0.996151, 1.005969, 1.005969, }, + { 0.997150, 0.999903, 0.999424, 0.999537, 0.999661, 0.999753, 0.999851, 0.999903, 0.999928, 0.999963, 0.999969, 0.999941, 0.999974, 0.999967, 0.999996, 0.999975, 0.999966, 0.999704, 0.999946, 0.999894, 0.999905, 1.000840, 1.000716, 1.000799, 1.000406, 0.999912, 1.000153, 0.999789, 1.000495, 1.000495, 1.001167, 1.001347, }, + { 0.995524, 0.999983, 1.000044, 0.999965, 0.999970, 0.999974, 0.999986, 0.999995, 0.999996, 1.000011, 0.999997, 1.000010, 1.000010, 1.000026, 1.000006, 1.000148, 1.000048, 0.999999, 1.000161, 1.000193, 0.999797, 1.000145, 0.999974, 1.000039, 0.999731, 0.999985, 1.000563, 1.000256, 1.000637, 1.000050, 1.002013, 1.001053, }, + { 0.994796, 0.999833, 1.000003, 1.000012, 0.999986, 0.999991, 0.999991, 1.000000, 1.000004, 0.999999, 1.000005, 1.000004, 1.000008, 0.999996, 1.000027, 1.000097, 0.999951, 0.999938, 0.999989, 1.000001, 1.000048, 0.999935, 1.000068, 1.000134, 0.999961, 1.000198, 0.999956, 0.999957, 0.999844, 1.000087, 0.999708, 1.000198, }, + { 0.996046, 0.999902, 1.000019, 1.000017, 0.999983, 0.999997, 1.000002, 0.999993, 0.999999, 1.000003, 1.000001, 1.000015, 1.000004, 1.000006, 0.999987, 0.999993, 0.999992, 1.000029, 1.000064, 0.999997, 1.000044, 1.000044, 0.999919, 0.999875, 1.000011, 0.999897, 0.999905, 0.999996, 0.999934, 0.999968, 1.000008, 0.999902, }, + { 0.998703, 0.999963, 1.000021, 1.000006, 1.000008, 1.000000, 1.000003, 0.999994, 0.999990, 0.999990, 1.000003, 1.000009, 1.000001, 0.999999, 1.000001, 1.000009, 0.999999, 0.999988, 1.000003, 0.999971, 1.000005, 1.000042, 0.999924, 0.999995, 0.999998, 0.999988, 0.999961, 0.999942, 1.000046, 1.000061, 1.000112, 1.000052, }, + { 0.999872, 1.000001, 1.000004, 0.999998, 0.999999, 0.999998, 0.999992, 0.999990, 0.999991, 1.000000, 1.000000, 1.000000, 1.000002, 0.999996, 1.000004, 1.000011, 0.999963, 1.000016, 1.000050, 0.999996, 0.999998, 1.000006, 0.999990, 0.999948, 0.999974, 1.000060, 1.000014, 0.999987, 0.999986, 0.999917, 0.999973, 1.000035, }, + { 1.000366, 1.000006, 0.999996, 0.999995, 0.999998, 0.999996, 0.999991, 1.000001, 0.999990, 0.999996, 1.000010, 0.999999, 1.000002, 1.000000, 0.999996, 0.999990, 1.000014, 0.999978, 1.000011, 0.999983, 0.999988, 0.999971, 0.999997, 0.999989, 0.999986, 0.999958, 1.000005, 0.999992, 0.999975, 0.999975, 0.999975, 0.999975, }, + { 0.999736, 0.999995, 1.000002, 1.000004, 0.999999, 1.000000, 1.000003, 1.000000, 1.000007, 0.999992, 0.999997, 0.999998, 0.999998, 0.999997, 1.000007, 1.000012, 1.000004, 0.999995, 0.999996, 1.000009, 1.000003, 1.000008, 1.000001, 1.000003, 1.000011, 1.000019, 0.999991, 0.999970, 0.999970, 0.999970, 0.999970, 0.999965, }, + { 0.999970, 1.000000, 1.000000, 1.000000, 1.000001, 1.000000, 1.000000, 0.999999, 1.000001, 1.000000, 0.999999, 0.999999, 0.999999, 1.000007, 1.000005, 1.000002, 0.999999, 0.999999, 1.000000, 0.999997, 0.999999, 1.000001, 1.000001, 0.999988, 0.999988, 0.999984, 0.999995, 0.999986, 0.999986, 0.999986, 0.999986, 0.999986, }, + { 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, }, + { 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, }, +}; +#endif + +#ifdef WIN32 +#pragma warning ( default : 4305 ) +#endif + +void +NoiseInjectionComp ( void ) +{ + int i; + + for ( i = 0; i < sizeof(NoiseInjectionCompensation1D)/sizeof(*NoiseInjectionCompensation1D); i++ ) + NoiseInjectionCompensation1D [i] = 1.f; +#if 0 + for ( i = 0; i < sizeof(NoiseInjectionCompensation2D)/sizeof(**NoiseInjectionCompensation2D); i++ ) + NoiseInjectionCompensation2D [0][i] = 1.f; +#endif +} + + +// Quantizes a subband and calculates iSNR +float +ISNR_Schaetzer ( const float* input, const float SNRcomp, const int res ) +{ + const float fac = A [res] * NoiseInjectionCompensation1D [res]; + const float invfac = C [res] / NoiseInjectionCompensation1D [res]; + float signal = 1.e-30f; + float error = 1.e-30f; + const float * in_end = input + 36; + + // Summation of the absolute power and the quadratic error + do { + float err; + err = mpc_nearbyintf(input[0] * fac) * invfac - input[0]; + error += err * err; + signal += input[0] * input[0]; + + err = mpc_nearbyintf(input[1] * fac) * invfac - input[1]; + error += err * err; + signal += input[1] * input[1]; + + err = mpc_nearbyintf(input[2] * fac) * invfac - input[2]; + error += err * err; + signal += input[2] * input[2]; + + err = mpc_nearbyintf(input[3] * fac) * invfac - input[3]; + error += err * err; + signal += input[3] * input[3]; + + input += 4; + + } while (input < in_end); + + error *= NoiseInjectionCompensation1D [res] * NoiseInjectionCompensation1D [res]; + signal *= NoiseInjectionCompensation1D [res] * NoiseInjectionCompensation1D [res]; + + // Utilization of SNRcomp only if SNR > 1 !!! + return signal > error ? error / (SNRcomp * signal) : error / signal; +} + + +float +ISNR_Schaetzer_Trans ( const float* input, const float SNRcomp, const int res ) +{ + int k; + float fac = A [res]; + float invfac = C [res]; + float signal, error, ret, err, sig; + + // Summation of the absolute power and the quadratic error + k = 0; + signal = error = 1.e-30f; + for ( ; k < 12; k++ ) { + sig = input[k] * NoiseInjectionCompensation1D [res]; + err = mpc_nearbyintf(sig * fac) * invfac - sig; + + error += err * err; + signal += sig * sig; + } + err = signal > error ? error / (SNRcomp * signal) : error / signal; + ret = err; + signal = error = 1.e-30f; + for ( ; k < 24; k++ ) { + sig = input[k] * NoiseInjectionCompensation1D [res]; + err = mpc_nearbyintf(sig * fac) * invfac - sig; + + error += err * err; + signal += sig * sig; + } + err = signal > error ? error / (SNRcomp * signal) : error / signal; + ret = maxf(ret, err); + + signal = error = 1.e-30f; + for ( ; k < 36; k++ ) { + sig = input[k] * NoiseInjectionCompensation1D [res]; + err = mpc_nearbyintf(sig * fac) * invfac - sig; + + error += err * err; + signal += sig * sig; + } + err = signal > error ? error / (SNRcomp * signal) : error / signal; + ret = maxf(ret, err); + + return ret; +} + + +// Linear quantizer for a subband +void +QuantizeSubband ( mpc_int16_t* qu_output, const float* input, const int res, float* errors, const int maxNsOrder ) +{ + int n, quant; + int offset = D [res]; + float mult = A [res] * NoiseInjectionCompensation1D [res]; + float invmult = C [res]; + float signal; + + for ( n = 0; n < 36 - maxNsOrder; n++) { + quant = (unsigned int)(mpc_lrintf(input[n] * mult) + offset); + + // limitation to 0...2D + if ((unsigned int)quant > (unsigned int)offset * 2 ) { + quant = mini ( quant, offset * 2 ); + quant = maxi ( quant, 0 ); + } + qu_output[n] = quant; + } + + for ( ; n < 36; n++) { + signal = input[n] * mult; + quant = (unsigned int)(mpc_lrintf(signal) + offset); + + // calculate the current error and save it for error refeeding + errors [n + 6] = invmult * (quant - offset) - signal * NoiseInjectionCompensation1D [res]; + + // limitation to 0...2D + if ((unsigned int)quant > (unsigned int)offset * 2 ) { + quant = mini ( quant, offset * 2 ); + quant = maxi ( quant, 0 ); + } + qu_output[n] = quant; + } +} + + +// NoiseShaper for a subband +void +QuantizeSubbandWithNoiseShaping ( mpc_int16_t* qu_output, const float* input, const int res, float* errors, const float* FIR ) +{ + float signal; + float mult = A [res]; + float invmult = C [res]; + int offset = D [res]; + int n, quant; + + memset(errors, 0, 6 * sizeof *errors); // arghh, it produces pops on each frame boundary! + + for ( n = 0; n < 36; n++) { + signal = input[n] * NoiseInjectionCompensation1D [res] - (FIR[5]*errors[n+0] + FIR[4]*errors[n+1] + FIR[3]*errors[n+2] + FIR[2]*errors[n+3] + FIR[1]*errors[n+4] + FIR[0]*errors[n+5]); + quant = mpc_lrintf(signal * mult); + + // calculate the current error and save it for error refeeding + errors [n + 6] = invmult * quant - signal * NoiseInjectionCompensation1D [res]; + + // limitation to +/-D + quant = minf ( quant, +offset ); + quant = maxf ( quant, -offset ); + + qu_output[n] = (unsigned int)(quant + offset); + } +} + +/* end of quant.c */ + +// pfk@schnecke.offl.uni-jena.de@EMAIL, Andree.Buschmann@web.de@EMAIL, BuschmannA@becker.de@EMAIL, miyaguch@eskimo.com@EMAIL, r3mix@irc.openprojects.net@EMAIL, dibrom@users.sourceforge.net@EMAIL, m.p.bakker-10@student.utwente.nl@EMAIL, djmrob@essex.ac.uk@EMAIL, dim@psytel-research.co.yu@EMAIL, lerch@zplane.de@EMAIL, takehiro@users.sourceforge.net@EMAIL, aleidinger@users.sourceforge.net@EMAIL, Robert.Hegemann@gmx.de@EMAIL, bouvigne@mp3-tech.org@EMAIL, monty@xiph.org@EMAIL, Pumpkinz99@aol.com@EMAIL, spase@outerspase.net@EMAIL, mt@wildpuppy.com@EMAIL, juha.laaksonheimo@tut.fi@EMAIL, speek@myrealbox.com@EMAIL, w.speek@12move.nl@EMAIL, martin@spueler.de@EMAIL, nicolaus.berglmeir@t-online.de@EMAIL, thomas.a.juerges@ruhr-uni-bochum.de@EMAIL, HelH@mpex.net@EMAIL, garf@roadum.demon.co.uk@EMAIL, gcp@sjeng.org@EMAIL, mike@naivesoftware.com@EMAIL, case@mobiili.net@EMAIL, steve.lhomme@free.fr@EMAIL, walter@binity.com@EMAIL diff --git a/libmpcpsy/CMakeFiles/CMakeDirectoryInformation.cmake b/libmpcpsy/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f5f0d8d --- /dev/null +++ b/libmpcpsy/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/dewdude/musepack/musepack_src_r475") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/dewdude/musepack/musepack_src_r475") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/libmpcpsy/CMakeFiles/mpcpsy_static.dir/DependInfo.cmake b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/DependInfo.cmake new file mode 100644 index 0000000..6d5d3fb --- /dev/null +++ b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/DependInfo.cmake @@ -0,0 +1,30 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/dewdude/musepack/musepack_src_r475/common/fastmath.c" "libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o" "gcc" "libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcpsy/ans.c" "libmpcpsy/CMakeFiles/mpcpsy_static.dir/ans.c.o" "gcc" "libmpcpsy/CMakeFiles/mpcpsy_static.dir/ans.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcpsy/cvd.c" "libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o" "gcc" "libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcpsy/fft4g.c" "libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o" "gcc" "libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcpsy/fft_routines.c" "libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.o" "gcc" "libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcpsy/profile.c" "libmpcpsy/CMakeFiles/mpcpsy_static.dir/profile.c.o" "gcc" "libmpcpsy/CMakeFiles/mpcpsy_static.dir/profile.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcpsy/psy.c" "libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy.c.o" "gcc" "libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libmpcpsy/psy_tab.c" "libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.o" "gcc" "libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o new file mode 100644 index 0000000000000000000000000000000000000000..4b862d34e15d324805677f44db9e0b91876733d3 GIT binary patch literal 19872 zcmeHPU2IfE6rODtSh4Q3P)!Y*u5lrizztg<0`jxl7T9W0%a18itV`XssJq48ivlr1 zU4CMuhD2g~F~Ru6gNepRHBw8Vg%>m?K!^#bF*ZWbg%}eX>UZv)*^aln3B)&ZPIB+e zeDj?%=X^7FZ(n-%u5MdX;qwV?KCx0vj5I35<<^OQ)agcr6hRStCblv5<-qv(_@;RO ze45x0@BdKvg^1^`*2UkMLQwo|r;+thQIOS6KP9hUi|2;|g_xXswIFNeg=6`XzJlC5 z^ecI!TIHLk!1ad@ufe=1M5+f&fl#Jb&df;d5elQ>19#RpSqr# z$Y_zS=hSW1Gh5XYo?OpKPd&dF^?ZM4_4GeT%S5gr-I2EbkH;#7_^nCSw?OffCF}Ro z>>YLchJ@HBQZh3X&ky>gH7pMeAjA#Xe&U9#X&!4^`qR!!>STNorQq`V&!?T893S7? zb%YWr$hl`x#<$pNy-iM=lGcy%&`~&{U?=f{Z2t}$cM%(=HcxM2`z6ecAj&ti3;97D zrH%nmm0RZ-^qp0K4`Qzeu-7N#%+-JO{oRKJumY?AE5Hh{0;~WlzzVPetN<&(3a|pK04u->umY?AE5Hh{0;~Wl zzzVPetN<&(3a|pK04u->umY?AE5Hh{0;~WlzzVPetN<(U|5IR#Z2fwZ5X%p)>sj?) z{rSh-3XiOE+smpww@R#SZeA8@So`FrM?#UsR-+XOH7;me9En649V$K)Awsz5fAc{S z6~cFdF#Qb*pBmoshdJQ0jmeqJ#>*bobbV!=94nu3AY-O89_yEh1Vo+wHD3Ag%*Z*okckJCSJ=bf-~wZ;qPWt694%xvSVs3qn%P9bYnWjnbsE zh7Wx>_K<hft!3K7tXOOh31nUWF*gYTpCXj2qQkJrSUX@FmIf!3r~u(N8#Q$ z{RU2J>-g`NiF4fGoB4cY;B+)}oGS)C&A^?HVqi@9&;zFVW9XB4aX&q13ODn7SmA`x zv!&xKHuz?qD-7I>(^MwT;|AZ1v(>=OIH@vmb{l*%PQQVhx_xHg^pOr-R|5$HqlV6; z#ve6s;@_mh2z%PV&2>8r+|2)_GWZ??H{-lz;AWhU4BX^@V&G=I7Zpx1BraW-U)4c4 z{Vr(yeua~px$eR;{1$_6=F?{2W*oaroTCQcjC0Ju%{U?CM@D(75}mQIa=X*`(Lrlx z-L^;fvdLExmYv*X3+n~^MhRaK?_ZaEr z#RIEd#uA!@(X&nK==Yj_AI?#@k{=`2M!kT-)nlb;Vjg-F(@Vcy{|J03=D+q9~ZJnxNX}mB0R*M^Eeeb^8=1bYF9* zeM9-181=o}E@1S#?yY~H^7rPY^QKs2uj8VaUjI*(e+Q8a^ZL{KuGIO7wz^LGoY489 z_p0{Sc&W9?Gtf+TAwEzA({C#Idj09$?matz#IY8-3(?~?#k*HO`n#``e}~GyujuJ^ Hy#D_HES(@W literal 0 HcmV?d00001 diff --git a/libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o.d b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o.d new file mode 100644 index 0000000..d6a62c3 --- /dev/null +++ b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o.d @@ -0,0 +1,43 @@ +libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o: \ + /home/dewdude/musepack/musepack_src_r475/common/fastmath.c \ + /usr/include/stdc-predef.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcmath.h \ + /usr/include/math.h /usr/include/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/iscanonical.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h /usr/include/bits/stdint-intn.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/memory.h /usr/include/string.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h diff --git a/libmpcpsy/CMakeFiles/mpcpsy_static.dir/ans.c.o b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/ans.c.o new file mode 100644 index 0000000000000000000000000000000000000000..e38563bce6868ff6b09269161d72523462dae764 GIT binary patch literal 11552 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 CMakeFiles/mpcpsy_static.dir/ans.c.i + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/ans.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcpsy_static.dir/ans.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcpsy/ans.c -o CMakeFiles/mpcpsy_static.dir/ans.c.s + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o: libmpcpsy/CMakeFiles/mpcpsy_static.dir/flags.make +libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o: libmpcpsy/cvd.c +libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o: libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o -MF CMakeFiles/mpcpsy_static.dir/cvd.c.o.d -o CMakeFiles/mpcpsy_static.dir/cvd.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcpsy/cvd.c + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcpsy_static.dir/cvd.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcpsy/cvd.c > CMakeFiles/mpcpsy_static.dir/cvd.c.i + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcpsy_static.dir/cvd.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcpsy/cvd.c -o CMakeFiles/mpcpsy_static.dir/cvd.c.s + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o: libmpcpsy/CMakeFiles/mpcpsy_static.dir/flags.make +libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o: libmpcpsy/fft4g.c +libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o: libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o -MF CMakeFiles/mpcpsy_static.dir/fft4g.c.o.d -o CMakeFiles/mpcpsy_static.dir/fft4g.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcpsy/fft4g.c + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcpsy_static.dir/fft4g.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcpsy/fft4g.c > CMakeFiles/mpcpsy_static.dir/fft4g.c.i + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcpsy_static.dir/fft4g.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcpsy/fft4g.c -o CMakeFiles/mpcpsy_static.dir/fft4g.c.s + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.o: libmpcpsy/CMakeFiles/mpcpsy_static.dir/flags.make +libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.o: libmpcpsy/fft_routines.c +libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.o: libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building C object libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.o -MF CMakeFiles/mpcpsy_static.dir/fft_routines.c.o.d -o CMakeFiles/mpcpsy_static.dir/fft_routines.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcpsy/fft_routines.c + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcpsy_static.dir/fft_routines.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcpsy/fft_routines.c > CMakeFiles/mpcpsy_static.dir/fft_routines.c.i + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcpsy_static.dir/fft_routines.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcpsy/fft_routines.c -o CMakeFiles/mpcpsy_static.dir/fft_routines.c.s + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/profile.c.o: libmpcpsy/CMakeFiles/mpcpsy_static.dir/flags.make +libmpcpsy/CMakeFiles/mpcpsy_static.dir/profile.c.o: libmpcpsy/profile.c +libmpcpsy/CMakeFiles/mpcpsy_static.dir/profile.c.o: libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building C object libmpcpsy/CMakeFiles/mpcpsy_static.dir/profile.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcpsy/CMakeFiles/mpcpsy_static.dir/profile.c.o -MF CMakeFiles/mpcpsy_static.dir/profile.c.o.d -o CMakeFiles/mpcpsy_static.dir/profile.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcpsy/profile.c + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/profile.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcpsy_static.dir/profile.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcpsy/profile.c > CMakeFiles/mpcpsy_static.dir/profile.c.i + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/profile.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcpsy_static.dir/profile.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcpsy/profile.c -o CMakeFiles/mpcpsy_static.dir/profile.c.s + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy.c.o: libmpcpsy/CMakeFiles/mpcpsy_static.dir/flags.make +libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy.c.o: libmpcpsy/psy.c +libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy.c.o: libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building C object libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy.c.o -MF CMakeFiles/mpcpsy_static.dir/psy.c.o.d -o CMakeFiles/mpcpsy_static.dir/psy.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcpsy/psy.c + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcpsy_static.dir/psy.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcpsy/psy.c > CMakeFiles/mpcpsy_static.dir/psy.c.i + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcpsy_static.dir/psy.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcpsy/psy.c -o CMakeFiles/mpcpsy_static.dir/psy.c.s + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.o: libmpcpsy/CMakeFiles/mpcpsy_static.dir/flags.make +libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.o: libmpcpsy/psy_tab.c +libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.o: libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building C object libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.o -MF CMakeFiles/mpcpsy_static.dir/psy_tab.c.o.d -o CMakeFiles/mpcpsy_static.dir/psy_tab.c.o -c /home/dewdude/musepack/musepack_src_r475/libmpcpsy/psy_tab.c + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcpsy_static.dir/psy_tab.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libmpcpsy/psy_tab.c > CMakeFiles/mpcpsy_static.dir/psy_tab.c.i + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcpsy_static.dir/psy_tab.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libmpcpsy/psy_tab.c -o CMakeFiles/mpcpsy_static.dir/psy_tab.c.s + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o: libmpcpsy/CMakeFiles/mpcpsy_static.dir/flags.make +libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o: common/fastmath.c +libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o: libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building C object libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o -MF CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o.d -o CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o -c /home/dewdude/musepack/musepack_src_r475/common/fastmath.c + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/common/fastmath.c > CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.i + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/common/fastmath.c -o CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.s + +# Object files for target mpcpsy_static +mpcpsy_static_OBJECTS = \ +"CMakeFiles/mpcpsy_static.dir/ans.c.o" \ +"CMakeFiles/mpcpsy_static.dir/cvd.c.o" \ +"CMakeFiles/mpcpsy_static.dir/fft4g.c.o" \ +"CMakeFiles/mpcpsy_static.dir/fft_routines.c.o" \ +"CMakeFiles/mpcpsy_static.dir/profile.c.o" \ +"CMakeFiles/mpcpsy_static.dir/psy.c.o" \ +"CMakeFiles/mpcpsy_static.dir/psy_tab.c.o" \ +"CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o" + +# External object files for target mpcpsy_static +mpcpsy_static_EXTERNAL_OBJECTS = + +libmpcpsy/libmpcpsy_static.a: libmpcpsy/CMakeFiles/mpcpsy_static.dir/ans.c.o +libmpcpsy/libmpcpsy_static.a: libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o +libmpcpsy/libmpcpsy_static.a: libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o +libmpcpsy/libmpcpsy_static.a: libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.o +libmpcpsy/libmpcpsy_static.a: libmpcpsy/CMakeFiles/mpcpsy_static.dir/profile.c.o +libmpcpsy/libmpcpsy_static.a: libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy.c.o +libmpcpsy/libmpcpsy_static.a: libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.o +libmpcpsy/libmpcpsy_static.a: libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o +libmpcpsy/libmpcpsy_static.a: libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make +libmpcpsy/libmpcpsy_static.a: libmpcpsy/CMakeFiles/mpcpsy_static.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Linking C static library libmpcpsy_static.a" + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && $(CMAKE_COMMAND) -P CMakeFiles/mpcpsy_static.dir/cmake_clean_target.cmake + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/mpcpsy_static.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +libmpcpsy/CMakeFiles/mpcpsy_static.dir/build: libmpcpsy/libmpcpsy_static.a +.PHONY : libmpcpsy/CMakeFiles/mpcpsy_static.dir/build + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/clean: + cd /home/dewdude/musepack/musepack_src_r475/libmpcpsy && $(CMAKE_COMMAND) -P CMakeFiles/mpcpsy_static.dir/cmake_clean.cmake +.PHONY : libmpcpsy/CMakeFiles/mpcpsy_static.dir/clean + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/libmpcpsy /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/libmpcpsy /home/dewdude/musepack/musepack_src_r475/libmpcpsy/CMakeFiles/mpcpsy_static.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : libmpcpsy/CMakeFiles/mpcpsy_static.dir/depend + diff --git a/libmpcpsy/CMakeFiles/mpcpsy_static.dir/cmake_clean.cmake b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/cmake_clean.cmake new file mode 100644 index 0000000..095d08c --- /dev/null +++ b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/cmake_clean.cmake @@ -0,0 +1,25 @@ +file(REMOVE_RECURSE + "CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o" + "CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o.d" + "CMakeFiles/mpcpsy_static.dir/ans.c.o" + "CMakeFiles/mpcpsy_static.dir/ans.c.o.d" + "CMakeFiles/mpcpsy_static.dir/cvd.c.o" + "CMakeFiles/mpcpsy_static.dir/cvd.c.o.d" + "CMakeFiles/mpcpsy_static.dir/fft4g.c.o" + "CMakeFiles/mpcpsy_static.dir/fft4g.c.o.d" + "CMakeFiles/mpcpsy_static.dir/fft_routines.c.o" + "CMakeFiles/mpcpsy_static.dir/fft_routines.c.o.d" + "CMakeFiles/mpcpsy_static.dir/profile.c.o" + "CMakeFiles/mpcpsy_static.dir/profile.c.o.d" + "CMakeFiles/mpcpsy_static.dir/psy.c.o" + "CMakeFiles/mpcpsy_static.dir/psy.c.o.d" + "CMakeFiles/mpcpsy_static.dir/psy_tab.c.o" + "CMakeFiles/mpcpsy_static.dir/psy_tab.c.o.d" + "libmpcpsy_static.a" + "libmpcpsy_static.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/mpcpsy_static.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/libmpcpsy/CMakeFiles/mpcpsy_static.dir/cmake_clean_target.cmake b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..23faf6d --- /dev/null +++ b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libmpcpsy_static.a" +) diff --git a/libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.internal b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.internal new file mode 100644 index 0000000..be50d7f --- /dev/null +++ b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.internal @@ -0,0 +1,526 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o + /home/dewdude/musepack/musepack_src_r475/common/fastmath.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcmath.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-fast.h + /usr/include/bits/fp-logb.h + /usr/include/bits/iscanonical.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/long-double.h + /usr/include/bits/math-vector.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls-macros.h + /usr/include/bits/mathcalls-narrow.h + /usr/include/bits/mathcalls.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/math.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/ans.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/ans.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcmath.h + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-fast.h + /usr/include/bits/fp-logb.h + /usr/include/bits/iscanonical.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/long-double.h + /usr/include/bits/math-vector.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls-macros.h + /usr/include/bits/mathcalls-narrow.h + /usr/include/bits/mathcalls.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/math.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/cvd.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcmath.h + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-fast.h + /usr/include/bits/fp-logb.h + /usr/include/bits/iscanonical.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/long-double.h + /usr/include/bits/math-vector.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls-macros.h + /usr/include/bits/mathcalls-narrow.h + /usr/include/bits/mathcalls.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/math.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/fft4g.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcmath.h + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-fast.h + /usr/include/bits/fp-logb.h + /usr/include/bits/iscanonical.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/long-double.h + /usr/include/bits/math-vector.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls-macros.h + /usr/include/bits/mathcalls-narrow.h + /usr/include/bits/mathcalls.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/math.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/fft_routines.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcmath.h + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-fast.h + /usr/include/bits/fp-logb.h + /usr/include/bits/iscanonical.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/long-double.h + /usr/include/bits/math-vector.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls-macros.h + /usr/include/bits/mathcalls-narrow.h + /usr/include/bits/mathcalls.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/math.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/profile.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/profile.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h + /usr/include/stdc-predef.h + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/psy.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/datatypes.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcmath.h + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-fast.h + /usr/include/bits/fp-logb.h + /usr/include/bits/iscanonical.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/long-double.h + /usr/include/bits/math-vector.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls-macros.h + /usr/include/bits/mathcalls-narrow.h + /usr/include/bits/mathcalls.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/math.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.o + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/psy_tab.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcmath.h + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-fast.h + /usr/include/bits/fp-logb.h + /usr/include/bits/iscanonical.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/long-double.h + /usr/include/bits/math-vector.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls-macros.h + /usr/include/bits/mathcalls-narrow.h + /usr/include/bits/mathcalls.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/math.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + diff --git a/libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.make b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.make new file mode 100644 index 0000000..9401ae0 --- /dev/null +++ b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.make @@ -0,0 +1,698 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o: common/fastmath.c \ + include/mpc/mpc_types.h \ + include/mpc/mpcmath.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/iscanonical.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/mathcalls.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/math.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/ans.c.o: libmpcpsy/ans.c \ + include/mpc/mpc_types.h \ + include/mpc/mpcmath.h \ + libmpcpsy/libmpcpsy.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/iscanonical.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/mathcalls.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/math.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o: libmpcpsy/cvd.c \ + include/mpc/mpc_types.h \ + include/mpc/mpcmath.h \ + libmpcpsy/libmpcpsy.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/iscanonical.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/mathcalls.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/math.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o: libmpcpsy/fft4g.c \ + include/mpc/mpc_types.h \ + include/mpc/mpcmath.h \ + libmpcpsy/libmpcpsy.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/iscanonical.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/mathcalls.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/math.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.o: libmpcpsy/fft_routines.c \ + include/mpc/mpc_types.h \ + include/mpc/mpcmath.h \ + libmpcpsy/libmpcpsy.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/iscanonical.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/mathcalls.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/math.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/profile.c.o: libmpcpsy/profile.c \ + include/mpc/minimax.h \ + libmpcpsy/libmpcpsy.h \ + /usr/include/stdc-predef.h + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy.c.o: libmpcpsy/psy.c \ + include/mpc/datatypes.h \ + include/mpc/minimax.h \ + include/mpc/mpc_types.h \ + include/mpc/mpcmath.h \ + libmpcpsy/libmpcpsy.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/iscanonical.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/mathcalls.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/math.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.o: libmpcpsy/psy_tab.c \ + include/mpc/minimax.h \ + include/mpc/mpc_types.h \ + include/mpc/mpcmath.h \ + libmpcpsy/libmpcpsy.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/iscanonical.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/mathcalls.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/math.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + + +/usr/include/bits/types/struct_FILE.h: + +/usr/include/bits/types/__mbstate_t.h: + +/usr/include/bits/types/FILE.h: + +/usr/include/bits/stdio.h: + +libmpcpsy/psy_tab.c: + +/usr/include/bits/types/__fpos64_t.h: + +libmpcpsy/psy.c: + +libmpcpsy/profile.c: + +libmpcpsy/libmpcpsy.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/include/sys/select.h: + +/usr/include/sys/cdefs.h: + +/usr/include/strings.h: + +/usr/include/stdlib.h: + +include/mpc/datatypes.h: + +/usr/include/stdint.h: + +/usr/include/bits/stdint-least.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdint-intn.h: + +/usr/include/stdc-predef.h: + +/usr/include/bits/pthreadtypes-arch.h: + +/usr/include/features.h: + +/usr/include/bits/types/__fpos_t.h: + +libmpcpsy/fft_routines.c: + +/usr/include/bits/math-vector.h: + +/usr/include/stdio.h: + +/usr/include/bits/mathcalls-narrow.h: + +/usr/include/bits/types/timer_t.h: + +/usr/include/bits/types/cookie_io_functions_t.h: + +include/mpc/minimax.h: + +/usr/include/bits/stdint-uintn.h: + +/usr/include/endian.h: + +/usr/include/bits/long-double.h: + +/usr/include/bits/fp-logb.h: + +/usr/include/bits/mathcalls-macros.h: + +libmpcpsy/ans.c: + +/usr/include/bits/types/clock_t.h: + +/usr/include/bits/libc-header-start.h: + +/usr/include/bits/select.h: + +/usr/include/features-time64.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/endianness.h: + +/usr/include/bits/libm-simd-decl-stubs.h: + +/usr/include/bits/floatn-common.h: + +common/fastmath.c: + +/usr/include/bits/stdlib-bsearch.h: + +/usr/include/bits/types/__FILE.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/bits/types/sigset_t.h: + +include/mpc/mpc_types.h: + +/usr/include/memory.h: + +/usr/include/bits/types/__sigset_t.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/byteswap.h: + +/usr/include/string.h: + +/usr/include/bits/time64.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/floatn.h: + +/usr/include/bits/flt-eval-method.h: + +/usr/include/bits/types/__locale_t.h: + +/usr/include/bits/fp-fast.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/bits/struct_mutex.h: + +include/mpc/mpcmath.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/thread-shared-types.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/timesize.h: + +/usr/include/bits/types.h: + +/usr/include/bits/atomic_wide_counter.h: + +/usr/include/bits/types/clockid_t.h: + +/usr/include/bits/types/locale_t.h: + +/usr/include/bits/types/struct_timespec.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/types/struct_timeval.h: + +/usr/include/bits/mathcalls-helper-functions.h: + +/usr/include/bits/struct_rwlock.h: + +/usr/include/bits/types/time_t.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/uintn-identity.h: + +/usr/include/bits/wordsize.h: + +libmpcpsy/cvd.c: + +/usr/include/bits/wchar.h: + +libmpcpsy/fft4g.c: + +/usr/include/math.h: + +/usr/include/bits/iscanonical.h: + +/usr/include/gnu/stubs.h: diff --git a/libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.ts b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.ts new file mode 100644 index 0000000..a12b651 --- /dev/null +++ b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for mpcpsy_static. diff --git a/libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o new file mode 100644 index 0000000000000000000000000000000000000000..819bd9a46d7699b8a5eeddd8116ee42fd037b36c GIT binary patch literal 6384 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 X9j&MT=$ibQeuldKCpt70!c+g>%UxyR literal 0 HcmV?d00001 diff --git a/libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o.d b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o.d new file mode 100644 index 0000000..6b3316f --- /dev/null +++ b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o.d @@ -0,0 +1,44 @@ +libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o: \ + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/cvd.c \ + /usr/include/stdc-predef.h /usr/include/string.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/features-time64.h /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h /usr/include/bits/stdint-intn.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/memory.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcmath.h \ + /usr/include/math.h /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/iscanonical.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h diff --git a/libmpcpsy/CMakeFiles/mpcpsy_static.dir/depend.make b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/depend.make new file mode 100644 index 0000000..2e4205c --- /dev/null +++ b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for mpcpsy_static. +# This may be replaced when dependencies are built. diff --git a/libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o new file mode 100644 index 0000000000000000000000000000000000000000..6615582a9de7af76e3887f2356a58574b7df5177 GIT binary patch literal 16552 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 literal 0 HcmV?d00001 diff --git a/libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o.d b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o.d new file mode 100644 index 0000000..d0ff7ca --- /dev/null +++ b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o.d @@ -0,0 +1,44 @@ +libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o: \ + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/fft4g.c \ + /usr/include/stdc-predef.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcmath.h \ + /usr/include/math.h /usr/include/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/iscanonical.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h /usr/include/bits/stdint-intn.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/memory.h /usr/include/string.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h diff --git a/libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.o b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.o new file mode 100644 index 0000000000000000000000000000000000000000..3aa44beb6a9615290e94022621b26728dcae100a GIT binary patch literal 9672 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
    ClRmmX?z`?RXZ?nj!RhC7&0rx+Ewh+bW0 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 literal 0 HcmV?d00001 diff --git a/libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.o.d b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.o.d new file mode 100644 index 0000000..05d11b1 --- /dev/null +++ b/libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.o.d @@ -0,0 +1,45 @@ +libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.o: \ + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/psy_tab.c \ + /usr/include/stdc-predef.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcmath.h \ + /usr/include/math.h /usr/include/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/iscanonical.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h /usr/include/bits/stdint-intn.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/memory.h /usr/include/string.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h diff --git a/libmpcpsy/CMakeFiles/progress.marks b/libmpcpsy/CMakeFiles/progress.marks new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/libmpcpsy/CMakeFiles/progress.marks @@ -0,0 +1 @@ +9 diff --git a/libmpcpsy/CMakeLists.txt b/libmpcpsy/CMakeLists.txt new file mode 100755 index 0000000..5568fbb --- /dev/null +++ b/libmpcpsy/CMakeLists.txt @@ -0,0 +1,2 @@ +include_directories(${libmpc_SOURCE_DIR}/include) +add_library(mpcpsy_static STATIC ans.c cvd.c fft4g.c fft_routines.c profile.c psy.c psy_tab.c ${libmpc_SOURCE_DIR}/common/fastmath.c) diff --git a/libmpcpsy/Makefile b/libmpcpsy/Makefile new file mode 100644 index 0000000..63b414e --- /dev/null +++ b/libmpcpsy/Makefile @@ -0,0 +1,420 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# The main all target +all: cmake_check_build_system + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles /home/dewdude/musepack/musepack_src_r475/libmpcpsy//CMakeFiles/progress.marks + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libmpcpsy/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libmpcpsy/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libmpcpsy/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libmpcpsy/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +libmpcpsy/CMakeFiles/mpcpsy_static.dir/rule: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 libmpcpsy/CMakeFiles/mpcpsy_static.dir/rule +.PHONY : libmpcpsy/CMakeFiles/mpcpsy_static.dir/rule + +# Convenience name for target. +mpcpsy_static: libmpcpsy/CMakeFiles/mpcpsy_static.dir/rule +.PHONY : mpcpsy_static + +# fast build rule for target. +mpcpsy_static/fast: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/build +.PHONY : mpcpsy_static/fast + +__/common/fastmath.o: __/common/fastmath.c.o +.PHONY : __/common/fastmath.o + +# target to build an object file +__/common/fastmath.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.o +.PHONY : __/common/fastmath.c.o + +__/common/fastmath.i: __/common/fastmath.c.i +.PHONY : __/common/fastmath.i + +# target to preprocess a source file +__/common/fastmath.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.i +.PHONY : __/common/fastmath.c.i + +__/common/fastmath.s: __/common/fastmath.c.s +.PHONY : __/common/fastmath.s + +# target to generate assembly for a file +__/common/fastmath.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/__/common/fastmath.c.s +.PHONY : __/common/fastmath.c.s + +ans.o: ans.c.o +.PHONY : ans.o + +# target to build an object file +ans.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/ans.c.o +.PHONY : ans.c.o + +ans.i: ans.c.i +.PHONY : ans.i + +# target to preprocess a source file +ans.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/ans.c.i +.PHONY : ans.c.i + +ans.s: ans.c.s +.PHONY : ans.s + +# target to generate assembly for a file +ans.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/ans.c.s +.PHONY : ans.c.s + +cvd.o: cvd.c.o +.PHONY : cvd.o + +# target to build an object file +cvd.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.o +.PHONY : cvd.c.o + +cvd.i: cvd.c.i +.PHONY : cvd.i + +# target to preprocess a source file +cvd.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.i +.PHONY : cvd.c.i + +cvd.s: cvd.c.s +.PHONY : cvd.s + +# target to generate assembly for a file +cvd.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/cvd.c.s +.PHONY : cvd.c.s + +fft4g.o: fft4g.c.o +.PHONY : fft4g.o + +# target to build an object file +fft4g.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.o +.PHONY : fft4g.c.o + +fft4g.i: fft4g.c.i +.PHONY : fft4g.i + +# target to preprocess a source file +fft4g.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.i +.PHONY : fft4g.c.i + +fft4g.s: fft4g.c.s +.PHONY : fft4g.s + +# target to generate assembly for a file +fft4g.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft4g.c.s +.PHONY : fft4g.c.s + +fft_routines.o: fft_routines.c.o +.PHONY : fft_routines.o + +# target to build an object file +fft_routines.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.o +.PHONY : fft_routines.c.o + +fft_routines.i: fft_routines.c.i +.PHONY : fft_routines.i + +# target to preprocess a source file +fft_routines.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.i +.PHONY : fft_routines.c.i + +fft_routines.s: fft_routines.c.s +.PHONY : fft_routines.s + +# target to generate assembly for a file +fft_routines.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/fft_routines.c.s +.PHONY : fft_routines.c.s + +profile.o: profile.c.o +.PHONY : profile.o + +# target to build an object file +profile.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/profile.c.o +.PHONY : profile.c.o + +profile.i: profile.c.i +.PHONY : profile.i + +# target to preprocess a source file +profile.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/profile.c.i +.PHONY : profile.c.i + +profile.s: profile.c.s +.PHONY : profile.s + +# target to generate assembly for a file +profile.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/profile.c.s +.PHONY : profile.c.s + +psy.o: psy.c.o +.PHONY : psy.o + +# target to build an object file +psy.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy.c.o +.PHONY : psy.c.o + +psy.i: psy.c.i +.PHONY : psy.i + +# target to preprocess a source file +psy.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy.c.i +.PHONY : psy.c.i + +psy.s: psy.c.s +.PHONY : psy.s + +# target to generate assembly for a file +psy.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy.c.s +.PHONY : psy.c.s + +psy_tab.o: psy_tab.c.o +.PHONY : psy_tab.o + +# target to build an object file +psy_tab.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.o +.PHONY : psy_tab.c.o + +psy_tab.i: psy_tab.c.i +.PHONY : psy_tab.i + +# target to preprocess a source file +psy_tab.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.i +.PHONY : psy_tab.c.i + +psy_tab.s: psy_tab.c.s +.PHONY : psy_tab.s + +# target to generate assembly for a file +psy_tab.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f libmpcpsy/CMakeFiles/mpcpsy_static.dir/build.make libmpcpsy/CMakeFiles/mpcpsy_static.dir/psy_tab.c.s +.PHONY : psy_tab.c.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... mpcpsy_static" + @echo "... __/common/fastmath.o" + @echo "... __/common/fastmath.i" + @echo "... __/common/fastmath.s" + @echo "... ans.o" + @echo "... ans.i" + @echo "... ans.s" + @echo "... cvd.o" + @echo "... cvd.i" + @echo "... cvd.s" + @echo "... fft4g.o" + @echo "... fft4g.i" + @echo "... fft4g.s" + @echo "... fft_routines.o" + @echo "... fft_routines.i" + @echo "... fft_routines.s" + @echo "... profile.o" + @echo "... profile.i" + @echo "... profile.s" + @echo "... psy.o" + @echo "... psy.i" + @echo "... psy.s" + @echo "... psy_tab.o" + @echo "... psy_tab.i" + @echo "... psy_tab.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/libmpcpsy/Makefile.am b/libmpcpsy/Makefile.am new file mode 100755 index 0000000..6d6ccfe --- /dev/null +++ b/libmpcpsy/Makefile.am @@ -0,0 +1,12 @@ +EXTRA_DIST = CMakeLists.txt + +AM_CPPFLAGS = -I$(top_srcdir)/include + +if HAVE_VISIBILITY + AM_CFLAGS = -fvisibility=hidden +endif + +METASOURCES = AUTO +noinst_LIBRARIES = libmpcpsy.a +libmpcpsy_a_SOURCES = ans.c cvd.c fft4g.c fft_routines.c psy.c psy_tab.c \ + profile.c libmpcpsy.h diff --git a/libmpcpsy/ans.c b/libmpcpsy/ans.c new file mode 100755 index 0000000..03962cb --- /dev/null +++ b/libmpcpsy/ans.c @@ -0,0 +1,301 @@ +/* + * Musepack audio compression + * Copyright (c) 2005-2009, The Musepack Development Team + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * Depending on how transient it is, it can be further reduced (up to 0=No ANS). + * Estimate coefficient for feedback at Order=1 over Mask_fu - Mask_fo. + * 3 quantization routines: Order=0, Order=1, Order=2...6 + * Order doesn't specify the power of the noise shaping, but only the flexibility of the form. + * Don't reset utilization of the "remains" at the frame borders; + * "remains"-utilization as scalefactor-independent values, + * so that a utilization beyond Subframe/Frame Borders is even possible. + */ + +#include + +#include "libmpcpsy.h" +#include + + +static float InvFourier [MAX_NS_ORDER + 1] [16]; +static float Cos_Tab [16] [MAX_NS_ORDER + 1]; +static float Sin_Tab [16] [MAX_NS_ORDER + 1]; + +float ANSspec_L [MAX_ANS_LINES]; +float ANSspec_R [MAX_ANS_LINES]; // L/R-masking thresholds for ANS +float ANSspec_M [MAX_ANS_LINES]; +float ANSspec_S [MAX_ANS_LINES]; // M/S-masking thresholds for ANS + +void +Init_ANS ( void ) +{ + int n; + int k; + + // calculate Fourier tables + for ( k = 0; k <= MAX_NS_ORDER; k++ ) { + for ( n = 0; n < 16; n++ ) { + InvFourier [k] [n] = (float) cos ( +2*M_PI/64 * (2*n) * k ) / 16.; + Cos_Tab [n] [k] = (float) cos ( -2*M_PI/64 * (2*n+1) * (k+1) ); + Sin_Tab [n] [k] = (float) sin ( -2*M_PI/64 * (2*n+1) * (k+1) ); + } + } +} + + +// calculates optimal reflection coefficients and time response of a prediction filter in LPC analysis +static mpc_inline void +durbin_akf_to_kh1( float* k, // out: reflection coefficients + float* h, // out: time response + const float* akf ) // in : autocorrelation function (0..1 used) +{ + h[0] = k[0] = akf [1] / akf [0]; +} + +static mpc_inline void +durbin_akf_to_kh2( float* k, // out: reflection coefficients + float* h, // out: time response + const float* akf ) // in : autocorrelation function (0..2 used) +{ + float tk,e; + + tk = akf [1] / akf[0]; + e = akf[0] * (1. - tk*tk); + h[0] = k[0] = tk; + h[0] *= 1. - (h[1] = k[1] = tk = (akf[2] - h[0] * akf[1]) / e); +} + +static mpc_inline void +durbin_akf_to_kh3( float* k, // out: reflection coefficients + float* h, // out: time response + const float* akf ) // in : autocorrelation function (0..3 used) +{ + float a,b,tk,e; + + tk = akf[1] / akf[0]; + e = akf[0] * (1. - tk*tk); + h[0] = k[0] = tk; + + tk = (akf[2] - h[0] * akf[1]) / e; + e *= 1. - tk*tk; + h[0] *= 1. - (h[1] = k[1] = tk); + h[2] = k[2] = tk = (akf[3] - h[0] * akf[2] - h[1] * akf[1]) / e; + + h[0] = (a=h[0]) - (b=h[1])*tk; + h[1] = b - a*tk; +} + + +static mpc_inline void +durbin_akf_to_kh ( float* k, // out: reflection coefficients + float* h, // out: time response + float* akf, // in : autocorrelation function (0..n used) + const int n ) // in : number of parameters to calculate +{ + int i,j; + float s,a,b,tk,e; + float* p; + float* q; + + e = akf [0]; + for ( i = 0; i < n; i++ ) { + s = 0.f; + p = h; + q = akf+i; + j = i; + while ( j-- ) + s += *p++ * *q--; + + tk = (akf[i+1] - s) / e; + e *= 1. - tk*tk; + h[i] = k[i] = tk; + p = h; + q = h + i - 1; + + for ( ; p < q; p++, q-- ) { + a = *p; + b = *q; + *p = a - b*tk; + *q = b - a*tk; + } + if ( p == q ) + *p *= 1. - tk; + } +} + +static const unsigned char maxANSOrder [32] = { + 6, 5, 4, 3, 2, 2, 2, 2, + 2, 2, 2, 2, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static void +FindOptimalANS ( const int MaxBand, + const unsigned char* ms, + const float* spec0, + const float* spec1, + unsigned int* NS, + float* snr_comp, + float fir [] [MAX_NS_ORDER], + const float* smr0, + const float* smr1, + const int scf [] [3], + const int Transient [32] ) +{ + int Band; + int n; + int k; + int order; + float akf [MAX_NS_ORDER + 1]; + float h [MAX_NS_ORDER]; + float reflex [MAX_NS_ORDER]; + float spec [16]; + float invspec [16]; + float norm; + float ns_loss; + float min_spec; + float min_diff; + float re; + float im; + float ns_energy; + float gain; + float NS_Gain; + float actSMR; + int max; + const float* tmp; + + for ( Band = 0; Band <= MaxBand && maxANSOrder[Band]; Band++ ) { + + if ( scf[Band][0] != scf[Band][1] || scf[Band][1] != scf[Band][2] ) + continue; + + if ( Transient[Band] ) + continue; + + max = maxANSOrder [Band]; + + if ( ms[Band] ) { // setting pointer and SMR in relation to the M/S-flag + tmp = &spec1 [Band<<4]; // pointer to MS-data + actSMR = smr1 [Band]; // selecting SMR + } + else { + tmp = &spec0 [Band<<4]; // pointer to LR-data + actSMR = smr0 [Band]; // selecting SMR + } + + if ( actSMR >= 1. ) { + NS_Gain = 1.f; // reset gain + norm = 1.e-30f; + + // Selection of the masking threshold of the current subband, also considering frequency inversion in every 2nd subband + if ( Band & 1 ) + for ( n = 0, tmp += 15; n < 16; n++ ) + norm += spec[n] = *tmp--; + else + for ( n = 0; n < 16; n++ ) + norm += spec[n] = *tmp++; + + // Preprocessing: normalization of the the power of spec[] to 1, and search for minimum of masking threshold + norm = 16.f / norm; + min_spec = 1.e+12f; + for ( n = 0; n < 16; n++ ) { + invspec[n] = 1.f / (spec[n] *= norm); + if ( spec[n] < min_spec ) // normalize spec[] + min_spec = spec[n]; + } + + // Calculation of the auto-correlation function + tmp = InvFourier [0]; + for ( k = 0; k <= max; k++, tmp += 16 ) { + akf[k] = tmp[ 0]*invspec[ 0] + tmp[ 1]*invspec[ 1] + tmp[ 2]*invspec[ 2] + tmp[ 3]*invspec[ 3] + + tmp[ 4]*invspec[ 4] + tmp[ 5]*invspec[ 5] + tmp[ 6]*invspec[ 6] + tmp[ 7]*invspec[ 7] + + tmp[ 8]*invspec[ 8] + tmp[ 9]*invspec[ 9] + tmp[10]*invspec[10] + tmp[11]*invspec[11] + + tmp[12]*invspec[12] + tmp[13]*invspec[13] + tmp[14]*invspec[14] + tmp[15]*invspec[15]; + } + + // Searching for the noise-shaper with maximum gain + for ( order = 1; order <= max; order++ ) { + switch ( order ) { // calculating best FIR-Filter for the return + case 1: durbin_akf_to_kh1 (reflex, h, akf); break; + case 2: durbin_akf_to_kh2 (reflex, h, akf); break; + case 3: durbin_akf_to_kh3 (reflex, h, akf); break; + default: durbin_akf_to_kh (reflex, h, akf, order); break; + } + + ns_loss = 1.e-30f; // estimating the gain + min_diff = 1.e+12f; + for ( n = 0; n < 16; n++ ) { + re = 1.f; // calculating the obtained noise shaping + im = 0.f; + for ( k = 0; k < order; k++ ) { + re -= h[k] * Cos_Tab[n][k]; + im += h[k] * Sin_Tab[n][k]; + } + + ns_energy = re*re + im*im; // calculated spectral shaped noise + ns_loss += ns_energy; // noise energy increases with shaping + + if ( spec[n] < min_diff * ns_energy ) // Searching for minimum distance between the shaped noise and the masking threshold + min_diff = spec[n] / ns_energy; + } + + // Updating the Filter if new gain is bigger than old gain and if the extra noise power through shaping is smaller than the SMR of this band + gain = 16. * min_diff / (min_spec * ns_loss); + if ( gain > NS_Gain && ns_loss < actSMR ) { + NS [Band] = order; + NS_Gain = gain; + memcpy ( fir [Band], h, order * sizeof(*h) ); + } + } + + if ( NS_Gain > 1.f ) { // Activation of ANS if there is gain + snr_comp[Band] *= NS_Gain; + } + } + } + + return; +} + + +// perform ANS-analysis (calculation of FIR-filter and gain) +void +NS_Analyse ( PsyModel* m, + const int MaxBand, + const unsigned char* MSflag, + const SMRTyp smr, + const int* Transient ) +{ + + // for L or M, respectively + memset ( m->FIR_L, 0, sizeof m->FIR_L ); // reset FIR + memset ( m->NS_Order_L, 0, sizeof m->NS_Order_L ); // reset Flags + FindOptimalANS ( MaxBand, MSflag, ANSspec_L, ANSspec_M, m->NS_Order_L, m->SNR_comp_L, m->FIR_L, smr.L, smr.M, (const int (*)[3])m->SCF_Index_L, Transient ); + + // for R or S, respectively + memset ( m->FIR_R, 0, sizeof m->FIR_R ); // reset FIR + memset ( m->NS_Order_R, 0, sizeof m->NS_Order_R ); // reset Flags + FindOptimalANS ( MaxBand, MSflag, ANSspec_R, ANSspec_S, m->NS_Order_R, m->SNR_comp_R, m->FIR_R, smr.R, smr.S, (const int (*)[3])m->SCF_Index_R, Transient ); + + return; +} + +/* end of ans.c */ diff --git a/libmpcpsy/cmake_install.cmake b/libmpcpsy/cmake_install.cmake new file mode 100644 index 0000000..1e50787 --- /dev/null +++ b/libmpcpsy/cmake_install.cmake @@ -0,0 +1,50 @@ +# Install script for directory: /home/dewdude/musepack/musepack_src_r475/libmpcpsy + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/home/dewdude/musepack/musepack_src_r475/libmpcpsy/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/libmpcpsy/cvd.c b/libmpcpsy/cvd.c new file mode 100755 index 0000000..9377dab --- /dev/null +++ b/libmpcpsy/cvd.c @@ -0,0 +1,273 @@ +/* + * Musepack audio compression + * Copyright (c) 2005-2009, The Musepack Development Team + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include "mpc/mpc_types.h" +#include "mpc/mpcmath.h" +#include "libmpcpsy.h" + +void Cepstrum2048 ( float* cep, const int ); + +/* C O N S T A N T S */ +// from MatLab-Simulation (Fourier-transforms of the Cos-Rolloff) +#if 0 +static const float Puls [11] = { + -0.02724753942504f, -0.10670808991329f, -0.06198987803623f, 0.18006206051664f, + 0.49549552704050f, 0.64201253447071f, 0.49549552704050f, 0.18006206051664f, + -0.06198987803623f, -0.10670808991329f, -0.02724753942504f +}; +#endif + +static const float Puls [ 9] = { + -0.10670808991329f, -0.06198987803623f, 0.18006206051664f, 0.49549552704050f, + 0.64201253447071f, 0.49549552704050f, 0.18006206051664f, -0.06198987803623f, + -0.10670808991329f +}; + +/* +// Generating the Cos-Rolloff of the Cepstral-analysis, Cos-Rolloff from 5512,5 Hz to 11025 Hz +// for ( k = 0; k <= 1024; k++ ) { +// if (k < 256) CosWin [k-256] = 1; +// else if (k < 512) CosWin [k-256] = 0.5 + 0.5*cos (M_PI*(k-256)/256); +// else CosWin [k-256] = 0; +// } +*/ +static const float CosWin [256] = { + 1.0000000000000000f, 0.9999623298645020f, 0.9998494386672974f, 0.9996612071990967f, 0.9993977546691895f, 0.9990590810775757f, 0.9986452460289002f, 0.9981563091278076f, 0.9975923895835877f, 0.9969534873962402f, 0.9962397813796997f, 0.9954513311386108f, 0.9945882558822632f, 0.9936507344245911f, 0.9926388263702393f, 0.9915527701377869f, 0.9903926253318787f, 0.9891586899757385f, 0.9878510832786560f, 0.9864699840545654f, 0.9850156307220459f, 0.9834882616996765f, 0.9818880558013916f, 0.9802152514457703f, 0.9784701466560364f, 0.9766530394554138f, 0.9747641086578369f, 0.9728036522865295f, 0.9707720279693604f, 0.9686695337295532f, 0.9664964079856873f, 0.9642530679702759f, 0.9619397521018982f, 0.9595569372177124f, 0.9571048617362976f, 0.9545840024948120f, 0.9519946575164795f, 0.9493372440338135f, 0.9466121792793274f, 0.9438198208808899f, 0.9409606456756592f, 0.9380350708961487f, 0.9350435137748718f, 0.9319864511489868f, 0.9288643002510071f, 0.9256775975227356f, 0.9224267601966858f, 0.9191123247146606f, 0.9157348275184631f, 0.9122946262359619f, 0.9087924361228943f, 0.9052286148071289f, 0.9016037583351135f, 0.8979184627532959f, 0.8941732048988342f, 0.8903686404228210f, 0.8865052461624146f, 0.8825836181640625f, 0.8786044120788574f, 0.8745682239532471f, 0.8704755902290344f, 0.8663271069526672f, 0.8621235489845276f, 0.8578653931617737f, + 0.8535534143447876f, 0.8491881489753723f, 0.8447702527046204f, 0.8403005003929138f, 0.8357794880867004f, 0.8312078714370728f, 0.8265864253044128f, 0.8219157457351685f, 0.8171966671943665f, 0.8124297261238098f, 0.8076158165931702f, 0.8027555346488953f, 0.7978496551513672f, 0.7928989529609680f, 0.7879040837287903f, 0.7828658819198608f, 0.7777851223945618f, 0.7726625204086304f, 0.7674987912178040f, 0.7622948288917542f, 0.7570513486862183f, 0.7517691850662231f, 0.7464491128921509f, 0.7410919070243835f, 0.7356983423233032f, 0.7302693724632263f, 0.7248056530952454f, 0.7193081378936768f, 0.7137775421142578f, 0.7082147598266602f, 0.7026206851005554f, 0.6969960331916809f, 0.6913416981697083f, 0.6856585741043091f, 0.6799474954605103f, 0.6742093563079834f, 0.6684449315071106f, 0.6626551747322083f, 0.6568408608436585f, 0.6510030031204224f, 0.6451423168182373f, 0.6392598152160645f, 0.6333563923835754f, 0.6274328231811523f, 0.6214900612831116f, 0.6155290603637695f, 0.6095505952835083f, 0.6035556793212891f, 0.5975451469421387f, 0.5915199518203735f, 0.5854809284210205f, 0.5794290900230408f, 0.5733652114868164f, 0.5672903656959534f, 0.5612053275108337f, 0.5551111102104187f, 0.5490085482597351f, 0.5428986549377441f, 0.5367822647094727f, 0.5306603908538818f, 0.5245338082313538f, 0.5184035897254944f, 0.5122706294059753f, 0.5061357617378235f, + 0.5000000000000000f, 0.4938642382621765f, 0.4877294003963471f, 0.4815963804721832f, 0.4754661619663239f, 0.4693396389484406f, 0.4632177054882050f, 0.4571013450622559f, 0.4509914219379425f, 0.4448888897895813f, 0.4387946724891663f, 0.4327096343040466f, 0.4266347587108612f, 0.4205709397792816f, 0.4145190417766571f, 0.4084800481796265f, 0.4024548530578613f, 0.3964443206787109f, 0.3904493749141693f, 0.3844709396362305f, 0.3785099089145660f, 0.3725671768188477f, 0.3666436076164246f, 0.3607401549816132f, 0.3548576533794403f, 0.3489970266819000f, 0.3431591391563416f, 0.3373448550701141f, 0.3315550684928894f, 0.3257906734943390f, 0.3200524747371674f, 0.3143413960933685f, 0.3086582720279694f, 0.3030039668083191f, 0.2973793447017670f, 0.2917852103710175f, 0.2862224578857422f, 0.2806918919086456f, 0.2751943469047546f, 0.2697306573390961f, 0.2643016278743744f, 0.2589081227779388f, 0.2535509169101715f, 0.2482308149337769f, 0.2429486215114594f, 0.2377051562070847f, 0.2325011938810349f, 0.2273375093936920f, 0.2222148776054382f, 0.2171340882778168f, 0.2120959013700485f, 0.2071010768413544f, 0.2021503448486328f, 0.1972444802522659f, 0.1923841983079910f, 0.1875702589750290f, 0.1828033626079559f, 0.1780842244625092f, 0.1734135746955872f, 0.1687921136617661f, 0.1642205268144608f, 0.1596994996070862f, 0.1552297323942184f, 0.1508118808269501f, + 0.1464466154575348f, 0.1421345919370651f, 0.1378764659166336f, 0.1336728632450104f, 0.1295244395732880f, 0.1254318058490753f, 0.1213955804705620f, 0.1174163669347763f, 0.1134947761893272f, 0.1096313893795013f, 0.1058267876505852f, 0.1020815446972847f, 0.0983962342143059f, 0.0947714000940323f, 0.0912075936794281f, 0.0877053514122963f, 0.0842651948332787f, 0.0808876454830170f, 0.0775732174515724f, 0.0743224024772644f, 0.0711356922984123f, 0.0680135712027550f, 0.0649565011262894f, 0.0619649514555931f, 0.0590393692255020f, 0.0561801902949810f, 0.0533878505229950f, 0.0506627671420574f, 0.0480053536593914f, 0.0454160086810589f, 0.0428951233625412f, 0.0404430739581585f, 0.0380602329969406f, 0.0357469581067562f, 0.0335035994648933f, 0.0313304923474789f, 0.0292279683053494f, 0.0271963365375996f, 0.0252359099686146f, 0.0233469791710377f, 0.0215298328548670f, 0.0197847411036491f, 0.0181119665503502f, 0.0165117643773556f, 0.0149843730032444f, 0.0135300243273377f, 0.0121489353477955f, 0.0108413146808743f, 0.0096073597669601f, 0.0084472559392452f, 0.0073611787520349f, 0.0063492907211185f, 0.0054117450490594f, 0.0045486823655665f, 0.0037602325901389f, 0.0030465149320662f, 0.0024076367262751f, 0.0018436938989908f, 0.0013547716662288f, 0.0009409435442649f, 0.0006022718735039f, 0.0003388077020645f, 0.0001505906548118f, 0.0000376490788767f, +}; + + +/* F U N C T I O N S */ +// sets all the harmonics +static void +SetVoiceLines ( int* VoiceLine, const float base, int val ) +{ + int n; + int max = (int) (MAX_CVD_LINE * base / 1024.f); // harmonics up to Index MAX_CVD_LINE (spectral lines outside of that don't make sense) + int line; + float frq = 1024.f / base; // frq = 1024./i is the Index of the basic harmonic + + // go through all harmonics + for ( n = 1; n <= max; n++ ) { + line = (int) (n * frq); + VoiceLine [line] = VoiceLine [line+1] = val; + } +} + + +// Analyze the Cepstrum, search for the basic harmonic +static void +CEP_Analyse2048 ( PsyModel* m, + float* res1, + float* res2, + float* qual1, + float* qual2, + float* cep ) +{ + int n; + int line; + float cc [MAX_ANALYZED_IDX + 3]; // cross correlation + float ref; + float line_sum; + float sum; + float kkf; + float norm; + const float* x; + + // cross-correlation with pulse shape + // Calculate idx = MIN_ANALYZED_IDX-2 to MAX_ANALYZED_IDX+2, + // because they are read during search for maximum + // 50 -> 882 Hz, 700 -> 63 Hz base frequency + + *res1 = *res2 = 0. ; + memset ( cc, 0, sizeof cc ); + + for ( n = MIN_ANALYZED_IDX - 2; n <= MAX_ANALYZED_IDX + 2; n++ ) { + x = cep + n; + if ( x[0] > 0 ) { + norm = x[-4] * x[-4] + + x[-3] * x[-3] + + x[-2] * x[-2] + + x[-1] * x[-1] + + x[ 0] * x[ 0] + + x[ 1] * x[ 1] + + x[ 2] * x[ 2] + + x[ 3] * x[ 3] + + x[ 4] * x[ 4]; + kkf = x[-4] * Puls [0] + + x[-3] * Puls [1] + + x[-2] * Puls [2] + + x[-1] * Puls [3] + + x[ 0] * Puls [4] + + x[ 1] * Puls [5] + + x[ 2] * Puls [6] + + x[ 3] * Puls [7] + + x[ 4] * Puls [8]; + cc [n] = kkf * kkf / norm; // calculate the square of ncc to avoid sqrt() + } + } + + // search for the (relative) maximum + ref = 0.f; + line = MED_ANALYZED_IDX; + for ( n = MAX_ANALYZED_IDX; n >= MED_ANALYZED_IDX; n-- ) { + if ( + cc[n] * cep[n] * cep[n] > ref && + cc[n] > 0.40f && // e33 (02) 0.85 + cep[n] > 0.00f && // e33 (02) + cc[n ] >= cc[n+1] && + cc[n ] >= cc[n-1] && + cc[n+1] >= cc[n+2] && + cc[n-1] >= cc[n-2] + ) + { + ref = cc[n] * cep[n] * cep[n]; + line = n; + } + } + + // Calculating the center of the maximum (Interpolation) + x = cep + line; + sum = x[-3] + x[-2] + x[-1] + x[0] + x[1] + x[2] + x[3] + 1.e-30f; + line_sum = (x[1]-x[-1]) + 2 * (x[2]-x[-2]) + 3 * (x[3]-x[-3]) + sum * line + 1.e-30f; + + /* e33 (04) */ + ref = cc[line ] * cep[line ] * cep[line ] + + cc[line-1] * cep[line-1] * cep[line-1] + + cc[line+1] * cep[line+1] * cep[line+1]; + + //{ + // static unsigned int x = 0; + // + // printf ("%7.3f s ", (x/2)*1152./44100 ); + // x++; + //} + + //printf ("ref=%5.3f *res1=%7.3f f=%8.3f ", ref, line_sum / sum, 44100. / (line_sum / sum) ); + + *qual1 = ref; + if ( ref > 0.015f ) + *res1 = line_sum / sum; + + if ( m->CVD_used < 2 ) + return; + + // search for the (relative) maximum + ref = 0.f; + line = MIN_ANALYZED_IDX; + + for ( n = MED_ANALYZED_IDX + 1; n >= MIN_ANALYZED_IDX - 1; n-- ) { + cc [2*n ] += 0.5 * cc [n]; + cc [2*n+1] += 0.5 * (cc [n] + cc[n+1]); + cep [2*n ] += 0.5 * cep [n]; + cep [2*n+1] += 0.5 * (cep [n] + cep[n+1]); + } + + for ( n = 2*MED_ANALYZED_IDX; n >= 2*MIN_ANALYZED_IDX; n-- ) { + if ( + cc[n] * cep[n] * cep[n] > ref && + cc[n] > 0.85f && /* e33 (02) */ + cep[n] > 0.00f && /* e33 (02) */ + cc[n ] >= cc[n+1] && + cc[n ] >= cc[n-1] && + cc[n+1] >= cc[n+2] && + cc[n-1] >= cc[n-2] + ) + { + ref = cc[n] * cep[n] * cep[n]; + line = n; + } + } + + // Calculating the center of the maximum (Interpolation) + x = cep + line; + sum = x[-3] + x[-2] + x[-1] + x[0] + x[1] + x[2] + x[3] + 1.e-30f; + line_sum = (x[1]-x[-1]) + 2 * (x[2]-x[-2]) + 3 * (x[3]-x[-3]) + sum * line + 1.e-30f; + + /* e33 (04) */ + ref = cc[line ] * cep[line ] * cep[line ] + + cc[line-1] * cep[line-1] * cep[line-1] + + cc[line+1] * cep[line+1] * cep[line+1]; + + //printf ("ref=%5.3f *res2=%8.3f f=%8.3f\n", ref, 0.5 * line_sum / sum, 44100. / (0.5 * line_sum / sum) ); + + *qual2 = ref; + if ( ref >= 0.1f ) + *res2 = 0.5 * line_sum / sum; + + return; +} + +#ifndef CVD_FASTLOG +# define logfast(x) ((float) log (x)) +#else + +static mpc_inline float /* This is a rough estimation with an accuracy of |x|<0.0037 */ +logfast ( float x ) +{ + mpc_doubleint y; + y.d = x * x; + y.d *= y.d; + y.d *= y.d; + return (y.n[1] + (45127.5 - 1072693248.)) * ( M_LN2 / (1L<<23) ); +} + +#endif + +// ClearVoiceDetection for spectrum *spec +// input : Spectrum *spec +// output: Array *vocal contains information if the FFT-Line is a harmonic component +int +CVD2048 ( PsyModel* m, const float* spec, int* vocal ) +{ + static float cep [4096]; // cep[4096] -- array, which is also used for the 2048 FFT + const float* win = CosWin; // pointer to cos-roll-off + float res1; + float res2; + float qual1; + float qual2; + int n; + + // Calculating logarithmated, windowed spectrum cep[] + // cep[512...1024] = 0 -- cep[1025...2047] doesn't matter, because the first have to be filled by fft + for ( n = 0; n < 256; n++ ) + cep[n] = logfast (*spec++); + for ( n = 256; n < 512; n++ ) + cep[n] = logfast (*spec++) * *win++; + + memset ( cep+512, 0, 513*sizeof(*cep) ); + + // Calculating cepstrum of cep[] (the function Cepstrum() outputs the cepstrum in-place) + Cepstrum2048 ( cep, MAX_ANALYZED_IDX ); + + // search the harmonic + CEP_Analyse2048 ( m, &res1, &res2, &qual1, &qual2, cep ); +//#include "cvd.h" + if ( res1 > 0.f || res2 > 0.f ) { + if ( res1 > 0. ) SetVoiceLines ( vocal, res1, 100 ); + if ( res2 > 0. ) SetVoiceLines ( vocal, res2, 20 ); + return 1; + } + return 0; +} diff --git a/libmpcpsy/fft4g.c b/libmpcpsy/fft4g.c new file mode 100755 index 0000000..8efc2b6 --- /dev/null +++ b/libmpcpsy/fft4g.c @@ -0,0 +1,549 @@ +/* + * Musepack audio compression + * Copyright (c) 2005-2009, The Musepack Development Team + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "libmpcpsy.h" +#include + +/* F U N C T I O N S */ +static void makewt ( const int nw, int* ip, float* w ); +static void makect ( const int nc, int* ip, float* c ); + +# define cftmdl(n,l,a,w) cftmdl_i386 ( n, l, a, w ) + + +/* -------- child routines -------- */ +static mpc_inline void +bitrv2 ( const int n, int* ip, float* a ) +{ + int j, j1, k, k1, l, m, m2; + float xr, xi, yr, yi; + + ip[0] = 0; + l = n; + m = 1; + while ( (m << 3) < l ) { + l >>= 1; + for ( j = 0; j < m; j++ ) { + ip[m + j] = ip[j] + l; + } + m <<= 1; + } + m2 = 2 * m; + if ( (m << 3) == l ) { + for ( k = 0; k < m; k++ ) { + for ( j = 0; j < k; j++ ) { + j1 = 2 * j + ip[k]; + k1 = 2 * k + ip[j]; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m2; + k1 += 2 * m2; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m2; + k1 -= m2; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m2; + k1 += 2 * m2; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + } + j1 = 2 * k + m2 + ip[k]; + k1 = j1 + m2; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + } + } else { + for ( k = 1; k < m; k++ ) { + for ( j = 0; j < k; j++ ) { + j1 = 2 * j + ip[k]; + k1 = 2 * k + ip[j]; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m2; + k1 += m2; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + } + } + } + return; +} + + +static mpc_inline void +cft1st ( const int n, float* a, float* w ) +{ + int j, k1; + float wk1r, wk1i, wk2r, wk2i, wk3r, wk3i; + float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; + + x0r = a[ 0] + a[ 2]; + x0i = a[ 1] + a[ 3]; + x1r = a[ 0] - a[ 2]; + x1i = a[ 1] - a[ 3]; + x2r = a[ 4] + a[ 6]; + x2i = a[ 5] + a[ 7]; + x3r = a[ 4] - a[ 6]; + x3i = a[ 5] - a[ 7]; + a[ 0] = x0r + x2r; + a[ 1] = x0i + x2i; + a[ 4] = x0r - x2r; + a[ 5] = x0i - x2i; + a[ 2] = x1r - x3i; + a[ 3] = x1i + x3r; + a[ 6] = x1r + x3i; + a[ 7] = x1i - x3r; + wk1r = w[ 2]; + x0r = a[ 8] + a[10]; + x0i = a[ 9] + a[11]; + x1r = a[ 8] - a[10]; + x1i = a[ 9] - a[11]; + x2r = a[12] + a[14]; + x2i = a[13] + a[15]; + x3r = a[12] - a[14]; + x3i = a[13] - a[15]; + a[ 8] = x0r + x2r; + a[ 9] = x0i + x2i; + a[12] = x2i - x0i; + a[13] = x0r - x2r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[10] = wk1r * (x0r - x0i); + a[11] = wk1r * (x0r + x0i); + x0r = x3i + x1r; + x0i = x3r - x1i; + a[14] = wk1r * (x0i - x0r); + a[15] = wk1r * (x0i + x0r); + + k1 = 0; + j = 16; + do { + k1 += 2; + wk2r = w[k1]; + wk2i = w[k1 + 1]; + wk1r = w[2*k1]; + wk1i = w[2*k1 + 1]; + wk3r = wk1r - 2 * wk2i * wk1i; + wk3i = 2 * wk2i * wk1r - wk1i; + x0r = a[j] + a[j + 2]; + x0i = a[j + 1] + a[j + 3]; + x1r = a[j] - a[j + 2]; + x1i = a[j + 1] - a[j + 3]; + x2r = a[j + 4] + a[j + 6]; + x2i = a[j + 5] + a[j + 7]; + x3r = a[j + 4] - a[j + 6]; + x3i = a[j + 5] - a[j + 7]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + x0r -= x2r; + x0i -= x2i; + a[j + 4] = wk2r * x0r - wk2i * x0i; + a[j + 5] = wk2r * x0i + wk2i * x0r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j + 2] = wk1r * x0r - wk1i * x0i; + a[j + 3] = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j + 6] = wk3r * x0r - wk3i * x0i; + a[j + 7] = wk3r * x0i + wk3i * x0r; + wk1r = w[2*k1 + 2]; + wk1i = w[2*k1 + 3]; + wk3r = wk1r - 2 * wk2r * wk1i; + wk3i = 2 * wk2r * wk1r - wk1i; + x0r = a[j + 8] + a[j + 10]; + x0i = a[j + 9] + a[j + 11]; + x1r = a[j + 8] - a[j + 10]; + x1i = a[j + 9] - a[j + 11]; + x2r = a[j + 12] + a[j + 14]; + x2i = a[j + 13] + a[j + 15]; + x3r = a[j + 12] - a[j + 14]; + x3i = a[j + 13] - a[j + 15]; + a[j + 8] = x0r + x2r; + a[j + 9] = x0i + x2i; + x0r -= x2r; + x0i -= x2i; + a[j + 12] = -wk2i * x0r - wk2r * x0i; + a[j + 13] = -wk2i * x0i + wk2r * x0r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j + 10] = wk1r * x0r - wk1i * x0i; + a[j + 11] = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j + 14] = wk3r * x0r - wk3i * x0i; + a[j + 15] = wk3r * x0i + wk3i * x0r; + } while ( j += 16, j < n ); + return; +} + +static mpc_inline void +cftmdl_i386 ( const int n, const int l, float* a, float* w ) +{ + int j, j1, j2, j3, k, k1, m, m2; + float wk1r, wk1i, wk2r, wk2i, wk3r, wk3i; + float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; + + m = l << 2; + + for ( j = 0; j < l; j += 2 ) { + j1 = j + l; + j2 = j1 + l; + j3 = j2 + l; + x0r = a[j] + a[j1]; + x0i = a[j + 1] + a[j1 + 1]; + x1r = a[j] - a[j1]; + x1i = a[j + 1] - a[j1 + 1]; + x2r = a[j2] + a[j3]; + x2i = a[j2 + 1] + a[j3 + 1]; + x3r = a[j2] - a[j3]; + x3i = a[j2 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + a[j2] = x0r - x2r; + a[j2 + 1] = x0i - x2i; + a[j1] = x1r - x3i; + a[j1 + 1] = x1i + x3r; + a[j3] = x1r + x3i; + a[j3 + 1] = x1i - x3r; + } + + wk1r = w[2]; + for ( j = m; j < l + m; j += 2 ) { + j1 = j + l; + j2 = j1 + l; + j3 = j2 + l; + x0r = a[j] + a[j1]; + x0i = a[j + 1] + a[j1 + 1]; + x1r = a[j] - a[j1]; + x1i = a[j + 1] - a[j1 + 1]; + x2r = a[j2] + a[j3]; + x2i = a[j2 + 1] + a[j3 + 1]; + x3r = a[j2] - a[j3]; + x3i = a[j2 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + a[j2] = x2i - x0i; + a[j2 + 1] = x0r - x2r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j1] = wk1r * (x0r - x0i); + a[j1 + 1] = wk1r * (x0r + x0i); + x0r = x3i + x1r; + x0i = x3r - x1i; + a[j3] = wk1r * (x0i - x0r); + a[j3 + 1] = wk1r * (x0i + x0r); + } + + k1 = 0; + m2 = 2 * m; + for ( k = m2; k < n; k += m2 ) { + k1 += 2; + wk2r = w[k1]; + wk2i = w[k1 + 1]; + wk1r = w[2*k1]; + wk1i = w[2*k1 + 1]; + wk3r = wk1r - 2 * wk2i * wk1i; + wk3i = 2 * wk2i * wk1r - wk1i; + j = k; + do { + j1 = j + l; + j2 = j1 + l; + j3 = j2 + l; + x0r = a[j] + a[j1]; + x0i = a[j + 1] + a[j1 + 1]; + x1r = a[j] - a[j1]; + x1i = a[j + 1] - a[j1 + 1]; + x2r = a[j2] + a[j3]; + x2i = a[j2 + 1] + a[j3 + 1]; + x3r = a[j2] - a[j3]; + x3i = a[j2 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + x0r -= x2r; + x0i -= x2i; + a[j2] = wk2r * x0r - wk2i * x0i; + a[j2 + 1] = wk2r * x0i + wk2i * x0r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j1] = wk1r * x0r - wk1i * x0i; + a[j1 + 1] = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3] = wk3r * x0r - wk3i * x0i; + a[j3 + 1] = wk3r * x0i + wk3i * x0r; + } while ( j += 2, j < l + k ); + + wk1r = w[2*k1 + 2]; + wk1i = w[2*k1 + 3]; + wk3r = wk1r - 2 * wk2r * wk1i; + wk3i = 2 * wk2r * wk1r - wk1i; + j = k + m; + do { + j1 = j + l; + j2 = j1 + l; + j3 = j2 + l; + x0r = a[j] + a[j1]; + x0i = a[j + 1] + a[j1 + 1]; + x1r = a[j] - a[j1]; + x1i = a[j + 1] - a[j1 + 1]; + x2r = a[j2] + a[j3]; + x2i = a[j2 + 1] + a[j3 + 1]; + x3r = a[j2] - a[j3]; + x3i = a[j2 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + x0r -= x2r; + x0i -= x2i; + a[j2] = -wk2i * x0r - wk2r * x0i; + a[j2 + 1] = -wk2i * x0i + wk2r * x0r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j1] = wk1r * x0r - wk1i * x0i; + a[j1 + 1] = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3] = wk3r * x0r - wk3i * x0i; + a[j3 + 1] = wk3r * x0i + wk3i * x0r; + } while ( j += 2, j < l+k+m ); + } + return; +} + +static mpc_inline void +cftfsub ( const int n, float* a, float* w ) +{ + int j, j1, j2, j3, l; + float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; + + l = 2; + if ( n > 8 ) { + cft1st ( n, a, w ); + l = 8; + while ( (l << 2) < n ) { + cftmdl ( n, l, a, w ); + l <<= 2; + } + } + if ( (l << 2) == n ) { + j = 0; + do { + j1 = j + l; + j2 = j1 + l; + j3 = j2 + l; + x0r = a[j] + a[j1]; + x0i = a[j + 1] + a[j1 + 1]; + x1r = a[j] - a[j1]; + x1i = a[j + 1] - a[j1 + 1]; + x2r = a[j2] + a[j3]; + x2i = a[j2 + 1] + a[j3 + 1]; + x3r = a[j2] - a[j3]; + x3i = a[j2 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + a[j2] = x0r - x2r; + a[j2 + 1] = x0i - x2i; + a[j1] = x1r - x3i; + a[j1 + 1] = x1i + x3r; + a[j3] = x1r + x3i; + a[j3 + 1] = x1i - x3r; + } while ( j += 2, j < l ); + } else { + j = 0; + do { + j1 = j + l; + x0r = a[j] - a[j1]; + x0i = a[j + 1] - a[j1 + 1]; + a[j] += a[j1]; + a[j + 1] += a[j1 + 1]; + a[j1] = x0r; + a[j1 + 1] = x0i; + } while ( j += 2, j < l ); + } + return; +} + + +static mpc_inline void +rftfsub ( const int n, float* a, int nc, float* c ) +{ + int j, k, kk, ks, m; + float wkr, wki, xr, xi, yr, yi; + + m = n >> 1; + ks = 2 * nc / m; + kk = ks; + j = 2; + k = n; + do { + k -= 2; + nc -= ks; + wkr = 0.5f - c[nc]; + wki = c[kk]; + xr = a[j] - a[k]; + xi = a[j + 1] + a[k + 1]; + yr = wkr * xr - wki * xi; + yi = wkr * xi + wki * xr; + a[j] -= yr; + a[j + 1] -= yi; + a[k] += yr; + a[k + 1] -= yi; + kk += ks; + } while ( j += 2, j < m ); + return; +} + +// generates lookup-tables +void +Generate_FFT_Tables ( const int n, int* ip, float* w ) +{ + int nw; + int nc; + + nw = n >> 2; + makewt ( nw, ip, w ); + + nc = n >> 2; + makect ( nc, ip, w + nw ); +} + + +// patched to only-forward +void +rdft ( const int n, float* a, int* ip, float* w ) +{ + float xi; + + if ( n > 4) { + bitrv2 ( n, ip + 2, a ); + cftfsub ( n, a, w ); + rftfsub ( n, a, ip[1], w + ip[0] ); + } + else if ( n == 4 ) { + cftfsub ( n, a, w ); + } + xi = a[0] - a[1]; + a[0] += a[1]; + a[1] = xi; + return; +} + + +/* -------- initializing routines -------- */ +static void +makewt ( const int nw, int* ip, float* w ) +{ + int j; + int nwh; + float x; + float y; + double delta; + + ip[0] = nw; + ip[1] = 1; + if ( nw > 2 ) { + nwh = nw >> 1; + delta = (M_PI/4) / nwh; + w[0] = 1.; + w[1] = 0.; + w[nwh] = COS (delta * nwh); + w[nwh + 1] = w[nwh]; + if ( nwh > 2 ) { + for ( j = 2; j < nwh; j += 2 ) { + x = COS (delta * j); + y = SIN (delta * j); + w[j] = x; + w[j + 1] = y; + w[nw - j] = y; + w[nw - j + 1] = x; + } + bitrv2 ( nw, ip + 2, w ); + } + } + return; +} + + +static void +makect ( const int nc, int* ip, float* c ) +{ + int j; + int nch; + double delta; + + ip[1] = nc; + if ( nc > 1 ) { + nch = nc >> 1; + delta = (M_PI/4) / nch; + c[0] = COS (delta * nch); + c[nch] = 0.5f * c[0]; + for ( j = 1; j < nch; j++ ) { + c[j] = 0.5f * COS (delta * j); + c[nc - j] = 0.5f * SIN (delta * j); + } + } + return; +} + +/* end of fft4g.c */ diff --git a/libmpcpsy/fft_routines.c b/libmpcpsy/fft_routines.c new file mode 100755 index 0000000..eadc9ac --- /dev/null +++ b/libmpcpsy/fft_routines.c @@ -0,0 +1,282 @@ +/* + * Musepack audio compression + * Copyright (c) 2005-2009, The Musepack Development Team + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include "libmpcpsy.h" +#include + +#define CX0 -1. +#define CX1 0.5 + +#define SX1 -1. +#define SX2 (2./9/ 1) +#define SX3 (2./9/ 4) +#define SX4 (2./9/ 10) +#define SX5 (2./9/ 20) +#define SX6 (2./9/ 35) +#define SX7 (2./9/ 56) +#define SX8 (2./9/ 84) +#define SX9 (2./9/120) +#define SX10 (2./9/165) + + +#ifdef EXTRA_DECONV +# define DECONV \ + { \ + tmp = (CX0*aix[0] + CX1*aix[2]) * (1./(CX0*CX0+CX1*CX1)); \ + aix[ 0] -= CX0*tmp; \ + aix[ 2] -= CX1*tmp; \ + tmp = (SX1*aix[3] + SX2*aix[5] + SX3*aix[7] + SX4*aix[9] + SX5*aix[11]) * (1./(SX1*SX1+SX2*SX2+SX3*SX3+SX4*SX4+SX5*SX5)); \ + aix[ 3] -= SX1*tmp; \ + aix[ 5] -= SX2*tmp; \ + aix[ 7] -= SX3*tmp; \ + aix[ 9] -= SX4*tmp; \ + aix[11] -= SX5*tmp; \ + } +#elif 0 +# define DECONV \ + { \ + float A[20]; \ + int i; \ + memcpy (A, aix, 20*sizeof(aix)); \ + tmp = (CX0*aix[0] + CX1*aix[2]) * (1./(CX0*CX0+CX1*CX1)); \ + aix[ 0] -= CX0*tmp; \ + aix[ 2] -= CX1*tmp; \ + tmp = (SX1*aix[3] + SX2*aix[5] + SX3*aix[7] + SX4*aix[9] + SX5*aix[11]) * (1./(SX1*SX1+SX2*SX2+SX3*SX3+SX4*SX4+SX5*SX5)); \ + aix[ 3] -= SX1*tmp; \ + aix[ 5] -= SX2*tmp; \ + aix[ 7] -= SX3*tmp; \ + aix[ 9] -= SX4*tmp; \ + aix[11] -= SX5*tmp; \ + for ( i=0; i<10; i++) \ + printf ("%u%9.0f%7.0f%9.0f%7.0f\n",i, A[i+i], A[i+i+1], aix[i+i], aix[i+i+1] ); \ + } +#else +# define DECONV +#endif + + +/* V A R I A B L E S */ +static int ip [4096]; // bitinverse for maximum 2048 FFT +static float w [4096]; // butterfly-coefficient for maximum 2048 FFT +static float a [4096]; // holds real input for FFT +static float Hann_256 [ 256]; +static float Hann_1024 [1024]; +static float Hann_1600 [1600]; + +void Generate_FFT_Tables ( const int, int*, float* ); +void rdft ( const int, float*, int*, float* ); + + +////////////////////////////// +// +// BesselI0 -- Regular Modified Cylindrical Bessel Function (Bessel I). +// + +static double +Bessel_I_0 ( double x ) +{ + double denominator; + double numerator; + double z; + + if (x == 0.) + return 1.; + + z = x * x; + numerator = z* (z* (z* (z* (z* (z* (z* (z* (z* (z* (z* (z* (z* (z* + 0.210580722890567e-22 + 0.380715242345326e-19 ) + + 0.479440257548300e-16) + 0.435125971262668e-13 ) + + 0.300931127112960e-10) + 0.160224679395361e-07 ) + + 0.654858370096785e-05) + 0.202591084143397e-02 ) + + 0.463076284721000e+00) + 0.754337328948189e+02 ) + + 0.830792541809429e+04) + 0.571661130563785e+06 ) + + 0.216415572361227e+08) + 0.356644482244025e+09 ) + + 0.144048298227235e+10; + + denominator = z* (z* (z - 0.307646912682801e+04) + 0.347626332405882e+07) - 0.144048298227235e+10; + + return - numerator / denominator; +} + +static double +residual ( double x ) +{ + return sqrt ( 1. - x*x ); +} + +////////////////////////////// +// +// KBDWindow -- Kaiser Bessel Derived Window +// fills the input window array with size samples of the +// KBD window with the given tuning parameter alpha. +// + + +static void +KBDWindow ( float* window, unsigned int size, float alpha ) +{ + double sumvalue = 0.; + double scale; + int i; + + scale = 0.25 / sqrt (size); + for ( i = 0; i < (int)size/2; i++ ) + window [i] = sumvalue += Bessel_I_0 ( M_PI * alpha * residual (4.*i/size - 1.) ); + + // need to add one more value to the nomalization factor at size/2: + sumvalue += Bessel_I_0 ( M_PI * alpha * residual (4.*(size/2)/size-1.) ); + + // normalize the window and fill in the righthand side of the window: + for ( i = 0; i < (int)size/2; i++ ) + window [size-1-i] = window [i] = /*sqrt*/ ( window [i] / sumvalue ) * scale; +} + +static void +CosWindow ( float* window, unsigned int size ) +{ + double x; + double scale; + int i; + + scale = 0.25 / sqrt (size); + for ( i = 0; i < (int)size/2; i++ ) { + x = cos ( (i+0.5) * (M_PI / size) ); + window [size/2-1-i] = window [size/2+i] = scale * x * x; + } +} + +static void +Window ( float* window, unsigned int size, float alpha ) +{ + if ( alpha < 0. ) + CosWindow ( window, size ) ; + else + KBDWindow ( window, size, alpha ); +} + +/* F U N C T I O N S */ +// generates FFT lookup-tables +void +Init_FFT ( PsyModel* m ) +{ + int n; + double x; + double scale; + + // normalized hann functions + Window ( Hann_256 , 256, m->KBD1 ); + Window ( Hann_1024, 1024, m->KBD2 ); + scale = 0.25 / sqrt (2048.); + for ( n = 0; n < 800; n++ ) + x = cos ((n+0.5) * (M_PI/1600)), Hann_1600 [799-n] = Hann_1600 [800+n] = (float)(x * x * scale); + + Generate_FFT_Tables ( 2048, ip, w ); +} + +// input : Signal *x +// output: energy spectrum *erg +void +PowSpec256 ( const float* x, float* erg ) +{ + int i; + // windowing + for( i = 0; i < 256; ++i ) + a[i] = x[i] * Hann_256[i]; + + rdft(256, a, ip, w); // perform FFT + + // calculate power + for( i = 0; i < 128; ++i) + erg[i] = a[i*2] * a[i*2] + a[i*2+1] * a[i*2+1]; +} + +// input : Signal *x +// output: energy spectrum *erg +void +PowSpec1024 ( const float* x, float* erg ) +{ + int i; + // windowing + for( i = 0; i < 1024; ++i ) + a[i] = x[i] * Hann_1024[i]; + + rdft(1024, a, ip, w); // perform FFT + + // calculate power + for( i = 0; i < 512; ++i) + erg[i] = a[i*2] * a[i*2] + a[i*2+1] * a[i*2+1]; +} + +// input : Signal *x +// output: energy spectrum *erg +void +PowSpec2048 ( const float* x, float* erg ) +{ + int i; + // windowing (only 1600 samples available -> centered in 2048!) + memset(a, 0, 224 * sizeof *a); + for( i = 0; i < 1600; ++i ) + a[i+224] = x[i] * Hann_1600[i]; + memset(a + 1824, 0, 224 * sizeof *a); + + rdft(2048, a, ip, w); // perform FFT + + // calculate power + for( i = 0; i < 1024; ++i) + erg[i] = a[i*2] * a[i*2] + a[i*2+1] * a[i*2+1]; +} + +// input : Signal *x +// output: energy spectrum *erg and phase spectrum *phs +void +PolarSpec1024 ( const float* x, float* erg, float* phs ) +{ + int i; + for( i = 0; i < 1024; i++ ) + a[i] = x[i] * Hann_1024[i]; + + rdft( 1024, a, ip, w); // perform FFT + + // calculate power and phase + for( i = 0; i < 512; ++i ) + { + erg[i] = a[i*2] * a[i*2] + a[i*2+1] * a[i*2+1]; + phs[i] = ATAN2F( a[i*2+1], a[i*2] ); + } +} + +// input : logarithmized energy spectrum *cep +// output: Cepstrum *cep (in-place) +void +Cepstrum2048 ( float* cep, const int MaxLine ) +{ + int i, j; + // generate real, even spectrum (symmetric around 1024, cep[2048-i] = cep[i]) + for( i = 0, j = 1024; i < 1024; ++i, --j ) + cep[1024 + j] = cep[i]; + + rdft(2048, cep, ip, w); + + // only real part as outcome (all even indexes of cep[]) + for( i = 0; i < MaxLine + 1; ++i ) + cep[i] = cep[i*2] * (float) (0.9888 / 2048); +} diff --git a/libmpcpsy/libmpcpsy.h b/libmpcpsy/libmpcpsy.h new file mode 100755 index 0000000..bc24c98 --- /dev/null +++ b/libmpcpsy/libmpcpsy.h @@ -0,0 +1,93 @@ +/* + * Musepack audio compression + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +// psy_tab.h +#define PART_LONG 57 // number of partitions for long +#define PART_SHORT (PART_LONG / 3) // number of partitions for short +#define MAX_SPL 20 // maximum assumed Sound Pressure Level + +// psy.c +#define SHORTFFT_OFFSET 168 // fft-offset for short FFT's +#define PREFAC_LONG 10 // preecho-factor for long partitions + + +#define MAX_CVD_LINE 300 // maximum FFT-Index for CVD +#define CVD_UNPRED 0.040f // unpredictability (cw) for CVD-detected bins, e33 (04) +#define MIN_ANALYZED_IDX 12 // maximum base-frequency = 44100/MIN_ANALYZED_IDX ^^^^^^ +#define MED_ANALYZED_IDX 50 // maximum base-frequency = 44100/MED_ANALYZED_IDX ^^^^^^ +#define MAX_ANALYZED_IDX 900 // minimum base-frequency = 44100/MAX_ANALYZED_IDX (816 for Amnesia) + + +#define MAX_NS_ORDER 6 // maximum order of the Adaptive Noise Shaping Filter (IIR) +#define MAX_ANS_BANDS 16 +#define MAX_ANS_LINES (32 * MAX_ANS_BANDS) // maximum number of noiseshaped FFT-lines +///////// 16 * MAX_ANS_BANDS not sufficient? ////////////////// +#define MS2SPAT1 0.5f +#define MS2SPAT2 0.25f +#define MS2SPAT3 0.125f +#define MS2SPAT4 0.0625f + +typedef struct { + float L [32]; + float R [32]; + float M [32]; + float S [32]; +} SMRTyp; + +typedef struct { + int Max_Band; // maximum bandwidth + float SampleFreq; + int MainQual; // main profile quality + float FullQual; // full profile quality + + // profile params + float ShortThr; // Factor to calculate the masking threshold with transients + int MinValChoice; + unsigned int EarModelFlag; + float Ltq_offset; // Offset for threshold in quiet + float TMN; // Offset for purely sinusoid components + float NMT; // Offset for purely noisy components + float minSMR; // minimum SMR for all subbands + float Ltq_max; // maximum level for threshold in quiet + float BandWidth; + unsigned char tmpMask_used; // global flag for temporal masking + unsigned char CVD_used; // global flag for ClearVoiceDetection + float varLtq; // variable threshold in quiet + unsigned char MS_Channelmode; + int CombPenalities; + unsigned int NS_Order; // Maximum order for ANS + float PNS; + float TransDetect; // minimum slewrate for transient detection + + // ans.h + unsigned int NS_Order_L [32]; + unsigned int NS_Order_R [32]; // frame-wise order of the Noiseshaping (0: off, 1...5: on) + float FIR_L [32] [MAX_NS_ORDER]; + float FIR_R [32] [MAX_NS_ORDER]; // contains FIR-Filter for NoiseShaping + float SNR_comp_L [32]; + float SNR_comp_R [32]; // SNR-compensation after SCF-combination and ANS-gain + + float KBD1; // = 2. + float KBD2; // = -1. + + // FIXME : remove this : + int * SCF_Index_L; + int * SCF_Index_R; // Scalefactor-index for Bitstream + +} PsyModel; + diff --git a/libmpcpsy/libmpcpsy_static.a b/libmpcpsy/libmpcpsy_static.a new file mode 100644 index 0000000000000000000000000000000000000000..494ccc2c61b8dc4f5bb0aedfa801ec0650d7621b GIT binary patch literal 150778 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�seEqNyl^p9JquW2N&7 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 literal 0 HcmV?d00001 diff --git a/libmpcpsy/profile.c b/libmpcpsy/profile.c new file mode 100755 index 0000000..abc9b72 --- /dev/null +++ b/libmpcpsy/profile.c @@ -0,0 +1,142 @@ +/* + * Musepack audio compression + * Copyright (c) 2005-2009, The Musepack Development Team + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "libmpcpsy.h" +#include + + +typedef struct { + float ShortThr; + unsigned char MinValChoice; + unsigned int EarModelFlag; + signed char Ltq_offset; + float TMN; + float NMT; + signed char minSMR; + signed char Ltq_max; + unsigned short BandWidth; + unsigned char tmpMask_used; + unsigned char CVD_used; + float varLtq; + unsigned char MS_Channelmode; + unsigned char CombPenalities; + unsigned char NS_Order; + float PNS; + float TransDetect; +} Profile_Setting_t; + +#define PROFILE_PRE2_TELEPHONE 5 // --quality 0 +// #define PROFILE_PRE_TELEPHONE 6 // --quality 1 +// #define PROFILE_TELEPHONE 7 // --quality 2 +// #define PROFILE_THUMB 8 // --quality 3 +// #define PROFILE_RADIO 9 // --quality 4 +// #define PROFILE_STANDARD 10 // --quality 5 +// #define PROFILE_XTREME 11 // --quality 6 +// #define PROFILE_INSANE 12 // --quality 7 +// #define PROFILE_BRAINDEAD 13 // --quality 8 +// #define PROFILE_POST_BRAINDEAD 14 // --quality 9 +#define PROFILE_POST2_BRAINDEAD 15 // --quality 10 + + +static const Profile_Setting_t Profiles [16] = { + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + /* Short MinVal EarModel Ltq_ min Ltq_ Band- tmpMask CVD_ varLtq MS Comb NS_ Trans */ + /* Thr Choice Flag offset TMN NMT SMR max Width _used used channel Penal used PNS Det */ + { 1.e9f, 1, 300, 30, 3.0, -1.0, 0, 106, 4820, 1, 1, 1., 3, 24, 6, 1.09f, 200 }, // 0: pre-Telephone + { 1.e9f, 1, 300, 24, 6.0, 0.5, 0, 100, 7570, 1, 1, 1., 3, 20, 6, 0.77f, 180 }, // 1: pre-Telephone + { 1.e9f, 1, 400, 18, 9.0, 2.0, 0, 94, 10300, 1, 1, 1., 4, 18, 6, 0.55f, 160 }, // 2: Telephone + { 50.0f, 2, 430, 12, 12.0, 3.5, 0, 88, 13090, 1, 1, 1., 5, 15, 6, 0.39f, 140 }, // 3: Thumb + { 15.0f, 2, 440, 6, 15.0, 5.0, 0, 82, 15800, 1, 1, 1., 6, 10, 6, 0.27f, 120 }, // 4: Radio + { 5.0f, 2, 550, 0, 18.0, 6.5, 1, 76, 19980, 1, 2, 1., 11, 9, 6, 0.00f, 100 }, // 5: Standard + { 4.0f, 2, 560, -6, 21.0, 8.0, 2, 70, 22000, 1, 2, 1., 12, 7, 6, 0.00f, 80 }, // 6: Xtreme + { 3.0f, 2, 570, -12, 24.0, 9.5, 3, 64, 24000, 1, 2, 2., 13, 5, 6, 0.00f, 60 }, // 7: Insane + { 2.8f, 2, 580, -18, 27.0, 11.0, 4, 58, 26000, 1, 2, 4., 13, 4, 6, 0.00f, 40 }, // 8: BrainDead + { 2.6f, 2, 590, -24, 30.0, 12.5, 5, 52, 28000, 1, 2, 8., 13, 4, 6, 0.00f, 20 }, // 9: post-BrainDead + { 2.4f, 2, 599, -30, 33.0, 14.0, 6, 46, 30000, 1, 2, 16., 15, 2, 6, 0.00f, 10 }, //10: post-BrainDead +}; + + +int TestProfileParams ( PsyModel* m ) +{ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + static signed char TMNStereoAdj [] = { -6, -18, -15, -18, -12, -9, -6, 0,0,0, +1, +1, +1, +1, 0, +1 }; // Penalties for TMN + static signed char NMTStereoAdj [] = { -3, -18, -15, -15, -9, -6, -3, 0,0,0, 0, +1, +1, +1, 0, +1 }; // Penalties for NMT + int i; + + m->MainQual = PROFILE_PRE2_TELEPHONE; + + for ( i = PROFILE_PRE2_TELEPHONE; i <= PROFILE_POST2_BRAINDEAD; i++ ) { + if ( m->ShortThr > Profiles [i].ShortThr ) continue; + if ( m->MinValChoice < Profiles [i].MinValChoice ) continue; + if ( m->EarModelFlag < Profiles [i].EarModelFlag ) continue; + if ( m->Ltq_offset > Profiles [i].Ltq_offset ) continue; + if ( m->Ltq_max > Profiles [i].Ltq_max ) continue; // offset should normally be considered here + if ( m->TMN + TMNStereoAdj [m->MS_Channelmode] < + Profiles [i].TMN + TMNStereoAdj [Profiles [i].MS_Channelmode] ) + continue; + if ( m->NMT + NMTStereoAdj [m->MS_Channelmode] < + Profiles [i].NMT + NMTStereoAdj [Profiles [i].MS_Channelmode] ) + continue; + if ( m->minSMR < Profiles [i].minSMR ) continue; + if ( m->BandWidth < Profiles [i].BandWidth ) continue; + if ( m->tmpMask_used < Profiles [i].tmpMask_used ) continue; + if ( m->CVD_used < Profiles [i].CVD_used ) continue; + // if ( varLtq > Profiles [i].varLtq ) continue; + // if ( NS_Order < Profiles [i].NS_Order ) continue; + if ( m->PNS > Profiles [i].PNS ) continue; + m->MainQual = i; + } + return m->MainQual; +} + +void SetQualityParams (PsyModel * m, float qual ) +{ + int i; + float mix; + + qual = clip(qual, 0., 10.); + + i = (int) qual + PROFILE_PRE2_TELEPHONE; + mix = qual - (int) qual; + + m->MainQual = i; + m->FullQual = qual + PROFILE_PRE2_TELEPHONE; + m->ShortThr = Profiles [i].ShortThr * (1-mix) + Profiles [i+1].ShortThr * mix; + m->MinValChoice = Profiles [i].MinValChoice ; + m->EarModelFlag = Profiles [i].EarModelFlag ; + m->Ltq_offset = Profiles [i].Ltq_offset * (1-mix) + Profiles [i+1].Ltq_offset * mix; + m->varLtq = Profiles [i].varLtq * (1-mix) + Profiles [i+1].varLtq * mix; + m->Ltq_max = Profiles [i].Ltq_max * (1-mix) + Profiles [i+1].Ltq_max * mix; + m->TMN = Profiles [i].TMN * (1-mix) + Profiles [i+1].TMN * mix; + m->NMT = Profiles [i].NMT * (1-mix) + Profiles [i+1].NMT * mix; + m->minSMR = Profiles [i].minSMR ; + m->BandWidth = Profiles [i].BandWidth * (1-mix) + Profiles [i+1].BandWidth * mix; + m->tmpMask_used = Profiles [i].tmpMask_used ; + m->CVD_used = Profiles [i].CVD_used ; + m->MS_Channelmode = Profiles [i].MS_Channelmode; + m->CombPenalities = Profiles [i].CombPenalities; + m->NS_Order = Profiles [i].NS_Order ; + m->PNS = Profiles [i].PNS * (1-mix) + Profiles [i+1].PNS * mix; + m->TransDetect = Profiles [i].TransDetect* (1-mix) + Profiles [i+1].TransDetect* mix; +} + diff --git a/libmpcpsy/psy.c b/libmpcpsy/psy.c new file mode 100755 index 0000000..8c5b9f7 --- /dev/null +++ b/libmpcpsy/psy.c @@ -0,0 +1,1259 @@ +/* + * Musepack audio compression + * Copyright (c) 2005-2009, The Musepack Development Team + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * Prediction + * Short-Block-detection with smooth inset + * revise CalcMSThreshold + * /dev/audio for Windows too + * revise PNS/IS + * CVS with smoother inset + * several files per call + * revise ANS with changing SCFs + + * No IS + * PNS estimation very rough, also IS should be used to reduce data rate in the side channel + * ANS problems at Frame boundaries when resolution changes + * ANS problems at Subframe boundaries when SCF changes + * CVS+ with smoother transition + +---------------------------------------- + +Optimize Tabelle[18] (use second table) +CVS+ + +- ANS is disregarded during the search for the best Res +- ANS messes up if res changes (each 36 samples) and/or SCF changes (each 12 samples) +- PNS not in difference signal + +- implement IS in decoder +- Experimental Quantizer with complete energy preservation + - 1D, calculated + - 2D, calculated + - 2D, manually modified, coeffs set to 1.f + + */ + +#include +#include + +#include "libmpcpsy.h" +#include +#include +#include + +// psy_tab.c +extern const float iw [PART_LONG]; // inverse partition-width for long +extern const float iw_short [PART_SHORT]; // inverse partition-width for short +extern const int wl [PART_LONG]; // w_low for long +extern const int wl_short [PART_SHORT]; // w_low for short +extern const int wh [PART_LONG]; // w_high for long +extern const int wh_short [PART_SHORT]; // w_high for short +extern float MinVal [PART_LONG]; // minimum quality that's adapted to the model, minval for long +extern float Loudness [PART_LONG]; // weighting factors for loudness calculation +extern float SPRD [PART_LONG] [PART_LONG]; // tabulated spreading function +extern float O_MAX; +extern float O_MIN; +extern float FAC1; +extern float FAC2; // constants for offset calculation +extern float partLtq [PART_LONG]; // threshold in quiet (partitions) +extern float invLtq [PART_LONG]; // inverse threshold in quiet (partitions, long) +extern float fftLtq [512]; // threshold in quiet (FFT) + +// ans.c +extern float ANSspec_L [MAX_ANS_LINES]; +extern float ANSspec_R [MAX_ANS_LINES]; // L/R-masking threshold for ANS +extern float ANSspec_M [MAX_ANS_LINES]; +extern float ANSspec_S [MAX_ANS_LINES]; // M/S-masking threshold for ANS + +void Init_Psychoakustiktabellen ( PsyModel* ); +int CVD2048 ( PsyModel*, const float*, int* ); + +// Antialiasing for calculation of the subband power +const float Butfly [7] = { 0.5f, 0.2776f, 0.1176f, 0.0361f, 0.0075f, 0.000948f, 0.0000598f }; + +// Antialiasing for calculation of the masking thresholds +const float InvButfly [7] = { 2.f, 3.6023f, 8.5034f, 27.701f, 133.33f, 1054.852f, 16722.408f }; + +/* V A R I A B L E S */ + +static float a [PART_LONG]; +static float b [PART_LONG]; +static float c [PART_LONG]; +static float d [PART_LONG]; // Integrations for tmpMask +static float Xsave_L [3 * 512]; +static float Xsave_R [3 * 512]; // FFT-Amplitudes L/R +static float Ysave_L [3 * 512]; +static float Ysave_R [3 * 512]; // FFT-Phases L/R +static float T_L [PART_LONG]; +static float T_R [PART_LONG]; // time-constants for tmpMask +static float pre_erg_L[2][PART_SHORT]; +static float pre_erg_R[2][PART_SHORT]; // Preecho-control short +static float PreThr_L [PART_LONG]; +static float PreThr_R [PART_LONG]; // for Pre-Echo-control L/R +static float tmp_Mask_L [PART_LONG]; +static float tmp_Mask_R [PART_LONG]; // for Post-Masking L/R +static int Vocal_L [MAX_CVD_LINE + 4]; +static int Vocal_R [MAX_CVD_LINE + 4]; // FFT-Line belongs to harmonic? + +/* F U N C T I O N S */ + +// fft_routines.c +void Init_FFT ( PsyModel* ); +void PowSpec256 ( const float*, float* ); +void PowSpec1024 ( const float*, float* ); +void PowSpec2048 ( const float*, float* ); +void PolarSpec1024 ( const float*, float*, float* ); +void Cepstrum2048 ( float* cep, const int ); + +void Init_ANS ( void ); + +// Resets Arrays +void Init_Psychoakustik ( PsyModel* m) +{ + int i; + + // initializing arrays with zero + memset ( Xsave_L, 0, sizeof Xsave_L ); + memset ( Xsave_R, 0, sizeof Xsave_R ); + memset ( Ysave_L, 0, sizeof Ysave_L ); + memset ( Ysave_R, 0, sizeof Ysave_R ); + memset ( a, 0, sizeof a ); + memset ( b, 0, sizeof b ); + memset ( c, 0, sizeof c ); + memset ( d, 0, sizeof d ); + memset ( T_L, 0, sizeof T_L ); + memset ( T_R, 0, sizeof T_R ); + memset ( Vocal_L, 0, sizeof Vocal_L ); + memset ( Vocal_R, 0, sizeof Vocal_R ); + + m->SampleFreq = 0.; + m->BandWidth = 0.; + m->KBD1 = 2.; + m->KBD2 = -1.; + m->Ltq_offset = 0; + m->Ltq_max = 0; + m->EarModelFlag = 0; + m->PNS = 0.; + m->CombPenalities = -1; + + // generate FFT lookup-tables with largest FFT-size of 1024 + Init_FFT (m); + + Init_ANS (); + + Init_Psychoakustiktabellen (m); + + // setting pre-echo variables to Ltq + for ( i = 0; i < PART_LONG; i++ ) { + pre_erg_L [0][i/3] = pre_erg_R [0][i/3] = + pre_erg_L [1][i/3] = pre_erg_R [1][i/3] = + tmp_Mask_L [i] = tmp_Mask_R [i] = + PreThr_L [i] = PreThr_R [i] = partLtq [i]; + } + + return; +} + + +// VBRmode 1: Adjustment of all SMRs via a factor (offset of SMRoffset dB) +// VBRmode 2: SMRs have a minimum of minSMR dB +static void +RaiseSMR_Signal ( const int MaxBand, float* signal, float tmp ) +{ + int Band; + float z = 0.; + + for ( Band = MaxBand; Band >= 0; Band-- ) { + if ( z < signal [Band] ) z = signal [Band]; + if ( z > tmp ) z = tmp; + if ( signal [Band] < z ) signal [Band] = z; + } +} + + +void RaiseSMR (PsyModel* m, const int MaxBand, SMRTyp* smr ) +{ + float tmp = POW10 ( 0.1 * m->minSMR ); + + RaiseSMR_Signal ( MaxBand, smr->L, tmp ); + RaiseSMR_Signal ( MaxBand, smr->R, tmp ); + RaiseSMR_Signal ( MaxBand, smr->M, tmp ); + RaiseSMR_Signal ( MaxBand, smr->S, 0.5 * tmp ); + + return; +} + +// input : *smr +// output: *smr, *ms, *x (only the entries for L/R contain relevant data) +// Check if either M/S- or L/R-coding has a lower perceptual entropy +// Choose the better mode, copy the appropriate data into the +// arrays that belong to L and R and set the ms-Flag accordingly. +void +MS_LR_Entscheidung ( const int MaxBand, unsigned char* ms, SMRTyp* smr, SubbandFloatTyp* x ) +{ + int Band; + int n; + float PE_MS; + float PE_LR; + float tmpM; + float tmpS; + float* l; + float* r; + + + for ( Band = 0; Band <= MaxBand; Band++ ) { // calculate perceptual entropy + PE_LR = PE_MS = 1.f; + if (smr->L[Band] > 1.) PE_LR *= smr->L[Band]; + if (smr->R[Band] > 1.) PE_LR *= smr->R[Band]; + if (smr->M[Band] > 1.) PE_MS *= smr->M[Band]; + if (smr->S[Band] > 1.) PE_MS *= smr->S[Band]; + + if ( PE_MS < PE_LR ) { + ms[Band] = 1; + + // calculate M/S-signal and copies it to L/R-array + l = x[Band].L; + r = x[Band].R; + for ( n = 0; n < 36; n++, l++, r++ ) { + tmpM = (*l + *r) * 0.5f; + tmpS = (*l - *r) * 0.5f; + *l = tmpM; + *r = tmpS; + } + + // copy M/S - SMR to L/R-fields + smr->L[Band] = smr->M[Band]; + smr->R[Band] = smr->S[Band]; + } + else { + ms[Band] = 0; + } + } + + return; +} + +// input : FFT-spectrums *spec0 und *spec1 +// output: energy in the individual subbands *erg0 and *erg1 +// With Butfly[], you can calculate the results of aliasing during calculation +// of subband energy from the FFT-spectrums. +static void +SubbandEnergy ( const int MaxBand, + float* erg0, + float* erg1, + const float* spec0, + const float* spec1 ) +{ + int n; + int k; + int alias; + float tmp0; + float tmp1; + + + // Is this here correct for FFT-based data or is this calculation rule only for MDCTs??? + + for ( k = 0; k <= MaxBand; k++ ) { // subband index + tmp0 = tmp1 = 0.f; + for ( n = 0; n < 16; n++, spec0++, spec1++ ) { // spectral index + tmp0 += *spec0; + tmp1 += *spec1; + + // Consideration of Aliasing between the subbands + if ( n < +sizeof(Butfly)/sizeof(*Butfly) && k != 0 ) { + alias = -1 - (n<<1); + tmp0 += Butfly [n] * (spec0[alias] - *spec0); + tmp1 += Butfly [n] * (spec1[alias] - *spec1); + } + else if ( n > 15-sizeof(Butfly)/sizeof(*Butfly) && k != 31 ) { + alias = 31 - (n<<1); + tmp0 += Butfly [15-n] * (spec0[alias] - *spec0); + tmp1 += Butfly [15-n] * (spec1[alias] - *spec1); + } + } + *erg0++ = tmp0; + *erg1++ = tmp1; + } + + return; +} + +// input : FFT-Spectrums *spec0 and *spec1 +// output: energy in the individual partitions *erg0 and *erg1 +static void +PartitionEnergy ( float* erg0, + float* erg1, + const float* spec0, + const float* spec1 ) +{ + unsigned int n; + unsigned int k; + float e0; + float e1; + + n = 0; + + for ( ; n < 23; n++ ) { // 11 or 23 + k = wh[n] - wl[n]; + e0 = *spec0++; + e1 = *spec1++; + while ( k-- ) { + e0 += *spec0++; + e1 += *spec1++; + } + *erg0++ = e0; + *erg1++ = e1; + } + + for ( ; n < 48; n++ ) { // 37 ... 46, 48, 57 + k = wh[n] - wl[n]; + e0 = sqrt (*spec0++); + e1 = sqrt (*spec1++); + while ( k-- ) { + e0 += sqrt (*spec0++); + e1 += sqrt (*spec1++); + } + *erg0++ = e0*e0 * iw[n]; + *erg1++ = e1*e1 * iw[n]; + } + + for ( ; n < PART_LONG; n++ ) { + k = wh[n] - wl[n]; + e0 = *spec0++; + e1 = *spec1++; + while ( k-- ) { + e0 += *spec0++; + e1 += *spec1++; + } + *erg0++ = e0; + *erg1++ = e1; + } +} + + +// input : FFT-Spectrums *spec0, *spec1 and unpredictability *cw0 and *cw1 +// output: weighted energy in the individual partitions *erg0, *erg1 +static void +WeightedPartitionEnergy ( float* erg0, + float* erg1, + const float* spec0, + const float* spec1, + const float* cw0, + const float* cw1 ) +{ + unsigned int n; + unsigned int k; + float e0; + float e1; + + n = 0; + + for ( ; n < 23; n++ ) { + e0 = *spec0++ * *cw0++; + e1 = *spec1++ * *cw1++; + k = wh[n] - wl[n]; + while ( k-- ) { + e0 += *spec0++ * *cw0++; + e1 += *spec1++ * *cw1++; + } + *erg0++ = e0; + *erg1++ = e1; + } + + for ( ; n < 48; n++ ) { + e0 = sqrt (*spec0++ * *cw0++); + e1 = sqrt (*spec1++ * *cw1++); + k = wh[n] - wl[n]; + while ( k-- ) { + e0 += sqrt (*spec0++ * *cw0++); + e1 += sqrt (*spec1++ * *cw1++); + } + *erg0++ = e0*e0 * iw[n]; + *erg1++ = e1*e1 * iw[n]; + } + + for ( ; n < PART_LONG; n++ ) { + e0 = *spec0++ * *cw0++; + e1 = *spec1++ * *cw1++; + k = wh[n] - wl[n]; + while ( k-- ) { + e0 += *spec0++ * *cw0++; + e1 += *spec1++ * *cw1++; + } + *erg0++ = e0; + *erg1++ = e1; + } +} + +// input : masking thresholds, first half of the arrays *shaped0 and *shaped1 +// output: masking thresholds, second half of the arrays *shaped0 and *shaped1 +// Considering the result of aliasing via InvButfly[] +// The input *thr0, *thr1 is gathered via address calculation from *shaped0, *shaped1 + +static void +AdaptThresholds ( const int MaxLine, float* shaped0, float* shaped1 ) +{ + int n; + int mod; + int alias; + float tmp; + const float* invb = InvButfly; + const float* thr0 = shaped0 - 512; + const float* thr1 = shaped1 - 512; + float tmp0; + float tmp1; + + + // should be able to optimize it with coasting. [ 9 ] + n * [ 7 + 7 + 2 ] + [ 7 ] + // Schleife Schl Schl Ausr Schleife + for ( n = 0; n < MaxLine; n++, thr0++, thr1++ ) { + mod = n & 15; // n%16 + tmp0 = *thr0; + tmp1 = *thr1; + + if ( mod < +sizeof(InvButfly)/sizeof(*InvButfly) && n > 12 ) { + alias = -1 - (mod<<1); + tmp = thr0[alias] * invb[mod]; + if ( tmp < tmp0 ) tmp0 = tmp; + tmp = thr1[alias] * invb[mod]; + if ( tmp < tmp1 ) tmp1 = tmp; + } + else if ( mod > 15-sizeof(InvButfly)/sizeof(*InvButfly) && n < 499 ) { + alias = 31 - (mod<<1); + tmp = thr0[alias] * invb[15-mod]; + if ( tmp < tmp0 ) tmp0 = tmp; + tmp = thr1[alias] * invb[15-mod]; + if ( tmp < tmp1 ) tmp1 = tmp; + } + *shaped0++ = tmp0; + *shaped1++ = tmp1; + } + + return; +} + + +// input : current spectrum in the form of power *spec and phase *phase, +// the last two earlier spectrums are at position +// 512 and 1024 of the corresponding Input-Arrays. +// Array *vocal, which can mark an FFT_Linie as harmonic +// output: current amplitude *amp and unpredictability *cw +static void +CalcUnpred (PsyModel* m, + const int MaxLine, + const float* spec, + const float* phase, + const int* vocal, + float* amp0, + float* phs0, + float* cw ) +{ + int n; + float amp; + float tmp; +#define amp1 ((amp0) + 512) // amp[ 512...1023] contains data of frame-1 +#define amp2 ((amp0) + 1024) // amp[1024...1535] contains data of frame-2 +#define phs1 ((phs0) + 512) // phs[ 512...1023] contains data of frame-1 +#define phs2 ((phs0) + 1024) // phs[1024...1535] contains data of frame-2 + + + for ( n = 0; n < MaxLine; n++ ) { + tmp = COSF ((phs0[n] = phase[n]) - 2*phs1[n] + phs2[n]); // copy phase to output-array, predict phase and calculate predictive error + amp0[n] = SQRTF (spec[n]); // calculate and set amplitude + amp = 2*amp1[n] - amp2[n]; // predict amplitude + + // calculate unpredictability + cw[n] = SQRTF (spec[n] + amp * (amp - 2*amp0[n] * tmp)) / (amp0[n] + FABS(amp)); + } + + // postprocessing of harmonic FFT-lines (*cw is set to CVD_UNPRED) + if ( m->CVD_used && vocal != NULL ) { + for ( n = 0; n < MAX_CVD_LINE; n++, cw++, vocal++ ) + if ( *vocal != 0 && *cw > CVD_UNPRED * 0.01 * *vocal ) + *cw = CVD_UNPRED * 0.01 * *vocal; + } + + return; +} +#undef amp1 +#undef amp2 +#undef phs1 +#undef phs2 + + +// input : Energy *erg, calibrated energy *werg +// output: spread energy *res, spread weighted energy *wres +// SPRD describes the spreading function as calculated in psy_tab.c +static void +SpreadingSignal ( const float* erg, const float* werg, float* res, + float* wres ) +{ + int n; + int k; + int start; + int stop; + const float* sprd; + float e; + float ew; + + + for (k=0; k +static float +AdaptLtq ( PsyModel* m, const float* erg0, const float* erg1 ) +{ + static float loud = 0.f; + float* weight = Loudness; + float sum = 0.f; + int n; + + // calculate loudness + for ( n = 0; n < PART_LONG; n++ ) + sum += (*erg0++ + *erg1++) * *weight++; + + // Utilization of the time constants (fast drop of Ltq T=5, slow rise of Ltq T=20) + //loud = (sum < loud) ? (4 * sum + loud)*0.2f : (19 * loud + sum)*0.05f; + loud = 0.98 * loud + 0.02 * (0.5 * sum); + + // calculate dynamic offset for threshold in quiet, 0...+20 dB, at 96 dB loudness, an offset of 20 dB is assumed + return 1.f + m->varLtq * loud * 5.023772e-08f; +} + +// input : simultaneous masking threshold *frqthr, +// previous masking threshold *tmpthr, +// Integrations *a (short-time) and *b (long-time) +// output: tracked Integrations *a and *b, time constant *tau +static void +CalcTemporalThreshold ( float* a, float* b, float* tau, float* frqthr, float* tmpthr ) +{ + int n; + float tmp; + + + for ( n = 0; n < PART_LONG; n++ ) { + // following calculations relative to threshold in quiet + frqthr[n] *= invLtq[n]; + tmpthr[n] *= invLtq[n]; + + // new post-masking 'tmp' via time constant tau, if old post-masking > Ltq (=1) + tmp = tmpthr[n] > 1.f ? POW ( tmpthr[n], tau[n] ) : 1.f; + + // calculate time constant for post-masking in next frame, + // if new time constant has to be calculated (new tmpMask < frqMask) + a[n] += 0.5f * (frqthr[n] - a[n]); // short time integrator + b[n] += 0.15f * (frqthr[n] - b[n]); // long time integrator + if (tmp < frqthr[n]) + tau[n] = a[n] <= b[n] ? 0.8f : 0.2f + b[n] / a[n] * 0.6f; + + // use post-masking of (Re-Normalization) + tmpthr[n] = maxf (frqthr[n], tmp) * partLtq[n]; + } + + return; +} + +// input : L/R-Masking thresholds in Partitions *thrL, *thrR +// L/R-Subband energies *ergL, *ergR +// M/S-Subband energies *ergM, *ergS +// output: M/S-Masking thresholds in Partitions *thrM, *thrS +static void +CalcMSThreshold ( PsyModel* m, + const float* const ergL, + const float* const ergR, + const float* const ergM, + const float* const ergS, + float* const thrL, + float* const thrR, + float* const thrM, + float* const thrS ) +{ + int n; + float norm; + float tmp; + + // All hardcoded numbers here should be pulled from somewhere, + // the "4.", the -2 dB, the 0.0625 and the 0.9375, as well as all bands where this is done + + for ( n = 0; n < PART_LONG; n++ ) { + // estimate M/S thresholds out of L/R thresholds and M/S and L/R energies + thrS[n] = thrM[n] = maxf (ergM[n], ergS[n]) / maxf (ergL[n], ergR[n]) * minf (thrL[n], thrR[n]); + + switch ( m->MS_Channelmode ) { // preserve 'near-mid' signal components + case 3: + if ( n > 0 ) { + double ratioMS = ergM[n] > ergS[n] ? ergS[n] / ergM[n] : ergM[n] / ergS[n]; + double ratioLR = ergL[n] > ergR[n] ? ergR[n] / ergL[n] : ergL[n] / ergR[n]; + if ( ratioMS < ratioLR ) { // MS + if ( ergM[n] > ergS[n] ) + thrS[n] = thrL[n] = thrR[n] = 1.e18f; + else + thrM[n] = thrL[n] = thrR[n] = 1.e18f; + } + else { // LR + if ( ergL[n] > ergR[n] ) + thrR[n] = thrM[n] = thrS[n] = 1.e18f; + else + thrL[n] = thrM[n] = thrS[n] = 1.e18f; + } + } + break; + case 4: + if ( n > 0 ) { + double ratioMS = ergM[n] > ergS[n] ? ergS[n] / ergM[n] : ergM[n] / ergS[n]; + double ratioLR = ergL[n] > ergR[n] ? ergR[n] / ergL[n] : ergL[n] / ergR[n]; + if ( ratioMS < ratioLR ) { // MS + if ( ergM[n] > ergS[n] ) + thrS[n] = 1.e18f; + else + thrM[n] = 1.e18f; + } + else { // LR + if ( ergL[n] > ergR[n] ) + thrR[n] = 1.e18f; + else + thrL[n] = 1.e18f; + } + } + break; + case 5: + thrS[n] *= 2.; // +3 dB + break; + case 6: + break; + default: + fprintf ( stderr, "Unknown stereo mode\n"); + case 10: + if ( 4. * ergL[n] > ergR[n] && ergL[n] < 4. * ergR[n] ) {// Energy between both channels differs by less than 6 dB + norm = 0.70794578f * iw[n]; // -1.5 dB * iwidth + if ( ergM[n] > ergS[n] ) { + tmp = ergS[n] * norm; + if ( thrS[n] > tmp ) + thrS[n] = MS2SPAT1 * thrS[n] + (1.f-MS2SPAT1) * tmp; // raises masking threshold by up to 3 dB + } else if ( ergS[n] > ergM[n] ) { + tmp = ergM[n] * norm; + if ( thrM[n] > tmp ) + thrM[n] = MS2SPAT1 * thrM[n] + (1.f-MS2SPAT1) * tmp; + } + } + break; + case 11: + if ( 4. * ergL[n] > ergR[n] && ergL[n] < 4. * ergR[n] ) {// Energy between both channels differs by less than 6 dB + norm = 0.63095734f * iw[n]; // -2.0 dB * iwidth + if ( ergM[n] > ergS[n] ) { + tmp = ergS[n] * norm; + if ( thrS[n] > tmp ) + thrS[n] = MS2SPAT2 * thrS[n] + (1.f-MS2SPAT2) * tmp; // raises masking threshold by up to 6 dB + } else if ( ergS[n] > ergM[n] ) { + tmp = ergM[n] * norm; + if ( thrM[n] > tmp ) + thrM[n] = MS2SPAT2 * thrM[n] + (1.f-MS2SPAT2) * tmp; + } + } + break; + case 12: + if ( 4. * ergL[n] > ergR[n] && ergL[n] < 4. * ergR[n] ) {// Energy between both channels differs by less than 6 dB + norm = 0.56234133f * iw[n]; // -2.5 dB * iwidth + if ( ergM[n] > ergS[n] ) { + tmp = ergS[n] * norm; + if ( thrS[n] > tmp ) + thrS[n] = MS2SPAT3 * thrS[n] + (1.f-MS2SPAT3) * tmp; // raises masking threshold by up to 9 dB + } else if ( ergS[n] > ergM[n] ) { + tmp = ergM[n] * norm; + if ( thrM[n] > tmp ) + thrM[n] = MS2SPAT3 * thrM[n] + (1.f-MS2SPAT3) * tmp; + } + } + break; + case 13: + if ( 4. * ergL[n] > ergR[n] && ergL[n] < 4. * ergR[n] ) {// Energy between both channels differs by less than 6 dB + norm = 0.50118723f * iw[n]; // -3.0 dB * iwidth + if ( ergM[n] > ergS[n] ) { + tmp = ergS[n] * norm; + if ( thrS[n] > tmp ) + thrS[n] = MS2SPAT4 * thrS[n] + (1.f-MS2SPAT4) * tmp; // raises masking threshold by up to 12 dB + } else if ( ergS[n] > ergM[n] ) { + tmp = ergM[n] * norm; + if ( thrM[n] > tmp ) + thrM[n] = MS2SPAT4 * thrM[n] + (1.f-MS2SPAT4) * tmp; + } + } + break; + case 15: + if ( 4. * ergL[n] > ergR[n] && ergL[n] < 4. * ergR[n] ) {// Energy between both channels differs by less than 6 dB + norm = 0.50118723f * iw[n]; // -3.0 dB * iwidth + if ( ergM[n] > ergS[n] ) { + tmp = ergS[n] * norm; + if ( thrS[n] > tmp ) + thrS[n] = tmp; // raises masking threshold by up to +oo dB an + } else if ( ergS[n] > ergM[n] ) { + tmp = ergM[n] * norm; + if ( thrM[n] > tmp ) + thrM[n] = tmp; + } + } + break; + case 22: + if ( 4. * ergL[n] > ergR[n] && ergL[n] < 4. * ergR[n] ) {// Energy between both channels differs by less than 6 dB + norm = 0.56234133f * iw[n]; // -2.5 dB * iwidth + if ( ergM[n] > ergS[n] ) { + tmp = ergS[n] * norm; + if ( thrS[n] > tmp ) + thrS[n] = maxf (tmp, ergM[n]*iw[n]*0.025); // +/- 1.414 + } else if ( ergS[n] > ergM[n] ) { + tmp = ergM[n] * norm; + if ( thrM[n] > tmp ) + thrM[n] = maxf (tmp, ergS[n]*iw[n]*0.025); // +/- 1.414 + } + } + break; + } + } + + return; +} + +// input : Masking thresholds in Partitions *partThr0, *partThr1 +// level of threshold in quiet *ltq in FFT-resolution +// output: Masking thresholds in FFT-resolution *thr0, *thr1 +// inline, because it's called 4x +static void +ApplyLtq ( float* thr0, + float* thr1, + const float* partThr0, + const float* partThr1, + const float AdaptedLTQ, + int MSflag ) +{ + int n, k; + float ms, ltq, tmp, tmpThr0, tmpThr1; + + ms = AdaptedLTQ * (MSflag ? 0.125f : 0.25f); + for( n = 0; n < PART_LONG; n++ ) + { + tmpThr0 = sqrt(partThr0[n]); + tmpThr1 = sqrt(partThr1[n]); + for ( k = wl[n]; k <= wh[n]; k++, thr0++, thr1++ ) + { + // threshold in quiet (Partition) + // Applies a much more gentle ATH rolloff + 6 dB more dynamic + ltq = sqrt (ms * fftLtq [k]); + tmp = tmpThr0 + ltq; + *thr0 = tmp * tmp; + tmp = tmpThr1 + ltq; + *thr1 = tmp * tmp; + } + } +} + +// input : Subband energies *erg0, *erg1 +// Masking thresholds in FFT-resolution *thr0, *thr1 +// output: SMR per Subband *smr0, *smr1 +static void +CalculateSMR ( const int MaxBand, + const float* erg0, + const float* erg1, + const float* thr0, + const float* thr1, + float* smr0, + float* smr1 ) +{ + int n; + int k; + float tmp0; + float tmp1; + + // calculation of the masked thresholds in the subbands + for (n = 0; n <= MaxBand; n++ ) { + tmp0 = *thr0++; + tmp1 = *thr1++; + for (k=1; k<16; ++k, ++thr0, ++thr1) { + if (*thr0 < tmp0) tmp0 = *thr0; + if (*thr1 < tmp1) tmp1 = *thr1; + } + *smr0++ = 0.0625f * *erg0++ / tmp0; + *smr1++ = 0.0625f * *erg1++ / tmp1; + } + + return; +} + +// input : energy spectrums erg[4][128] (4 delayed FFTs) +// Energy of the last short block *preerg in short partitions +// PreechoFac declares allowed traved of the masking threshold +// output: masking threshold *thr in short partitions +// Energy of the last short block *preerg in short partitions +static void +CalcShortThreshold ( PsyModel* m, + const float erg [4] [128], + const float ShortThr, + float* thr, + float old_erg [2][PART_SHORT], + int* transient ) +{ + const int* index_lo = wl_short; // lower FFT-index + const int* index_hi = wh_short; // upper FFT-index + const float* iwidth = iw_short; // inverse partition-width + int k; + int n; + int l; + float new_erg; + float th, TransDetect = m->TransDetect; + const float* ep; + + for ( k = 0; k < PART_SHORT; k++ ) { + transient [k] = 0; + th = old_erg [0][k]; + for ( n = 0; n < 4; n++ ) { + ep = erg[n] + index_lo [k]; + l = index_hi [k] - index_lo [k]; + + new_erg = *ep++; + while (l--) + new_erg += *ep++; // e = Short_Partition-energy in piece n + + if ( new_erg > old_erg [0][k] ) { // bigger than the old? + + if ( new_erg > old_erg [0][k] * TransDetect || + new_erg > old_erg [1][k] * TransDetect*2 ) // is signal transient? + transient [k] = 1; + } + else { + th = minf ( th, new_erg ); // assume short threshold = engr*PreechoFac + } + + old_erg [1][k] = old_erg [0][k]; + old_erg [0][k] = new_erg; // save the current one + } + thr [k] = th * ShortThr * *iwidth++; // pull out and multiply only when transient[k]=1 + } + + return; +} + +// input : previous simultaneous masking threshold *preThr, +// current simultaneous masking threshold *simThr +// output: update of *preThr for next call, +// current masking threshold *partThr +static void +PreechoControl ( float* partThr0, + float* preThr0, + const float* simThr0, + float* partThr1, + float* preThr1, + const float* simThr1 ) +{ + int n; + + for ( n = 0; n < PART_LONG; n++ ) { + *partThr0++ = minf ( *simThr0, *preThr0 * PREFAC_LONG); + *partThr1++ = minf ( *simThr1, *preThr1 * PREFAC_LONG); + *preThr0++ = *simThr0++; + *preThr1++ = *simThr1++; + } + return; +} + + +void +TransientenCalc ( int* T, + const int* TL, + const int* TR ) +{ + int i; + int x1; + int x2; + + memset ( T, 0, 32*sizeof(*T) ); + + for ( i = 0; i < PART_SHORT; i++ ) + if ( TL[i] || TR[i] ) { + x1 = wl_short[i] >> 2; + x2 = wh_short[i] >> 2; + while ( x1 <= x2 ) + T [x1++] = 1; + } +} + + +// input : PCM-Data *data +// output: SMRs for the input data +SMRTyp +Psychoakustisches_Modell ( PsyModel* m, + const int MaxBand, + const PCMDataTyp* data, + int* TransientL, + int* TransientR ) +{ + float Xi_L[32], Xi_R[32]; // acoustic pressure per Subband L/R + float Xi_M[32], Xi_S[32]; // acoustic pressure per Subband M/S + float cw_L[512], cw_R[512]; // unpredictability (only L/R) + float erg0[512], erg1[512]; // holds energy spectrum of long FFT + float phs0[512], phs1[512]; // holds phase spectrum of long FFT + float Thr_L[2*512], Thr_R[2*512]; // masking thresholds L/R, second half for triangle swap + float Thr_M[2*512], Thr_S[2*512]; // masking thresholds M/S, second half for triangle swap + float F_256[4][128]; // holds energies of short FFTs (L/R only) + float Xerg[1024]; // holds energy spectrum of very long FFT + float Ls_L[PART_LONG], Ls_R[PART_LONG]; // acoustic pressure in Partition L/R + float Ls_M[PART_LONG], Ls_S[PART_LONG]; // acoustic pressure per each partition M/S + float PartThr_L[PART_LONG], PartThr_R[PART_LONG]; // masking thresholds L/R (Partition) + float PartThr_M[PART_LONG], PartThr_S[PART_LONG]; // masking thresholds M/S (Partition) + float sim_Mask_L[PART_LONG], sim_Mask_R[PART_LONG]; // simultaneous masking (only L/R) + float clow_L[PART_LONG], clow_R[PART_LONG]; // spread, weighted energy (only L/R) + float cLs_L[PART_LONG], cLs_R[PART_LONG]; // weighted partition energy (only L/R) + float shortThr_L[PART_SHORT],shortThr_R[PART_SHORT]; // threshold for short FFT (only L/R) + int n; + int MaxLine = (MaxBand+1)*16; // set FFT-resolution according to MaxBand + SMRTyp SMR0; + SMRTyp SMR1; // holds SMR's for first and second Analysis + int isvoc_L = 0; + int isvoc_R = 0; + float factorLTQ = 1.f; // Offset after variable LTQ + + // 'ClearVocalDetection'-Process + if ( m->CVD_used ) { + memset ( Vocal_L, 0, sizeof Vocal_L ); + memset ( Vocal_R, 0, sizeof Vocal_R ); + + // left channel + PowSpec2048 ( &data->L[0], Xerg ); + isvoc_L = CVD2048 ( m, Xerg, Vocal_L ); + // right channel + PowSpec2048 ( &data->R[0], Xerg ); + isvoc_R = CVD2048 ( m, Xerg, Vocal_R ); + } + + // calculation of the spectral energy via FFT + PolarSpec1024 ( &data->L[0], erg0, phs0 ); // left + PolarSpec1024 ( &data->R[0], erg1, phs1 ); // right + + // calculation of the acoustic pressures per each subband for L/R-signals + SubbandEnergy ( MaxBand, Xi_L, Xi_R, erg0, erg1 ); + + // calculation of the acoustic pressures per each partition + PartitionEnergy ( Ls_L, Ls_R, erg0, erg1 ); + + // calculate the predictability of the signal + // left + memmove ( Xsave_L+512, Xsave_L, 1024*sizeof(float) ); + memmove ( Ysave_L+512, Ysave_L, 1024*sizeof(float) ); + CalcUnpred ( m, MaxLine, erg0, phs0, isvoc_L ? Vocal_L : NULL, Xsave_L, Ysave_L, cw_L ); + // right + memmove ( Xsave_R+512, Xsave_R, 1024*sizeof(float) ); + memmove ( Ysave_R+512, Ysave_R, 1024*sizeof(float) ); + CalcUnpred ( m, MaxLine, erg1, phs1, isvoc_R ? Vocal_R : NULL, Xsave_R, Ysave_R, cw_R ); + + // calculation of the weighted acoustic pressures per each partition + WeightedPartitionEnergy ( cLs_L, cLs_R, erg0, erg1, cw_L, cw_R ); + + // Spreading Signal & weighted unpredictability-signal + // left + memset ( clow_L , 0, sizeof clow_L ); + memset ( sim_Mask_L, 0, sizeof sim_Mask_L ); + SpreadingSignal ( Ls_L, cLs_L, sim_Mask_L, clow_L ); + // right + memset ( clow_R , 0, sizeof clow_R ); + memset ( sim_Mask_R, 0, sizeof sim_Mask_R ); + SpreadingSignal ( Ls_R, cLs_R, sim_Mask_R, clow_R ); + + // Offset depending on tonality + ApplyTonalityOffset ( sim_Mask_L, sim_Mask_R, clow_L, clow_R ); + + // handling of transient signals + // calculate four short FFTs (left) + PowSpec256 ( &data->L[ 0+SHORTFFT_OFFSET], F_256[0] ); + PowSpec256 ( &data->L[144+SHORTFFT_OFFSET], F_256[1] ); + PowSpec256 ( &data->L[288+SHORTFFT_OFFSET], F_256[2] ); + PowSpec256 ( &data->L[432+SHORTFFT_OFFSET], F_256[3] ); + // calculate short Threshold + CalcShortThreshold ( m, F_256, m->ShortThr, shortThr_L, pre_erg_L, TransientL ); + + // calculate four short FFTs (right) + PowSpec256 ( &data->R[ 0+SHORTFFT_OFFSET], F_256[0] ); + PowSpec256 ( &data->R[144+SHORTFFT_OFFSET], F_256[1] ); + PowSpec256 ( &data->R[288+SHORTFFT_OFFSET], F_256[2] ); + PowSpec256 ( &data->R[432+SHORTFFT_OFFSET], F_256[3] ); + // calculate short Threshold + CalcShortThreshold ( m, F_256, m->ShortThr, shortThr_R, pre_erg_R, TransientR ); + + // dynamic adjustment of the threshold in quiet to the loudness of the current sequence + if ( m->varLtq > 0. ) + factorLTQ = AdaptLtq (m, Ls_L, Ls_R ); + + // utilization of the temporal post-masking + if ( m->tmpMask_used ) { + CalcTemporalThreshold ( a, b, T_L, sim_Mask_L, tmp_Mask_L ); + CalcTemporalThreshold ( c, d, T_R, sim_Mask_R, tmp_Mask_R ); + memcpy ( sim_Mask_L, tmp_Mask_L, sizeof sim_Mask_L ); + memcpy ( sim_Mask_R, tmp_Mask_R, sizeof sim_Mask_R ); + } + + // transient signal? + for ( n = 0; n < PART_SHORT; n++ ) { + if ( TransientL [n] ) { + sim_Mask_L [3*n ] = minf ( sim_Mask_L [3*n ], shortThr_L [n] ); + sim_Mask_L [3*n+1] = minf ( sim_Mask_L [3*n+1], shortThr_L [n] ); + sim_Mask_L [3*n+2] = minf ( sim_Mask_L [3*n+2], shortThr_L [n] ); + } + if ( TransientR[n] ) { + sim_Mask_R [3*n ] = minf ( sim_Mask_R [3*n ], shortThr_R [n] ); + sim_Mask_R [3*n+1] = minf ( sim_Mask_R [3*n+1], shortThr_R [n] ); + sim_Mask_R [3*n+2] = minf ( sim_Mask_R [3*n+2], shortThr_R [n] ); + } + } + + // Pre-Echo control + PreechoControl ( PartThr_L,PreThr_L, sim_Mask_L, PartThr_R, PreThr_R, sim_Mask_R ); + + // utilization of the threshold in quiet + ApplyLtq ( Thr_L, Thr_R, PartThr_L, PartThr_R, factorLTQ, 0 ); + + // Consideration of aliasing between the subbands (noise is smeared) + // In: Thr[0..511], Out: Thr[512...1023] + AdaptThresholds ( MaxLine, Thr_L+512, Thr_R+512 ); + memmove ( Thr_L, Thr_L+512, 512*sizeof(float) ); + memmove ( Thr_R, Thr_R+512, 512*sizeof(float) ); + + // calculation of the Signal-to-Mask-Ratio + CalculateSMR ( MaxBand, Xi_L, Xi_R, Thr_L, Thr_R, SMR0.L, SMR0.R ); + + /***************************************************************************************/ + /***************************************************************************************/ + if ( m->MS_Channelmode > 0 ) { + // calculation of the spectral energy via FFT + PowSpec1024 ( &data->M[0], erg0 ); // mid + PowSpec1024 ( &data->S[0], erg1 ); // side + + // calculation of the acoustic pressures per each subband for M/S-signals + SubbandEnergy ( MaxBand, Xi_M, Xi_S, erg0, erg1 ); + + // calculation of the acoustic pressures per each partition + PartitionEnergy ( Ls_M, Ls_S, erg0, erg1 ); + + // calculate masking thresholds for M/S + CalcMSThreshold ( m, Ls_L, Ls_R, Ls_M, Ls_S, PartThr_L, PartThr_R, PartThr_M, PartThr_S ); + ApplyLtq ( Thr_M, Thr_S, PartThr_M, PartThr_S, factorLTQ, 1 ); + + // Consideration of aliasing between the subbands (noise is smeared) + // In: Thr[0..511], Out: Thr[512...1023] + AdaptThresholds ( MaxLine, Thr_M+512, Thr_S+512 ); + memmove ( Thr_M, Thr_M+512, 512*sizeof(float) ); + memmove ( Thr_S, Thr_S+512, 512*sizeof(float) ); + + // calculation of the Signal-to-Mask-Ratio + CalculateSMR ( MaxBand, Xi_M, Xi_S, Thr_M, Thr_S, SMR0.M, SMR0.S ); + } + + if ( m->NS_Order > 0 ) { // providing the Noise Shaping thresholds + memcpy ( ANSspec_L, Thr_L, sizeof ANSspec_L ); + memcpy ( ANSspec_R, Thr_R, sizeof ANSspec_R ); + memcpy ( ANSspec_M, Thr_M, sizeof ANSspec_M ); + memcpy ( ANSspec_S, Thr_S, sizeof ANSspec_S ); + } + /***************************************************************************************/ + /***************************************************************************************/ + + // + //-------- second model calculation via shifted FFT ------------------------ + // + // calculation of the spectral power via FFT + PolarSpec1024 ( &data->L[576], erg0, phs0 ); // left + PolarSpec1024 ( &data->R[576], erg1, phs1 ); // right + + // calculation of the acoustic pressures per each subband for L/R-signals + SubbandEnergy ( MaxBand, Xi_L, Xi_R, erg0, erg1 ); + + // calculation of the acoustic pressures per each partition + PartitionEnergy ( Ls_L, Ls_R, erg0, erg1 ); + + // calculate the predictability of the signal + // left + memmove ( Xsave_L+512, Xsave_L, 1024*sizeof(float) ); + memmove ( Ysave_L+512, Ysave_L, 1024*sizeof(float) ); + CalcUnpred ( m, MaxLine, erg0, phs0, isvoc_L ? Vocal_L : NULL, Xsave_L, Ysave_L, cw_L ); + // right + memmove ( Xsave_R+512, Xsave_R, 1024*sizeof(float) ); + memmove ( Ysave_R+512, Ysave_R, 1024*sizeof(float) ); + CalcUnpred ( m, MaxLine, erg1, phs1, isvoc_R ? Vocal_R : NULL, Xsave_R, Ysave_R, cw_R ); + + // calculation of the weighted acoustic pressure per each partition + WeightedPartitionEnergy ( cLs_L, cLs_R, erg0, erg1, cw_L, cw_R ); + + // Spreading Signal & weighted unpredictability-signal + // left + memset ( clow_L , 0, sizeof clow_L ); + memset ( sim_Mask_L, 0, sizeof sim_Mask_L ); + SpreadingSignal ( Ls_L, cLs_L, sim_Mask_L, clow_L ); + // right + memset ( clow_R , 0, sizeof clow_R ); + memset ( sim_Mask_R, 0, sizeof sim_Mask_R ); + SpreadingSignal ( Ls_R, cLs_R, sim_Mask_R, clow_R ); + + // Offset depending on tonality + ApplyTonalityOffset ( sim_Mask_L, sim_Mask_R, clow_L, clow_R ); + + // Handling of transient signals + // calculate four short FFTs (left) + PowSpec256 ( &data->L[ 576+SHORTFFT_OFFSET], F_256[0] ); + PowSpec256 ( &data->L[ 720+SHORTFFT_OFFSET], F_256[1] ); + PowSpec256 ( &data->L[ 864+SHORTFFT_OFFSET], F_256[2] ); + PowSpec256 ( &data->L[1008+SHORTFFT_OFFSET], F_256[3] ); + // calculate short Threshold + CalcShortThreshold ( m, F_256, m->ShortThr, shortThr_L, pre_erg_L, TransientL ); + + // calculate four short FFTs (right) + PowSpec256 ( &data->R[ 576+SHORTFFT_OFFSET], F_256[0] ); + PowSpec256 ( &data->R[ 720+SHORTFFT_OFFSET], F_256[1] ); + PowSpec256 ( &data->R[ 864+SHORTFFT_OFFSET], F_256[2] ); + PowSpec256 ( &data->R[1008+SHORTFFT_OFFSET], F_256[3] ); + // calculate short Threshold + CalcShortThreshold ( m, F_256, m->ShortThr, shortThr_R, pre_erg_R, TransientR ); + + // dynamic adjustment of threshold in quiet to loudness of the current sequence + if ( m->varLtq > 0. ) + factorLTQ = AdaptLtq ( m, Ls_L, Ls_R ); + + // utilization of temporal post-masking + if (m->tmpMask_used) { + CalcTemporalThreshold ( a, b, T_L, sim_Mask_L, tmp_Mask_L ); + CalcTemporalThreshold ( c, d, T_R, sim_Mask_R, tmp_Mask_R ); + memcpy ( sim_Mask_L, tmp_Mask_L, sizeof sim_Mask_L ); + memcpy ( sim_Mask_R, tmp_Mask_R, sizeof sim_Mask_R ); + } + + // transient signal? + for ( n = 0; n < PART_SHORT; n++ ) { + if ( TransientL[n] ) { + sim_Mask_L [3*n ] = minf ( sim_Mask_L [3*n ], shortThr_L [n] ); + sim_Mask_L [3*n+1] = minf ( sim_Mask_L [3*n+1], shortThr_L [n] ); + sim_Mask_L [3*n+2] = minf ( sim_Mask_L [3*n+2], shortThr_L [n] ); + } + if ( TransientR[n] ) { + sim_Mask_R [3*n ] = minf ( sim_Mask_R [3*n ], shortThr_R [n] ); + sim_Mask_R [3*n+1] = minf ( sim_Mask_R [3*n+1], shortThr_R [n] ); + sim_Mask_R [3*n+2] = minf ( sim_Mask_R [3*n+2], shortThr_R [n] ); + } + } + + // Pre-Echo control + PreechoControl ( PartThr_L, PreThr_L, sim_Mask_L, PartThr_R, PreThr_R, sim_Mask_R ); + + // utilization of threshold in quiet + ApplyLtq ( Thr_L, Thr_R, PartThr_L, PartThr_R, factorLTQ, 0 ); + + // Consideration of aliasing between the subbands (noise is smeared) + // In: Thr[0..511], Out: Thr[512...1023] + AdaptThresholds ( MaxLine, Thr_L+512, Thr_R+512 ); + memmove ( Thr_L, Thr_L+512, 512*sizeof(float) ); + memmove ( Thr_R, Thr_R+512, 512*sizeof(float) ); + + // calculation of the Signal-to-Mask-Ratio + CalculateSMR ( MaxBand, Xi_L, Xi_R, Thr_L, Thr_R, SMR1.L, SMR1.R ); + + /***************************************************************************************/ + /***************************************************************************************/ + if ( m->MS_Channelmode > 0 ) { + // calculation of the spectral energy via FFT + PowSpec1024 ( &data->M[576], erg0 ); // mid + PowSpec1024 ( &data->S[576], erg1 ); // side + + // calculation of the acoustic pressure per each subband for M/S-signals + SubbandEnergy ( MaxBand, Xi_M, Xi_S, erg0, erg1 ); + + // calculation of the acoustic pressure per each partition + PartitionEnergy ( Ls_M, Ls_S, erg0, erg1 ); + + // calculate masking thresholds for M/S + CalcMSThreshold ( m, Ls_L, Ls_R, Ls_M, Ls_S, PartThr_L, PartThr_R, PartThr_M, PartThr_S ); + ApplyLtq ( Thr_M, Thr_S, PartThr_M, PartThr_S, factorLTQ, 1 ); + + // Consideration of aliasing between the subbands (noise is smeared) + // In: Thr[0..511], Out: Thr[512...1023] + AdaptThresholds ( MaxLine, Thr_M+512, Thr_S+512 ); + memmove ( Thr_M, Thr_M+512, 512*sizeof(float) ); + memmove ( Thr_S, Thr_S+512, 512*sizeof(float) ); + + // calculation of the Signal-to-Mask-Ratio + CalculateSMR ( MaxBand, Xi_M, Xi_S, Thr_M, Thr_S, SMR1.M, SMR1.S ); + } + /***************************************************************************************/ + /***************************************************************************************/ + + if ( m->NS_Order > 0 ) { + for ( n = 0; n < MAX_ANS_LINES; n++ ) { // providing Noise Shaping thresholds + ANSspec_L [n] = minf ( ANSspec_L [n], Thr_L [n] ); + ANSspec_R [n] = minf ( ANSspec_R [n], Thr_R [n] ); + ANSspec_M [n] = minf ( ANSspec_M [n], Thr_M [n] ); + ANSspec_S [n] = minf ( ANSspec_S [n], Thr_S [n] ); + } + } + + for ( n = 0; n <= MaxBand; n++ ) { // choose 'worst case'-SMR from shifted analysis windows + SMR0.L[n] = maxf ( SMR0.L[n], SMR1.L[n] ); + SMR0.R[n] = maxf ( SMR0.R[n], SMR1.R[n] ); + SMR0.M[n] = maxf ( SMR0.M[n], SMR1.M[n] ); + SMR0.S[n] = maxf ( SMR0.S[n], SMR1.S[n] ); + } + return SMR0; +} diff --git a/libmpcpsy/psy_tab.c b/libmpcpsy/psy_tab.c new file mode 100755 index 0000000..35c56ac --- /dev/null +++ b/libmpcpsy/psy_tab.c @@ -0,0 +1,372 @@ +/* + * Musepack audio compression + * Copyright (c) 2005-2009, The Musepack Development Team + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "libmpcpsy.h" +#include +#include + +/* + * Klemm 1994 and 1997. Experimental data. Sorry, data looks a little bit + * dodderly. Data below 30 Hz is extrapolated from other material, above 18 + * kHz the ATH is limited due to the original purpose (too much noise at + * ATH is not good even if it's theoretically inaudible). + */ + +// FIXME : move this in a struct, to eliminate multiple declarations +// w_low for long 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 +const int wl [PART_LONG] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 38, 41, 44, 47, 50, 54, 58, 62, 67, 72, 78, 84, 91, 98, 106, 115, 124, 134, 145, 157, 170, 184, 199, 216, 234, 254, 276, 301, 329, 360, 396, 437, 485 }; +const int wh [PART_LONG] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 37, 40, 43, 46, 49, 53, 57, 61, 66, 71, 77, 83, 90, 97, 105, 114, 123, 133, 144, 156, 169, 183, 198, 215, 233, 253, 275, 300, 328, 359, 395, 436, 484, 511 }; +// Width: 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 4 4 4 5 5 6 6 7 7 8 9 9 10 11 12 13 14 15 17 18 20 22 25 28 31 36 41 48 27 + +// inverse partition-width for long +const float iw [PART_LONG] = { 1.f, 1.f, 1.f, 1.f, 1.f, 1.f, 1.f, 1.f, 1.f, 1.f, 1.f, 1.f/2, 1.f/2, 1.f/2, 1.f/2, 1.f/2, 1.f/2, 1.f/2, 1.f/2, 1.f/2, 1.f/2, 1.f/2, 1.f/2, 1.f/3, 1.f/3, 1.f/3, 1.f/3, 1.f/3, 1.f/4, 1.f/4, 1.f/4, 1.f/5, 1.f/5, 1.f/6, 1.f/6, 1.f/7, 1.f/7, 1.f/8, 1.f/9, 1.f/9, 1.f/10, 1.f/11, 1.f/12, 1.f/13, 1.f/14, 1.f/15, 1.f/17, 1.f/18, 1.f/20, 1.f/22, 1.f/25, 1.f/28, 1.f/31, 1.f/36, 1.f/41, 1.f/48, 1.f/27 }; + +// w_low for short 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 +const int wl_short [PART_SHORT] = { 0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 18, 23, 29, 36, 46, 59, 75, 99 }; +const int wh_short [PART_SHORT] = { 0, 1, 2, 3, 5, 6, 7, 9, 12, 14, 18, 23, 29, 36, 46, 58, 75, 99, 127 }; + +// inverse partition-width for short +const float iw_short [PART_SHORT] = { 1.f, 1.f, 1.f, 1.f, 1.f/2, 1.f/2, 1.f/2, 1.f/2, 1.f/3, 1.f/3, 1.f/4, 1.f/6, 1.f/7, 1.f/8, 1.f/11, 1.f/13, 1.f/17, 1.f/25, 1.f/29 }; + +float MinVal [PART_LONG]; // contains minimum tonality soffsets +float Loudness [PART_LONG]; // weighting factors for loudness calculation +float SPRD [PART_LONG] [PART_LONG]; // tabulated spreading function +float O_MAX; +float O_MIN; +float FAC1; +float FAC2; // constants for offset calculation +float partLtq [PART_LONG]; // threshold in quiet (partitions) +float invLtq [PART_LONG]; // inverse threshold in quiet (partitions, long) +float fftLtq [512]; // threshold in quiet (FFT) + +static float +ATHformula_Frank ( float freq ) +{ + /* + * one value per 100 cent = 1 + * semitone = 1/4 + * third = 1/12 + * octave = 1/40 decade + * rest is linear interpolated, values are currently in millibel rel. 20 Pa + */ + static short tab [] = { + /* 10.0 */ 9669, 9669, 9626, 9512, + /* 12.6 */ 9353, 9113, 8882, 8676, + /* 15.8 */ 8469, 8243, 7997, 7748, + /* 20.0 */ 7492, 7239, 7000, 6762, + /* 25.1 */ 6529, 6302, 6084, 5900, + /* 31.6 */ 5717, 5534, 5351, 5167, + /* 39.8 */ 5004, 4812, 4638, 4466, + /* 50.1 */ 4310, 4173, 4050, 3922, + /* 63.1 */ 3723, 3577, 3451, 3281, + /* 79.4 */ 3132, 3036, 2902, 2760, + /* 100.0 */ 2658, 2591, 2441, 2301, + /* 125.9 */ 2212, 2125, 2018, 1900, + /* 158.5 */ 1770, 1682, 1594, 1512, + /* 199.5 */ 1430, 1341, 1260, 1198, + /* 251.2 */ 1136, 1057, 998, 943, + /* 316.2 */ 887, 846, 744, 712, + /* 398.1 */ 693, 668, 637, 606, + /* 501.2 */ 580, 555, 529, 502, + /* 631.0 */ 475, 448, 422, 398, + /* 794.3 */ 375, 351, 327, 322, + /* 1000.0 */ 312, 301, 291, 268, + /* 1258.9 */ 246, 215, 182, 146, + /* 1584.9 */ 107, 61, 13, -35, + /* 1995.3 */ -96, -156, -179, -235, + /* 2511.9 */ -295, -350, -401, -421, + /* 3162.3 */ -446, -499, -532, -535, + /* 3981.1 */ -513, -476, -431, -313, + /* 5011.9 */ -179, 8, 203, 403, + /* 6309.6 */ 580, 736, 881, 1022, + /* 7943.3 */ 1154, 1251, 1348, 1421, + /* 10000.0 */ 1479, 1399, 1285, 1193, + /* 12589.3 */ 1287, 1519, 1914, 2369, +#if 0 + /* 15848.9 */ 3352, 4865, 5942, 6177, + /* 19952.6 */ 6385, 6604, 6833, 7009, + /* 25118.9 */ 7066, 7127, 7191, 7260, +#else + /* 15848.9 */ 3352, 4352, 5352, 6352, + /* 19952.6 */ 7352, 8352, 9352, 9999, + /* 25118.9 */ 9999, 9999, 9999, 9999, +#endif + }; + double freq_log; + unsigned index; + + if ( freq < 10. ) freq = 10.; + if ( freq > 29853. ) freq = 29853.; + + freq_log = 40. * log10 (0.1 * freq); /* 4 steps per third, starting at 10 Hz */ + index = (unsigned) freq_log; + return 0.01 * (tab [index] * (1 + index - freq_log) + tab [index+1] * (freq_log - index)); +} + + +/* F U N C T I O N S */ +// calculation of the threshold in quiet in FFT-resolution +static void +Ruhehoerschwelle ( PsyModel* m, + unsigned int EarModelFlag, + int Ltq_offset, + int Ltq_max ) +{ + int n; + int k; + float f; + float erg; + double tmp; + float absLtq [512]; + + for ( n = 0; n < 512; n++ ) { + f = (float) ( (n+1) * (float)(m->SampleFreq / 2000.) / 512 ); // Frequency in kHz + + switch ( EarModelFlag / 100 ) { + case 0: // ISO-threshold in quiet + tmp = 3.64*pow (f,-0.8) - 6.5*exp (-0.6*(f-3.3)*(f-3.3)) + 0.001*pow (f, 4.0); + break; + default: + case 1: // measured threshold in quiet (Nick Berglmeir, Andree Buschmann, Kopfh�er) + tmp = 3.00*pow (f,-0.8) - 5.0*exp (-0.1*(f-3.0)*(f-3.0)) + 0.0000015022693846297*pow (f, 6.0) + 10.*exp (-(f-0.1)*(f-0.1)); + break; + case 2: // measured threshold in quiet (Filburt, Kopfh�er) + tmp = 9.00*pow (f,-0.5) - 15.0*exp (-0.1*(f-4.0)*(f-4.0)) + 0.0341796875*pow (f, 2.5) + 15.*exp (-(f-0.1)*(f-0.1)) - 18; + tmp = mind ( tmp, Ltq_max - 18 ); + break; + case 3: + tmp = ATHformula_Frank ( 1.e3 * f ); + break; + case 4: + tmp = ATHformula_Frank ( 1.e3 * f ); + if ( f > 4.8 ) { + tmp += 3.00*pow (f,-0.8) - 5.0*exp (-0.1*(f-3.0)*(f-3.0)) + 0.0000015022693846297*pow (f, 6.0) + 10.*exp (-(f-0.1)*(f-0.1)); + tmp *= 0.5 ; + } + break; + case 5: + tmp = ATHformula_Frank ( 1.e3 * f ); + if ( f > 4.8 ) { + tmp = 3.00*pow (f,-0.8) - 5.0*exp (-0.1*(f-3.0)*(f-3.0)) + 0.0000015022693846297*pow (f, 6.0) + 10.*exp (-(f-0.1)*(f-0.1)); + } + break; + } + + tmp -= f * f * (int)(EarModelFlag % 100 - 50) * 0.0015; // 00: +30 dB, 100: -30 dB @20 kHz + + tmp = mind ( tmp, Ltq_max ); // Limit ATH + tmp += Ltq_offset - 23; // Add chosen Offset + fftLtq[n] = absLtq[n] = POW10 ( 0.1 * tmp); // conversion into power + } + + // threshold in quiet in partitions (long) + for ( n = 0; n < PART_LONG; n++ ) { + erg = 1.e20f; + for ( k = wl[n]; k <= wh[n]; k++ ) + erg = minf (erg, absLtq[k]); + + partLtq[n] = erg; // threshold in quiet + invLtq [n] = 1.f / partLtq[n]; // Inverse + } +} + +#ifdef _MSC_VER +static double +asinh ( double x ) +{ + return x >= 0 ? log (sqrt (x*x+1) + x) : -log (sqrt (x*x+1) - x); +} +#endif + + +static double +Freq2Bark ( double Hz ) // Klemm 2002 +{ + return 9.97074*asinh (1.1268e-3 * Hz) - 6.25817*asinh (0.197193e-3 * Hz) ; +} + +// static double +// Bark2Freq ( double Bark ) // Klemm 2002 +// { +// return 956.86 * sinh (0.101561*Bark) + 11.7296 * sinh (0.304992*Bark) + 6.33622e-3*sinh (0.538621*Bark); +// } + +static double +LongPart2Bark ( PsyModel* m, int Part ) +{ + return Freq2Bark ((wl [Part] + wh [Part]) * m->SampleFreq / 2048.); +} + +// calculating the table for loudness calculation based on absLtq = ank +static void +Loudness_Tabelle (PsyModel* m) +{ + int n; + float midfreq; + float tmp; + + // ca. dB(A) + for ( n = 0; n < PART_LONG; n++ ){ + midfreq = (wh[n] + wl[n] + 3) * (0.25 * m->SampleFreq / 512); // center frequency in kHz, why +3 ??? + tmp = LOG10 (midfreq) - 3.5f; // dB(A) + tmp = -10 * tmp * tmp + 3 - midfreq/3000; + Loudness [n] = POW10 ( 0.1 * tmp ); // conversion into power + } +} + + +static double +Bass ( float f, float TMN, float NMT, float bass ) +{ + static unsigned char lfe [11] = { 120, 100, 80, 60, 50, 40, 30, 20, 15, 10, 5 }; + int tmp = (int) ( 1024/44100. * f + 0.5 ); + + switch ( tmp ) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + return TMN + bass * lfe [tmp]; + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + return TMN; + case 19: + case 20: + case 21: + case 22: + return TMN*0.75 + NMT*0.25; + case 23: + case 24: + return TMN*0.50 + NMT*0.50; + case 25: + case 26: + return TMN*0.25 + NMT*0.75; + default: + return NMT; + } +} + + +// calculating the coefficient for utilization of the tonality offset, depending on TMN und NMT +static void +Tonalitaetskoeffizienten ( PsyModel* m ) +{ + double tmp; + int n; + float bass; + + bass = 0.1/8 * m->NMT; + if ( m->MinValChoice <= 2 && bass > 0.1 ) + bass = 0.1f; + if ( m->MinValChoice <= 1 ) + bass = 0.0f; + + // alternative: calculation of the minval-values dependent on TMN and TMN + for ( n = 0; n < PART_LONG; n++ ) { + tmp = Bass ( (wl [n] + wh [n]) / 2048. * m->SampleFreq, m->TMN, m->NMT, bass ); + MinVal [n] = POW10 ( -0.1 * tmp ); // conversion into power + } + + // calculation of the constants for "tonality offset" + O_MAX = POW10 ( -0.1 * m->TMN ); + O_MIN = POW10 ( -0.1 * m->NMT ); + FAC1 = POW10 ( -0.1 * (m->NMT - (m->TMN - m->NMT) * 0.229) ) ; + FAC2 = (m->TMN - m->NMT) * (0.99011159 * 0.1); +} + + +// calculation of the spreading function +static void +Spread ( PsyModel* m ) +{ + int i; + int j; + float tmpx; + float tmpy; + float tmpz; + float x; + + // calculation of the spreading-function for all occuring values + for ( i = 0; i < PART_LONG; i++ ) { // i is masking Partition, Source + for ( j = 0; j < PART_LONG; j++ ) { // j is masking Partition, Target + tmpx = LongPart2Bark (m, j) - LongPart2Bark (m, i);// Difference of the partitions in Bark + tmpy = tmpz = 0.; // tmpz = 0: no dip + + if ( tmpx < 0 ) { // downwards (S1) + tmpy = -32.f * tmpx; // 32 dB per Bark, e33 (10) + } + else if ( tmpx > 0 ) { // upwards (S2) +#if 0 + x = (wl[i]+wh[i])/2 * (float)(SampleFreq / 2000)/512; // center frequency in kHz ??????? + if (i==0) x = 0.5f * (float)(SampleFreq / 2000)/512; // if first spectral line +#else + x = i ? wl[i]+wh[i] : 1; + x *= m->SampleFreq / 1000. / 2048; // center frequency in kHz +#endif + // dB/Bark + tmpy = (22.f + 0.23f / x) * tmpx; // e33 (10) + + // dip (up to 6 dB) + tmpz = 8 * minf ( (tmpx-0.5f) * (tmpx-0.5f) - 2 * (tmpx-0.5f), 0.f ); + } + + // calculate coefficient + SPRD[i][j] = POW10 ( -0.1 * (tmpy+tmpz) ); // [Source] [Target] + } + } + + // Normierung e33 (10) + for ( i = 0; i < PART_LONG; i++ ) { // i is masked Partition + float norm = 0.f; + for ( j = 0; j < PART_LONG; j++ ) // j is masking Partition + norm += SPRD [j] [i]; + for ( j = 0; j < PART_LONG; j++ ) // j is masking Partition + SPRD [j] [i] /= norm; + } +} + +// call all initialisation procedures +void +Init_Psychoakustiktabellen ( PsyModel* m ) +{ + m->Max_Band = (int) ( m->BandWidth * 64. / m->SampleFreq ); + if ( m->Max_Band < 1 ) m->Max_Band = 1; + if ( m->Max_Band > 31 ) m->Max_Band = 31; + + Tonalitaetskoeffizienten (m); + Ruhehoerschwelle ( m, m->EarModelFlag, m->Ltq_offset, m->Ltq_max ); + Loudness_Tabelle (m); + Spread (m); +} + +/* end of psy_tab.c */ diff --git a/libwavformat/CMakeFiles/CMakeDirectoryInformation.cmake b/libwavformat/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f5f0d8d --- /dev/null +++ b/libwavformat/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/dewdude/musepack/musepack_src_r475") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/dewdude/musepack/musepack_src_r475") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/libwavformat/CMakeFiles/progress.marks b/libwavformat/CMakeFiles/progress.marks new file mode 100644 index 0000000..00750ed --- /dev/null +++ b/libwavformat/CMakeFiles/progress.marks @@ -0,0 +1 @@ +3 diff --git a/libwavformat/CMakeFiles/wavformat_static.dir/DependInfo.cmake b/libwavformat/CMakeFiles/wavformat_static.dir/DependInfo.cmake new file mode 100644 index 0000000..a9a197f --- /dev/null +++ b/libwavformat/CMakeFiles/wavformat_static.dir/DependInfo.cmake @@ -0,0 +1,24 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/dewdude/musepack/musepack_src_r475/libwavformat/input.c" "libwavformat/CMakeFiles/wavformat_static.dir/input.c.o" "gcc" "libwavformat/CMakeFiles/wavformat_static.dir/input.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/libwavformat/output.c" "libwavformat/CMakeFiles/wavformat_static.dir/output.c.o" "gcc" "libwavformat/CMakeFiles/wavformat_static.dir/output.c.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/libwavformat/CMakeFiles/wavformat_static.dir/build.make b/libwavformat/CMakeFiles/wavformat_static.dir/build.make new file mode 100644 index 0000000..bbb6387 --- /dev/null +++ b/libwavformat/CMakeFiles/wavformat_static.dir/build.make @@ -0,0 +1,130 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +# Include any dependencies generated for this target. +include libwavformat/CMakeFiles/wavformat_static.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include libwavformat/CMakeFiles/wavformat_static.dir/compiler_depend.make + +# Include the progress variables for this target. +include libwavformat/CMakeFiles/wavformat_static.dir/progress.make + +# Include the compile flags for this target's objects. +include libwavformat/CMakeFiles/wavformat_static.dir/flags.make + +libwavformat/CMakeFiles/wavformat_static.dir/codegen: +.PHONY : libwavformat/CMakeFiles/wavformat_static.dir/codegen + +libwavformat/CMakeFiles/wavformat_static.dir/input.c.o: libwavformat/CMakeFiles/wavformat_static.dir/flags.make +libwavformat/CMakeFiles/wavformat_static.dir/input.c.o: libwavformat/input.c +libwavformat/CMakeFiles/wavformat_static.dir/input.c.o: libwavformat/CMakeFiles/wavformat_static.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object libwavformat/CMakeFiles/wavformat_static.dir/input.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libwavformat && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libwavformat/CMakeFiles/wavformat_static.dir/input.c.o -MF CMakeFiles/wavformat_static.dir/input.c.o.d -o CMakeFiles/wavformat_static.dir/input.c.o -c /home/dewdude/musepack/musepack_src_r475/libwavformat/input.c + +libwavformat/CMakeFiles/wavformat_static.dir/input.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/wavformat_static.dir/input.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libwavformat && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libwavformat/input.c > CMakeFiles/wavformat_static.dir/input.c.i + +libwavformat/CMakeFiles/wavformat_static.dir/input.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/wavformat_static.dir/input.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libwavformat && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libwavformat/input.c -o CMakeFiles/wavformat_static.dir/input.c.s + +libwavformat/CMakeFiles/wavformat_static.dir/output.c.o: libwavformat/CMakeFiles/wavformat_static.dir/flags.make +libwavformat/CMakeFiles/wavformat_static.dir/output.c.o: libwavformat/output.c +libwavformat/CMakeFiles/wavformat_static.dir/output.c.o: libwavformat/CMakeFiles/wavformat_static.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object libwavformat/CMakeFiles/wavformat_static.dir/output.c.o" + cd /home/dewdude/musepack/musepack_src_r475/libwavformat && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT libwavformat/CMakeFiles/wavformat_static.dir/output.c.o -MF CMakeFiles/wavformat_static.dir/output.c.o.d -o CMakeFiles/wavformat_static.dir/output.c.o -c /home/dewdude/musepack/musepack_src_r475/libwavformat/output.c + +libwavformat/CMakeFiles/wavformat_static.dir/output.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/wavformat_static.dir/output.c.i" + cd /home/dewdude/musepack/musepack_src_r475/libwavformat && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/libwavformat/output.c > CMakeFiles/wavformat_static.dir/output.c.i + +libwavformat/CMakeFiles/wavformat_static.dir/output.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/wavformat_static.dir/output.c.s" + cd /home/dewdude/musepack/musepack_src_r475/libwavformat && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/libwavformat/output.c -o CMakeFiles/wavformat_static.dir/output.c.s + +# Object files for target wavformat_static +wavformat_static_OBJECTS = \ +"CMakeFiles/wavformat_static.dir/input.c.o" \ +"CMakeFiles/wavformat_static.dir/output.c.o" + +# External object files for target wavformat_static +wavformat_static_EXTERNAL_OBJECTS = + +libwavformat/libwavformat_static.a: libwavformat/CMakeFiles/wavformat_static.dir/input.c.o +libwavformat/libwavformat_static.a: libwavformat/CMakeFiles/wavformat_static.dir/output.c.o +libwavformat/libwavformat_static.a: libwavformat/CMakeFiles/wavformat_static.dir/build.make +libwavformat/libwavformat_static.a: libwavformat/CMakeFiles/wavformat_static.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Linking C static library libwavformat_static.a" + cd /home/dewdude/musepack/musepack_src_r475/libwavformat && $(CMAKE_COMMAND) -P CMakeFiles/wavformat_static.dir/cmake_clean_target.cmake + cd /home/dewdude/musepack/musepack_src_r475/libwavformat && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/wavformat_static.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +libwavformat/CMakeFiles/wavformat_static.dir/build: libwavformat/libwavformat_static.a +.PHONY : libwavformat/CMakeFiles/wavformat_static.dir/build + +libwavformat/CMakeFiles/wavformat_static.dir/clean: + cd /home/dewdude/musepack/musepack_src_r475/libwavformat && $(CMAKE_COMMAND) -P CMakeFiles/wavformat_static.dir/cmake_clean.cmake +.PHONY : libwavformat/CMakeFiles/wavformat_static.dir/clean + +libwavformat/CMakeFiles/wavformat_static.dir/depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/libwavformat /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/libwavformat /home/dewdude/musepack/musepack_src_r475/libwavformat/CMakeFiles/wavformat_static.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : libwavformat/CMakeFiles/wavformat_static.dir/depend + diff --git a/libwavformat/CMakeFiles/wavformat_static.dir/cmake_clean.cmake b/libwavformat/CMakeFiles/wavformat_static.dir/cmake_clean.cmake new file mode 100644 index 0000000..26b64db --- /dev/null +++ b/libwavformat/CMakeFiles/wavformat_static.dir/cmake_clean.cmake @@ -0,0 +1,13 @@ +file(REMOVE_RECURSE + "CMakeFiles/wavformat_static.dir/input.c.o" + "CMakeFiles/wavformat_static.dir/input.c.o.d" + "CMakeFiles/wavformat_static.dir/output.c.o" + "CMakeFiles/wavformat_static.dir/output.c.o.d" + "libwavformat_static.a" + "libwavformat_static.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/wavformat_static.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/libwavformat/CMakeFiles/wavformat_static.dir/cmake_clean_target.cmake b/libwavformat/CMakeFiles/wavformat_static.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..7c726bc --- /dev/null +++ b/libwavformat/CMakeFiles/wavformat_static.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libwavformat_static.a" +) diff --git a/libwavformat/CMakeFiles/wavformat_static.dir/compiler_depend.internal b/libwavformat/CMakeFiles/wavformat_static.dir/compiler_depend.internal new file mode 100644 index 0000000..82db63f --- /dev/null +++ b/libwavformat/CMakeFiles/wavformat_static.dir/compiler_depend.internal @@ -0,0 +1,49 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +libwavformat/CMakeFiles/wavformat_static.dir/input.c.o + /home/dewdude/musepack/musepack_src_r475/libwavformat/input.c + /home/dewdude/musepack/musepack_src_r475/libwavformat/libwaveformat.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/long-double.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/sys/cdefs.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libwavformat/CMakeFiles/wavformat_static.dir/output.c.o + /home/dewdude/musepack/musepack_src_r475/libwavformat/output.c + /home/dewdude/musepack/musepack_src_r475/libwavformat/libwaveformat.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/long-double.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/sys/cdefs.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + diff --git a/libwavformat/CMakeFiles/wavformat_static.dir/compiler_depend.make b/libwavformat/CMakeFiles/wavformat_static.dir/compiler_depend.make new file mode 100644 index 0000000..b0f0f3a --- /dev/null +++ b/libwavformat/CMakeFiles/wavformat_static.dir/compiler_depend.make @@ -0,0 +1,91 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +libwavformat/CMakeFiles/wavformat_static.dir/input.c.o: libwavformat/input.c \ + libwavformat/libwaveformat.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +libwavformat/CMakeFiles/wavformat_static.dir/output.c.o: libwavformat/output.c \ + libwavformat/libwaveformat.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + + +libwavformat/output.c: + +/usr/include/sys/cdefs.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h: + +/usr/include/stdc-predef.h: + +/usr/include/gnu/stubs.h: + +/usr/include/features.h: + +/usr/include/stdint.h: + +/usr/include/features-time64.h: + +/usr/include/bits/stdint-intn.h: + +/usr/include/bits/types.h: + +libwavformat/libwaveformat.h: + +libwavformat/input.c: + +/usr/include/bits/libc-header-start.h: + +/usr/include/bits/long-double.h: + +/usr/include/bits/stdint-uintn.h: + +/usr/include/bits/wchar.h: + +/usr/include/bits/stdint-least.h: + +/usr/include/bits/time64.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/timesize.h: + +/usr/include/bits/wordsize.h: + +/usr/include/bits/typesizes.h: diff --git a/libwavformat/CMakeFiles/wavformat_static.dir/compiler_depend.ts b/libwavformat/CMakeFiles/wavformat_static.dir/compiler_depend.ts new file mode 100644 index 0000000..cea4214 --- /dev/null +++ b/libwavformat/CMakeFiles/wavformat_static.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for wavformat_static. diff --git a/libwavformat/CMakeFiles/wavformat_static.dir/depend.make b/libwavformat/CMakeFiles/wavformat_static.dir/depend.make new file mode 100644 index 0000000..5dbb072 --- /dev/null +++ b/libwavformat/CMakeFiles/wavformat_static.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for wavformat_static. +# This may be replaced when dependencies are built. diff --git a/libwavformat/CMakeFiles/wavformat_static.dir/flags.make b/libwavformat/CMakeFiles/wavformat_static.dir/flags.make new file mode 100644 index 0000000..4421e4b --- /dev/null +++ b/libwavformat/CMakeFiles/wavformat_static.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# compile C with /usr/bin/cc +C_DEFINES = -DCVD_FASTLOG -DFAST_MATH + +C_INCLUDES = + +C_FLAGS = -O3 -Wall -fomit-frame-pointer -pipe + diff --git a/libwavformat/CMakeFiles/wavformat_static.dir/input.c.o b/libwavformat/CMakeFiles/wavformat_static.dir/input.c.o new file mode 100644 index 0000000000000000000000000000000000000000..22ddff7b4f64c6c9a2c62f4d806a3ca322a7bc16 GIT binary patch literal 10696 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 l{;DJkO37 0x7FFF) tempi = 0x7FFF; + + p_sample_buffer[n] = (t_wav_int16) tempi; + } +} + +static void g_convert_int32_to_float32(t_wav_uint8 const * p_input,t_wav_float32 * p_sample_buffer,t_wav_uint32 p_sample_count) +{ + t_wav_uint32 n; + for(n=0;n> 16 ); + } +} + +static void g_convert_int24_to_float32(t_wav_uint8 const * p_input,t_wav_float32 * p_sample_buffer,t_wav_uint32 p_sample_count) +{ + t_wav_uint32 n; + for(n=0;n> 8 ); + } +} + +static void g_convert_int16_to_float32(t_wav_uint8 const * p_input,t_wav_float32 * p_sample_buffer,t_wav_uint32 p_sample_count) +{ + t_wav_uint32 n; + for(n=0;nm_callback.m_read(p_file->m_callback.m_user_data,p_buffer,p_bytes); +} + +static t_wav_uint32 waveformat_skip(t_wav_input_file * p_file,t_wav_uint32 p_bytes) +{ + t_wav_uint8 dummy[256]; + t_wav_uint32 delta,done,delta_done; + + done = 0; + + while(done < p_bytes) + { + delta = p_bytes - done; + if (delta > sizeof(dummy)) delta = sizeof(dummy); + + delta_done = waveformat_read(p_file,dummy,delta); + + done += delta_done; + + if (delta_done != delta) break; + } + + return done; +} + + +static t_wav_uint32 waveformat_read_riff(t_wav_input_file * p_file,t_riff_header * p_header) +{ + return waveformat_read(p_file,p_header,sizeof(t_riff_header)) / sizeof(t_riff_header); +} + +static t_wav_uint32 waveformat_read_uint32(t_wav_input_file * p_file,t_wav_uint32 * p_value) +{ + t_wav_uint8 temp[4]; + if (waveformat_read(p_file,&temp,sizeof(temp)) != sizeof(temp)) return 0; + * p_value = + ((t_wav_uint32)temp[0]) | + ((t_wav_uint32)temp[1] << 8) | + ((t_wav_uint32)temp[2] << 16) | + ((t_wav_uint32)temp[3] << 24); + return 1; +} + +static t_wav_uint32 waveformat_read_uint16(t_wav_input_file * p_file,t_wav_uint16 * p_value) +{ + t_wav_uint8 temp[2]; + if (waveformat_read(p_file,&temp,sizeof(temp)) != sizeof(temp)) return 0; + * p_value = + ((t_wav_uint16)temp[0]) | + ((t_wav_uint16)temp[1] << 8); + return 1; +} + +t_wav_uint32 waveformat_input_open(t_wav_input_file * p_file,t_wav_input_file_callback p_callback) +{ + t_riff_header header; + t_wav_uint32 main_size,main_offset,chunk_size; + t_wav_uint8 found_fmt; + + found_fmt = 0; + + p_file->m_callback = p_callback; + + if (waveformat_read_riff(p_file,&header) != 1) return 0; + + if (!riff_compare(header,'R','I','F','F')) return 0; + + if (waveformat_read_uint32(p_file,&main_size) != 1) return 0; + + if (main_size < 4) return 0; + + + if (waveformat_read_riff(p_file,&header) != 1) return 0; + + if (!riff_compare(header,'W','A','V','E')) return 0; + + main_offset = 4; + + for(;;) + { + if (main_size - main_offset < 8) return 0; + + if (waveformat_read_riff(p_file,&header) != 1) return 0; + if (waveformat_read_uint32(p_file,&chunk_size) != 1) return 0; + + main_offset += 8; + + if (main_size - main_offset < chunk_size) return 0; + + + + if (riff_compare(header,'f','m','t',' ')) + { + t_wav_uint32 fmt_remaining; + if (found_fmt) return 0;//duplicate fmt chunk + + fmt_remaining = chunk_size; + + if (fmt_remaining < 2+2+4+4+2+2) return 0; + + if (waveformat_read_uint16(p_file,&p_file->m_format_tag ) != 1) return 0; + if (waveformat_read_uint16(p_file,&p_file->m_channels ) != 1) return 0; + if (waveformat_read_uint32(p_file,&p_file->m_samples_per_sec ) != 1) return 0; + if (waveformat_read_uint32(p_file,&p_file->m_avg_bytes_per_sec ) != 1) return 0; + if (waveformat_read_uint16(p_file,&p_file->m_block_align ) != 1) return 0; + if (waveformat_read_uint16(p_file,&p_file->m_bits_per_sample ) != 1) return 0; + + p_file->m_bytes_per_sample = p_file->m_bits_per_sample / 8; + + if (p_file->m_bytes_per_sample == 0) return 0; + + p_file->m_buffer_size = sizeof(p_file->m_workbuffer) / p_file->m_bytes_per_sample; + + fmt_remaining -= 2+2+4+4+2+2; + + switch(p_file->m_format_tag) + { + case waveformat_tag_int: + switch(p_file->m_bits_per_sample) + { + case 8: + p_file->m_input_handler = g_input_handler_uint8; + break; + case 16: + p_file->m_input_handler = g_input_handler_int16; + break; + case 24: + p_file->m_input_handler = g_input_handler_int24; + break; + case 32: + p_file->m_input_handler = g_input_handler_int32; + break; + default: + //unsupported format + return 0; + } + break; + case waveformat_tag_float: + switch(p_file->m_bits_per_sample) + { + case 32: + p_file->m_input_handler = g_input_handler_float32; + break; +#if 0 + case 64: + + break; +#endif + default: + //unsupported format + return 0; + } + break; + default: + //unsupported format + return 0; + } + + if (chunk_size & 1) fmt_remaining++; + + if (fmt_remaining > 0) + { + if (waveformat_skip(p_file,fmt_remaining) != fmt_remaining) return 0; + } + + main_offset += chunk_size; + if (chunk_size & 1) main_offset++; + + found_fmt = 1; + } + else if (riff_compare(header,'d','a','t','a')) + { + if (!found_fmt) return 0;//found data before fmt, don't know how to handle data + //found parsable data chunk, ok to proceed + p_file->m_data_size = chunk_size / p_file->m_bytes_per_sample; + p_file->m_data_position = 0; + + break; + } + else + {//unknown chunk, let's skip over + t_wav_uint32 toskip = chunk_size; + if (toskip & 1) toskip++; + + if (waveformat_skip(p_file,toskip) != toskip) return 0; + + main_offset += toskip; + } + } + + return 1; +} + +t_wav_uint32 waveformat_input_process_float32(t_wav_input_file * p_file,t_wav_float32 * p_sample_buffer,t_wav_uint32 p_sample_count) +{ + t_wav_uint32 samples_read; + + samples_read = 0; + + if (p_file->m_data_position + p_sample_count > p_file->m_data_size) + p_sample_count = p_file->m_data_size - p_file->m_data_position; + + while(samples_read < p_sample_count) + { + t_wav_uint32 delta, deltaread; + + delta = p_sample_count - samples_read; + if (delta > p_file->m_buffer_size) delta = p_file->m_buffer_size; + + deltaread = waveformat_read(p_file,p_file->m_workbuffer,delta * p_file->m_bytes_per_sample) / p_file->m_bytes_per_sample; + + if (deltaread > 0) + { + p_file->m_input_handler.m_convert_float32(p_file->m_workbuffer,p_sample_buffer + samples_read,deltaread); + + samples_read += deltaread; + } + + if (deltaread != delta) break; + } + + p_file->m_data_position += samples_read; + + return samples_read; +} + +t_wav_uint32 waveformat_input_process_int16(t_wav_input_file * p_file,t_wav_int16 * p_sample_buffer,t_wav_uint32 p_sample_count) +{ + t_wav_uint32 samples_read; + + samples_read = 0; + + if (p_file->m_data_position + p_sample_count > p_file->m_data_size) + p_sample_count = p_file->m_data_size - p_file->m_data_position; + + while(samples_read < p_sample_count) + { + t_wav_uint32 delta, deltaread; + + delta = p_sample_count - samples_read; + if (delta > p_file->m_buffer_size) delta = p_file->m_buffer_size; + + deltaread = waveformat_read(p_file,p_file->m_workbuffer,delta * p_file->m_bytes_per_sample) / p_file->m_bytes_per_sample; + + if (deltaread > 0) + { + p_file->m_input_handler.m_convert_int16(p_file->m_workbuffer,p_sample_buffer + samples_read,deltaread); + + samples_read += deltaread; + } + + if (deltaread != delta) break; + } + + p_file->m_data_position += samples_read; + + return samples_read; +} + +void waveformat_input_close(t_wav_input_file * p_file) +{ +} + +t_wav_uint32 waveformat_input_query_sample_rate(t_wav_input_file * p_file) +{ + return p_file->m_samples_per_sec; +} +t_wav_uint32 waveformat_input_query_channels(t_wav_input_file * p_file) +{ + return p_file->m_channels; +} +t_wav_uint32 waveformat_input_query_length(t_wav_input_file * p_file) +{ + return p_file->m_data_size; +} diff --git a/libwavformat/libwaveformat.h b/libwavformat/libwaveformat.h new file mode 100755 index 0000000..7d5c7af --- /dev/null +++ b/libwavformat/libwaveformat.h @@ -0,0 +1,139 @@ +#ifndef __LIBWAVEFORMAT_H__ +#define __LIBWAVEFORMAT_H__ +#ifdef WIN32 +#pragma once +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +//general declarations + +#ifdef _MSC_VER +typedef __int8 t_wav_int8; +typedef unsigned __int8 t_wav_uint8; +typedef __int16 t_wav_int16; +typedef unsigned __int16 t_wav_uint16; +typedef __int32 t_wav_int32; +typedef unsigned __int32 t_wav_uint32; +typedef __int64 t_wav_int64; +typedef unsigned __int64 t_wav_uint64; +typedef float t_wav_float32; +typedef double t_wav_float64; +#else +#include +typedef int8_t t_wav_int8; +typedef uint8_t t_wav_uint8; +typedef int16_t t_wav_int16; +typedef uint16_t t_wav_uint16; +typedef int32_t t_wav_int32; +typedef uint32_t t_wav_uint32; +typedef int64_t t_wav_int64; +typedef uint64_t t_wav_uint64; +typedef float t_wav_float32; +typedef double t_wav_float64; +#endif + +typedef union +{ + t_wav_float32 f; + t_wav_uint32 n; +} t_wav_conv; + +#define waveformat_tag_int 1 +#define waveformat_tag_float 3 + +//WAV file reader + +typedef struct +{ + t_wav_uint32 (*m_read)(void * p_user_data,void * p_buffer,t_wav_uint32 p_bytes); + void * m_user_data; +} t_wav_input_file_callback; + +typedef struct +{ + void (*m_convert_float32)(t_wav_uint8 const * p_input,t_wav_float32 * p_sample_buffer,t_wav_uint32 p_sample_count); + void (*m_convert_int16)(t_wav_uint8 const * p_input,t_wav_int16 * p_sample_buffer,t_wav_uint32 p_sample_count); +} t_wav_input_handler; + +typedef struct +{ + t_wav_input_file_callback m_callback; + + t_wav_input_handler m_input_handler; + + t_wav_uint16 m_format_tag; + t_wav_uint16 m_channels; + t_wav_uint32 m_samples_per_sec; + t_wav_uint32 m_avg_bytes_per_sec; + t_wav_uint16 m_block_align; + t_wav_uint16 m_bits_per_sample; + + t_wav_uint32 m_bytes_per_sample, m_buffer_size; + + t_wav_uint32 m_data_size; + t_wav_uint32 m_data_position; + + + + t_wav_uint8 m_workbuffer[512]; +} t_wav_input_file; + +t_wav_uint32 waveformat_input_open(t_wav_input_file * p_file,t_wav_input_file_callback p_callback); + +t_wav_uint32 waveformat_input_process_float32(t_wav_input_file * p_file,t_wav_float32 * p_sample_buffer,t_wav_uint32 p_sample_count); +t_wav_uint32 waveformat_input_process_int16(t_wav_input_file * p_file,t_wav_int16 * p_sample_buffer,t_wav_uint32 p_sample_count); + +void waveformat_input_close(t_wav_input_file * p_file); + +t_wav_uint32 waveformat_input_query_sample_rate(t_wav_input_file * p_file); +t_wav_uint32 waveformat_input_query_channels(t_wav_input_file * p_file); +t_wav_uint32 waveformat_input_query_length(t_wav_input_file * p_file); + +//WAV file writer + +typedef struct +{ + t_wav_uint32 (*m_write)(void * p_user_data,void const * p_buffer,t_wav_uint32 p_bytes); + t_wav_uint32 (*m_seek)(void * p_user_data,t_wav_uint32 p_position); + void * m_user_data; +} t_wav_output_file_callback; + +typedef struct +{ + void (*m_convert_float32)(t_wav_float32 const * p_sample_buffer,t_wav_uint8 * p_output,t_wav_uint32 p_sample_count); + void (*m_convert_int16)(t_wav_int16 const * p_sample_buffer,t_wav_uint8 * p_output,t_wav_uint32 p_sample_count); +} t_wav_output_handler; + +typedef struct +{ + t_wav_output_file_callback m_callback; + + t_wav_output_handler m_output_handler; + + t_wav_uint32 m_channels; + t_wav_uint32 m_bits_per_sample; + t_wav_uint32 m_float; + t_wav_uint32 m_sample_rate; + t_wav_uint32 m_samples_written,m_samples_written_expected; + + t_wav_uint32 m_bytes_per_sample, m_buffer_size; + + t_wav_uint8 m_workbuffer[512]; +} t_wav_output_file; + +t_wav_uint32 waveformat_output_open(t_wav_output_file * p_file,t_wav_output_file_callback p_callback,t_wav_uint32 p_channels,t_wav_uint32 p_bits_per_sample,t_wav_uint32 p_float,t_wav_uint32 p_sample_rate,t_wav_uint32 p_expected_samples); + +t_wav_uint32 waveformat_output_process_float32(t_wav_output_file * p_file,t_wav_float32 const * p_sample_buffer,t_wav_uint32 p_sample_count); +t_wav_uint32 waveformat_output_process_int16(t_wav_output_file * p_file,t_wav_int16 const * p_sample_buffer,t_wav_uint32 p_sample_count); + +t_wav_uint32 waveformat_output_close(t_wav_output_file * p_file); + +#ifdef __cplusplus +} //extern "C" +#endif + +#endif //__LIBWAVEFORMAT_H__ + diff --git a/libwavformat/libwavformat_static.a b/libwavformat/libwavformat_static.a new file mode 100644 index 0000000000000000000000000000000000000000..b8b441ce5d2730383ebd453ea2d04aa4adf526c4 GIT binary patch literal 25900 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 literal 0 HcmV?d00001 diff --git a/libwavformat/output.c b/libwavformat/output.c new file mode 100755 index 0000000..c73279d --- /dev/null +++ b/libwavformat/output.c @@ -0,0 +1,338 @@ +#include "libwaveformat.h" + +__inline static void write_int24(t_wav_uint8 * p_output,t_wav_int32 p_value) +{ + p_output[0] = (t_wav_uint8)(p_value); + p_output[1] = (t_wav_uint8)(p_value>>8); + p_output[2] = (t_wav_uint8)(p_value>>16); +} + +__inline static void write_int32(t_wav_uint8 * p_output,t_wav_int32 p_value) +{ + p_output[0] = (t_wav_uint8)(p_value); + p_output[1] = (t_wav_uint8)(p_value>>8); + p_output[2] = (t_wav_uint8)(p_value>>16); + p_output[3] = (t_wav_uint8)(p_value>>24); +} + +__inline static void write_float(t_wav_uint8 * p_output,t_wav_float32 p_value) +{ + t_wav_conv bah; + bah.f = p_value; + p_output[0] = (t_wav_uint8)bah.n; + p_output[1] = (t_wav_uint8)(bah.n >> 8); + p_output[2] = (t_wav_uint8)(bah.n >> 16); + p_output[3] = (t_wav_uint8)(bah.n >> 24); +} + +static void g_convert_float32_to_uint8(t_wav_float32 const * p_sample_buffer,t_wav_uint8 * p_output,t_wav_uint32 p_sample_count) +{ + t_wav_uint32 n; + for(n=0;n 0x7F) temp = 0x7F; + *(p_output++) = (t_wav_uint8)temp ^ 0x80; + } +} + +static void g_convert_int16_to_uint8(t_wav_int16 const * p_sample_buffer,t_wav_uint8 * p_output,t_wav_uint32 p_sample_count) +{ + t_wav_uint32 n; + for(n=0;n> 8) ^ 0x80; + } +} + +static void g_convert_float32_to_int16(t_wav_float32 const * p_sample_buffer,t_wav_uint8 * p_output,t_wav_uint32 p_sample_count) +{ + t_wav_uint32 n; + for(n=0;n 0x7FFF) temp = 0x7FFF; + *(p_output++) = (t_wav_uint8)((t_wav_uint32)temp); + *(p_output++) = (t_wav_uint8)((t_wav_uint32)temp >> 8); + } +} + +static void g_convert_int16_to_int16(t_wav_int16 const * p_sample_buffer,t_wav_uint8 * p_output,t_wav_uint32 p_sample_count) +{ + t_wav_uint32 n; + for(n=0;n> 8); + } +} + +static void g_convert_float32_to_int24(t_wav_float32 const * p_sample_buffer,t_wav_uint8 * p_output,t_wav_uint32 p_sample_count) +{ + t_wav_uint32 n; + for(n=0;nm_callback.m_write(p_file->m_callback.m_user_data,p_buffer,p_buffer_size); +} + +static t_wav_uint32 waveformat_seek(t_wav_output_file * p_file,t_wav_uint32 p_position) +{ + return p_file->m_callback.m_seek(p_file->m_callback.m_user_data,p_position); +} + +static t_wav_uint32 waveformat_write_riff(t_wav_output_file * p_file,t_riff_header p_riff) +{ + return waveformat_write(p_file,&p_riff,sizeof(p_riff)) / sizeof(p_riff); +} + +static t_wav_uint32 waveformat_write_uint32(t_wav_output_file * p_file,t_wav_uint32 p_val) +{ + t_wav_uint8 temp[4] = { + (t_wav_uint8)(p_val & 0xFF), + (t_wav_uint8)((p_val >> 8) & 0xFF), + (t_wav_uint8)((p_val >> 16) & 0xFF), + (t_wav_uint8)((p_val >> 24) & 0xFF) + }; + + return waveformat_write(p_file,temp,4) / 4; +} + +static t_wav_uint32 waveformat_write_uint16(t_wav_output_file * p_file,t_wav_uint16 p_val) +{ + t_wav_uint8 temp[2] = { + (t_wav_uint8)(p_val & 0xFF), + (t_wav_uint8)((p_val >> 8) & 0xFF) + }; + + return waveformat_write(p_file,temp,2) / 2; +} + +static t_wav_uint32 calculate_riff_size(t_wav_output_file * p_file,t_wav_uint32 p_samples_written) +{ + t_wav_uint32 bytes_written = p_samples_written * p_file->m_bytes_per_sample, bytes_written_padded = bytes_written; + if (bytes_written & 1)//padding + bytes_written_padded++; + + return bytes_written_padded + 4 + 8 + 2+2+4+4+2+2 + 8; +} + +static t_wav_uint32 calculate_data_size(t_wav_output_file * p_file,t_wav_uint32 p_samples_written) +{ + return p_samples_written * p_file->m_bytes_per_sample; +} + +t_wav_uint32 waveformat_output_open(t_wav_output_file * p_file,t_wav_output_file_callback p_callback,t_wav_uint32 p_channels,t_wav_uint32 p_bits_per_sample,t_wav_uint32 p_float,t_wav_uint32 p_sample_rate,t_wav_uint32 p_samples_written_expected) +{ + p_file->m_callback = p_callback; + p_file->m_channels = p_channels; + p_file->m_bits_per_sample = p_bits_per_sample; + p_file->m_float = p_float; + p_file->m_sample_rate = p_sample_rate; + p_file->m_bytes_per_sample = p_bits_per_sample >> 3; + if (p_file->m_bytes_per_sample == 0) return 0; + p_file->m_buffer_size = sizeof(p_file->m_workbuffer) / p_file->m_bytes_per_sample; + p_file->m_samples_written_expected = p_samples_written_expected; + + if (p_float) + { + switch(p_bits_per_sample) + { + case 32: + p_file->m_output_handler = g_wav_output_handler_float32; + break; + default: + return 0; + } + } + else + { + switch(p_bits_per_sample) + { + case 8: + p_file->m_output_handler = g_wav_output_handler_uint8; + break; + case 16: + p_file->m_output_handler = g_wav_output_handler_int16; + break; + case 24: + p_file->m_output_handler = g_wav_output_handler_int24; + break; + case 32: + p_file->m_output_handler = g_wav_output_handler_int32; + break; + default: + return 0; + } + } + + if (waveformat_write_riff(p_file,g_header_riff) != 1) return 0; + if (waveformat_write_uint32(p_file,calculate_riff_size(p_file,p_file->m_samples_written_expected)) != 1) return 0; //to be possibly rewritten later, offset : 4 + if (waveformat_write_riff(p_file,g_header_wave) != 1) return 0; +//offset: 12 + if (waveformat_write_riff(p_file,g_header_fmt) != 1) return 0; + if (waveformat_write_uint32(p_file,2+2+4+4+2+2) != 1) return 0; +//offset: 12 + 8 + if (waveformat_write_uint16(p_file,p_float ? waveformat_tag_float : waveformat_tag_int) != 1) return 0; + if (waveformat_write_uint16(p_file,(t_wav_uint16) p_channels) != 1) return 0; + if (waveformat_write_uint32(p_file,p_sample_rate) != 1) return 0; + if (waveformat_write_uint32(p_file,(t_wav_uint32)(p_sample_rate * p_file->m_bytes_per_sample * p_channels)) != 1) return 0; + if (waveformat_write_uint16(p_file,(t_wav_uint16)(p_file->m_bytes_per_sample * p_channels)) != 1) return 0; + if (waveformat_write_uint16(p_file,(t_wav_uint16)p_bits_per_sample) != 1) return 0; +//offset: 12 + 8 + 2+2+4+4+2+2 + if (waveformat_write_riff(p_file,g_header_data) != 1) return 0; + if (waveformat_write_uint32(p_file,calculate_data_size(p_file,p_file->m_samples_written_expected)) != 1) return 0; //to be possibly rewritten later, offset : 12 + 8 + 2+2+4+4+2+2 + 4 +//total header size: 12 + 8 + 2+2+4+4+2+2 + 8 + p_file->m_samples_written = 0; + + return 1; +} + + +t_wav_uint32 waveformat_output_process_float32(t_wav_output_file * p_file,t_wav_float32 const * p_sample_buffer,t_wav_uint32 p_sample_count) +{ + t_wav_uint32 samples_done; + + samples_done = 0; + + while(samples_done < p_sample_count) + { + t_wav_uint32 delta = p_sample_count - samples_done, delta_written; + if (delta > p_file->m_buffer_size) delta = p_file->m_buffer_size; + + p_file->m_output_handler.m_convert_float32(p_sample_buffer + samples_done,p_file->m_workbuffer,delta); + + delta_written = waveformat_write(p_file,p_file->m_workbuffer,delta * p_file->m_bytes_per_sample) / p_file->m_bytes_per_sample; + + if (delta_written > 0) + { + samples_done += delta_written; + } + + if (delta_written != delta) break; + } + + p_file->m_samples_written += samples_done; + + return samples_done; +} + +t_wav_uint32 waveformat_output_process_int16(t_wav_output_file * p_file,t_wav_int16 const * p_sample_buffer,t_wav_uint32 p_sample_count) +{ + t_wav_uint32 samples_done; + + samples_done = 0; + + while(samples_done < p_sample_count) + { + t_wav_uint32 delta = p_sample_count - samples_done, delta_written; + if (delta > p_file->m_buffer_size) delta = p_file->m_buffer_size; + + p_file->m_output_handler.m_convert_int16(p_sample_buffer + samples_done,p_file->m_workbuffer,delta); + + delta_written = waveformat_write(p_file,p_file->m_workbuffer,delta * p_file->m_bytes_per_sample) / p_file->m_bytes_per_sample; + + if (delta_written > 0) + { + samples_done += delta_written; + } + + if (delta_written != delta) break; + } + + p_file->m_samples_written += samples_done; + + return samples_done; +} + +t_wav_uint32 waveformat_output_close(t_wav_output_file * p_file) +{ + if ((p_file->m_samples_written * p_file->m_bytes_per_sample) & 1)//padding + { + t_wav_uint8 meh = 0; + if (waveformat_write(p_file,&meh,1) != 1) return 0; + } + + if (p_file->m_samples_written != p_file->m_samples_written_expected) + { + if (!waveformat_seek(p_file,4)) return 0; + if (waveformat_write_uint32(p_file,calculate_riff_size(p_file,p_file->m_samples_written)) != 1) return 0; + if (!waveformat_seek(p_file,12 + 8 + 2+2+4+4+2+2 + 4)) return 0; + if (waveformat_write_uint32(p_file,calculate_data_size(p_file,p_file->m_samples_written)) != 1) return 0; + } + return 1; +} diff --git a/mpc2sv8/CMakeFiles/CMakeDirectoryInformation.cmake b/mpc2sv8/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f5f0d8d --- /dev/null +++ b/mpc2sv8/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/dewdude/musepack/musepack_src_r475") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/dewdude/musepack/musepack_src_r475") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/mpc2sv8/CMakeFiles/mpc2sv8.dir/DependInfo.cmake b/mpc2sv8/CMakeFiles/mpc2sv8.dir/DependInfo.cmake new file mode 100644 index 0000000..6928e1a --- /dev/null +++ b/mpc2sv8/CMakeFiles/mpc2sv8.dir/DependInfo.cmake @@ -0,0 +1,24 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/dewdude/musepack/musepack_src_r475/mpc2sv8/mpc2sv8.c" "mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o" "gcc" "mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o.d" + "" "mpc2sv8/mpc2sv8" "gcc" "mpc2sv8/CMakeFiles/mpc2sv8.dir/link.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/mpc2sv8/CMakeFiles/mpc2sv8.dir/build.make b/mpc2sv8/CMakeFiles/mpc2sv8.dir/build.make new file mode 100644 index 0000000..e9a29e4 --- /dev/null +++ b/mpc2sv8/CMakeFiles/mpc2sv8.dir/build.make @@ -0,0 +1,116 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +# Include any dependencies generated for this target. +include mpc2sv8/CMakeFiles/mpc2sv8.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include mpc2sv8/CMakeFiles/mpc2sv8.dir/compiler_depend.make + +# Include the progress variables for this target. +include mpc2sv8/CMakeFiles/mpc2sv8.dir/progress.make + +# Include the compile flags for this target's objects. +include mpc2sv8/CMakeFiles/mpc2sv8.dir/flags.make + +mpc2sv8/CMakeFiles/mpc2sv8.dir/codegen: +.PHONY : mpc2sv8/CMakeFiles/mpc2sv8.dir/codegen + +mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o: mpc2sv8/CMakeFiles/mpc2sv8.dir/flags.make +mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o: mpc2sv8/mpc2sv8.c +mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o: mpc2sv8/CMakeFiles/mpc2sv8.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o" + cd /home/dewdude/musepack/musepack_src_r475/mpc2sv8 && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o -MF CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o.d -o CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o -c /home/dewdude/musepack/musepack_src_r475/mpc2sv8/mpc2sv8.c + +mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpc2sv8.dir/mpc2sv8.c.i" + cd /home/dewdude/musepack/musepack_src_r475/mpc2sv8 && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/mpc2sv8/mpc2sv8.c > CMakeFiles/mpc2sv8.dir/mpc2sv8.c.i + +mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpc2sv8.dir/mpc2sv8.c.s" + cd /home/dewdude/musepack/musepack_src_r475/mpc2sv8 && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/mpc2sv8/mpc2sv8.c -o CMakeFiles/mpc2sv8.dir/mpc2sv8.c.s + +# Object files for target mpc2sv8 +mpc2sv8_OBJECTS = \ +"CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o" + +# External object files for target mpc2sv8 +mpc2sv8_EXTERNAL_OBJECTS = + +mpc2sv8/mpc2sv8: mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o +mpc2sv8/mpc2sv8: mpc2sv8/CMakeFiles/mpc2sv8.dir/build.make +mpc2sv8/mpc2sv8: mpc2sv8/CMakeFiles/mpc2sv8.dir/compiler_depend.ts +mpc2sv8/mpc2sv8: libmpcdec/libmpcdec.so +mpc2sv8/mpc2sv8: libmpcenc/libmpcenc_static.a +mpc2sv8/mpc2sv8: mpc2sv8/CMakeFiles/mpc2sv8.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C executable mpc2sv8" + cd /home/dewdude/musepack/musepack_src_r475/mpc2sv8 && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/mpc2sv8.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +mpc2sv8/CMakeFiles/mpc2sv8.dir/build: mpc2sv8/mpc2sv8 +.PHONY : mpc2sv8/CMakeFiles/mpc2sv8.dir/build + +mpc2sv8/CMakeFiles/mpc2sv8.dir/clean: + cd /home/dewdude/musepack/musepack_src_r475/mpc2sv8 && $(CMAKE_COMMAND) -P CMakeFiles/mpc2sv8.dir/cmake_clean.cmake +.PHONY : mpc2sv8/CMakeFiles/mpc2sv8.dir/clean + +mpc2sv8/CMakeFiles/mpc2sv8.dir/depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/mpc2sv8 /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/mpc2sv8 /home/dewdude/musepack/musepack_src_r475/mpc2sv8/CMakeFiles/mpc2sv8.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : mpc2sv8/CMakeFiles/mpc2sv8.dir/depend + diff --git a/mpc2sv8/CMakeFiles/mpc2sv8.dir/cmake_clean.cmake b/mpc2sv8/CMakeFiles/mpc2sv8.dir/cmake_clean.cmake new file mode 100644 index 0000000..c9cb9f7 --- /dev/null +++ b/mpc2sv8/CMakeFiles/mpc2sv8.dir/cmake_clean.cmake @@ -0,0 +1,12 @@ +file(REMOVE_RECURSE + "CMakeFiles/mpc2sv8.dir/link.d" + "CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o" + "CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o.d" + "mpc2sv8" + "mpc2sv8.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/mpc2sv8.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/mpc2sv8/CMakeFiles/mpc2sv8.dir/compiler_depend.internal b/mpc2sv8/CMakeFiles/mpc2sv8.dir/compiler_depend.internal new file mode 100644 index 0000000..32e511d --- /dev/null +++ b/mpc2sv8/CMakeFiles/mpc2sv8.dir/compiler_depend.internal @@ -0,0 +1,112 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o + /home/dewdude/musepack/musepack_src_r475/mpc2sv8/mpc2sv8.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/decoder.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/internal.h + /home/dewdude/musepack/musepack_src_r475/libmpcenc/libmpcenc.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/dirent.h + /usr/include/bits/dirent_ext.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/getopt_core.h + /usr/include/bits/getopt_ext.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/local_lim.h + /usr/include/bits/long-double.h + /usr/include/bits/posix1_lim.h + /usr/include/bits/pthread_stack_min-dynamic.h + /usr/include/bits/pthread_stack_min.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/dirent.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/getopt.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/libgen.h + /usr/include/linux/limits.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpc2sv8/mpc2sv8 + /home/dewdude/musepack/musepack_src_r475/libmpcdec/libmpcdec.so + /home/dewdude/musepack/musepack_src_r475/libmpcenc/libmpcenc_static.a + /usr/lib/Scrt1.o + /usr/lib/crti.o + /usr/lib/crtn.o + /usr/lib/libc.so + /usr/lib/libgcc_s.so + /usr/lib/libgcc_s.so.1 + /usr/lib/libm.so + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a + /usr/lib/ld-linux-x86-64.so.2 + /usr/lib/libc.so.6 + /usr/lib/libc_nonshared.a + /usr/lib/libm.so.6 + /usr/lib/libmvec.so.1 + /home/dewdude/musepack/musepack_src_r475/mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o + diff --git a/mpc2sv8/CMakeFiles/mpc2sv8.dir/compiler_depend.make b/mpc2sv8/CMakeFiles/mpc2sv8.dir/compiler_depend.make new file mode 100644 index 0000000..1678750 --- /dev/null +++ b/mpc2sv8/CMakeFiles/mpc2sv8.dir/compiler_depend.make @@ -0,0 +1,320 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o: mpc2sv8/mpc2sv8.c \ + include/mpc/minimax.h \ + include/mpc/mpc_types.h \ + include/mpc/mpcdec.h \ + include/mpc/reader.h \ + include/mpc/streaminfo.h \ + libmpcdec/decoder.h \ + libmpcdec/internal.h \ + libmpcenc/libmpcenc.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/dirent.h \ + /usr/include/bits/dirent_ext.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_ext.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/local_lim.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/posix1_lim.h \ + /usr/include/bits/pthread_stack_min-dynamic.h \ + /usr/include/bits/pthread_stack_min.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/dirent.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/getopt.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/libgen.h \ + /usr/include/linux/limits.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpc2sv8/mpc2sv8: libmpcdec/libmpcdec.so \ + libmpcenc/libmpcenc_static.a \ + /usr/lib/Scrt1.o \ + /usr/lib/crti.o \ + /usr/lib/crtn.o \ + /usr/lib/libc.so \ + /usr/lib/libgcc_s.so \ + /usr/lib/libgcc_s.so.1 \ + /usr/lib/libm.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/ld-linux-x86-64.so.2 \ + /usr/lib/libc.so.6 \ + /usr/lib/libc_nonshared.a \ + /usr/lib/libm.so.6 \ + /usr/lib/libmvec.so.1 \ + mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o + + +/usr/lib/libmvec.so.1: + +/usr/lib/libc.so.6: + +/usr/lib/ld-linux-x86-64.so.2: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o: + +/usr/lib/libm.so: + +/usr/lib/libgcc_s.so.1: + +/usr/lib/libgcc_s.so: + +/usr/lib/crtn.o: + +/usr/lib/crti.o: + +mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o: + +libmpcenc/libmpcenc_static.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/lib/libm.so.6: + +/usr/include/sys/select.h: + +/usr/include/sys/cdefs.h: + +/usr/include/stdint.h: + +/usr/include/memory.h: + +/usr/include/libgen.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/getopt.h: + +/usr/include/features.h: + +/usr/include/features-time64.h: + +/usr/include/dirent.h: + +/usr/include/bits/wordsize.h: + +/usr/include/bits/wchar.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/uintn-identity.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/select.h: + +/usr/include/bits/types/__fpos64_t.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/long-double.h: + +/usr/include/strings.h: + +/usr/include/bits/dirent_ext.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/floatn.h: + +/usr/include/bits/floatn-common.h: + +/usr/lib/libc.so: + +/usr/include/bits/posix1_lim.h: + +/usr/include/stdlib.h: + +mpc2sv8/mpc2sv8.c: + +/usr/include/bits/pthread_stack_min.h: + +/usr/include/bits/libc-header-start.h: + +libmpcenc/libmpcenc.h: + +/usr/include/bits/timesize.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/types/__sigset_t.h: + +/usr/include/bits/endianness.h: + +/usr/lib/Scrt1.o: + +/usr/include/bits/pthread_stack_min-dynamic.h: + +include/mpc/mpcdec.h: + +include/mpc/reader.h: + +/usr/include/bits/thread-shared-types.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdint-least.h: + +/usr/include/stdc-predef.h: + +/usr/include/bits/pthreadtypes-arch.h: + +libmpcdec/internal.h: + +/usr/include/bits/types/__fpos_t.h: + +include/mpc/mpc_types.h: + +libmpcdec/libmpcdec.so: + +/usr/include/endian.h: + +/usr/include/bits/stdint-uintn.h: + +include/mpc/minimax.h: + +/usr/include/bits/types/cookie_io_functions_t.h: + +/usr/include/bits/dirent.h: + +/usr/include/bits/byteswap.h: + +/usr/include/string.h: + +/usr/include/bits/time64.h: + +/usr/include/bits/stdint-intn.h: + +/usr/include/bits/types/struct_timeval.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/stdlib-bsearch.h: + +libmpcdec/decoder.h: + +/usr/include/bits/types/sigset_t.h: + +/usr/include/bits/struct_mutex.h: + +/usr/lib/libc_nonshared.a: + +/usr/include/bits/getopt_core.h: + +/usr/include/bits/types.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o: + +/usr/include/bits/types/FILE.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/bits/types/__FILE.h: + +/usr/include/bits/getopt_ext.h: + +/usr/include/bits/types/__locale_t.h: + +/usr/include/bits/local_lim.h: + +include/mpc/streaminfo.h: + +/usr/include/bits/types/__mbstate_t.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/types/clock_t.h: + +/usr/include/bits/atomic_wide_counter.h: + +/usr/include/bits/types/clockid_t.h: + +/usr/include/bits/types/locale_t.h: + +/usr/include/bits/types/struct_FILE.h: + +/usr/include/bits/types/struct_timespec.h: + +/usr/include/bits/struct_rwlock.h: + +/usr/include/bits/types/time_t.h: + +/usr/include/stdio.h: + +/usr/include/bits/types/timer_t.h: diff --git a/mpc2sv8/CMakeFiles/mpc2sv8.dir/compiler_depend.ts b/mpc2sv8/CMakeFiles/mpc2sv8.dir/compiler_depend.ts new file mode 100644 index 0000000..5a4222e --- /dev/null +++ b/mpc2sv8/CMakeFiles/mpc2sv8.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for mpc2sv8. diff --git a/mpc2sv8/CMakeFiles/mpc2sv8.dir/depend.make b/mpc2sv8/CMakeFiles/mpc2sv8.dir/depend.make new file mode 100644 index 0000000..c636da7 --- /dev/null +++ b/mpc2sv8/CMakeFiles/mpc2sv8.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for mpc2sv8. +# This may be replaced when dependencies are built. diff --git a/mpc2sv8/CMakeFiles/mpc2sv8.dir/flags.make b/mpc2sv8/CMakeFiles/mpc2sv8.dir/flags.make new file mode 100644 index 0000000..4c14540 --- /dev/null +++ b/mpc2sv8/CMakeFiles/mpc2sv8.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# compile C with /usr/bin/cc +C_DEFINES = -DCVD_FASTLOG -DFAST_MATH + +C_INCLUDES = -I/home/dewdude/musepack/musepack_src_r475/include -I/home/dewdude/musepack/musepack_src_r475/libmpcdec -I/home/dewdude/musepack/musepack_src_r475/libmpcenc + +C_FLAGS = -O3 -Wall -fomit-frame-pointer -pipe + diff --git a/mpc2sv8/CMakeFiles/mpc2sv8.dir/link.d b/mpc2sv8/CMakeFiles/mpc2sv8.dir/link.d new file mode 100644 index 0000000..333a66e --- /dev/null +++ b/mpc2sv8/CMakeFiles/mpc2sv8.dir/link.d @@ -0,0 +1,97 @@ +mpc2sv8: \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o \ + CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o \ + ../libmpcdec/libmpcdec.so \ + ../libmpcenc/libmpcenc_static.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so \ + /usr/lib/libm.so.6 \ + /usr/lib/libmvec.so.1 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/libc.so.6 \ + /usr/lib/libc_nonshared.a \ + /usr/lib/ld-linux-x86-64.so.2 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o \ + /usr/lib/ld-linux-x86-64.so.2 + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o: + +CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o: + +../libmpcdec/libmpcdec.so: + +../libmpcenc/libmpcenc_static.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so: + +/usr/lib/libm.so.6: + +/usr/lib/libmvec.so.1: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/libc.so.6: + +/usr/lib/libc_nonshared.a: + +/usr/lib/ld-linux-x86-64.so.2: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o: + +/usr/lib/ld-linux-x86-64.so.2: diff --git a/mpc2sv8/CMakeFiles/mpc2sv8.dir/link.txt b/mpc2sv8/CMakeFiles/mpc2sv8.dir/link.txt new file mode 100644 index 0000000..49572b5 --- /dev/null +++ b/mpc2sv8/CMakeFiles/mpc2sv8.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -O3 -Wall -fomit-frame-pointer -pipe -Wl,--dependency-file=CMakeFiles/mpc2sv8.dir/link.d CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o -o mpc2sv8 -L/home/dewdude/musepack/musepack_src_r475/libmpcdec -L/home/dewdude/musepack/musepack_src_r475/libmpcenc -Wl,-rpath,/home/dewdude/musepack/musepack_src_r475/libmpcdec:/home/dewdude/musepack/musepack_src_r475/libmpcenc: ../libmpcdec/libmpcdec.so ../libmpcenc/libmpcenc_static.a -lm diff --git a/mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o b/mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o new file mode 100644 index 0000000000000000000000000000000000000000..8218c3d6fd16765151634f8e73219a54a61753f2 GIT binary patch literal 9936 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 VV_gfLV)8Eu|G&$%EIbP3{|E6IJ39aX literal 0 HcmV?d00001 diff --git a/mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o.d b/mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o.d new file mode 100644 index 0000000..153f639 --- /dev/null +++ b/mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o.d @@ -0,0 +1,56 @@ +mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o: \ + /home/dewdude/musepack/musepack_src_r475/mpc2sv8/mpc2sv8.c \ + /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/features-time64.h /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdio.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/memory.h /usr/include/string.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h \ + /usr/include/getopt.h /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_ext.h /usr/include/dirent.h \ + /usr/include/bits/dirent.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/pthread_stack_min-dynamic.h \ + /usr/include/bits/pthread_stack_min.h /usr/include/bits/dirent_ext.h \ + /usr/include/libgen.h \ + /home/dewdude/musepack/musepack_src_r475/mpc2sv8/../libmpcdec/decoder.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h \ + /home/dewdude/musepack/musepack_src_r475/mpc2sv8/../libmpcdec/internal.h \ + /home/dewdude/musepack/musepack_src_r475/mpc2sv8/../libmpcenc/libmpcenc.h diff --git a/mpc2sv8/CMakeFiles/mpc2sv8.dir/progress.make b/mpc2sv8/CMakeFiles/mpc2sv8.dir/progress.make new file mode 100644 index 0000000..abadeb0 --- /dev/null +++ b/mpc2sv8/CMakeFiles/mpc2sv8.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 1 +CMAKE_PROGRESS_2 = 2 + diff --git a/mpc2sv8/CMakeFiles/progress.marks b/mpc2sv8/CMakeFiles/progress.marks new file mode 100644 index 0000000..d6b2404 --- /dev/null +++ b/mpc2sv8/CMakeFiles/progress.marks @@ -0,0 +1 @@ +19 diff --git a/mpc2sv8/CMakeLists.txt b/mpc2sv8/CMakeLists.txt new file mode 100755 index 0000000..ecd2c5d --- /dev/null +++ b/mpc2sv8/CMakeLists.txt @@ -0,0 +1,35 @@ +include_directories(${libmpc_SOURCE_DIR}/include) + +include_directories(${libmpc_SOURCE_DIR}/libmpcdec) +link_directories(${libmpc_BINARY_DIR}/libmpcdec) +include_directories(${libmpc_SOURCE_DIR}/libmpcenc) +link_directories(${libmpc_BINARY_DIR}/libmpcenc) + +if(MSVC) +include_directories(${libmpc_SOURCE_DIR}/win32) +add_executable(mpc2sv8 mpc2sv8.c ${libmpc_SOURCE_DIR}/win32/attgetopt.c ${libmpc_SOURCE_DIR}/win32/basename.c ${libmpc_SOURCE_DIR}/win32/dirent.c) +endif() + +add_executable(mpc2sv8 mpc2sv8.c) + +if(SHARED) + target_link_libraries(mpc2sv8 mpcdec) +else() + target_link_libraries(mpc2sv8 mpcdec_static) +endif() + +target_link_libraries(mpc2sv8 mpcenc_static) + +if(WIN32) +target_link_libraries(mpc2sv8 winmm) +endif() + +if(NOT MSVC) +target_link_libraries(mpc2sv8 m) +endif() + +if(CMAKE_SYSTEM_NAME STREQUAL OpenBSD) +target_link_libraries(mpc2sv8 ossaudio) +endif() + +install(TARGETS mpc2sv8 RUNTIME DESTINATION bin) diff --git a/mpc2sv8/Makefile b/mpc2sv8/Makefile new file mode 100644 index 0000000..44e3a21 --- /dev/null +++ b/mpc2sv8/Makefile @@ -0,0 +1,231 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# The main all target +all: cmake_check_build_system + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles /home/dewdude/musepack/musepack_src_r475/mpc2sv8//CMakeFiles/progress.marks + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpc2sv8/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpc2sv8/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpc2sv8/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpc2sv8/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +mpc2sv8/CMakeFiles/mpc2sv8.dir/rule: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpc2sv8/CMakeFiles/mpc2sv8.dir/rule +.PHONY : mpc2sv8/CMakeFiles/mpc2sv8.dir/rule + +# Convenience name for target. +mpc2sv8: mpc2sv8/CMakeFiles/mpc2sv8.dir/rule +.PHONY : mpc2sv8 + +# fast build rule for target. +mpc2sv8/fast: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f mpc2sv8/CMakeFiles/mpc2sv8.dir/build.make mpc2sv8/CMakeFiles/mpc2sv8.dir/build +.PHONY : mpc2sv8/fast + +mpc2sv8.o: mpc2sv8.c.o +.PHONY : mpc2sv8.o + +# target to build an object file +mpc2sv8.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f mpc2sv8/CMakeFiles/mpc2sv8.dir/build.make mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.o +.PHONY : mpc2sv8.c.o + +mpc2sv8.i: mpc2sv8.c.i +.PHONY : mpc2sv8.i + +# target to preprocess a source file +mpc2sv8.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f mpc2sv8/CMakeFiles/mpc2sv8.dir/build.make mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.i +.PHONY : mpc2sv8.c.i + +mpc2sv8.s: mpc2sv8.c.s +.PHONY : mpc2sv8.s + +# target to generate assembly for a file +mpc2sv8.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f mpc2sv8/CMakeFiles/mpc2sv8.dir/build.make mpc2sv8/CMakeFiles/mpc2sv8.dir/mpc2sv8.c.s +.PHONY : mpc2sv8.c.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... mpc2sv8" + @echo "... mpc2sv8.o" + @echo "... mpc2sv8.i" + @echo "... mpc2sv8.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/mpc2sv8/Makefile.am b/mpc2sv8/Makefile.am new file mode 100755 index 0000000..5edadf5 --- /dev/null +++ b/mpc2sv8/Makefile.am @@ -0,0 +1,16 @@ +EXTRA_DIST = CMakeLists.txt + +AM_CPPFLAGS = -I$(top_srcdir)/include + +if HAVE_VISIBILITY + AM_CFLAGS = -fvisibility=hidden +endif + +common_sources = ../common/crc32.c + +METASOURCES = AUTO +bin_PROGRAMS = mpc2sv8 +mpc2sv8_SOURCES = mpc2sv8.c $(common_sources) +mpc2sv8_LDADD = -lm \ + $(top_builddir)/libmpcdec/libmpcdec.la \ + $(top_builddir)/libmpcenc/libmpcenc.a diff --git a/mpc2sv8/cmake_install.cmake b/mpc2sv8/cmake_install.cmake new file mode 100644 index 0000000..ac5fb13 --- /dev/null +++ b/mpc2sv8/cmake_install.cmake @@ -0,0 +1,70 @@ +# Install script for directory: /home/dewdude/musepack/musepack_src_r475/mpc2sv8 + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) + if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpc2sv8" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpc2sv8") + file(RPATH_CHECK + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpc2sv8" + RPATH "") + endif() + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE EXECUTABLE FILES "/home/dewdude/musepack/musepack_src_r475/mpc2sv8/mpc2sv8") + if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpc2sv8" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpc2sv8") + file(RPATH_CHANGE + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpc2sv8" + OLD_RPATH "/home/dewdude/musepack/musepack_src_r475/libmpcdec:/home/dewdude/musepack/musepack_src_r475/libmpcenc:" + NEW_RPATH "") + if(CMAKE_INSTALL_DO_STRIP) + execute_process(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpc2sv8") + endif() + endif() +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/home/dewdude/musepack/musepack_src_r475/mpc2sv8/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/mpc2sv8/mpc2sv8 b/mpc2sv8/mpc2sv8 new file mode 100755 index 0000000000000000000000000000000000000000..11127d2174edc95f425c3f1417c0903fdbfa6d5f GIT binary patch literal 87064 zcmc$HeSDPFmH!M3GO^$@XlPScYiJ+0LyI-3=#pJ%Gcu7UcEDIblS%~(q|l}l`#tx0CX?{m z{p0uJL*}{n+;h)8_uO;OJ@?%E%si17x~q@d?Q;J0b$!RhTur)yCX9*9g}& zu3XnmuCKVRLb(Tj4qor4uP+Mm&v|-P)-a2erBSK|1#yXd(6gvTsn>Qdh_Sxb8UR*>F`-#*Bf?|YOnY6gk8^hI(*)XdX(pt z{R6(YYVgYEm+YyYWDCM#U~?={`dI5+&XLKkM0#S+F%$oVgys}%$M%;1B9mBsh zclNiw?IK$`{zy;yEpyu|+!Frn^{1}QITmrI6(BwTokI57o*>D63j{9&XFHh}z<&;~ z3*qm%2>k3t;0rGTfAb>n-&_Pf_aglN{37r{7lH4;2>rV*0yi!~r_V*;%@?6F=_2qk z7oqd;Mc_ArPA2|(|I4@t{?{)8H!lKz7=$l0?hO}#f8io@?zsqj2s$4c;?*F>2oHG9X)IIBhx25^rKnRU6UvO_~F@)OrBf%(45lAlNIU(5g#s@I(g3Y zhd^fX^sx9f$bvrW{iiOFhtwc0SXIf;y57MQAxMo0<=;7a^0&YB?Qh-Q zoz6)nhbL3F4R_r-WA?+-Z=E)M!L)hPrr-MTyt&g$AcSOM^4vKXwc-D8JMFq^^&kJn zD$^gC`j6DIK3F%f!r+N@1v;lveXts-)K$qcVi3o{b@J-Tl0L3w&{eL7T+ilRKNCyV zRjxW4X8!XFSYAA?wMxB#-`DkfyNsNq&zw1st6-xITP65?UEA!uqSr_05#RBTocT~O zm{6B1!}fn1c$N*%>;-pSuNd+7hJR7PvwFcZ2P^o9UhwF33ZB~wo@>L6-tcP`enD@z zPr(a&!v`q%lwNR${~5jDC%&ZcOM1Z_{>ys79sVnN!57;6SNDRiwfV2<1s}-;5dW6; zhF_!L-hllSEclalzV5pUPTxbE4!e9!3fy)zr6igHw})2XO)2mpHVrolPk}o+ zO?Xxc-0=+wACUsTngIJ>ZVLPh4iHZx1#WLKq_iLfj)|H4SC|67CJA-9rli2_EtQnc zNP*KfIR8pg;Da0>o@FWU)b+C>1%6!$esv0*ez5beCI$XQ2Z-m=6!@1?;I%36j1>5a z6!@1@;B_hR>r>!sQs94=0*|J^Q=RFi6gYh?=U;OQ{3{L+&mAf7n^NFyDe%k`csvDu zA-^L9^@@_mwXd8p!Uw%Zq~Cwv>UJ4b(b7I$%|>{=cb(Mlx_uMCT{pjpPwl2$q?n(< zvP4@K{@vWbJf~2iS@N$k k?O8(ExbIK>`B>$hxb801OCI4^Cb4n#@B>!vXIh7I> zl7F6gPN77JiYMwM z{|)A;+KF1pf0cQfzC?}WuV4wWuB^<@F9=q-}EnVf8f5r#K44rdDgH-6@TDzP0T(t z-Y}0tsr>Q7pLcZ`*5K%eFihqLLGzRNNQf}p*;Sew?wnD2ZMbu`wj`Rip?#NjQ>C

    rCDIU)01Qe&W1~Pe(WvlFm1rie(w$bc%WpW0H zZ$WyI)$Qc+en4|o1{FTx3X*ogEFT2%NO|E!{yYQP6I85EfZ~wRA^Gg8HVRWGA1%zT zTBB!5y+(0;_b~DbHDWUsTvq`1nwMRzXW_tqm96)wL5=R90Kgp-J3{($rCU4n=aA~> z^j3D6>VN`~8+`sSr^B?f|LOYPK0gxx@yplN55ts4ck7^^J=Y>`0+W+XoS3yEt zXGL~U@w9L&s4z-Xj}_g)YRPeIM*D92l6y7-&Mv*dMHE`hM%&UjseV<=9^-FlGa(Bp zpWKyCETWVC2h`CGsMjxf{{M{8O_~TQ6!ZTXqhdZGn z@v)PYRjd5FV-Uu*fYs&h7@c=-+?TjJ2KVcYWj@nW6caH=FZX%=y)nALZirTJ5>0mF zI8brUcO=mCPkT#-A|enzQ)++4JZHm*t(3o0KCf4=?(&Kt`SLgqG>mrJ;&JH&-ZAsp zAqy~;oL8|+KjDgH7=o!37v{0=2~dn3Yef=Lee3QifI8%k>Hcr7-Z36xgM<-BNpQ6Q zHX`Iwi}ndju2~f>I?fv!l*|`kg0d9MxIzYF7Fqa&Q~V{I&L}wtY1JM{VV&TRWY6f? zB16_k8rnyX$o3AtR+mz9*ZjuTNM!M-&Z=0%HdKWl7CfTLyRBU zHHIos2J3Ev(|gj`M{Tg(M+vSKHd7dr0oj9BnV$o$fU4l+R^5*)9YHDc3dR9oQJG3G z63DAuBJVQZbT&Z=0i#*g?YATav8?-5rBSk{UaVrfz)m?%pp<9<#?o%aSg^B`srzr0 zM&ko&yo|rwO<5(`$kvn0CSH~haH&F8l)4em{}hHSAy|X$BeCtGtI&3%>mH%g_7d}i z%8_ejenJ_862(fMSJwon?g)zi{R^NoHDeT*q=oRdpQx-~^iTGiQ1}ghM4cf_+^@^< ztb#u%w_ms1UE=`n&ogqmv@3FHkSVuheK?l}C30yab7_zvmo_w))@Qjp`Crv2>Ze1% zNl(c?$e}B((B&kc-T5P4bO}EwcMY+$Cv$18A(r;%T$*c$rTzC@nrn!qJ(Npx4Y9Oz zF3mNBG816iF^#y}!2P06kwdf)weqth#nN|YtU-zU2SG{njY=+> ziLmv&#!RE&-We&5oI`@{Yf;Rl9se(mB!l{p_~l$$9}@4#rS&24`dnHc68|Qb)`!GD zaYJ#BdXuB_4_w+0>ibano?KcVD*tmXtq+yIm`m$JfFY<+QFLHY=$|#!7p?WX!WmdbZ>Yb)@ zT{}zO0nU4CRliPJ4xfzH2cf^dhE;wQiN9!P(Lhz^QEMQJ=|27+1M1#Yi99 zZHrR1^pduh^)td5JEvakp#|SrV^9&DzX$k_KJ}~gkJ^;Z!znGf$Mt6i;P(n#%8J#c zd@G@pAE`do#eFkOr+9p`zYr3VvS&f9|4-`WMf5d&BD#b2V~+<^2fkm!HOn8Ce0OAgAm`3@3_^Z~ceO!v;$(k3* zpaufAU9f1Q34ms=mBtX^uwM4Ok~g{JRcmRGg{QQL(OKLt-xWMOuFjKl`I;c%(oH;A zn@Y}+e(5S+SzvTC<5)hW&vNv>K`9Hc~`B?wq31jNq|)*2DC%Ku<(FA=nWlT`GJ zA4^$~gWeed6nlrY-esoAv~rS~B^>wYsV9R6wil2AZuf@YvOr7P=WX2mqMPhDaZk6g zr$6F98m`3s-A0(i4<5B&w_089VDIlXD!H_=xiq&z&{)4{L@v!p;o$OfX?<3!H;oOb ztIulnN-oXD)+q$fu2laL_dIHCbUMLim-d54U0ZAg{zERU&uaDaT$*c(!Tm6o)@QX! z<Cnc_U8^XsSccRdJw8;;gv{kRZ)jjX21-dOI4>F0FW`ciOV zgcO07g?Z+e#u{<&aYRkjM=U)^vtA|Y$M;RMjwR|R^i8wACF&>jO|$ML>VqKVBJMqd ztcQvEEBnB?0Zx?DC?oI>9BmUKbdca$AwmZUt_dP^kl^YUp@Rfhxdp_hv%`(p^;6l01s^6x}yIxyG z|0)_z5Al{>Pp#1DgZ#e(XCaq;wlp6djLc@gf09r9KFF~Z;k!~(W>$eWZf%&&G;X|C zFH(`hXvj{s<$x8kMS#8lTiweYC58@EJA>R&4t#C6BY+s4gK!ehpH-TJaQkxqj&KfQ zl+6QwRwM@zaS3;f&p}KMASUD>q5;ID97H^Tn4E){7eHK@gIGjDE^}D`U9JwJI`tt< zkP|hs1UNA506}lp1-Z33M6ChDv>e3F03x1)=m;Q^If(86Vs;KfMh3NGZVqCUOPDn; z2N4M%Zp}eV4j|^|Aff@pf*eFVfLN4+m={1S&Ot09A(y#~=RW>*yp4E}N3l7mXOcwo zHLLMrt=7!<{57@uLCyC3b(+8AteR~(tCri(@_I|fvIs=EgIKdlS=nbuTGi%~mbF{b zIg-}Q*Q39T@W4V>U&=4_mD?-Z4AK^{;qYtM0K3Lu>*u>nOnv^EjA6p$>96YIkrCah zXT`S*9w#_x^lg7tttG#v$JzGCsY<`R-Ww;K*`J+}CTmr$LXkhMr&?KL?J#S0zrC{+ z^5b2$H(AYJJQ;xQAS;4Lh=XC>JaJ?nJ20=Dk>Zt*6xrvrr+Gp9owrHR{Sop=I;N7F z0p&s_Pe(}FE6`RIhwYg7l;Kio_9arXSZbB~9I)iJx?FCQvD0X!cm@zQ69TdN=PD{k z1V*q3uwF3xBxymW(>S1@ZIK09^EMle`gpe78$^gN| zS_iSrLC{ATS68c!z5IzN5QE&?ZGctA02mEA zNjuQw@ zb0Cx`4qID3J~e;&1PA)4eG}U@RQ~dEm-bz|@Jc@#!v(^_HWXa*UD@4~oz0_1E!~hi z$X)JoPm^2ku&lMa6G8SGm%W|rRaTfoV?kD%%W5GjqbyfjmrLD3YI|?0%_nQVCTakx znI&_ezue8*6>iqTi>n0z$qs2a*8yM?kFKZ$`A`oE(jR;0@Hl;Dq#Rz&cXsrCZ9S>* zT#$;XfkxG?A`vq|kl1EZj^s>`(5{3661o^&_Q~)TI7abshRNL~HfT0`feZ<;1!rZs8!{DqshQQ{kRA{-z@U9?dcWr5eL=1985cb8ww2qBPW!IQ^+C_ae|Vh z)k;!W4qOB}KgG2v&~eOFCDiEb%XIw}($>?WN5bo9J&<_AULX&_xJ-?T(!*oq8|7Z2 z0Mw(%79rUUQLzV07B!Qzi~r5!nVCrk=OSCF9qWgAp_oiGNOzPpw-K$Hz?^(fa7~<= zfdY^2P$JXg-!e^yD&RFynqvYqZIdNLRZtR?K1$?8f(aAn_Ut33=TJ?DY6b2YNdWn8 z$hpW^m0vHoQnhU26)0LZq|z)-oev$FbH#xa&__9Cm~xfI*o^ZyA`{x(tsvd`@sYV&cX6 zFuAu}G$&d{)@zS!_ul8T}04icm+QscL+)3TS4o;Wvy4vqg*~yfkb0CD%A-q8B8b5 ziL?j9^DGV5ePej1Fvvy6EPpf*!;czIfJffM#&EZRU^t8GY9N|EhxD?IHjp&DF)S63 zOaeL>xb!_vd^_lj5V&z^v~jT#Qurv50Uai}#(?u^E5tVd>3aZxq!sDMe*4~fPU0}v zrt^IFDndd@C~^fvUm_t_a$h;J(wax`;G1YxskVmpGpS8nqTsCZX>R`HvxB*)I%o!yKJa##ahh`!S?& zLPzHtnHU+2PF(_taI~ht+icJ?;%huGv(CE{x1PgZf|Wy$g6$$CcoJ8-x)Ar<<`nAz3HBBuy+5 z9+FKm$nissTF|l^qd{PcnAj3h3uzFNqHgi936>+t=8oKnX2$FFWSM{18E3{bolf3N7_ta-R-f(@aMM@}@NkIom*Pal3Dw|B|ilK%~0*#cg1HnLhN#qHmD)sir-gN>kxP+QX!MBFRlWj7(w zIJN+Z69efIW74!;NrOw)bDj%n5@XW(+9V&H=|K}1e8CsJ1x6LQn2hjZ&1ZKORUrG-g7iqErFrQ3>T?W3S>rW%G!2gD$#E*pkYro&<+hz4ZDP|9?W41$)PO_@7zyoMiyXb@qQ*82B(62$}6 zl}kEhQ57m@CpYvB#l#omX{{w!0Ssw+z9T<7c{qkGX&|zsV#o=Xq&Q{wuylf@e1FR6 zGU;`SGHngE&KmHDppX*_2Ql@z5IWUPyjwH^h8i}XiGM9xLJ{+R+YeDDj7RFT2%Zq% z$>FWrS)^N>y=-xA6Ms~H;D$`Li*Mp5Fh@3!IVad(dXd>m4cs7`;QBFzLIxznj~Y5| zknQiAWNTK_CP|1N6OxVZn`Bc~(`*UxV?sd*@nb^S65_{%rb&n&6UvbgKPEIwLj0J} zYzgsWLf1%$9}~)#5I-gqmJmNC6p;`=CKQzrKPFTxA%09~k%ag$p;8I)V?s+M#E%J; zNr)d4s+15vCR8mUeoUxVLj0IegM|1op@f9^F`+dQ;>U#6Nr)dpd>!TEfN$Ad<_0Zy zfBVMdqJ85q(j>mZUN#%p5#Li)L;ZE-0BAqk@k~Ir%tN?M(&e8AY&=LN9osQVG4}g_cU_ zRWDQ~p4Zh1N*uxEER{p-%}hj3(YKBU`Ku zZ8Lb;UgYeFIxpv*>Hiv^C1U6pa=(GzE3Y?a$m#L20;uF8f4yrZ>O2(8B!U~ryD!V& zb~in5epfiyEZ2Y(C6@+UL(Y+5_`*(~+(RIj%Y}SLT6*s?*VQZ;Gx|lj7-Pwp4}N1= zeRDrKb;iBf$Xq$MyJaUQKmHw6$Js0S53U(=oS3P*(=l{F78p)SzNX)ZXT7w4>XM@- zIj>*3$eh=|z3;~-PU)o=Y4n9|DRPegQamdPb6*MF98F&O=U>XOLR=g7QD_l8`RN~J zSc~O0l;p$W>MfnV8{?TAVYdN;L6K066FN*V%VmN`gIfRyIWI;XbZlU#MJRc*59^q7 zfAD^>GISjrTa?Tg9|7P&33Kd1n3DmM>ku_vy<;LAueV8%JG(k)u0pG*Wk<8L&t@W_ zMO!Z@De_%0hbd*qyMEpo7WFSsD5uO4KSAE*Lm1uz@-FA^@}4E{qFnPnN#5n?UfwU0 zcm2vVEZ2|+3g!DN; zz(C~a^h?j4Yo7Nhf=H)BZG?0q}xgx*J%U0~g*u?l-%eg=K#$@ZYVwpw? z-SfxH_<6hHoHqQ34paZV*8{qx8LL6B|2r@Zhc6Hb9|CakmwdwD>e1}KH3#{)7EoCdhr12kMr0j(}vYp^2?t`j)2HD&p$y<(A8)xig+YA;tqxob7YxSYe7VZ5qcPd^DV7IdN> zEF+1OW&^QdlLWifB3-O0TRKh3=3WiDhH+y)Z!k$)Y*{r1Hp}82+oG%h*-m_w?I^w8 zLM}H57=ygYwpp_o!+4Ki?fz6O-~%RFZRY_&Wgv14It3}#Xob)Puh>>xdwH>IFW;%f zZen}%9eI;ae6eelVLmxT++ne&y{QRo-|;o9f9kX#5L}kVo*9N~%s~OM$LOa_a@6PR z0An<4Ael=s_#}qlIyoOvZN>+|rzg8|g2B|*py*2E*(tUZ@fE-_m_x?b_!}TI#|&dq zx=bwV0B=TNB4H;9iC~#PM}syI7@4pH5*rORNNj7c6G#daGtG8E{fR-)W1_o>>5_Vh zJ1@|^2Cr8DoB5JoDs|KVh~FvY@S&r=03ca5NZoA%VKKTCLMkML>y8p2uz zHFCc8$aZoF7LN$=X9#Szl?j;zIwZU6PJ+#x0>uQKBkUSzE|v#nbZAvD`g>yw$D~af zM>Q<1hGrF;c7w^LCzdECnar`Tx!!cBU7#SJsOEg+BKAG zs>}Kavf{ZWZfEm1zW_n;&P`m`FvA755kn;vL z?kD)aFlZ{d@G#wEo)FGu6y>-%F~V~TNFaX`v5Y=F?g5_}LY2W{<79w|910rfuYHsi zDDI{ElmX1ar1Z*OdPV$HWb8~eCt^aB7|LIiVJF|@$-QOL>i|3&?4(7Bm%~KZi$>NE z5J!9bb1@AACuZ@7g2l8hDQ^Js5wYSO!|@MdRqi%L3$~5HGQda?1YX&sOBq7aA#jS# z9LqOD&IVSq3vMZvYk1Uh{UTs*VFYcK`{*og}-B zB91`JdLod-+Aj8A{NHux^N^1Rv-#AD4CmFC5Nz@#;3CmAUQG4z7e#H5w+N**Ig$aJ4dBxxZdc*O=U zsuD>?0MocjILTQqWn!M<=Yv!+h6HRhpc{}fO%cs5X=IXKIwiDyB$=op;&iL7*p;r1 zLAr7%Q%VAv#}(9A_}VK@q?+X3q;b?LpDb>X#cpmlC<0$Vdp*!H4;06yYq0o{yTOav z>dHLm()J~-c`z;Dwxuw>p?NTEvzyk*lV*~O8OXdz0ZvOjaundQpxWa*B_8|vfIMlj zfK;A3=1Xpx=zi^AOwoKRX=J$g6>Opkq`Hk_&IW!KXwx>NfUyURyihbKc_B?3c85Rv zA$Qt(NT)QAZw&S-kg=QhDoqO4p|n1v>_BDQ?|Rt+5>!ieXvA)MuuB-jBA*(~Z7rxv z>!S!*!go~LvLUg$d?dDENUW|OsY|o+P8yQgiW+G)JVDoy(y0<+~&a|9X`GSdj+O;sl|L6>Vf$Z_33R z%?vD#f@fiQzYelA1UuzjGKo~d;3R`_hZmPW7{@n&2CmqR(*k61DVfVOk_BQwhQ8Y$ zU}9LCTn*{DWIZXlnoX{U%;e?fQoOQ|6o?K3fy_(8i^k!h-IR`2myu-JY%;l`JRPmB zDS_w|2o|&m$27dq+bMC=`hdwzbju-{p*`W zAq9SYN2a{^*KZNE6oa9hD7C)2nV8L!h(Qqd^1jLDz0jW}-)HYshz-O(m@RpY!%OOf z(+*K&k;%cJTreHbWF+B3IxNZ5>BaO?DO~BYaC^)`PZN8)c*`jE4iGFd$KnYVTl1J? zFd#d32qqEQ5Qw*B)+s@RLL|0XtyeXE0_%dsnn#i4YuS=2rAStZ82L*)|B^(IT~$88 z14o&gQI7-wp5U5ICNC4$hkE!ahv^v)1<@utXm8T_)c?_7vw80%{HDek4~K_Me&(SO z92M{v*r;PxG6}*>gGkQjuAsA{0moTkW3Y2DYns0T)t1_K%$EMc2)u@?|J8OL%l72;9yFoh%etU?`~Z2pB?{{aFx9@57Mg z3?j_erRMetME<>GUHf7_LK5g>QXog7L;YCNI9s+h^{@!F zkmCr#yg-7uET~Dl)ipdUnG-MuR8%0*Ap|BX1ta|mlxp+i(5E!gXE*{Yv1jbIm zh|VA|!4!<>3j&j!f)PbQV6Z;9ctk@Gm>hx8V>rd}6E80<`3B5ROWf1j0(0^)>u_S9 zn-rE1UPUg6GT{sAh?gFfbjd637WcUZiX}IQ;b^04QCRZbYC^2~P2Ocx^o$o;Dk13&Q@qUlLSC7dUMcA?o}`z) z#2@FKmA=E@NBo^8k&}M?6Z1F&mkZ&KG#9n(`Ojk3j5x1j&X}Lvw9dvHdG}7803tsVTV#&dOfI)5Bap$zsoO#RPBZY7 zH(DZFgX>fVPb|nVK{He)7G#=W!cCoEf-)eqdo1|uez=?23lnBfNV`#$j zyi;~}&M-jsV0#x!xv{;6ZVTP6t`s7zHYtORnf%FUb*YK^4h!rUb=^|uI zx-29hRDEzvrCrGv5y7MQ2T12^1h`-v8nC+e;nWdY#7@ED zNOJnukB+uVqRGEe8F%+PeekL0bP;jhizeBKfoPmMrnycX_=p1&az2VWuSHqhJxFq4 z?ml&-VQE7slw9n(csxSLb@A{=95zlQtS%mhBFUwmiw9pD5?_RK&XDuVBP~0dBkg#} zljxtiSpEW##KYz%c!lJ6(4U%^twA&HfI05L%=Tc^V?gkjaR-cXE5Pa2Y|qsaR1l3gR@N9R?lMr&CN~Y3l%S4sgMAw`+`x80>d?4zNH>{dH`7KPqM5yHyZVA7@K>_tG?7(Sbb_yh{y4u^&Rw3nxA`uF=-Rg1-d8Q3DmR`X>zU)XEZ!#Vo!+!4$-!p5*6 zJ_!$(Y4WB99t_V-o#yF&zpq{k9SY%nzdyt^VbJ?PoCe6>EUGEb1`LxXu}2YN=o<7# zct+kuFFUtCLW81`Pj~}m9b)g}xd~H+9vQ%g1sFcdTo(ls)l0$p;r=4EonjXglaE*+ zUhz-8hFxa$6EOY<>BYLPMnxAvGA2iY^&~hl3;udh~ao_g3kbwa!1H#kxd-720Rh? zIV5fY+k^mvqL_5Z6%<`!$2uWKy;j{21;#4^6Pb%9t>TIVg@V_=S5q3Df4kp^F05o7JzQSVpRe=%H)zmMHEduet0k zmDEcQtB;NGVWDF=1Hz1^TJ_wKyJuhxwN%SN#xMogjA_xFY`jiKlbkjo9x-|^v|JMZ zhA_`zyaOtO`9w=rIRrplmT)jo*9220aM`Cw(DL}2y%@;aV2(s{q#NJ<^YV^Vve)!- zZ7^TT!9_^MW;P$gVS49B-H33C0kQ{3l79mQ9|$*75HUbwCzUthWE1C=D<#S(fe?m3 zKD;Xfg#0=Nw1tdx;Y?)l4G?Do1WW_Wp9tEJBd!3*U0lQn9OMN3N3WE}BWlIsOEyW+29(oH#1_2>{}cq=JSKlFbc5cz22C*b+`L zz%fBQ)7XZ$O;(%}#5o3xulsRK2pIW=JzqR4gfRHrZP0aie2Bcup?tlV2+sw;K`eeP zCtVK&@u+Z92dD^$9x_ICwyfCe(o)^@G6E85Gqr=klOZ&!$RTM@!vo-O9l@k5sKFOO zkF0RZNb{vu6c$?j!8^orrf2TylS~Od@I3W=&kmRII)U z7`#EIqeGBVJgr2Da()giMFa;Pt<*Xuw(MaA+ZL&4N?yNT%%Hj(}$7R^r}Wm6aXuV#7{C@E#L zhB!4q(|WWX_j!`Vcr0{iBm-7T7i2x;feJFId%|WnU3x{+2NdW3P4@&oBU-NR34GX7 z_qI4C9E~`q#6O|X_$L_EUsiuci#L7=MrD^+qkX4&C>RA>l8m;T@=y>AMq6fe>T1hu zfpv&(oNaVuR&PXfiUoDwz>I?E|xJ5CAji>A?`U2Tlx zDaV8|DT%~p64MKvY3*ODak3{S{*$?6@RpleEU7`{!j^y|8k1WQ>WEkW0oBm{;h==zcbVQr6S zC0Ey&B;*WF$aksAPfKt;4~o;G7y>(_QObtK?UcBNv^XtH*PSFZ4^N1=g>|GQXde*P zoVpHWN%iP(b3A6?iAJDGwX}OQk9sL^bVsL%Dg0Dii$2~9iceOi64|4`pbapDhct}0 zI5oyCf$dErj%sg*Ob6Zl;x`Wx_HH)YzvC5#-B{Vqw*n> z3oi>+U2hD+%Ne&UV9QcPvJMbK3 zQsCK%*yl7{wrS*00d-PP83~&c*01bUWN$JN7{krF%*)X!BA7Yz9k4S2XQ57tbsv04 zd?vF_$tTzqi;PMsRMRzDvI|kw9THDy2gtZpD~tIk>n)IRCIQ)BQJ4oof{U7q(i9*g z)kCQ#N^sPF%Hv@>eDxZ2$2~C%)yJH^AUck;qvBPJGIkY*9K;}{fkIBurMAXvfveK+ zqjbF%viGZMV%SI>7Xs$JlPquY=bj);ZZ^c%mp$yy;`Y8*dEJ+G#DbcBbI2%F$~OpH z$ADLG{{@=-LIg)5a7mksqct>p)k#a$sC zi;*)Pn(DLBdFdXr)B)gdocrj9);Z2ln#2qS#2yBTna#!BWq#|#wY!z)p zphRO4c^Ue+i(7_A@fLP=bAZB#E(&J<8Pn0S41V-D1@TT`oXS`$-7UHW33DbG!x0+J zWk`4drO#YblWk(=WTjw4YY>=8DHu@~1kYtD7||01#!kVAf*>%#6pUyF0+XGB5tTq- zrlnv+7Z4aa-=#;C0D+k$FzhtD2^^Q4W|F%hUqYU_E@jS}6HXzP>0J;$Ttpie@umAEuu_mqb4X$K^>Irte>*a`;?Cdp>6_}9FlH;Z zi*`0PC{+!5vH<8Lz(?<{V*<{tks%%l#TZcdB7A$Zf9mJ_Q*Xp<_Bs!nza0MZ`77qH zjK2m^Bl;%aFAfgawBN(%meF_RKgd;hTp=|f*z`-WX^X`#&8EE)X2qu6M{Jr+TkP3e zpi2yKv^7gD0vKPycvhGLkKY*bJv}gy41V%6hnyE77GbsasgOYk(jq9ysYN!8t&HX>)mqdO#6b2mJ?%F zEomP+=p&JKe8G8N+iwYQS74-l^(1FO#{NSavMy>LD>yrS&R7tyejTrj^rIU%!mh|U z+PaTZZqT!S`FVbxU?#QZJ5S|u6#DVIR!tki&%csH=U7X(FS7rQmaeg!5FS4qa!$_o zJ=Jz*&9}MqaDFnJ$4TE=c|}u?yNBMVQSEeb!o4rj)i<_fPxFQwd_{RZO@~9xU%ks2 zF#aMfXV$N}Zjg@QM@?w?;pAMOa|{AF>jE00Q#n$+C;n#C*V+GlCcq-jR-nSUXS62$ zGW({^cL_NIA!i>an71CFCLw2UZfEYE+>hyrIq%5#t|9;5b;ie!p7ldHtAcxC1W{35 zSJUs?_V`=5%*#rK&J-r+aP=eSHY6{-_zlatAvpn;{|SFi@N_>m_yrjeUr(g{mdv^S z$G9MSULc(JoWJE4w3}q)xS;vYw!&maX2iKAGt_e2_TM8-Uzl7pzW3OH_Ai9C*aY|Y zhMm13r^^}G-xnI!6?PT`hMgpm)~IQ(p=5;XDd$ZJ?eB*H!W$+8+Q)|5=Vc^|eNf_j z0hE+EcJ*&fLppm4eLZyKA>ZT|DKPBJ%h=yLZorurkRx%zvQ72a%OT%UuA&SjXMHXT z$t|a$_(w|d($6WyPk00$2sxe1??N%pc~IO8Tspg@Q9AN#@+O!3J|#Z`^4nLZQQz5e zdhF_#UE&XfeXl9;p~;Ybz*!CP;c>f#dha|R>8j+VU+-*(~wy3>E}bc%5bxF9#*%H31g`mz5%cZHMF{=6{nS$~TknNjHMZZ8Ss zeq1=UFB#!7*MiKy14I%)qQ$PaDE z8m-h*xJ&?}r2?-({dk5t5*(8Ezd>;!K3r<6KuS`XRkte##3!|n2E*ZNFG%R5k>WNU zB})70{3Gp`D*p9C=UH5*IArMLdjCDLtV@^m`COt)6qgYr;0KEKA2b4f{?x8$-c#{^ zizcJNuQ=UdZfBQnjQXBy>s<3yBx>ZrXmU~T%TeEMXD$1Xx>VVqN0Eu`+j;mvYQBM8V3qbuQp|GCel!7X1-=&fA zH_Qqg{!&U_MUKOQk@j@{6WLvm0skR7Uhn@2`3H4_Nc+Xk)f}HR)2kc9%ih578Vzwz zjwiP7i@a$C+ODUM-O(0l4+pbT+HTX@NXrgxH112&bdCIXc87k&?y=RsM--ULt@f)T z?RQS%QHT~kBbzuO51C-rUkS9fIh@4#TIohAo2g`Sj7%k7Lh&xN)~FZUOc z+;`~br_$=f=*MkuaS4OojNNf|B|8JKf6@M4Q6BQP#ScZ3mBG&=Lqg8S^L@QA)%3`Nkz^ux zan#p4R9_m-Uy;0S(O>MllB-A4GLhVUeS07-(tcwk>b%b>F@~d>{)fcf83{Y@0`U(( zgxd>piqNn8_q@w_TuQjkYAMc1BRcI>(J_l~4i=KPYiv>8K>RR=7W;nR*6H8yuX40k zit>?A!HhCMid+RO;*$y-YQEwwI1FB$@APsn`Bw+|D_Lyh74uML%SmL`KQoF%VjX+w zS2lf!_+r9;8-cRFZ(KJ*BOWk}lScC&@|wJX`M)GJGDac4N`x>YKu#jRly#)MUg{B= z+=V>*BZ5UhK*zY}pdgyJ%ilH!W=|Gph_ub1v9Ebj*pw=)T991xW*YUK49ycM;xDj# z=Y;R1OF*Y{!YRp+qPr=&{Rh@J@0=BBIYY;aAE0)u5o)SW8UCZqxa>Q{fxF_U6Wiwd z-jF{01$2r$3%lGG9x{PDCyac1FD2hPjs6^Vo~QHRgQ5JIoRijnqHDfFD}<8^`;NT~ z5zb!i#Q!7x7xwM*y3p-Dw;5ACC|i}`_8W6TEhl`d3q)c~N=Yn#+ZUysT6Wl;$U=Rf zskp6P<<;STcI8)(E58mPzuFgPe6xhk5pnS}wmYk$bhbH%cpA8w+2V6ET%KOycCcB?*`;YS9vkqY`l_&`mIsGBM zk^R>q#fS1+sC{ilVY{zzbSN`9;rh_j-Gx4u0$s-rwCwQ}wsnU65vtT3y1VxbSCDtT zJAw1l5ydU1FJHAr`!5-}Tt@8WsvrFr{7zSL&6%O<(YXW+`iCkW2;fN@vV3Q$Kd&b< z{LYD%cQ04XhjLdZL(YfEYc7h8uE-2&g`!SHX3H6S)e7eA(aF`lPukQ{)H772w4NUM zHMs!!b*It4He`*Z{5z$|jQBdk{LPV&&Qa9aOy9B4{I41Z zD%BrCvIBMyeK@rLjS$^mIC&dkRKXA*4Ha>@oLPdD1j66BHOK!$x!J7$ZuTtPwVbp2 z$;%BN~cso6)AtfG@-Zz9(8@_grw+)g7u``;!>rrNeM{?=-W?0P=0&h6}9N^IZ# z|B$X#49;igdFxR90~M7o2R>Zv{6>}_eaBI*`abw)*{HmeRr`Tlj_>^a@yIS@0n%Vs z%a$+53$Ig8+}+hlpsRm0{@H;KBL8eAD}O;>%c;+=E(kqgO@yQS!_JCpLQFd=g7Ygr zp5OLnQ~r~dm0|TQco;3gDaejG$NCD)`=pe3GwtzfW_U~UKVju(Sc0PM%|z#%WOTZ< zr5TZ!i&TwN?2bCUkz+?O+_y;&^?gKh9DWE^(KS{3UD3vEDA@|EK^ZSA)|7 z36JXw{aS(8in#ZXkOD~9>GwbWisIPco4h$NuFt@nv{&DOz=9mv+F+%~x7^GdZo@Kb zG=snj?c!KXo0nv$5B5BEAhe$&iJU}mLYNGh{AKi&y@LegCCpD|h!sOd5mnAaOaKEC~7T#wSyHx9JQCr}AKs054e(B$nQ z$_ez#EI7!u&WUice!w}Dh7H`ZTa zfG-HN)>Jqng&H!C4wAVHq=HLHO{@J;-!XR{ck$i;-V{Fxy$c3Z6FznT?3qI9o-hlr zv~p5Sar%(VIHYMIl$Kd24X(t?B-mT%+f5}VcbgjgO4lU$>GF^LgC~VKWf$Q&SxO+? z8ON#OR+HO-JLLfBKQ@)hJ%B8a`&-& z(6=2@Lrymu+mGb7bJn;38+oV;e0G<@!LKC0ulr^9{tTL^fD_jps!kAat|S(*J#ct( zy;0FL$K?ivvcEmfWV$mw(bU7jx4whPEW|@Lv&VdyuS=_JT}g zO6b?3WITa@VY{VxbaL(Jh*M&w+zl{*%BOx|8fL&T$<<>*E${e3zXmh2GjKx4pMwF; zY+x<`2#hER?0`yocw8^K<(cIA4CUv5cCbIH@On!T!|HucCi9`x zJ6ZE@#}2TeYYU9?x|sssRe{&{7*=JYdO7_l;8dl(Bs1A?ChU8!Jg;0dVQ;APBo;`lAAUF%ZhM?@ml5Odwrh-!^yR+XX%S521Eeb;x`-ug^Iq znnQ{_MI}fx_rEvpI0XpGKXOrKdUM?b)>?vBX1Ok%ffA0scO0i4tfY)c_Y=e2iY1@ z3c|iOChwF=-Gf44^knIWrD@$-GJ#}w}oi~OPr0SOR;|+s| z26;^py%(CiL#QvN-DzrA%Xd?yd4D%jsXgs^vAd^2>}WAKHO(%8=XE_uQbCxpR7 z>2rDa9|sYhkj*sJ2bI8+h86B+wdHMPgp)ouT5VWGJx%>-D zFh0?K{g`94;|ve~1@hZRy+g*^Nc?sNb}{{P6a2d?)jwwuo}ze@B27_z zXBx%Nr&GK^FB3QIi%@RD`+ zEB*B<>#YmqyB`RuK{-DX-`zTdpZ@^4JlVzV4w%o7%e^0}yuZNydG>ch=q(vxUh1X8 z|2_QF=%PN){1h|v{sHaq#i58lqaEhB?Qmi9)6Q3iw8KdKcCoaB%JU1D@0*6=8>wC2 z<)e>3WWN8Zi}F0}dFKbF|EYK5@OfFJyROJ(-r4s`YD^u~c|t|{$Dzrpjob}&V!NeZ zaB1jsew&hyY=j`!S+~eyd{7-}0i7(kQ%VD1j<>d-yiFu|0Mf8Ge(@{V8`-^0ne)G! z&koaHJ%GJY6ve)^y!B<>Z;t9XYdcU#87*5)l9aS*mv-@ms0DuG9Yw& zDKoj+OV_<6g%I8OT_Fkt=+3E)rA#)K6hIbKZ2+8Oa|wSU*%V8L*iZ^P&kydbyul(2 z3BCV4Q3}VMWbY;FObE&*RiN+00eXUH-D5G^Z@K{@YMj%>Ce!}jko5J}GJ^f@s&orW zJ(6{O=iX=fZ{XG59eJPWTjpX>Y1v%hqUhlzIi?ER(f(AI%I%l;CKoZ4T?9Bc)+ zP?Qw24K_-u?J?lF_LqvlJ9K~Pptrv?D=0(6Xe@)pq>A|IOClvw3IL}xi>Uvs-K8f{ z06Wwl#j{AS!5TfywMN$ltNF}Ju7>%SFTx}h-E1^PlHoS%@K!gf3vVOlDs(nmIQuKnk=5| zkKo|oe|+iPqr(2jr`_FNh=bYpGLu=Ob+sjWN_$}d_ou~ZvGA``7@$~x+rManjfcW_ z+UEyV=@v6Yp}qf&ydHn+?=OLD>R+8^Q~Lx9JqxonX$!L|fBl#*)S&@QY+K6KHji5K zSZ5yh@n|o!4{uB^9o^gB6gc)0eeHDZDs&fS@3GH)0C$uD7E*=|d=BW>Zl z92vbhGdYW;@nW;&eFbpSBu&~Ros?YAKH(qR_9WL%^hchLRO}HPKN1|%eiZS&98P9j zCAp2{I7W7d@miSHo^Sep^bYM=RPh2{zIc!=z4X&)vi4H;xfTU+1|(|g{!n{T2o1IW z=TaV1pGr1T*o!SEM&mVI?l$+%!KKj5YNXdGDpQ8oIYkZN> zO_&&(%o4v*7t(v2A3%sUA0nWgwdq&OkKR)4}i1QTH%!~NmAFSy=AOR7KEl1EB3NyrYt`Orn=X~YT8{zi(#aMI_ z-xqHB(F+u4d?j=DaXeF-)D(kW)92c^wh2vbu(toPtz$OA559dEx5u6Iofhv&%y*%@ zPw#pfB!_jmdq z>r7@eKp})SclC0;(2M;G08TE->t*riJm-!q*{FC=_R#~^gNMxe)XjMI88zzvrl-G zf3h#7)|_aUR;6o~zb+DC%qAYHtt^I!OjJAD=eWCV07GmjFNNe8uWsz`fysrDaWqlJUfLpd*E(Wodx9)0r zBj4ZF$DT4CR*$`ES#$l5ulxBZey9CB>YVh3RWi%3Qu$R-2w#YdGcq~Uese~s{i3{W ziS_s^n^M6}!D$7ww#pu~|M4;J|4yIR_VJ85oZ*T8=PV?HE8!}!BchmGB-3llk$j04 zqt``j>V}>a6QL5Z9W8A*5pyBp=FIa@@nP=`etNP;XrFt85IRfReb{LF@xQVW#i@Goc|_Q$3`UEbcOtvO z!5o?pB9;bcS9OSnkrQg)*edc*0<$B?=Ziqc>HXaQ`0X++eWA#=G>AI*IUV!u^phwruN1X(k8-Wv;c-1oN~&i2 zH{1Zg{Jf+7*2#42-c!!rImy~D`wl-~_Dv)0WAaA%`26GdT#xB|Bt-Ky2|X4~mIaGY zS6?m6{WzCfP1B98X|6E-$Hx}>j#RZA_a!D)?LA)T`?zH%3$kZ@4~E8dM_P7`ist>k z>1Dx~8LfDhPbWCl;_*Kn#pD{oEIZ%FClSeO#_MV?1Y3o0p2s^Zd1M__gGLwmmjs4*;r|Io4l;%ih&MvBWv{j~-NFF`wZ;Q)#AQ9P1 z>-2|}9r9g%_}KEXP^F`BbNoI|M z6IT6Cyxy_z$ZAN|m$Cq*(Fa#WB&m7BtiD>Gb`=KI7GzNuU@FfHjb0?)1Gt*9;GBGX z+(5rLh0*&k{X{Bh)~HX&j3b+);`ZutK8l!IPp*tFa()*{u817|PKVYH_2?qEer!e; z)jQkX7VbS9HKHf99N&+&hUBQnLLc-T}7-kBDCU0Z)1Q!PS zGbvHsM@*{=tF@dShhIOV9A0Bxb+C&!`0a3>QkFJo(_W>2`rtoAhmZxG8Onbjf}YQ+ z{7?P>-g`Xygf5+)a2tA}H1y7Ja@}~;P_xueRY<&DT%l^(_)FA{2$#=9q3qQ?1lpEO zoXLG*-|2BZ{cE*>^R53SgSx*(Y)eXYq=oV5Go$iuW|Iz*$(a`pM*Tnj@d@!Qd#k_p zsI-1FNjloyPpkOyYu7wol_EK0zi6-Nj6UrQyx^ck1WezW-J;YI(ls*-Fe%i2mr4_x zOyuc0)LymIurh2%}gqRCq$uzP6#!Q^ef4JU6t7E0Efp`Rnstn23c==Jbq>}lirREqykNN2B)f#S(;cP5VF6)}w^^}dO8Jv~FOM6bDTF55z5nRn`gijw$PC&-u#Q1X1TL>l^1R>wBhNZRaiPR~J&&6FbgTuhpikFP^uoYHSbZ zt=GbHmNf+w;pCrP6lv)moBY$Up(oA$HcJZGHvSTN$j~KGck7pBon!U?8AN_|#-E}S zot05mtycd=gq~hI&aS}ez6=JjY#;U?6}P?l*C=PTFV0sjwvFw-17O0@!&!`~I&>58 zV^U-j5Psp)*nPJ~lHdAE+p@kFS{nMEoa^3SihMk8^IWz4TwQT+Kv0A;b$p(5RdAh* zbytI7?y>6OZBzsbUBg5Z>$1h{F5t~D=zV}XK32QzLJOch|Y-IPuje>&drqS62gikRK!4{25f#7ST0VGT z2(P(d9-Vh#2yf(ujq~%v$tTa%m%ji<+D`kn;XCcRB0|3$Q1#aAxj*b-bPlvP8SiEB zh+-?L&!=l7-)o`Co&8VYvWOXJ=~caFt%_v_-{4w0h%4MKyNTck`Cf7t#oeF?C)es? z_J zrWUZC)$oV?KYSY=%ss+__Lctc_w&`jZL8D28W1~9Xi+pd<=%f9ZOJtPw?E7^0=chX z!sM%qR)j8AiGmXxBs=EIC48mje{awG{%`Dl-@oMIBMUKI`ft1V;zjbD$g-^OUss(v z11PUm{#!0?)r9ZL$ruweHVTTD$mXY~Er<(KMn(Pn(0$GrA58a3CJ%1J*Lf6t`UZqDHRi}$x!&CQ$zvSdHU zg6*-Y!u~ocaob@IL2T#*=@QP(;<&Eo!W=Th;TXF((ReX;EwN{H>1&+*#i2!d800oN z6@>%7o~D4?1H5pGM(J}DN#v3bI9%~`r~g(C!8*dpTymfYNlVE?QKfQ(GH2~}_bi6G zQVzL2?!T0?Vmr?WKDpZWMap_n0ELq7?!~;yxo=#$_c7O_ZIfJF>|5HEDrE@=QZL;; zi2Wt7zogh-ABz1G!3wHvP<@L{pqs!`P^`z{Q1k(Fne>6h{!5S2JaVsFDQC!XHKD1l zwCC+PXBRG2lWL`E)O~!hR~_nlDTi)RKdG+#aMY$0tW5>^$4v+)6yAPR;5lD!WUVWeUZSWiq&W05ZJ0a|MDTg`k<2>)@WYEdDrJGLsFFoxt zq{7kZay$=Nm%Q$u`O>P3dExY)+qUbu5bg_`!JO4H=CNG}HW}@KFCeeNDw{@qqJnDr zV*!0$wwaV`<@+Pxzb^2IMxrV=XQ-&+v_FK;5-xl@qtdEZB-NWhy~&v;a-HLnZPaOi zzukm6Ca6@-!`{8P(0?frG5}~#5~%c3!pcXflspHdL7(y8x`*?RXvwFzN(VOH%ijSR zqjK5!fyLh7IRHN&P=R1Z6EY8)*ce1WcdK@oa1j99#|%QFI|6I`*hHiV?n0Lwfh{RLK2 z=4VnMAe6O-!f8IvVUyOCABj20pWJqTP#Qp9%$#%3FznMp!3%B+s046ZfYOy)OzAGO z(3ae0f7F}0D8c23nS1^Byvp_>t&O+{`EPqlrhqbnw|AvFib1;M73nE1WODh5igA3k zvXpexTP{nP>4^v~gjbewTjr_MU`jC(KwQk-@9*wcHq!S?37T5UA@Kdu67NVaHE1u9 z;{YwjdG*;J(gz&iRr;<=!;s?rr5vBn1u$?42)M{0@M966;82bsmvmN&r0fGA!=Ygb zPdZNSR4wHS2H2JxPd->Iu-imo(c8D=0tx@6hn3ZZ9_e7AL)nb{UD7SDy0M2nb`$-> zi+;X+TlG!IK&XrGx(yL~JLhP3dEYyFgR1}U zb*Gwvb{pD`fO=p?Kh$pR53;Rh_V=O{FJq8j#a43YmZD^V&z#p$=}r;1N#Q z&mSVHROZj8s{E&aD}DL`FV6!}^}c|e#8G8imH*^UNqUB#sxD#(HV?ewzQ00Fe4E5lxlJR)BTksy0r1wdBL84xisP`qGOfj##Sml3Z zKWQ8_Q_snmhhMJpm!sC#JWaTVcSxw&%X1s+i!ZQ88HnWl#^3hkGiS~`%*RoO8Me;O zmbZ>aDt<$MT>2N|=un3P^#U0W(B-OIZ=;y?JLe@InJVoX%6qoZf73^W7$e(0F7!u^ zh4Z+qV$Qo&VQ1Pc;p9qRC~v1f`Bx$in2{gAe)ZhB5e>&ud&?-$jFJP(e-!o5Wd1wQ zWPoP0qLHtvl$r_u4m1~mCPUFY0Y@sDz{oX{mT(xwHyu5zX=-oD1kD)GtiMxHWc^_% zFqF~2wYQ81!PSajQpkCB2##$9$wwwi59K`z2}dx`ayJ|u^ll!KY|fD?a!)91!+&j^ zsm7&0V=FT9;NhU!Q}UkjFW8%V1oy+pZ>pTEdE&9va{Oy|EliEo3HPwD)e{__MnfV=oW-ztePqeCdQh1Bb>g8TG*&e_+CY<*hM8BBwdL z_EX7j1(_fTnW-ReOB#uDQ#sdjNh4THFh@dJ8uBki`Q>y=8Af`HBx8Ghr&MIR+hU!0 z-Ts@p!+AXbY!CUP+Zdr4z5%!O=44el84Dsf(M4KLaC_@KT1bvZ3sc20U)ng@!V$8K zr8pn^<0(3oh}3$%$mxkVJ@O5DWN%*)2czBHYqxAUQk2^%QO8~?+S@lpBBGqCKnxJT z{XYccqLG3}C@$h;a5fj`7TtZ49SFUm{<^5^_+KrbL%!QBYxf*0m?$Fcb}Kw>p4I%FdDg?1%(JYMb1ka} zTpc0n^qIN*b>}Y{7ya1_)g@(f{uVdA<`93^@;683iZhc>;T03gRwFS{XzW&)~ zqSycAufKR5fAW6ad*Aui^|kj*ru=5;$iMz4ANhH=crUyDx%om@!}TjZciZp_uhAdl=;kcKi<}K%}@S%3Ai69pj_IaS@1Q_tciRm~s+(3Wvl`1QYwE3dqP(uMys^@%t8ZLcUTekHBpPEY zV^&RFyd2PFjpa3Um9g?l>-$aRwKa*gR$UB)_57`FtVzVIs`|!?n0c+KOT-$>D-t!U zVpe6Wwx+J3DIqU0z|6x$EsMn(tawFvZOmG+tkRlNHEl|jH6?zvy|N}Auc=#ZCsxtZQajUAlGFDTkk9rVFP=DgpF`!l?f}c zvd*elRcWo%3?=gy64NlhJibD4t}I`pIOQp2ET^qBLSN#E%2;EgBuE^1E9z;y)fM%$ zJ(TCl&y`kFT}?$jHL9z>Jys*X@q|^^wDR_<#`2Z1xD}7ZR@`1$BfV4+vuf*C(~#wB zt!1m_y`elFw@7Rts;Qx}JP}LO&~>y08LW_bRK}JyCCY1;HLbM5@@j|ly`gDYZB4v7 z)@T){-YV+rDw`@2^^I0R>TOX?f_{oOElcQ2iTARIo?c;58R;b8&698gye0_Tmx}s^ zwT(5)s|Ch;)3PhHpG=aHkRDN0QyZ(J0j#;aSdFoY`o_xIdIMoC)Sw;p!X{a&?fv#FuNDh%B;b1@@gZ44G@gdNM{F$G>C5zAwBjWKJU{;q^w%B}hOD_pcCRI;$ZDqj|dV_>O}_p+>pcC26CSl&>*)|!(ZU^q0^OV@zKdrOorxA>FlS&hrA zg7Ug65_Ww=gKC_<~`SYw@wb7th`#Jy)K;$my{GE1ci94sSl^*5JU z_L9Pq@tj{}Eu3c+7Fi_=tWdF4vdAhav=%R#JAJk_eR^E_EWyk7n`#(P7yqYQb5~wG zB|iQ?-I}w~&~dRf{d&@?W3>%DYU}Hko7d~Fw-h+kgha9%8tW@!DhRHYtm92u;hKh6 zW5SNd5(z{^+)cXnS{aNgGpZY7jN#hK__g|Pymjrhp+%9Ia}aN(-g0$7EWB&gp|3lHnwu5`JJgLh^;juPO>#+ zn#N7FN@`X%(4$Rt74=QLRN5s7$5_2Jzov3#Nlj(U4cn`$>HK&Tm8)Ug)y*ik7S}P_ zm(|8*YLyw#bqrr?S&RX1FG|VqMJmG=sthmjWO%8O-9<)rmoGz1+jB&Mhed*abxQoJ zR*KK;y847&Ro_%s3C9)FRMz;y#>V zWKT_ny|5lBPym)h<60}MLMmJnN7Bt}Y^qxxvm!MO(p9DRUBViQOyKf z3lR$?qNKWhb)u<`E~6P4;Eh(ae)`-RY3*fh>)FN9%F>RuG&+UW(t!(O)Ww?L1d{+K zEn$Bhs!>lOXd8xpsp3p+Bq6N6uDsUPT9>Sb|E#&?@x=7GAYeA16I)il%!&e42j*2Z zGIbZkY7>wt{D}BvCJe1AuS+ZkJMvsx+muq=hWfa%bz4IFD8M{^q6=rr)f^MMu3u>E| zS&Pc+me-TCa#^`0%~e|uNOApY%9vALTgyOSSiLq;y^`v{F16O&##k(#SWEYZo9Jul zEmONNg8-0P#*kfsGD2Q6vLaLqXyH3M0!o^b5h>7LH>3(3wt(r&}{MzHt*yPwR=@sZvKRH;&Y6+-CpJ??T6nfy6SwQo ztZLWVa8WG-&rZmsj!s>duqzO+4UC-`_TqTVZj6b3B-%1C^|j*xL>G@WGMmQi!qQN| zBD*}nU~5wGAb84G)gxyHvCKsog8+n?y)4H6#OfGz&6)A-yl>kKTswD0PEO8@@g=dC z{nhG3qT%Y9Ggq%(Jp-+K`k$d;&ZvydT;EW&V&=+*hM9sjwx(R>?HSdHm9<};G2X54 z_)=XG*l6l9Gs?_a7ej(nQpVbqaQ`%#U`pJsS{#4(S5%Y7df@OZjVIk(Uq|DWFOS(P%h#R*-Y%5xv5|&NG3N3{nXl~?v9+p5 zUTs_GURPc9omsix$z55vaN&Z5qEB6oPGWl7E$9j%{R(?BQ~;08wpdCw3YKlJY^aFU zRoJ&qpKie8-?OhNl9k=K&M7dX`BVwk|{R$UX z8b#l75mmF=9Hd3-4WWW)b~++=qr;;q4bit&jOxpRue4l|B($XQOe) zD%Z(;V9PFsoh|FYnTh(u)OB`2@#3>13m1iCq|cZx*yN$hTX|z@)3~drd#R~6dwS}1 z@Xd|9n3d)T;&O4Ftj1*WL4q*K8W94rWplMkS(V)*<|~p7CMGNC61$qLvBqgSb(Gs& zvr{;@;+GZf2<4*THR#k))foGJ69Q%}(#@WNfREgvlPt3k3rEzUM67bMPE{k~nNnlZ z$Z;EO)Q;=y#^zc~DH)c1WIA$emIQTmvD&zjJdJ*3mXcW>nH=N4H%nU9Eun=s72P!N zYMV0MOxf|NZnpY5RD!CS#(2WM(o047K#B@anKr$N@U!Z17EYOoQ0Dkx=e$0|*gYzF!AM77L-=HH0rd;NKf?0c$?G!2#?Nj)059gTb+>~_=vVW_pX z&H!;Ke7qU(SG#k;XTnai2j`FMB{S=$UT-VmH`TLYF@F3vzVQv4ttF%v8p`c)Hh9B{*}x#kvp!Q z!mKR`srEC~TFD+-++KuffL#M9HuP#c7+8~Lz)Y6UfGfVK#2&0es&+y@?Rur#{1(j# z*EiJG>pluCL~Y%bU9HUqa)Q>?Z9T7D*$TT5VA_|3o~&xo#LH`^C+erm{@~g5p?uaD z26X;H<{H`eAWqvDU6Z{FW`3333~)MOs!~FqV$B$2IAwUF0A|OVDrDQTs;PErYLuk4 zv(X$SD|I#OnwHyBAKeUt^Fwtxq88nfl@1l57(E3Oiiwei7gVC@ zjWDwej&xU@O`}JLvI%suR+k+(k_G=%9(3+FHB5qN0iQ3}f9cDVUpDn8jxx z7G#AdIsgj{T`pc>uZ$(C>njJ>apjflq?wH$v2iey5s1%#JrF;M>hgrnHJ~z0<;qKG z6DFkkwbGht`OtWEnvT~Z^JKCq2n!#X4xBNT>A}?J|K0VCw4F9vQEHWBv#*no^{KEq z4N?Vj)yp1NO3_XmDf-IJJ4*fVf7v>PE-acmcTj_fi+=qLQ4G_ehr%cXTNg9gx$vMC zmakT6?1jxU`^t*yX?E_nQ5dG#vycEt4O0MH8#8r(!vIE$Lj|T+(h+3eg4v{gb=+P+ z^P7C^eazJT4+A$h>gH3L*tkf~KEJ+>#p@Mu+ZY10)6v{zBN}ZTRYQcSw1Gj*zR678 zJ25yG-Z(U$i5-EY_#Nqm+9lsDD%PqfN$j1Zr?UTvdS%QrrlE(lv+SDEGAr!4D0!OB z22FbY1+rH&cj1D0LmF!sQDiJ=VuaTvU|Q|ttFD}8U-c(5W}8mX722%XBEspM>9bSX z(=>bbbhdKnEgMZyrXD6(u%Vo#w4xdI|8DP1;G-d}5|R+^a4&Zd2uTPKa_nwG zAY6e60kIxSNH!#rW6c2p5mrHpib~ZgwjNQ@qV+(f3IsIXR;|TKJzCMI)Iw`3T53H= z_W%9PvDsZVYJbQ7_dhcEJo~)wGc(W3JoC&m&&)gToAdaH0sE-5JuvZF39GQHCU$0(~t$KkUR#dG1u z$pN4o9=T88&3@Jhuq45u#zQ!4mBNj+U|Xx&XLUV6J^`YF!!z=gD|S)j>r|f^ zgGB17llSBR24g29Y$eDY09P&AV7MD`$sGWC9eCu((!P%o_vpBl&^05!9RQ!&ur!|< z!4ooj5@%OP)@XWXjs8Epxgp2Y4CC^I_yRXz3eVdleV<_|HNn)2fq;nBHNwJx`arcN`A=!Z#rk%vV%p3jz4YcuOR z|D&&P{6jTd{+89sm6$wOqgN^Z8!R+_&Iam#z{aOMLedo{X{>Ri1RKTN)9?>xaq=ER zvB(XTCQA->){|#ga6W}kv|!8CDHV9A7G0klOZvr4rcP6phWMRf0V~ZXbsDy+oi5BZ zOrUE7(}l@~M~v26(!i-i9SKm4)fG&|4ko=UEmuyxQwr6-umw96W!yCJdRG6B+ferI zhbiH^u)0ugF1-3G7nVUy4X~GRndR{z=n9u(77OPH?D2Z{zrD+CB;Xnx!`<&-79LPQ zh(4?TF87%OyIt;SsAF8RV62}|Sm!nZ9<>DJW%$&nUhm8x>)&}BG_y=2e+(P5k*}60 zYK4LXdd1@7T>r=o_*K-k&LD5);S00&qSsW8MIjDFm35{wx-1_oXth)0xwvHYYWh@3 za7EyDS}Ll#`FFQJDWszmyZnj#G{0Jh&X8mghOUQIhiwOli-SX zo;8zukLrAxms1sN^n%a#^%xx2~=+g!PdsnG=wkPdA^W*WBPj-0jH~`}v z%E~5S|Dc+iNuA6vW$DdkHM8geO@4BFSUoskg?L+8GZFiboZWO~%=kCy5o2l*;PWQ^+*gRnxh@3c0A| zh-s!p-70fjFL&9v?dqNK$IieetL`Q2pLXV-r1xge&X0kMr5u-k((E`(ph0@0-&fvd zg`sPLoleWS`dK8VCvOF?wo&Ec_^y#L`;+Mx6&7pbDRY$Nc}2~=PGn?#apX5JUvc50 zAI^tE#ew;_8>)=;_msD4oo_a7E6Z(3?~XJz3J-itC!5`ADPz_b`#;ru=TefBXU@#D%$;N5cJpK! z-lUY2%!yd;az7t&ljWsF@86r@AobK7IM+RoodG!Hd;mbdTy{H@4x8GLx`lmedV8YQ zbsAFL-wr69Q6Qs#>c9*A0N>0~`^xgn05|z@xZdP1F;7g+?&C}gR0(yQWU=z1##<%5 zyRPb^57--i`Z0lgDxe<jEC?Ku*~t3v{fu20L%` zLvXf_=XQhI(^S;oS%bAkDO|2$Pd>Sl53an=t^8y} zxu8j9FuC4-^VX33r0I~yP!m2L85&Mqm~xl=wHy;8a556_{CLm!;}pj>J`OT(!=K8@%qpD`?f zk0&Q$&r$BX|+LbqZ|q;@?<5w@i{ za5jH9x{YuS^l&vP_mREu-<-$@GTQN$99q#+$!sj&!^0QDe%9@r%lFx zTb{Ngy1*Y_o;Er<1Fi{)amlrYk7KlDz?|SvmrHUa_wZCgO$M|PbX$tW>>qQY1C5gi`T#$ z;;^)OCV+(-&I4hWhbLW3`tf|uHD2zN$u}A3E6Hc4>bQ+M6oV4H=^6Roq%X%P`Y+P^ zKet8wJDk`Z{Q*awaio@qyXr8lPsRIDQeA0|CQr5`&6;3IojG&nMUU zK7w~l8BWUHCUMgrPJUi6?O!&$s*mq0ROA}T@YQ{S4Bzz6J@dd9e<)m4r1>-}Y`@Ds zRfbQV(JAc`+douTnDj1v@6!2CS@|)CP(Va_@9Eix|6r?0cRyvn@=rE(|C~;@QsWf+ zqHb#mx6f9AEVIeQy__GL!;xz@k^bMki^*ZtYr`uh)W+r4Y0ZS0m` zJ{fcGG272?zoX!}KQFPz-94z`tC_9#`*PpQ8(cRs_qL>$m;U_ThTN(q>y=;S{w8-y z&CebPS@*}>f7{AZPetvqS3bAlft#+HpS!(%b2dTM?`mEDow}aUS`G>J_dK2~f=XAZ z)46RY!he%R7(9O9jnDL7X?s0ubNQXkYjyr_o>A$)v5mOuTI88KONgU+qWKoQ-`i|Y zT2r&A|04w-eLOu=_w#M!i!$BMsD3|S8?fv*Esw1UwO`f`2{+tqyYPnR{+)E;=Sb(4 zp!MS!wNk?(JslNpM6Gd+@7@b19+d9VT@fOk+1n~wJE*mYyWoBC5IYrS^?e+ zZJJNGUEYdO8Ye64zFVhDvzN;dV;^zV-_PAYJWi(@tZ|X9myxgCw(g5_U;g@~TXp^u zwqZXh%ldHf?`#SE-o5R$6$fmEW!KIdvv!Hi7W&7pAAfg(ZO7Z^{xSTE(f0jWYo59& zYLMb``35}+Z#|9yxZLwSeCauGj6T+ z&IGt}cix@KMO*CD1x1tZqT?NLZ*b$v3n2kP;NF`u$iO@F0rmf9fn%MG zo`fH~_>Z9b_L8H0l=R%Tu*67V?1XQ6{4+p=Ry%%dqU^?D-t_$<#s1;5p;PIzO!}SR z--pRXLN0#n;^OQilRmspr1;(Iu}F_sro`O5P$YN+>G2Ppm=x((+Qo`dQ%(AaUXh~T zBQL{d#3H>bm+AK-Jw5=0;6nOlyI8V6$E1&pi4>RST!Zwd@)*bTlzVSeE3Vx_1LhM0$ksCVa)H0JkwuedIoQL|#^qEM1TBdJB`o!EY zd+S9iy|BkcnDnkZ*f*IzAL;)o)4z-KDY@a9JDr-pJucj&x8#+VkCW*aA^i!Np5t+D zZbbUZYRx~lGkr6@IWb74KM(0Ymg&RuAkW;$>)2;yOI8_zrv*P0?Qm&BO;{JJLo)cX-?Y7r+wP;VA-N19#wh1!zt9uX3k)D7sr? zlg1afAuXC<@4utm{*Sn*-1~odEcdeFh*|l6-je_3?knfW=0O*48F{^R_PeKYb{*@R zgJ~%%eM?j3^KWj*VEpmj9iATx%kJy&d>=Rv?+cIMo^X{0T^~R6;@B6*{$gy>*sI6f zHu~{V$4B-bIn|OgB7b=Pu!5m0hFmiEia~cKzA!L$;IaXC_Wx_YDgAczeZ9}{K6Sm{ zPAE+HL$4*hu8sdD?y|TyW3yx5@439^D>18LM#Nkl-5#|&sxa!~9#uX57I|Z2X5@*8 zTOx8IJ_~;&+!a1D{L`>U!`6i@3Of<{O6YGwZx6jZ^y1L`(21eFL%$07b4Y8*{UO(f ztP6336oll3WQ0r(866TE@|Ac;JSlDzYebHS6URKwo-$9Nr@!aDj(a+4J1*$R>xk?4 zto>xWr+rMvxg9Te6ndh>YvQJm{Lr@0OT#+Ct_=SqJU`;Ph?gVQMMOkA5Z)u=^N0;S za-$RDMDG**jwJ3M+HBcArq_7$*Hl)Not8AbU#}Sa>x1tN%D*sv29m;VbOOJ(qQ1G} z20q6+c3vO)7SPdz;ppHBCmKMT zg#UsjZ5jWq!Z5%X0H-BRvI_vEfX#ref-nDYBr;|2zXo%kgJt0V!v!sa6SpY?mq9|H ze7^6#Q*L17C&ys-Mz+2f{Q&tY;P++-l)I6=k^ju=Kgl8Rdot_`@R0p6cHWISS8v}g z`(@_!rHEgM_)OVH$eR;2GMxFcW8Zi=8+o$F?Hkx-zZqe4C13U-Wz2pwa%Nw04Z*pI zz8L<2m*BiM7%&tt9AE*A0*nPD0VV?2-&`wA1K zfXe_^0d@jz2Rs0H3h)x(9l%LIJD@Kb!1;JCU^U=cz&^lnfCunHfk}-1`s!C;`+FiC zJ}4x0tv7IA0KVBSsMmu4Ljct85rC0^(SUJ)34lp}DS$MnAtcw!gdC zw*0xxwi&63QZj9b+`}B{SY|HQ1Wc!O_lkMhVn{2D!zTD=x=5pH= zGcULO{*#Tig;#I1otd!F_Q{Kv*}^Zn%vSpO23y4C8*KPehHcC>>unE2ueWX8+GIQU z?K<1ys&%&c@2#~xn!DDv?Y>6aTj7niI~@(S&wf*Hd!a|YZSt}@+vGbhwY~na%hr3e z%NFLSwLN%CjVA#z8``w0o+p}Y5*@nN7Yx}a^Zks>QW}CV{$98aew(avTGi}Fq z%(UG+Cc|bqINi3haGLF3A566^t4XuH_+5%^$xo-)VtOar&g`0Gn>J#i?Zta1*ba>EG{RPN(=gkWJ%`$wuN-XK|8=76Pt^l${XXt* zTeqyAE#Z|uwl8M(wvGRFFWd7&;%#qT8*8ihF2=U=l4#q7@Aa^~R}g6%^kleg;+Qbo zup2|xX4Ox3*q;qxHQfZ?Mk!bcc2H;A^bcF8QhTmp5#+R=;_LH6vw{b=%8L*6%9nt*`Z~ zv7Yl~VMQfv8&i><$&a=vv@pJJ<9EVed&JI{KNm~CCt$8LQiCCmEc1=Fp?H>FzN zd1sQfdP0&lfBR_bwWo($Yib5t2Y=Py+H!4g>*Z78tk--LWsScl+?sZ&u-fkYI;UgZ zshoe+p2(@%)|T^B%ey%v6W+}E&z9fjTsiQ$oY>b6<{Z28iJYvP9?GfOb6?JHKDaYy z#q?b{w?6u_oG0dAoAb9GSLJ;5#^pKrZ(W)*by#^$#=}3!d49{{oLP70=Zucb%z6Fs zDLME4YHUvIUxwtYUehP1PgZo!>SB?zsrK{iKfU@v_BAbUWS^7wO!hLz-t61^-jlt< zadY+~vwoT#enn$;^urfr7snQ4zj#+_c1p#t>9Uv(9kf1a2@dN8^6F$$;e}>y0F`e15}(GGUvZ1n`?E(-6tF{~8g;f%l=pvEcnauKS`B?m}g&!K4xm z*o2SA+=6m`f%5CJ(1$6g_h=#hg%8UN1Z_J%fD$CIOv<0_<~7($xt{?31_ah;Hi)Od z`zYGC9UrB+86T{1q1-JfV-z~z27FlM>+^+Ji~CrQ5cj_TdAQLo+%JDCM9jlSR95~2 zjJgPv0n4TQSswen46qOpEV~}E<9Ay2Kmj*G_~B^lt_su{8Love9&W_P4!;Z$>B#UP z>hk1eVd6r2sAy=#w_Z*~ioZS|E>b43b>AO`BARlb{Mmk%zYE!pLGDFR%&2rB_M+XB zAm5ZX@r5=h#t~S^h!vcg#q9D+tQ}96na_Pb3`v7a=|!9wwgLiu5msi$R-viHjyg zi9e1QF8*_4g82OvRuT5tIPvS|9^$y$0ggW$I3_s$#sH{)><`MH?PvM@(AIIcLO!)2 z;_WSA;xziUE4wx8uMOh$j-87g8%MT(AV;>EjtLPf=hcoF@tWbyp$&Eikb&JZtM z^oDp~$24(4&IKU}cZ~;!A0JSp)We&BIsT~s)Iat=<iv;8bzmiz+_0%ia>4-pZOk&!(ZqEv`B0X#y(5z83RVi0;V#L5r{3x&Bj zoY9Pw^tiaVc!XXI39=4h5s`>ztc(IVA)z-ypFZeShOh`3&uB)^anqZ!M%{{8z8fL5vy9vKxamJ+9+)_2@ZcdseBxCCFp%-!J$T4aPA{Dyyhlu|WI*W7 z5b=|&5OHF2i1_69@X6qNJ#{M@(nVk$P=xG%%Af6L`M0Bd&N(dmIw;&+DA5YoysdLl zM<_(at?)Zx^BPBoh^5zrh!^5Q#p_RmishIW=Wh)cyPt^=J8V5fZLerCC>u<^C$J9G zf9fCmpYmt>S$+iu!DuMS^j5-;q$?#Puv+Q&e<3)VsGss#x=zX*T4D-$D|Qr&cjp0 z$t?w@^^Xcn$ll5WaQspKDFgOD<na*{;2=dKlVT6&-SzYp|d84ht6Lt$}YM|?8}V~`7Z59$mS0QhD~^7 zd_-JvCDr@C4y*(1KZcvMf3!aw{~UkRf9fCmpYmt>S^kPA?i7a-(n4HIvO?Ef)ieBW zrK5ZFowR`B{2vOe1I(Qqm$bjMf3!aw{~UkRf9fCmpYmt>S$@;Vvd|OtcZDzg=E10( zi{2oM|KY$oaQ@p4p#7))rTwG*;rQqHqyAI>*#DG2+t2ck{M8yg`lFLUW`O^$I;;bk zaQ@@`L;FwrOZ!Lr!|~7YNByV%vHvN5wx8u6$?IfEI--!fFH_=^EKxx%Eid~hYU;zW)`g2kv;}(iGdCfqM=98 z;1`YgH(LJ1;I}6r77z!(svhG%8sje-`X3GdGaBCljuPVmeR16n&>t`WFc6Rk7z7v$ z7y=jy7zP*)7y+;VFgxPA%F*z6aeM|<^kpd7629k3IU4% zivdM|a{)^LO991zWq{>?^8hOV=L3EMxBze=;3B}q00&?tpaifAPzopmI05B=)qn~> zCEyaka`ei1fE9rA0Y3p;0Jsov5#VBg1F#ZM0$2qo1(X4tfO5cUKn1{xUbX=$aeWD3 z4WJ584X6Rs0$hMg0d;_SKm(u=uokcm&;(cy*Z^3A`dtQG1zZiN0n`FqfJ*^&fOUkwPQcFqHv(<~+zj|R;10lx-}mwHQ`jfT!fLuaF*v(eDmXy|M-bT%3~8x5U}hR#MqXQQFB(a_mw z=xj7}HX1q`4V{gK&PGFLqoK3W(AjA8Sv2}A8af*dosEXhMnh+#p|jD@*=Xo&G;}r^ zIvWk0jfT!fLuWajW6(1(s2xW#y~&=i6Fo8Rdt%)81SLlP#sbFy;sG41y?{Ah6M*S` zg#aRuG7``O5Cx!RU~c~P##JnEAK<=#et`af0f2#kM8F^b$Nym9A@Vu~wjc(!fcX1u z!XT7LyD%7d2w*5+7+^SH1fU;k)gLebFc1)rn)U)D0D8+>M}QiRzcBoTqAl>1@EZr{ zgZRFHet`afM5G)97z`K!uz>$az$n0Iz!<<-z&OBoiKBn8??<4G765f%B=9J}Xuuf2 zSim^Ict8?h0w4~uj0c>9>t4VKfZl*UfKb%DFECpGj~^|Fg|5Xw*J8Z-H5u2*fGLs| z1D%V3&c#6I*q_npPx$G8FhDrk5CMn;^Z@WL8bGaKPsak{0P%ocfCNBqKp#L~KtDi# z37zr}l;Kct9tIc=7y+;VMgm3wMgztG#sbCx#siW769DG`CITh_CIgZIQvfM|aj5Zl zKoVdA;2gk2z$CzAKr&zoAO(;LNCQj-qywe_rUPaGG5|9HnSd-nHXsK;JDG}dXe-lz zrvlOe(*V-}GXNQYnSe|{79bmt1F!;Y06QQTkO!Cr$Op^@%mEYt<^tvc<^vW020)Gj z0f_+Wd{_GZLpqs+yb}Q7=t#ndtwJmy4iFEB zfy`(vVgb}H)*=$M@g090kMufv0^$&B#%wR-PXP1=^Z`)k`bwI=-Ua$1#>V;DH2Np> zON?!!UF+2UDCj?BbhiF;B+wJ`ZJV;Do$d0iGwqDAC-G=cFF*pIH=qxoFQ6ZwKVSf0 zARrMi2rw8h1TYjZ3@{up0zkVJXqyIrHV|Os>?^D98?$Dto8Iq~fxit1N1MaIKODdw zi_pL9xd?!7|1lN&u!l?&3CzBx2g!Wuj`rki9gKqRMZx~CEXBc;$5Kq0EYFmoxKLj> zYtib3Lk8i{nQ+Kj)uB_*R9#dZdY}ZXiBTT=x-;}Z9Y~J^L;%78oEy~qz;<$u2m@VR zF`cR}S6d-I`BWO;lx!96mCTr*jV{ra_kcb|dUcaBHTpRSbdEpT|G~H(0`S$@p|~Fg zFmnUv;^DX-A?XpY^^vgkoLf1jm4Y7>3dQ~>668w&OHJ2d6k742y8+8IHcnmHxc*rhv_rY7vdZ}2(-a~QHY;_`_aHd za32PKLxJf#4+ExFg-Sa8K}tsX<=j;yZV;52$ODF?~tOmbykgrhF;Wa{yeQOa!LB&~{N@CgFZE zz|6hWhh*GO0Z=bE7t_|I;GTM!3Y-R*3ZR~G4EnBfI1brg>4={Om=55&hdMt4*YtBU zfVmFh8fYf2GXYruu7@}VhXQkKa9zal+*RQG69Tz#-twQN)ZC+HA2t7kfD`9B&bhRI zoLjgCH0!$HW%L4H&aMR77S2G*+Hu6uN~)R5e=W#S>g$K8nM&;?(L&JX8Jo=6UCphW zDTB8|`5ek8pg%%OPAjG~TJ23ycg^~hHjMU*wu`$~%9>HHm6cYOk?l~{nzI^???H}i zFEx!C-3$4@e~a9A?WJZ3wKnE>G-J@n!B+V}m`eGZk+Pl2_cA_&^2TWY zIPxiD_ANaM)!(!T^uvt*Wmf6NHYjPRJv?7|`L5+nztZ-YKIapM5I`uv=mTX({SzqB z_%+lo_NDRP*te{6sQhCL`%ZaOTz_+?5=STj{NufUFm&p;(qHO3b+}W1X|Fg>v3~4B zJ{1U&Ks_gKRl2(N9RteN1-6Z2Lh)B)OV!iAUgl2KPwgZq8L<8A73HZaJs>~YZO+xy zC(2c=*Nv<>hS&yQUG?u1dLC+Tmc6TboNYN_4AQ$4gVb2-Q zP_*;rht7Du#^(Lj$If`daliHPGoF0l{3p(MDu9myZ)LiDXFLx9m%VYua|U?#+h;rr zkuUw-GoB{q|MMBoE5Hqj?Vd^4$lp4s-Ln#S-{5x7&A|PJwR?^Oj{*J~I2||^L#KFn zyC)sE40tZ^ao`Jqw~lD{>>%CJ?m0^O*mjQveR6bMyT=XuLQ=cu2ypu3cF#~OXO5<{ zd#Zqs1G|C4Q&BE(I`AIg2H-=$M}dz3pPtt4;kk&@^V&Upe%Nmj$^#y=y4~|W?;vwX*Wo!0 z{6ay8XABVR6a$Yb>hSF5{gsFZZumL=S1q39l|9nonFO4^x5HBf9R7z6&mrKW zr#d{bc>bRM1^$mMaQc@Wo^;?br#n1zfp`DA!*e0A>GA9a-rXP1{ea67J)TK808*Cb@!Sj?KGoxS0XQG{UEtF*Jf6>h8}RH9 zj)gdy>+#G5KAq?BlmUZ<3?Unqh>)g)kRh=>qWC|TNgoPmdgP2}98=`?fHY8VKsuo4 zzB8T#=&^`Tm=m8kzgN$7QEp)yoORCBF{40*FQ&#%#-nFEPm_=vpRgr#PW;Nyy)p3# zx$#lC^s$9-1CAoic3@Euzc(bbA%>AG=XSu{y=OecDsBzpX7_Z+6eQwI4d4Yp8`AxD z5H9lK6K)8d9iMo8SYf>7y6}1NNjoC)<5RXp&Wg|2(xV{$lsh!+!O)oajNJH?-1wxt zcuQV%)-ry6`+Nzg)!+>^6i2Wj7aU4WANy1Aaw+ zIOF*#F!@~{nj4?EB@DF+TO1M-p9s;Q^n#vj3uV9WEoEDn_PS7%y(26)-m)zm)!l-& z6rue|Ab^Rfci0%T$d5J$g--&%Hu8fF`cpP;P|&u}S#gp1H-uduzWBO`9g$mlguN9K zgFZ)hz;A`cgx$OOS7$u`WZ#1Q4)j^#HkQ97ydZvO@6c~!;w`gGopXCK5B~?Xy>Gjx zr*7X4w$GbquRZi7U>|v`R+zd!LpqpjCP?^twPtw44{0CwcNK1gt9^*r!9*zOc0@@(fRqAm; zy!)KckD$o;@lmtb&F~_ii%6FUyY9oKn=K60GQ_Sb7IKUdg#j*_!E<@US~*)yOYhcE|yglomCpzAu>F{Xozw}PIb@htXy)zdqPJrKMm?O)9 ze^7?5uusYD?6%L9dYBIRC19St9P<3Zx*Z9*JZQ!8rP@fn*$RFuF;BBw7^q9TaC0GO z=3pvm4}n$z8f^*#X|14b1uaWb6zwQzdqG>OX-t0tv@@Xf*6rUxo!b^RkK?*Fzy|e$ zA8~3@yXQ3Kp+H&94zz#GcZY_prly=d&}dU=cFMr7*^YTvmwkN@o8}6zUviKlFLhxz z^1JgPAFqAyQvVC$+rq;}_6{m>R!8c>Y4EdO)b9Djt6THB(yjdXogrb*hXm6s^ac3Y z;aeTQxZOj$tz@-;ycTmz&84h5$L7lT6`|+FubdZOF)!XVC%$QJygTG_(9VxvStM!m z;+yh7TNJD`+5adjV`aPNB#L5ygDYA=>sJEb3H{6RucN)z^96<#=ZlqL)tI1?Fdfb{ zBW!k0&f#Z}_k&n5n@{S}LYeQ^ z-h8<|*ZEwdJocpvdB;@1_tbf>4_z3acpc}~9pMY&leTfL-Vz!5fl>$bvo;B=11C5y z1-z)&t>9M-A9RhL6Ly3`{@W=3E#YAcLcR4KgS4L^?JoGI*Wp^tg^<;jumafKjWQw3 zF6G=0eyym2zs))#P|iu9O{#A9aIV9_V8|J^(|2AD+Xs_j0TGdN;-m0dhYYm$Wyou< zZTIvczxkX~=d+G5d64rLri!`Gzw|oh4!kwbDWSfs4k`*TYJE(^B8V(Z;r)!M~wSAuxX;XrJBG?%^3;>WtRe1#(=4 zDGqR2<-1M!%ztyc=Nh+4`#t_iL451s(6F5$@vj`lByi+#Xy_VV=90XDR|S%|&r1yZ zWJD)@?^wO@Sr~IZ^><6rHb$Al#_aImZpp|Xu@O(tW9NHAWr$^Yu1LC8?+Cy+z7#~Hs z=OazZ?H!(H^;q#;v(2I0q4f!2_o6j^OEf8Xwqq;ux88yLBXJ|!QRvkJDVMpFi?mx< zc*KUCGa_h9=;}(j90fo7Gaa5I!wtW4$#1?_uQ11Mi#+{cDqJ&=mVuw4A9Q&BDk+M#5VWsBJ3%=hFx^W09BsqihNe-B4WQXS#(oJCK}oiR zUII&^e6yX1D@NQ`Uf){kNU%PgkLk|Ix#eunQ`z13!7J+14$nd|hg{`&(7p!Ngxlzw zZNYl6C~O>NJX&2}2ZJkU<-cK1%@^u)Sr- z--i5n-AA|gT-n|X+`18W9C457`CR)I@WHl)&!X-W#@j=GAD}syiRU8kA>^&VzS0i# zx6&Kfcs<{B?o-HqE`Y4A#t;s&LYmi;_23@XL&D>ErmK2jREK^XP!BA9%aAu8c~h`I z_2m!y=lR^>IT5rTu-f1DMGTZ3#>#hJhKfyHc?jjaGSs8i&FBa1uS!2^PJBw}S|85` zT`%58`ix;758sDjAng=rWuQIGwFm-f;T-RyJf01-O9-5^X#=Xpdps92-9p+H_=>)3 z?gd_36*gFFk8ho6_gU^n#BHDC@r>1D10=!X7)MgU zqGkA1XZ3xONLu$#w*B>H7-*Nz*^p_@u^9>-?YV`-M8+zw~|4pH%+II^CBVf2-po^?i)S12i6{ zagxUA8fR-fTjK>9_tE7n)Atu@T&{7w#t;8l)u&0{U#{_Xjc?HS=NjLu(-&#{q;6lc zj=x{y$25LUum2{=3HQ8b@hH9p5i!?r8-%ps?xE>%8V}NV zgvMhvo~&`Y##W8zX}nD1a*fw%yiMbs8sDaIv&N5VykFyIG=53rH#9z~@y8mU)c8w{ z+cgf?{gI&YK#eULkJWgh#;F?HHO|zyK;vZ^J2WoSxJKh9jjz=BI*oT}e7nYbG=4(k zLmEG?@ozPLQ{z8t{Hex&*SKBdXl)1jYdk{ZWQ}t)o}=+XjnCKEp>dhU?)}PE@6>p& z#%&r~ug>5tUu&tqbuko`Epn5vK}zpF@-7`36SF%`M>nL z8o#9R+ZunW@mCs0rYb%IG#;n%bdBd|yjAD$+mtajEkSjubbEVZtN%Gw&s_{o#U){l?D zz)t8lJ_i;Kr*HAi$Gd)d&m(!47pr^H+&0=S+5=*aAD#y__6)Z&Jc4C420%@Re7 ze_F>M&k!rmNBy446hBGG5teK4QO7F~|5RtZyD*b&aF_PV5wBmLC3doYdlBzO{lUM@ zhWho$bmzwBhiv@k!daN0pU5~cEq<`fcOnM z{xRTrGsR9vi})}E{e$xD#fZNIbPMv|3w$6$xUOmuF*qB&|2D)gMEu1%{zl+^Pl@+` z*&_OWn=Q`V3jVVYUj(`x`8NS491v$7ZxQdG&K55~KK3lc=YhTw@x`d$_55IP(9`_DQzb zwIfTcguKOY#P39W#SGz|d{D&qJS1K{mMvc2j`9a0z7OJ?5syB0FFlA4F&z@uypt^+ zg8o?I5gy@=oW6dZ_y;+nCC#PBz>MZO#TAA$HYc!Y2S@d^7y^Un^7QBx0z>t4+k zDeKTb|G^6O1mfEefAN0dy8oc~%zj9`_k6afs7Cx>5Py`9AfCe4fA)*kmV@H>qC+C` zaJI-O1^=Une*y7Ph<_3J-#jQnFFGU!Jqh`*K>p_tzYp<=h(Enw?ELFNVPA7d^nWy4 zoWMA2eGKut5ub$kz6Zpq_JiV<^@l{quMnSy_TP>8U5K|o1=$=Bb7NYBXUie+ZZr7L zK>W`TzXS0_h@X2vH1}^28P^^Xdu~Jh@wL*{D-hp=_zJ{34~VFdE#lG}4*{}qjs9^W z9=klhsrkf#NC4}nKEcp-i+;)@W!<0+JN0A;qI>_ezSHtK@-$%wZjei!2JK7cy6 zpzepz2As`rhwS?zJ_+%=!T&MD7q+17haiJ&$O7@F(RYc6hhDZm2mUKsAiG15VK!um z_!ki$h4>eqf~*ff<}Hx@A@o5u`U3H{As(+=iKEE>7u3JH1$}o2eTe+`Bc8h7HXVJ8 z`2QS0pSPgz4?zdezMmmJ0r5u=e+K*`4nk*IpgYj7vEWbJuoJxZB0g$AbnPH?t_8Yx z2s)SzT|~Tl8gvu!efC3F4?<^Kpu2~l!-$`Zc*tGsMEvmm(Dj4RdFuWli~)?jD8wH} zyc_Z7?8jI+h%v*la|mMyvV9G*8@C^05Ao9xpLP&qj$`i-#vuBBJK~FVd>+crI*2jL zv3m$(7`n;#CpID8j{HUYG1d=a%yaA?f(<}C_3}od9;D5nE*eu$v!?0nf->ry0tmC&rex=|K+jCCj zVc0;l?PlHnjb`1-2hw(ThcSDTwC^hWQ@=-gFRi zMhoT+l-~nsZHWIw$M411b)$c;Z^7Jy@{!hEi1_1(7s&tAe#}+qpKDq$cOAwYb`W!! zPyEySG1nc$oY#W659NP$5ObmC&-^dIb|AiOV+-ca!OnE=K$ZIv#R5h5DVkxCL|fVa(x(M|;JebiCWPZS5-CbJx_`?Ax1c`%Z4O)m*#D zw(Zi*wwa%AmVO50@PoKu)~rlR5}s^Mu%u2)PD@U;q@|=yOUX!`DuPF)rlxAw4q`ex z(2ofhUw8szxZdGAwiv}S$ae#9H3)#O&It=YOvs=YCS10JAl9P&GbpDFlkrPF3Cq>J zd?x^xP*_PXx>(WW*?wFu1(1K+(~7@EMdKSxDt((n5%}&9Lpgxy#WRXv)=4#>v)q(Y zra~|1cC5p72v%!tdR^#dB*K*dzSHK``o; z&yeW{iwkxAaVx`|F47l*&T{c_C>cz@7i)TgrZ=f*aS`a$la-pkky|=gknYxWd3X(%MT_0UZPp+gGEJ)ze_sCZ;ld7EAAP-(sX;4KfOcK-822^k)grs z*&lT3iTg{%_oPB%Jm~EA*44U0G~#!TCH*{2NKhFv4c)5gG=vCaun{EF|60@Sk}Tip zk@Ua&)9;pRN0ht9pI!j|!Q_0dEVq|v({d9^jl@qh{fMUPYKlrtZw;U~b-{lV=#-B= zObK3|u|^YiX!^=v`bm?1pr-2$!f!OaRU00+iWYq#C(6H>FNZKBDm28W9Gt&!Qe?$MNrnl;P>gtQ@K@T=Ac7aa)DSAkCxI9ygG9Hk8dI@_!Tp%QBeRx#U zSM*nOvw!;=+y>*{+6Db3&{=NlZxv&C))(b`3_9E8{!q17*jYMOJ(7-1+!eTB&<*<> zx53K&PZ#t^MVc;jdW$R^V$pO<0R1A+gVpB}o!;$I z{KsfMb%tJ}=%;nRZ|;K6)h4}uF0xSb*=gwdISKoZ;Z{vI&plpHWO1jao98I`y4?FT z-8@%m(&-;E^bLyf*P8x>p*Lx|=5x@{^>di7b$y-%J(zrcE7LAwU$Sh?TI^qAMmm0saihByod>RX$poAm-CgYn`2YYM@O z)`8CfEOJ;Sh=+7N6?Y+~%Jhle=PZUk5A;6f#s^<0>2acMhEmLDN2K@7}!0-8A`Lo&KSK^p8k-FVU*)xsmfzpa+xBE1J&>0es$;>9Ic5I~mvMfF`$%D>=J$h4_9d`Lyj*GSkN+M5?4Kn(uGE=D$6F|DrC^uafCuZ}~De zLZWJhsL*^G0{Eg5RJ_dL_uIbHsKyOgf zfOuK*!FU{@^-w>5eM6^j({^&8uFr>>zVaSLkl&WT^LPDT@t5ykga4W?(qAsig?-TL7vsNe1D*CZaNfL0 zrXM6+0rkA23;ug$daPgQ03f*a{>DB{7c>3o`@7)tY8Uhmx}cxxf*ytiTCjfU2f9Vp z(En#N=)LK$YQMQ(S9BGkr_5?dh2d=uZtBoNdE9!wyN2bofS22*^1Ht9LCI7)5}eKpuU_BI^|>5 z3ns<#F49+lPJd&2fd6)>q{BW8RO85uiw4OD`=5HAlizJZA?r>0ME~@B=bZIFm8oiC z+IzL8^K=V?{AL&M&m>)v{C@7!>Gz&dWMluI=py}-7|znZ1*{)m(R>o7D}9siP=neyF7T zrc~EyI(_r2DxrC2lkdO>vpobUP}7^6Rk>#0<5^AL z8K9ppYx<4=`tLvw)~+^5hu!-pYmITP?cPbv=V(BEzLa$MlL7t%zx@}C|96tV;_ds( zcl?8;9|5|YXLY$I&qSFX_Ub!DF@Dz!P2a2MK^%mTVLs>Etp_n97bV7~(g7mak?*{bOzcqbN06hc~2lc;A?_27}Ga?rBVEr;g(qXT3 zJ^!l99VhuMCtCLexL~d18ZD~n^Qxw%z)-)7XRy&hRYisHoTy?dsu zS80T+q@kjUiBnKm8R`js>cUZvM$|NjhLY9wAeL6U%4^a@V?%jHX+=q$C@xt&tF{sG z)z0ct*Lp`O<>VtVF{{?K9*OE5IF@R}Hy6beIBV*h3sIz4SF+aWsALPuQ$%@&C{LX( z%G1(C`P4K~SB|9XDr?v~rJ|&URhUy*Q??ifXRAx9au+Ryz?*;;*P+&8Ud`G$wT*R^ zxSUm6?)9aN7}UM>LN7- zHISs#=_x6q(j}k)>`&x1Ju8X}7cG^YmRoiSx_(h%ap!G{aMiCz;-!tNR+ZG0&8~6Q ztzIv3%Sv1g#TC$)irT8OdNHe{s&rY63%x7Ob5^ddXmFN6K^rQ0EZAgmxvJI|*Fu9T z8`du_FNYS$Y{kxMS8ZKMm6w~O7B2O_hmO{D7HB$PMLlJ{P$;}aoUiW{ULuMSSL|3K zmSZeb;acG(Xt@*Y5uq;@iiT>Jqp+lY4QSrWg^-ogf%bxEt`>@_+Qu@78B%dHl&pee zmNZs4D{3(iODonntE!w(u~kS=Rqli=%S-ATs-cufSGtypK5KT7BNswgU++vyNzd@p zu~H|-CVTw6${K-=PFKo;#13>BdIUH{8+83Y^ZOj zbCy)I$eJ|-M^!DfR9-l1(2Uh-ioz=a!-Apes9!q+85-EJsQlc<^73=j9BWJJP^}8w zsAx$xu`1D2g`jH8GEE_^t>z(szE)3Ed-(Ia17`sCL~_ zm$Q_kXjLOL!`b8#IQ3pyTVL*%?Oe8~a)VP3j`J!TDrDo9R+PBdMHt66dlh(nU)gOJRGQ4I41b*Ht+%lYcDpe#sq)TR4r!eow9Vewsp(>A z(UN=t<57<~JC?$#SJ$rfFAZF4&SE*QxX=M><6I5v<*X|%oK;m@R>J_ z8^jW4Ntxrk+~tnBxS+|aaF(uF;9M^*t%pSXN<>F=7LzuEVl652OOfALCsm0}@R5>k zK|`&7>Uk*NQB=Raw4%0TO=EpSDB-2gk{Hwv6hXqNGS#2h+y^?B_3qIIwgta7J#7S%4Rsidt&x>`!N40BjLJ)6SH zn&l-%3`=O>{f0_iS$Tti^Ws>JsS37MdO87CX4dk2sfXn-k@bF!U00#)lfywxSB6OH zJ8c~eMqQwNS%GPD1^NRONlo!%R_>xx>Qg)DOL+r^onI=MFCdY#)}P>Ttgf!D(Pq&h zD%U|r%j#<#6>wEx#-!{DOIBBwdd=fPQBqb0C(uh+qFp|3*{SJj>@QtYf+0~}vW8x3 zjaVAQqUA$h9I3)FZ!xL>bK_{N$K13K9s<0xdT9glP?LHAFVBCRcACzHx`x`$hQoBi zFN9uifF*{DTv*byc&)Q;PF3wX0Y?v0rnjEbq+MDUAV+EnG!p~86wbeoWrKU-tanI< zyh=~^3u{-y?c_?qpD8DcAahW8c~xV5g>YAFjj z0YF?(TJ%$8%~}pOJ=aP{6*9&cqJyX{j&vXdd_||f9h9@OoD3!7CC+-Ww4~aFWy-u7 z%p|i_56+oWjLGoq209$8>g%-%!$NSSROR12u(PRRU4>i)VQ%(LNegJL&MT>G;PeFh za@Is!R9jV2N8drVXKj5DO4 zB63!o1E&^lXN9V{v{YONIWhA(9S}MfD(DIU#a)F7imoj4E_M{=uHf&yMbciB`0KJ{ z&6Uu?+I5&%OV(pJYokL0>8Dubvig1`hXWprWA>tahr{TUv}I>|n;5U~e1iKukh>pO zuWzE&ORhY9ofTPYIaKSbpd5ag9gfnb63(x3Jo`mq(bKS=;)f)-PIV|n;ew>BQu@Wp zaL}Vz+$b0DQq!fyfxF)1Q_@U5oR`9Ac+FZNMp$XXdY99&3T}Sq0H3N0^s7w?oLm2a zEt2ckS3@CyVW1?gFjqCT4bJ4%HI2zwO1hkN*bqqel2$cVR+UYzEECDF@Xk7ykO?bF z>MKNY+4>qVRk)!}#Xv>mWF(X68wcX*pa9IEuUu6PTMVjg-vqD5 z#o%|->5U1`kQnH zyAaQB0+@UAT>yjk>ild5)0p~evi!eA>=TpUe3!sr^IZZ{zR7Ree>L(lf1YM&zH?x( z6ddB1pLqiFbDx$n(PHl0N7Wri{qzli`g1)Zee+v%K7)CV);A>R8-s7dy>EW=yvX3I zZZ(oo8SOg1L3iQ8H@`WzV=%Vi{X#%>@PE)%es3xIxv$Xpp{M+^3yc4)csL-xIY(*m zXI{oCV_^9$0r_`bqZHQQoqhcaH2r6&FXF;?{3qS1@*8Y12{jHZ|1Hq*NW#4S;Qj80 z`Tj>>dFI|=KDWh|x;MZ1E{MS<9g@gk?hXDssOOwD^)1~+>ZQ{}fP8jOu0t?LQuGG`K>(Aj$m+-yzBfi`3;T?$Zx(&Vz4=nWH^|72J`g|-}1fZ zP4x3%p2PAD7T+6O_eW;(GVM3dbIm!y)+hWGFfjjMUA`W+UhXD8-zW49tSf^r_Af!j zo97uWi@F~MbPd3?+t@EQ&(vL|RKI)wtf +#include +#include + +#include "mpcenc.h" +#include + +/* G L O B A L V A R I A B L E S */ +float Power_L [32] [3]; +float Power_R [32] [3]; + +/* MS-Coding */ +int PredictionBands = 0; +int DisplayUpdateTime = 1; +int APE_Version = 2000; +int LowDelay = 0; +mpc_bool_t IsEndBeep = MPC_FALSE; + +#define MODE_OVERWRITE 0 +#define MODE_NEVER_OVERWRITE 1 +#define MODE_ASK_FOR_OVERWRITE 2 + +/* other general global variables */ +unsigned int DelInput = 0; // deleting the input file after encoding +unsigned int WriteMode = MODE_ASK_FOR_OVERWRITE; // overwriting a possibly existing MPC file +unsigned int verbose = 0; // more information during output +unsigned int NoUnicode = 1; // console is unicode or not (tag translation) +unsigned int NoEncoderInfo = 0; // write encoder info block or not +unsigned int NoSeekTable = 0; // write seek table block or not +unsigned int FramesBlockPwr = 6; // must be even : frames_per_block = 1 << FramesBlockPwr +unsigned int SeekDistance = 1; // keep a seek table entry every 2^SeekDistance block +mpc_uint64_t SamplesInWAVE = 0; // number of samples per channel in the WAV file +float MaxOverFlow = 0.f; // maximum overflow +float ScalingFactorl = 1.f; // Scaling the input signal +float ScalingFactorr = 1.f; // Scaling the input signal +float FadeShape = 1.f; // Shape of the fade +float FadeInTime = 0.f; // Duration of FadeIn in secs +float FadeOutTime = 0.f; // Duration of FadeOut in secs +float SkipTime = 0.f; // Skip the beginning of the file (sec) +double Duration = 1.e+99; // Maximum encoded audio length +mpc_bool_t FrontendPresent = 0; // Flag for frontend-detection + +#if MPCENC_MINOR % 2 == 0 +#define _cat(a,b,c) #a"."#b"."#c" --stable--" +#else +#define _cat(a,b,c) #a"."#b"."#c" --unstable--" +#endif + +#define cat(a,b,c) _cat(a,b,c) +#define MPCENC_VERSION cat(MPCENC_MAJOR,MPCENC_MINOR,MPCENC_BUILD) + +const char About [] = "MPC Encoder " MPCENC_VERSION " (C) 1999-2009 Buschmann/Klemm/Piecha/MDT\nBuilt " __DATE__ " " __TIME__; + + +#if defined _WIN32 || defined __TURBOC__ +# include +#else + +# ifdef USE_TERMIOS +# include + +static struct termios stored_settings; + +static void +echo_on ( void ) +{ + tcsetattr ( 0, TCSANOW, &stored_settings ); +} + +static void +echo_off ( void ) +{ + struct termios new_settings; + + tcgetattr ( 0, &stored_settings ); + new_settings = stored_settings; + + new_settings.c_lflag &= ~ECHO; + new_settings.c_lflag &= ~ICANON; /* Disable canonical mode, and set buffer size to 1 byte */ + new_settings.c_cc[VTIME] = 0; + new_settings.c_cc[VMIN] = 1; + + tcsetattr ( 0, TCSANOW, &new_settings ); +} + +# else +# define echo_off() (void)0 +# define echo_on() (void)0 +# endif + +static int +getch ( void ) +{ + unsigned char buff [1]; + int ret; + + echo_off (); + ret = READ1 ( stdin, buff ); + echo_on (); + return ret == 1 ? buff[0] : -1; +} + +#endif + + +static int +waitkey ( void ) +{ + int c; + + fflush (stdout); + while ( (c = getch() ) <= ' ' ) + ; + return c; +} + + + + +static void +longhelp ( PsyModel * m ) +{ + stderr_printf ( + "\n" + "\033[1m\rUsage:\033[0m\n" + " mpcenc [--options] \n" + " mpcenc [--options] \n" + "\n" ); + + stderr_printf ( + "\033[1m\rInput_File must be of the following:\033[0m\n" + " - stdin (only RIFF WAVE files)\n" + " *.wav RIFF WAVE file\n" + " *.raw/cdr Raw PCM (2ch, 16bit, 44.1kHz)\n" + " *.pac/lpac LPAC file (Windows Only)\n" + " *.fla/flac FLAC file\n" + " *.ape Monkey's Audio file (APE extension only)\n" + " *.rka/rkau RK Audio file (Windows Only)\n" + " *.sz SZIP file\n" + " *.shn Shorten file\n" + " *.wv Wavpack File\n" + " *.ofr OptimFROG file (Windows Only)\n" + "\n" + " Currently only 32, 37.8, 44.1 and 48 kHz, 1-8 channels, 8-32 bit linear PCM\n" + " is supported. When using one of the lossless compressed formats, a proper\n" + " binary must be installed within the system's $PATH.\n" + "\n" + "\033[1m\rOutput_File must be of the following: (or generated from Input_File)\033[0m\n" + " *.mpc Musepack file\n" + " *.mp+/mpp MPEGplus file (Deprecated)\n" + " - stdout\n" + " /dev/null trash can\n" + "\n" ); + + stderr_printf ( + "\033[1m\rProfiles and Quality Scale:\033[0m\n" + " Option of using a profile (--radio) or mapped quality scale (--quality 4.0).\n" + " In addition, quality scale is effective centesimally. (i.e. --quality 4.25)\n" + " Available options are as follows:\n" + "\n" + " below telephone (--quality 0.00) poor quality (~ 20 kbps)\n" + " below telephone (--quality 1.00) poor quality (~ 30 kbps)\n" + " --telephone (--quality 2.00) low quality (~ 60 kbps)\n" + " --thumb (--quality 3.00) low/medium quality (~ 90 kbps)\n" + " --radio (--quality 4.00) medium quality (~ 130 kbps)\n" + " --standard (--quality 5.00) high quality (dflt) (~ 180 kbps)\n" + " (or --normal)\n" + " --extreme (--quality 6.00) excellent quality (~ 210 kbps)\n" + " (or --xtreme)\n" + " --insane (--quality 7.00) excellent quality (~ 240 kbps)\n" + " --braindead (--quality 8.00) excellent quality (~ 270 kbps)\n" + " above braindead (--quality 9.00) excellent quality (~ 300 kbps)\n" + " above braindead (--quality 10.00) excellent quality (~ 350 kbps)\n" + "\n" ); + + stderr_printf ( + "\033[1m\rBitstream formating:\033[0m\n" + " --no_ei do not write encoder information packet (dflt: off)\n" + " --no_st do not write the seek table (dflt: off)\n" + " --num_frames x x = 0..7 number of frames in packet = 4^x (dflt: 3)\n" + " --seek_distance x x = 0..15 keep a seek table entry every 2^x audio packet (dflt: 1)\n" + "\n" ); + + stderr_printf ( + "\033[1m\rFile/Message handling:\033[0m\n" + " --silent repress console messages (dflt: off)\n" + " --verbose increase verbosity (dflt: off)\n" + " --longhelp print this help text\n" + " --stderr foo append messages to file 'foo'\n" + " --neveroverwrite never overwrite existing Output_File (dflt: off)\n" + " --interactive ask to overwrite an existing Output_File (dflt: on)\n" + " --overwrite overwrite existing Output_File (dflt: off)\n" + " --deleteinput delete Input_File after encoding (dflt: off)\n" + " --beep beep when encoding is finished (dflt: off)\n" + "\n" ); + + stderr_printf ( + "\033[1m\rTagging (uses APE 2.0 tags):\033[0m\n" + " --tag key=value Add tag \"key\" with \"value\" as contents\n" + " --tagfile key=f dto., take value from a file 'f'\n" + " --tagfile key dto., take value from console\n" + " --artist 'value' shortcut for --tag 'Artist=value'\n" + " --album 'value' shortcut for --tag 'Album=value'\n" + " other possible keys are: debutalbum, publisher, conductor,\n" + " title, subtitle, track, comment, composer, copyright,\n" + " publicationright, filename, recordlocation, recorddate,\n" + " ean/upc, year, releasedate, genre, media, index, isrc,\n" + " abstract, bibliography, introplay, media, language, ...\n" + " --unicode Toggle unicode input from console on/off if autodetection\n" + " doesn't work. This switch MUST be before any tag switch.\n" + "\n" ); + + stderr_printf ( + "\033[1m\rAudio processing:\033[0m\n" ); + stderr_printf ( + " --skip x skip the first x seconds (dflt: %3.1f)\n", SkipTime ); + stderr_printf ( + " --dur x stop encoding after at most x seconds of encoded audio\n" ); + stderr_printf ( + " --fade x fadein+out in seconds\n" ); + stderr_printf ( + " --fadein x fadein in seconds (dflt: %3.1f)\n", FadeInTime ); + stderr_printf ( + " --fadeout x fadeout in seconds (dflt: %3.1f)\n", FadeOutTime ); + stderr_printf ( + " --fadeshape x fade shape (dflt: %3.1f),\n" + " see http://www.uni-jena.de/~pfk/mpc/img/fade.png\n", FadeShape ); + stderr_printf ( + " --scale x scale input signal by x (dflt: %7.5f)\n", ScalingFactorl ); + stderr_printf ( + " --scale x,y scale input signal, separate for each channel\n" ); + stderr_printf ( + "\n" ); + + stderr_printf ( + "\033[1m\rExpert settings:\033[0m\n" ); + stderr_printf ( + "==Masking thresholds======\n" ); + stderr_printf ( + " --quality x set Quality to x (dflt: 5)\n" ); + stderr_printf ( + " --nmt x set NMT value to x dB (dflt: %4.1f)\n", m->NMT ); + stderr_printf ( + " --tmn x set TMN value to x dB (dflt: %4.1f)\n", m->TMN ); + stderr_printf ( + " --pns x set PNS value to x dB (dflt: %4.1f)\n", m->PNS ); + stderr_printf ( + "==ATH/Bandwidth settings==\n" ); + stderr_printf ( + " --bw x maximum bandwidth in Hz (dflt: %4.1f kHz)\n", (m->Max_Band+1)*(m->SampleFreq/32000.) ); + stderr_printf ( + " --minSMR x minimum SMR of x dB over encoded bandwidth (dflt: %2.1f)\n", m->minSMR ); + stderr_printf ( + " --ltq xyy x=0: ISO threshold in quiet (not recommended)\n" + " x=1: more sensitive threshold in quiet (Buschmann)\n" + " x=2: even more sensitive threshold in quiet (Filburt)\n" + " x=3: Klemm\n" + " x=4: Buschmann-Klemm Mix\n" + " x=5: minimum of Klemm and Buschmann (dflt)\n" + " y=00...99: HF roll-off (00:+30 dB, 99:-30 dB @20 kHz\n" ); + stderr_printf ( + " --ltq_gain x add offset of x dB to chosen ltq (dflt: %+4.1f)\n", m->Ltq_offset ); + stderr_printf ( + " --ltq_max x maximum level for ltq (dflt: %4.1f dB)\n", m->Ltq_max ); + stderr_printf ( + " --ltq_var x adaptive threshold in quiet: 0: off, >0: on (dflt: %g)\n", m->varLtq ); + stderr_printf ( + " --tmpMask x exploit postmasking: 0: off, 1: on (dflt: %i)\n", m->tmpMask_used ); + stderr_printf ( + "==Other settings==========\n" ); + stderr_printf ( + " --ms x Mid/Side Stereo, 0: off, 1: reduced, 2: on, 3: decoupled,\n" + " 10: enhanced 1.5/3 dB, 11: 2/6 dB, 12: 2.5/9 dB,\n" + " 13: 3/12 dB, 15: 3/oo dB (dflt: %i)\n", m->MS_Channelmode ); + stderr_printf ( + " --ans x Adaptive Noise Shaping Order: 0: off, 1...6: on (dflt: %i)\n", m->NS_Order ); + stderr_printf ( + " --cvd x ClearVoiceDetection, 0: off, 1: on, 2: dual (dflt: %i)\n", m->CVD_used ); + stderr_printf ( + " --shortthr x short FFT threshold (dflt: %4.1f)\n", m->ShortThr ); + stderr_printf ( + " --transdet x slewrate for transient detection (dflt: %3.1f)\n", m->TransDetect ); + stderr_printf ( + " --minval x calculation of MinVal (1:Buschmann, 2,3:Klemm)\n" ); + stderr_printf ( + "\n" ); + + stderr_printf ( + "\033[1m\rExamples:\033[0m\n" + " mpcenc inputfile.wav\n" + " mpcenc inputfile.wav outputfile.mpc\n" + " mpcenc --radio inputfile.wav outputfile.mpc\n" + " mpcenc --silent --radio --pns 0.25 inputfile.wav outputfile.mpc\n" + " mpcenc --nmt 12 --tmn 28 inputfile.wav outputfile.mpc\n" + "\n"); +} + + +static void +shorthelp ( void ) +{ + stderr_printf ( + "\n" + "\033[1m\rUsage:\033[0m\n" + " mpcenc [--options] \n" + " mpcenc [--options] \n" + "\n" + + "\033[1m\rStandard options:\033[0m\n" + " --silent repress console messages (dflt: off)\n" + " --verbose increase verbosity (dflt: off)\n" + " --deleteinput delete Input_File after encoding (dflt: off)\n" + " --overwrite overwrite existing Output_File (dflt: off)\n" + " --fade sec fade in and out with 'sec' duration (dflt: 0.0)\n" + "\n" + + "\033[1m\rProfiles and Quality Scale:\033[0m\n" + " --thumb (--quality 3.00) low/medium quality (~ 90 kbps)\n" + " --radio (--quality 4.00) medium quality (~ 130 kbps)\n" + " --standard (--quality 5.00) high quality (dflt) (~ 180 kbps)\n" + " --extreme (--quality 6.00) excellent quality (~ 210 kbps)\n" + " --insane (--quality 7.00) excellent quality (~ 240 kbps)\n" + "\n" + + "\033[1m\rExamples:\033[0m\n" + " mpcenc inputfile.wav\n" + " mpcenc inputfile.wav outputfile.mpc\n" + " mpcenc --insane inputfile.wav outputfile.mpc\n" + " mpcenc --silent --radio inputfile.wav outputfile.mpc\n" + "\n" + "For further information use the --longhelp option.\n" ); +} + + +/* + * Wishes for fading: + * + * _____________________ + * /| |\ + * / | | \ + * / | | \ + * ____/ | | \______________ + * | | | | | | + * |t1| t2 | | t4 |t5| + * | t3 | + * |<-------------- M P C ------------->| + * |<-------------------- W A V E ------------------>| + * + * t1: StartTime (Standard: 0, positive: from beginning of file, negative: from end of file) + * t2: FadeInTime (Standard: 0, positive: Fadetime) + * t3: EndTime (Standard: 0, non-positive: from end of file, positive: from beginning of file) + * t4: FadeOutTime (Standard: 0, positive: Fadetime) + * t5: PostGapTime (Standard: 0, positive: additional silence) + * + * The beginning of phase t4 can also be triggered by the signal SIGINT. + * With SIGTERM, the current frame is fully decoded and then terminated. + * + * Another question is if you can't put t1 before the zero, same with t3 and t5 + * (track-spanning cutting). + */ + +float bump_exp = 1.f; +float bump_start = 0.040790618517f; + + +static void +setbump ( double e ) +{ + bump_exp = e; + bump_start = 1 - sqrt (1 - 1 / (1 - log(1.e-5) / e)); +} + + +static double +bump ( double x ) +{ + x = bump_start + x * (1. - bump_start); + if ( x <= 0.) return 0.; + if ( x >= 1.) return 1.; + x *= (2. - x); + x = (x - 1.) / x; + return exp (x * bump_exp); +} + + +static void +Fading_In ( PCMDataTyp* data, unsigned int N, const float fs ) +{ + float inv_fs = 1.f / fs; + float fadein_pos; + float scale; + int n; + int idx; + for ( n = 0; n < BLOCK; n++, N++ ) { + idx = n + CENTER; + fadein_pos = N * inv_fs; + scale = fadein_pos / FadeInTime; + scale = bump (scale); + data->L[idx] *= scale; + data->R[idx] *= scale; + data->M[idx] *= scale; + data->S[idx] *= scale; + } +} + + +static void +Fading_Out ( PCMDataTyp* data, unsigned int N, const float fs ) +{ + float inv_fs = 1.f / fs; + float fadeout_pos; + float scale; + int n; + int idx; + for ( n = 0; n < BLOCK; n++, N++ ) { + idx = n + CENTER; + fadeout_pos = (long double)(SamplesInWAVE - N) * inv_fs; + scale = fadeout_pos / FadeOutTime; + scale = bump (scale); + data->L[idx] *= scale; + data->R[idx] *= scale; + data->M[idx] *= scale; + data->S[idx] *= scale; + } +} + + +static const unsigned char Penalty [256] = { + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0, 2, 5, 9, 15, 23, 36, 54, 79,116,169,246,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +}; + +#define P(new,old) Penalty [128 + (old) - (new)] + +static void +SCF_Extraktion ( PsyModel*m, mpc_encoder_t* e, const int MaxBand, SubbandFloatTyp* x ) +{ + int Band; + int n; + int d01; + int d12; + int d02; + int warnL; + int warnR; + int* scfL; + int* scfR; + int comp_L [3]; + int comp_R [3]; + float tmp_L [3]; + float tmp_R [3]; + float facL; + float facR; + float L; + float R; + float SL; + float SR; + + for ( Band = 0; Band <= MaxBand; Band++ ) { // Suche nach Maxima + L = FABS (x[Band].L[ 0]); + R = FABS (x[Band].R[ 0]); + SL = x[Band].L[ 0] * x[Band].L[ 0]; + SR = x[Band].R[ 0] * x[Band].R[ 0]; + for ( n = 1; n < 12; n++ ) { + if (L < FABS (x[Band].L[n])) L = FABS (x[Band].L[n]); + if (R < FABS (x[Band].R[n])) R = FABS (x[Band].R[n]); + SL += x[Band].L[n] * x[Band].L[n]; + SR += x[Band].R[n] * x[Band].R[n]; + } + Power_L [Band][0] = SL; + Power_R [Band][0] = SR; + tmp_L [0] = L; + tmp_R [0] = R; + + L = FABS (x[Band].L[12]); + R = FABS (x[Band].R[12]); + SL = x[Band].L[12] * x[Band].L[12]; + SR = x[Band].R[12] * x[Band].R[12]; + for ( n = 13; n < 24; n++ ) { + if (L < FABS (x[Band].L[n])) L = FABS (x[Band].L[n]); + if (R < FABS (x[Band].R[n])) R = FABS (x[Band].R[n]); + SL += x[Band].L[n] * x[Band].L[n]; + SR += x[Band].R[n] * x[Band].R[n]; + } + Power_L [Band][1] = SL; + Power_R [Band][1] = SR; + tmp_L [1] = L; + tmp_R [1] = R; + + L = FABS (x[Band].L[24]); + R = FABS (x[Band].R[24]); + SL = x[Band].L[24] * x[Band].L[24]; + SR = x[Band].R[24] * x[Band].R[24]; + for ( n = 25; n < 36; n++ ) { + if (L < FABS (x[Band].L[n])) L = FABS (x[Band].L[n]); + if (R < FABS (x[Band].R[n])) R = FABS (x[Band].R[n]); + SL += x[Band].L[n] * x[Band].L[n]; + SR += x[Band].R[n] * x[Band].R[n]; + } + Power_L [Band][2] = SL; + Power_R [Band][2] = SR; + tmp_L [2] = L; + tmp_R [2] = R; + + // calculation of the scalefactor-indexes + // -12.6f*log10(x)+57.8945021823f = -10*log10(x/32767)*1.26+1 + // normalize maximum of +/- 32767 to prevent quantizer overflow + // It can stand a maximum of +/- 32768 ... + + // Where is scf{R,L} [0...2] initialized ??? + scfL = e->SCF_Index_L [Band]; + scfR = e->SCF_Index_R [Band]; + if (tmp_L [0] > 0.) scfL [0] = IFLOORF (-12.6f * LOG10 (tmp_L [0]) + 57.8945021823f ); + if (tmp_L [1] > 0.) scfL [1] = IFLOORF (-12.6f * LOG10 (tmp_L [1]) + 57.8945021823f ); + if (tmp_L [2] > 0.) scfL [2] = IFLOORF (-12.6f * LOG10 (tmp_L [2]) + 57.8945021823f ); + if (tmp_R [0] > 0.) scfR [0] = IFLOORF (-12.6f * LOG10 (tmp_R [0]) + 57.8945021823f ); + if (tmp_R [1] > 0.) scfR [1] = IFLOORF (-12.6f * LOG10 (tmp_R [1]) + 57.8945021823f ); + if (tmp_R [2] > 0.) scfR [2] = IFLOORF (-12.6f * LOG10 (tmp_R [2]) + 57.8945021823f ); + + // restriction to SCF_Index = -6...121, make note of the internal overflow + warnL = warnR = 0; + for( n = 0; n < 3; n++){ + if (scfL[n] < -6) scfL[n] = -6, warnL = 1; + if (scfL[n] > 121) scfL[n] = 121, warnL = 1; + if (scfR[n] < -6) scfR[n] = -6, warnR = 1; + if (scfR[n] > 121) scfR[n] = 121, warnR = 1; + } + + // save old values for compensation calculation + comp_L[0] = scfL[0]; comp_L[1] = scfL[1]; comp_L[2] = scfL[2]; + comp_R[0] = scfR[0]; comp_R[1] = scfR[1]; comp_R[2] = scfR[2]; + + // determination and replacement of scalefactors of minor differences with the smaller one??? + // a smaller one is quantized more roughly, i.e. the noise gets amplified??? + + if ( m->CombPenalities >= 0 ) { + if ( P(scfL[0],scfL[1]) + P(scfL[0],scfL[2]) <= m->CombPenalities ) scfL[2] = scfL[1] = scfL[0]; + else if ( P(scfL[1],scfL[0]) + P(scfL[1],scfL[2]) <= m->CombPenalities ) scfL[0] = scfL[2] = scfL[1]; + else if ( P(scfL[2],scfL[0]) + P(scfL[2],scfL[1]) <= m->CombPenalities ) scfL[0] = scfL[1] = scfL[2]; + else if ( P(scfL[0],scfL[1]) <= m->CombPenalities ) scfL[1] = scfL[0]; + else if ( P(scfL[1],scfL[0]) <= m->CombPenalities ) scfL[0] = scfL[1]; + else if ( P(scfL[1],scfL[2]) <= m->CombPenalities ) scfL[2] = scfL[1]; + else if ( P(scfL[2],scfL[1]) <= m->CombPenalities ) scfL[1] = scfL[2]; + + if ( P(scfR[0],scfR[1]) + P(scfR[0],scfR[2]) <= m->CombPenalities ) scfR[2] = scfR[1] = scfR[0]; + else if ( P(scfR[1],scfR[0]) + P(scfR[1],scfR[2]) <= m->CombPenalities ) scfR[0] = scfR[2] = scfR[1]; + else if ( P(scfR[2],scfR[0]) + P(scfR[2],scfR[1]) <= m->CombPenalities ) scfR[0] = scfR[1] = scfR[2]; + else if ( P(scfR[0],scfR[1]) <= m->CombPenalities ) scfR[1] = scfR[0]; + else if ( P(scfR[1],scfR[0]) <= m->CombPenalities ) scfR[0] = scfR[1]; + else if ( P(scfR[1],scfR[2]) <= m->CombPenalities ) scfR[2] = scfR[1]; + else if ( P(scfR[2],scfR[1]) <= m->CombPenalities ) scfR[1] = scfR[2]; + } + else { + + d12 = scfL [2] - scfL [1]; + d01 = scfL [1] - scfL [0]; + d02 = scfL [2] - scfL [0]; + + if ( 0 < d12 && d12 < 5 ) scfL [2] = scfL [1]; + else if (-3 < d12 && d12 < 0 ) scfL [1] = scfL [2]; + else if ( 0 < d01 && d01 < 5 ) scfL [1] = scfL [0]; + else if (-3 < d01 && d01 < 0 ) scfL [0] = scfL [1]; + else if ( 0 < d02 && d02 < 4 ) scfL [2] = scfL [0]; + else if (-2 < d02 && d02 < 0 ) scfL [0] = scfL [2]; + + d12 = scfR [2] - scfR [1]; + d01 = scfR [1] - scfR [0]; + d02 = scfR [2] - scfR [0]; + + if ( 0 < d12 && d12 < 5 ) scfR [2] = scfR [1]; + else if (-3 < d12 && d12 < 0 ) scfR [1] = scfR [2]; + else if ( 0 < d01 && d01 < 5 ) scfR [1] = scfR [0]; + else if (-3 < d01 && d01 < 0 ) scfR [0] = scfR [1]; + else if ( 0 < d02 && d02 < 4 ) scfR [2] = scfR [0]; + else if (-2 < d02 && d02 < 0 ) scfR [0] = scfR [2]; + } + + // calculate SNR-compensation + tmp_L [0] = invSCF [comp_L[0] - scfL[0]]; + tmp_L [1] = invSCF [comp_L[1] - scfL[1]]; + tmp_L [2] = invSCF [comp_L[2] - scfL[2]]; + tmp_R [0] = invSCF [comp_R[0] - scfR[0]]; + tmp_R [1] = invSCF [comp_R[1] - scfR[1]]; + tmp_R [2] = invSCF [comp_R[2] - scfR[2]]; + m->SNR_comp_L [Band] = (tmp_L[0]*tmp_L[0] + tmp_L[1]*tmp_L[1] + tmp_L[2]*tmp_L[2]) * 0.3333333333f; + m->SNR_comp_R [Band] = (tmp_R[0]*tmp_R[0] + tmp_R[1]*tmp_R[1] + tmp_R[2]*tmp_R[2]) * 0.3333333333f; + + // normalize the subband samples + facL = invSCF[scfL[0]]; + facR = invSCF[scfR[0]]; + for ( n = 0; n < 12; n++ ) { + x[Band].L[n] *= facL; + x[Band].R[n] *= facR; + } + facL = invSCF[scfL[1]]; + facR = invSCF[scfR[1]]; + for ( n = 12; n < 24; n++ ) { + x[Band].L[n] *= facL; + x[Band].R[n] *= facR; + } + facL = invSCF[scfL[2]]; + facR = invSCF[scfR[2]]; + for ( n = 24; n < 36; n++ ) { + x[Band].L[n] *= facL; + x[Band].R[n] *= facR; + } + + // limit to +/-32767 if internal clipping + if ( warnL ) + for ( n = 0; n < 36; n++ ) { + if (x[Band].L[n] > +32767.f) { + e->Overflows++; + MaxOverFlow = maxf (MaxOverFlow, x[Band].L[n]); + x[Band].L[n] = 32767.f; + } + else if (x[Band].L[n] < -32767.f) { + e->Overflows++; + MaxOverFlow = maxf (MaxOverFlow, -x[Band].L[n]); + x[Band].L[n] = -32767.f; + } + } + if ( warnR ) + for ( n = 0; n < 36; n++ ) { + if (x[Band].R[n] > +32767.f) { + e->Overflows++; + MaxOverFlow = maxf (MaxOverFlow, x[Band].R[n]); + x[Band].R[n] = 32767.f; + } + else if (x[Band].R[n] < -32767.f) { + e->Overflows++; + MaxOverFlow = maxf (MaxOverFlow, -x[Band].R[n]); + x[Band].R[n] = -32767.f; + } + } + } + return; +} + + +static void +Quantisierung ( PsyModel * m, + const int MaxBand, + const int* resL, + const int* resR, + const SubbandFloatTyp* subx, + mpc_quantizer* subq ) +{ + static float errorL [32] [36 + MAX_NS_ORDER]; + static float errorR [32] [36 + MAX_NS_ORDER]; + int Band; + + // quantize Subband- and Subframe-samples + for ( Band = 0; Band <= MaxBand; Band++, resL++, resR++ ) { + + if ( *resL > 0 ) { + if ( m->NS_Order_L [Band] > 0 ) { + QuantizeSubbandWithNoiseShaping ( subq[Band].L, subx[Band].L, *resL, errorL [Band], m->FIR_L [Band] ); + memcpy ( errorL [Band], errorL[Band] + 36, MAX_NS_ORDER * sizeof (**errorL) ); + } else { + QuantizeSubband ( subq[Band].L, subx[Band].L, *resL, errorL [Band], MAX_NS_ORDER ); + memcpy ( errorL [Band], errorL[Band] + 36, MAX_NS_ORDER * sizeof (**errorL) ); + } + } + + if ( *resR > 0 ) { + if ( m->NS_Order_R [Band] > 0 ) { + QuantizeSubbandWithNoiseShaping ( subq[Band].R, subx[Band].R, *resR, errorR [Band], m->FIR_R [Band] ); + memcpy ( errorR [Band], errorR [Band] + 36, MAX_NS_ORDER * sizeof (**errorL) ); + } else { + QuantizeSubband ( subq[Band].R, subx[Band].R, *resR, errorL [Band], MAX_NS_ORDER); + memcpy ( errorR [Band], errorR [Band] + 36, MAX_NS_ORDER * sizeof (**errorL) ); + } + } + } + return; +} + + +static int +PNS_SCF ( int* scf, float S0, float S1, float S2 ) +{ +// printf ("%7.1f %7.1f %7.1f ", sqrt(S0/12), sqrt(S1/12), sqrt(S2/12) ); + +#if 1 + if ( S0 < 0.5 * S1 || S1 < 0.5 * S2 || S0 < 0.5 * S2 ) + return 0; + + if ( S1 < 0.25 * S0 || S2 < 0.25 * S1 || S2 < 0.25 * S0 ) + return 0; +#endif + + + if ( S0 >= 0.8 * S1 ) { + if ( S0 >= 0.8 * S2 && S1 > 0.8 * S2 ) + S0 = S1 = S2 = 0.33333333333f * (S0 + S1 + S2); + else + S0 = S1 = 0.5f * (S0 + S1); + } + else { + if ( S1 >= 0.8 * S2 ) + S1 = S2 = 0.5f * (S1 + S2); + } + + scf [0] = scf [1] = scf [2] = 63; + S0 = sqrt (S0/12 * 4/1.2005080577484075047860806747022); + S1 = sqrt (S1/12 * 4/1.2005080577484075047860806747022); + S2 = sqrt (S2/12 * 4/1.2005080577484075047860806747022); + if (S0 > 0.) scf [0] = IFLOORF (-12.6f * LOG10 (S0) + 57.8945021823f ); + if (S1 > 0.) scf [1] = IFLOORF (-12.6f * LOG10 (S1) + 57.8945021823f ); + if (S2 > 0.) scf [2] = IFLOORF (-12.6f * LOG10 (S2) + 57.8945021823f ); + + if ( scf[0] & ~63 ) scf[0] = scf[0] > 63 ? 63 : 0; + if ( scf[1] & ~63 ) scf[1] = scf[1] > 63 ? 63 : 0; + if ( scf[2] & ~63 ) scf[2] = scf[2] > 63 ? 63 : 0; + + return 1; +} + + +static void +Allocate ( const int MaxBand, int* res, float* x, int* scf, const float* comp, const float* smr, const SCFTriple* Pow, const int* Transient, const float PNS ) +{ + int Band; + int k; + float tmpMNR; // to adjust the scalefactors + float save [36]; // to adjust the scalefactors + float MNR; // Mask-to-Noise ratio + + for ( Band = 0; Band <= MaxBand; Band++, res++, comp++, smr++, scf += 3, x += 72 ) { + // printf ( "%2u: %u\n", Band, Transient[Band] ); + + // Find out needed quantization resolution Res to fulfill the calculated MNR + // This is done by exactly measuring the quantization residuals against the signal itself + // Starting with Res=1 Res in increased until MNR becomes less than 1. + if ( Band > 0 && res[-1] < 3 && *smr >= 1. && *smr < Band * PNS && + PNS_SCF ( scf, Pow [Band][0], Pow [Band][1], Pow [Band][2] ) ) { + *res = -1; + } else { + for ( MNR = *smr * 1.; MNR > 1. && *res != 15; ) + MNR = *smr * (Transient[Band] ? ISNR_Schaetzer_Trans : ISNR_Schaetzer) ( x, *comp, ++*res ); + } + + // Fine adapt SCF's (MNR > 0 prevents adaption of zero samples, which is nonsense) + // only apply to Huffman-coded samples (otherwise no savings in bitrate) + if ( *res > 0 && *res <= LAST_HUFFMAN && MNR < 1. && MNR > 0. && !Transient[Band] ) { + while ( scf[0] > 0 && scf[1] > 0 && scf[2] > 0 ) { + + --scf[2]; --scf[1]; --scf[0]; // adapt scalefactors and samples + memcpy ( save, x, sizeof save ); + for (k = 0; k < 36; k++ ) + x[k] *= SCFfac; + + tmpMNR = *smr * (Transient[Band] ? ISNR_Schaetzer_Trans : ISNR_Schaetzer) ( x, *comp, *res );// recalculate MNR + + // FK: if ( tmpMNR > MNR && tmpMNR <= 1 ) { // check for MNR + if ( tmpMNR <= 1 ) { // check for MNR + MNR = tmpMNR; + } + else { + ++scf[0]; ++scf[1]; ++scf[2]; // restore scalefactors and samples + memcpy ( x, save, sizeof save ); + break; + } + } + } + + } + return; +} + + + + +/* Planned: return the evaluated options, without InputFile and OutputFile, argc implicit instead of explicit */ + +static int +EvalParameters (PsyModel * m, int argc, char** argv, char** InputFile, char** OutputFile, int onlyfilenames ) +{ + int k; + size_t len; + static char output [2048]; + static char errmsg [] = "\n\033[33;41;1mERROR\033[0m: Missing argument for option '--%s'\n\n"; + FILE* fp; + char* p; + char buff [32768]; + + /********************************* In / Out Files *********************************/ + *InputFile = argv [argc-1]; + *OutputFile = NULL; + + // search for output file + if ( argc >= 3 ) { + len = strlen (argv[argc-1]); + + if ( strcmp (argv[argc-1], "/dev/null") == 0 || + strcmp (argv[argc-1], "-") == 0 || + (len >= 4 && (0 == strcasecmp (argv [argc-1] + len - 4, ".MPC") || + 0 == strcasecmp (argv [argc-1] + len - 4, ".MPP") || + 0 == strcasecmp (argv [argc-1] + len - 4, ".MP+"))) ) { + *OutputFile = argv[argc-1]; + *InputFile = argv[argc-2]; + argc -= 2; + } + } + + // if no Output-File is stated, set OutFile to InFile.mpc + if ( *OutputFile == NULL ) { + char * ext = strrchr(*InputFile, '.'); // search for extension delimiter + strcpy ( *OutputFile = output, *InputFile ); + len = strlen ( output ); + if (ext != 0 && (len - (ext - *InputFile)) < 7) // extension max size (5 chars) + len = ext - *InputFile; + strcpy (output+len, ".mpc"); + argc -= 1; + } + + if ( onlyfilenames ) + return 0; + + /********************************* In / Out Files *********************************/ + + + // search for options + for ( k = 1; k < argc; k++ ) { + + const char* arg = argv [k]; + + if ( arg[0] != '-' || arg[1] != '-' ) + continue; + arg += 2; + + if ( 0 == strcmp ( arg, "verbose" ) ) { // verbose + verbose++; + } + else if ( 0 == strcmp ( arg, "telephone" ) ) { // MainQual + SetQualityParams (m, 2.0); + } + else if ( 0 == strcmp ( arg, "thumb" ) ) { // MainQual + SetQualityParams (m, 3.0); + } + else if ( 0 == strcmp ( arg, "radio" ) ) { + SetQualityParams (m, 4.0); + } + else if ( 0 == strcmp ( arg, "standard") || 0 == strcmp ( arg, "normal") ) { + SetQualityParams (m, 5.0); + } + else if ( 0 == strcmp ( arg, "xtreme") || 0 == strcmp ( arg, "extreme") ) { + SetQualityParams (m, 6.0); + } + else if ( 0 == strcmp ( arg, "insane") ) { + SetQualityParams (m, 7.0); + } + else if ( 0 == strcmp ( arg, "braindead") ) { + SetQualityParams (m, 8.0); + } + else if ( 0 == strcmp ( arg, "quality") ) { // Quality + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + SetQualityParams (m, atof (argv[k]) ); + } + else if ( 0 == strcmp ( arg, "neveroverwrite") ) { // NeverOverWrite + WriteMode = MODE_NEVER_OVERWRITE; + } + else if ( 0 == strcmp ( arg, "forcewrite") || 0 == strcmp ( arg, "overwrite") ) { // ForceWrite + WriteMode = MODE_OVERWRITE; + } + else if ( 0 == strcmp ( arg, "interactive") ) { // Interactive + WriteMode = MODE_ASK_FOR_OVERWRITE; + } + else if ( 0 == strcmp ( arg, "delinput") || 0 == strcmp ( arg, "delete") || 0 == strcmp ( arg, "deleteinput" ) ) { // DelInput + DelInput = 0xAFFEDEAD; + } + else if ( 0 == strcmp ( arg, "beep") ) { + IsEndBeep = MPC_TRUE; + } + else if ( 0 == strcmp ( arg, "scale") ) { // ScalingFactor + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + ScalingFactorl = ScalingFactorr = (float) atof (argv[k]); + if (strchr (argv[k], ',')) + ScalingFactorr = (float) atof (strchr (argv[k], ',') + 1); + if ( ScalingFactorl == 0.97f || ScalingFactorl == 0.98f ) stderr_printf ("--scale 0.97 or --scale 0.98 is nearly useless to prevent clipping. Use replaygain tool\nto determine EXACT attenuation to avoid clipping. Factor can be between 0.696 and 1.000.\nSee \"http://www.uni-jena.de/~pfk/mpp/clipexample.html\".\n\n" ); + } + else if ( 0 == strcmp ( arg, "kbd") ) { // ScalingFactor + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + if ( 2 != sscanf ( argv[k], "%f,%f", &(m->KBD1), &(m->KBD2) )) + { stderr_printf ( "%s: missing two arguments", arg ); return -1; } + Init_FFT (m); + } + else if ( 0 == strcmp ( arg, "fadein") ) { // FadeInTime + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + FadeInTime = (float) atof (argv[k]); + if ( FadeInTime < 0.f ) FadeInTime = 0.f; + } + else if ( 0 == strcmp ( arg, "fadeout") ) { // FadeOutTime + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + FadeOutTime = (float) atof (argv[k]); + if ( FadeOutTime < 0.f ) FadeOutTime = 0.f; + } + else if ( 0 == strcmp ( arg, "fade") ) { // FadeInTime + FadeOutTime + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + FadeOutTime = (float) atof (argv[k]); + if ( FadeOutTime < 0.f ) FadeOutTime = 0.f; + FadeInTime = FadeOutTime; + } + else if ( 0 == strcmp ( arg, "fadeshape") ) { // FadeOutTime + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + FadeShape = (float) atof (argv[k]); + if ( FadeShape < 0.001f || FadeShape > 1000.f ) FadeShape = 1.f; + setbump ( FadeShape ); + } + else if ( 0 == strcmp ( arg, "skip") || 0 == strcmp ( arg, "start") ) { // SkipTime + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + SkipTime = (float) atof (argv[k]); + } + else if ( 0 == strcmp ( arg, "dur") || 0 == strcmp ( arg, "duration") ) { // maximum Duration + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + Duration = atof (argv[k]); + } + else if ( 0 == strcmp ( arg, "ans") ) { // AdaptiveNoiseShaping + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + m->NS_Order = atoi (argv[k]); + m->NS_Order = mini ( m->NS_Order, MAX_NS_ORDER ); + } + else if ( 0 == strcmp ( arg, "predict") ) { // AdaptiveNoiseShaping + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + PredictionBands = atoi (argv[k]); + PredictionBands = mini ( PredictionBands, 32 ); + } + else if ( 0 == strcmp ( arg, "ltq_var") || 0 == strcmp ( arg, "ath_var") ) { // ltq_var + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + m->varLtq = atof (argv[k]); + } + else if ( 0 == strcmp ( arg, "pns") ) { // pns + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + m->PNS = atof (argv[k]); + } + else if ( 0 == strcmp ( arg, "minval") ) { // MinValChoice + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + m->MinValChoice = atoi (argv[k]); + } + else if ( 0 == strcmp ( arg, "transdet") ) { // TransDetect + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + m->TransDetect = (float) atof (argv[k]); + } + else if ( 0 == strcmp ( arg, "shortthr") ) { // ShortThr + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + m->ShortThr = (float) atof (argv[k]); + } + else if ( 0 == strcmp ( arg, "xlevel") || 0 == strcmp ( arg, "noxlevel") ) { + stderr_printf ( "\nXlevel coding not needed anymore, --%s ignored.\n", arg ); + } + else if ( 0 == strcmp ( arg, "nmt") ) { // NMT + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + m->NMT = (float) atof (argv[k]); + } + else if ( 0 == strcmp ( arg, "tmn") ) { // TMN + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + m->TMN = (float) atof (argv[k]); + } + else if ( 0 == strcmp ( arg, "cvd") ) { // ClearVoiceDetection + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + m->CVD_used = atoi (argv[k]); + if ( m->CVD_used == 0 ) + stderr_printf ( "\nDisabling CVD always reduces quality!\a\n" ); + } + else if ( 0 == strcmp ( arg, "ms") ) { // Mid/Side Stereo + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + m->MS_Channelmode = atoi (argv[k]); + } + else if ( 0 == strcmp ( arg, "minSMR") ) { // minimum SMR + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + if ( m->minSMR > (float) atof (argv[k]) ) + stderr_printf ( "This option usage may reduces quality!\a\n" ); + m->minSMR = (float) atof (argv[k]); + } + else if ( 0 == strcmp ( arg, "tmpMask") ) { // temporal post-masking + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + m->tmpMask_used = atoi (argv[k]); + } + else if ( 0 == strcmp ( arg, "ltq_max") || 0 == strcmp ( arg, "ath_max") ) { // Maximum for threshold in quiet + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + m->Ltq_max = (float) atof (argv[k]); + } + else if ( 0 == strcmp ( arg, "ltq_gain") || 0 == strcmp ( arg, "ath_gain") ) {// Offset for threshold in quiet + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + m->Ltq_offset = (float) atof (argv[k]); + } + else if ( 0 == strcmp ( arg, "silent") || 0 == strcmp ( arg, "quiet") ) { + SetStderrSilent (1); + } + else if ( 0 == strcmp ( arg, "stderr") ) { // Offset for threshold in quiet + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + freopen ( argv[k], "a", stderr ); + } + else if ( 0 == strcmp ( arg, "ltq") || 0 == strcmp ( arg, "ath") ) { // threshold in quiet + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + m->EarModelFlag = atoi (argv[k]); + } + else if ( 0 == strcmp ( arg, "noco") ) { + NoiseInjectionComp (); + } + else if ( 0 == strcmp ( arg, "newcomb") ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + m->CombPenalities = atoi (argv[k]); + } + else if ( 0 == strcmp ( arg, "ape1") ) { // Mark APE as APE 1.000 + APE_Version = 1000; + } + else if ( 0 == strcmp ( arg, "ape2") ) { // Mark APE as APE 2.000 + APE_Version = 2000; + } + else if ( 0 == strcmp ( arg, "unicode") ) { // no tag conversion + NoUnicode = 1 - NoUnicode; + } + else if ( 0 == strcmp ( arg, "no_ei") ) { // no encoder info block + NoEncoderInfo = 1; + } + else if ( 0 == strcmp ( arg, "no_st") ) { // no seek table + NoSeekTable = 1; + } + else if ( 0 == strcmp ( arg, "num_frames") ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + FramesBlockPwr = atoi (argv[k]) * 2; + } + else if ( 0 == strcmp ( arg, "seek_distance") ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + SeekDistance = atoi (argv[k]); + } + else if ( 0 == strcmp ( arg, "lowdelay") ) { + LowDelay = 1; + } + else if ( 0 == strcmp ( arg, "bw") || 0 == strcmp ( arg, "lowpass") ) { // bandwidth + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + m->BandWidth = atof (argv[k]); + } + else if ( 0 == strcmp ( arg, "displayupdatetime") ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + DisplayUpdateTime = atoi (argv[k]); + } + else if ( 0 == strcmp ( arg, "artist" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Artist", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "album" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Album", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "debutalbum" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Debut Album", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "publisher" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Publisher", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "conductor" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Conductor", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "title" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Title", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "subtitle" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Subtitle", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "track" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Track", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "comment" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Comment", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "composer" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Composer", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "copyright" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Copyright", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "publicationright" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Publicationright", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "filename" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "File", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "recordlocation" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Record Location", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "recorddate" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Record Date", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "ean/upc" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "EAN/UPC", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "year" ) || 0 == strcmp ( arg, "releasedate") ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Year", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "genre" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Genre", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "media" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Media", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "index" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Index", 0, p, strlen(p), NoUnicode*3, 0 ); + } + else if ( 0 == strcmp ( arg, "isrc" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "ISRC", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "abstract" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Abstract", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "bibliography" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Bibliography", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "introplay" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Introplay", 0, p, strlen(p), NoUnicode*3, 0 ); + } + else if ( 0 == strcmp ( arg, "media" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = argv[k]; + addtag ( "Media", 0, p, strlen(p), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "tag" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = strchr ( argv[k], '=' ); + if ( p == NULL ) + addtag ( argv[k], strlen(argv[k]), "", 0, NoUnicode, 0 ); + else + addtag ( argv[k], p-argv[k], p+1, strlen(p+1), NoUnicode, 0 ); + } + else if ( 0 == strcmp ( arg, "tagfile" ) ) { + if ( ++k >= argc ) { stderr_printf ( errmsg, arg ); return -1; } + p = strchr ( argv[k], '=' ); + if ( p == NULL ) { + stderr_printf (" Enter value for tag key '%s': ", argv[k] ); + fgets ( buff, sizeof buff, stdin ); + len = strlen (buff); + while ( len > 0 && (buff [len-1] == '\r' || buff [len-1] == '\n') ) + len--; + addtag ( arg, strlen(arg), buff, len, NoUnicode*6, 0 ); + } + else { + fp = fopen ( p+1, "rb" ); + if ( fp == NULL ) { + fprintf ( stderr, "Can't open file '%s'.\n", p+1 ); + } + else { + addtag ( argv[k], p-argv[k], buff, fread (buff,1,sizeof buff,fp), NoUnicode*2, 3 ); + fclose (fp); + } + } + } + else { + stderr_printf ( "\n\033[33;41;1mERROR\033[0m: unknown option '--%s' !\n", arg ); + shorthelp(); + return -1; + } + } + + TestProfileParams (m); + return 0; +} + + +static void +ShowParameters (PsyModel * m, char* inDatei, char* outDatei ) +{ + static const char unk [] = "???"; + static const char* EarModel [] = { "ISO (bad!!!)", "Busch", "Filburt", "Klemm", "Klemm/Busch mix", "min(Klemm,Busch)" }; + static const char th [ 7] [4] = { "no", "1st", "2nd", "3rd", "4th", "5th", "6th" }; + static const char able [ 3] [9] = { "Disabled", "Enabled", "Dual" }; + static const char* stereo [16] = { + "Simple uncoupled Stereo", + "Mid/Side Stereo + Intensity Stereo 2 bit", + "Mid/Side Stereo + Intensity Stereo 4 bit", + "Mid/Side Stereo, destroyed imaging (unusable)", + "Mid/Side Stereo, much reduced imaging", + "Mid/Side Stereo, reduced imaging (-3 dB)", + "Mid/Side Stereo when superior", + unk, unk, unk, + "Mid/Side Stereo when superior + enhanced (1.5/3 dB)", + "Mid/Side Stereo when superior + enhanced (2/6 dB)", + "Mid/Side Stereo when superior + enhanced (2.5/9 dB)", + "Mid/Side Stereo when superior + enhanced (3/12 dB)", + unk, + "Mid/Side Stereo when superior + enhanced (3/oo dB)" + }; + static const char* const Profiles [16] = { + "n.a", "Unstable/Experimental", unk, unk, unk, "below Telephone", "below Telephone", "Telephone", + "Thumb", "Radio", "Standard", "Xtreme", "Insane", "BrainDead", "above BrainDead", "above BrainDead" + }; + + stderr_printf ( "\n" + " encoding file '%s'\n" + " to file '%s'\n" + "\n" + " SV %u, Profile '%s'\n", + inDatei, outDatei, 8, Profiles [m->MainQual] ); + + if ( verbose > 0 ) { + stderr_printf ( "\n" ); + if ( FadeInTime != 0. || FadeOutTime != 0. || verbose > 1 ) + stderr_printf ( " PCM fader : fade-in: %.2f s, fade-out: %.2f s, shape: %g\n", FadeInTime, FadeOutTime, FadeShape ); + if ( ScalingFactorr != 1. || ScalingFactorl != 1. || verbose > 1 ) + stderr_printf ( " Scaling input by : left %.5f, right: %.5f\n", ScalingFactorl, ScalingFactorr ); + stderr_printf ( " Maximum encoded bandwidth: %4.1f kHz\n", (m->Max_Band+1) * (m->SampleFreq/32./2000.) ); + stderr_printf ( " Adaptive Noise Shaping : max. %s order\n", th [m->NS_Order] ); + stderr_printf ( " Clear Voice Detection : %s\n", able [m->CVD_used] ); + stderr_printf ( " Mid/Side Stereo : %s\n", stereo [m->MS_Channelmode] ); + stderr_printf ( " Threshold of Hearing : Model %3u: %s, Max ATH: %2.0f dB, Offset: %+1.0f dB, +Offset@20 kHz:%3.0f dB\n", + m->EarModelFlag, + m->EarModelFlag/100 < sizeof(EarModel)/sizeof(*EarModel) ? EarModel [m->EarModelFlag/100] : unk, + m->Ltq_max, + m->Ltq_offset, + -0.6 * (int) (m->EarModelFlag % 100 - 50) ); + if ( m->NMT != 6.5 || verbose > 1 ) + stderr_printf ( " Noise masks Tone Ratio : %4.1f dB\n", m->NMT ); + if ( m->TMN != 18.0 || verbose > 1 ) + stderr_printf ( " Tone masks Noise Ratio : %4.1f dB\n", m->TMN ); + if ( m->PNS > 0 ) + stderr_printf ( " PNS Threshold : %4.2f\n", m->PNS ); + if ( !m->tmpMask_used ) + stderr_printf ( " No exploitation of temporal post masking\n" ); + else if ( verbose > 1 ) + stderr_printf ( " Exploitation of temporal post masking\n" ); + if ( m->minSMR > 0. ) + stderr_printf ( " Minimum Signal-to-Mask : %4.1f dB\n", m->minSMR ); + else if ( verbose > 1 ) + stderr_printf ( " No minimum SMR (psycho model controlled filtering)\n" ); + if ( DelInput == 0xAFFEDEAD ) + stderr_printf ( " Deleting input file after (successful) encoding\n" ); + else if ( verbose > 1 ) + stderr_printf ( " No deleting of input file after encoding\n" ); + } + stderr_printf ( "\n" ); +} + + +/* + * Print out the time to stderr with a precision of 10 ms always using + * 12 characters. Time is represented by the sample count. An additional + * prefix character (normally ' ' or '-') is prepended before the first + * digit. + */ + +static const char* +PrintTime ( PsyModel* m, mpc_uint64_t samples, int sign ) +{ + static char ret [32]; + mpc_uint32_t tmp = (mpc_uint32_t) ( (long double)(samples) * 100. / m->SampleFreq ); + mpc_uint_t hour = (mpc_uint_t) ( tmp / 360000 ); + mpc_uint_t min = (mpc_uint_t) ( tmp / 6000 % 60 ); + mpc_uint_t sec = (mpc_uint_t) ( tmp / 100 % 60 ); + mpc_uint_t csec = (mpc_uint_t) ( tmp % 100 ); + + + if ( (long double)(samples) >= m->SampleFreq * 360000. ) + return " "; + else if ( hour > 9 ) + sprintf ( ret, "%c%2u:%02u", sign, hour, min ); + else if ( hour > 0 ) + sprintf ( ret, " %c%1u:%02u", sign, hour, min ); + else if ( min > 9 ) + sprintf ( ret, " %c%2u", sign, min ); + else + sprintf ( ret, " %c%1u", sign, min ); + + sprintf ( ret + 6, ":%02u.%02u", sec, csec ); + return ret; +} + + +static void +ShowProgress ( PsyModel* m, + mpc_uint64_t samples, + mpc_uint64_t total_samples, + mpc_uint64_t databits ) +{ + static clock_t start; + clock_t curr; + float percent; + float kbps; + float speed; + float total_estim; + + if ( samples == 0 ) { + if ( DisplayUpdateTime >= 0 ) { + stderr_printf (" %%|avg.bitrate| speed|play time (proc/tot)| CPU time (proc/tot)| ETA\n" + " -.- -.- kbps -.--x -:--.- -:--.- -:--.- -:--.- -:--.-\r" ); + } + start = clock (); + return; + } + curr = clock (); + if ( curr == start ) + return; + + percent = 100.f * (long double)(samples) / (long double)(total_samples); + kbps = 1.e-3f * (long double)(databits) * m->SampleFreq / (long double)(samples); + speed = 1.f * (long double)(samples) * (CLOCKS_PER_SEC / m->SampleFreq) / (unsigned long)(curr - start) ; + total_estim = 1.f * (long double)(total_samples) / (long double)(samples) * (unsigned long)(curr - start); + + // progress percent + if ( total_samples < mpc_int64_max ) + stderr_printf ("\r%5.1f ", percent ); + else + stderr_printf ("\r " ); + + // average data rate + stderr_printf ( "%6.1f kbps ", kbps ); + + // encoder speed + stderr_printf ( "%5.2fx ", speed ); + + // 2x duration in WAVE file time (encoded/total) + stderr_printf ("%10.10s" , PrintTime ( m, samples , (char)' ')+1 ); + stderr_printf ("%10.10s ", PrintTime ( m, total_samples, (char)' ')+1 ); + + // 2x coding time (encoded/total) + stderr_printf ("%10.10s" , PrintTime ( m, (curr - start) * (m->SampleFreq/CLOCKS_PER_SEC), (char)' ')+1 ); + stderr_printf ("%10.10s ", PrintTime ( m, total_estim * (m->SampleFreq/CLOCKS_PER_SEC), (char)' ')+1 ); + + // ETA + stderr_printf ( "%10.10s\r", samples < total_samples ? PrintTime (m, (total_estim - curr + start) * (m->SampleFreq/CLOCKS_PER_SEC), (char)' ')+1 : "" ); + fflush ( stderr ); + + if ( WIN32_MESSAGES && FrontendPresent ) + SendProgressMessage ( kbps, speed, percent ); +} + + +static int +myfeof ( FILE* fp ) +{ + int ch; + + if ( fp != (FILE*)-1 ) + return feof (fp); + + ch = CheckKeyKeep (); + if ( ch == 'q' || ch == 'Q' ) + return 1; + return 0; +} + +static void fill_float(float * buffer,float val,unsigned count) +{ + unsigned n; + for(n=0;nOverflows > 0 ) { // report internal clippings + stderr_printf ( "\n" + "\033[1m\rWARNING:\n" + "\033[0m\r There still occured %u SCF clippings.\n" + " Use the '--scale' method to avoid additional distortions. Note that this\n" + " file already has annoying distortions due to slovenly CD mastering.\a\n\n", e->Overflows ); + } +} + +// FIXME : not sure if it's a good idea +static void Init_FPU ( void ) +{ + mpc_uint16_t cw; + +#if defined __i386__ && defined _FPU_GETCW && defined _FPU_SETCW + _FPU_GETCW ( cw ); + cw &= ~0x300; + _FPU_SETCW ( cw ); +#elif defined __i386__ && defined FPU_GETCW && defined FPU_SETCW + FPU_GETCW ( cw ); + cw &= ~0x300; + FPU_SETCW ( cw ); +#elif defined __MINGW32__ + __asm__ ("fnstcw %0" : "=m" (*&cw)); + cw &= ~0x300; + __asm__ ("fldcw %0" : : "m" (*&cw)); +#elif defined(_WIN32) && !defined(_WIN64) + _asm { fstcw cw }; + cw &= ~0x300; + _asm { fldcw cw }; +#endif +} + +static FILE * OpenStream(char * OutputName) +{ + FILE * OutputFile = NULL; + + /* open bitstream file */ + if ( 0 == strcmp ( OutputName, "/dev/null") ) + OutputFile = fopen (DEV_NULL, "wb"); + else if ( 0 == strcmp ( OutputName, "-") || 0 == strcmp ( OutputName, "/dev/stdout") ) + OutputFile = SETBINARY_OUT (stdout); + else + switch ( WriteMode ) { + default: + stderr_printf ( "\033[33;41;1mERROR\033[0m: Invalid Write mode, internal error\n" ); + exit(1); + case MODE_NEVER_OVERWRITE: + OutputFile = fopen ( OutputName, "rb" ); + if ( OutputFile != NULL ) { + fclose ( OutputFile ); + stderr_printf ( "\033[33;41;1mERROR\033[0m: Output file '%s' already exists\n", OutputName ); + exit(1); + } + OutputFile = fopen ( OutputName, "w+b" ); + break; + case MODE_OVERWRITE: + OutputFile = fopen ( OutputName, "w+b" ); + break; + case MODE_ASK_FOR_OVERWRITE: + OutputFile = fopen ( OutputName, "rb" ); + if ( OutputFile != NULL ) { + char c; + fclose ( OutputFile ); + stderr_printf ( "\nmpcenc: Output file '%s' already exists, overwrite (Y/n)? ", OutputName ); + c = waitkey (); + if ( c != 'Y' && c != 'y' ) { + stderr_printf ( "No!!!\n\n*** Canceled overwrite ***\n" ); + exit(1); + } + stderr_printf ( " YES\n" ); + } + OutputFile = fopen ( OutputName, "w+b" ); + break; + } + + if ( OutputFile == NULL ) { + stderr_printf ( "\033[33;41;1mERROR\033[0m: Could not create output file '%s'\n", OutputName ); + exit(1); + } + return OutputFile; +} + +static int +mainloop ( int argc, char** argv ) +{ + SMRTyp SMR; // contains SMRs for the given frame + PCMDataTyp Main; // contains PCM data for 1600 samples + SubbandFloatTyp X [32]; // Subbandsamples as float() + wave_t Wave; // contains WAV-files arguments + mpc_uint64_t AllSamplesRead = 0; // overall read Samples per channel + unsigned int CurrentRead = 0; // current read Samples per channel + unsigned int N; // counter for processed frames + char* InputName = NULL; // Name of WAVE file + char* OutputName = NULL; // Name of bitstream file + int Silence = 0; + int OldSilence = 0; + time_t T; + int TransientL [PART_SHORT]; // Flag of transient detection + int TransientR [PART_SHORT]; // Flag of transient detection + int Transient [32]; // Flag of transient detection + PsyModel m; + mpc_encoder_t e; + mpc_uint_t si_size; + + // initialize tables which must be initialized once and only once + + m.SCF_Index_L = (int*) e.SCF_Index_L; + m.SCF_Index_R = (int*) e.SCF_Index_R; + + Init_Psychoakustik (&m); + Init_FPU (); + + // initialize PCM-data + memset ( &Main, 0, sizeof Main ); + + // open WAV file + if ( EvalParameters (&m, argc, argv, &InputName, &OutputName, 1 ) < 0 ) + return 1; + if ( Open_WAV_Header ( &Wave, InputName ) < 0 ) { + stderr_printf ( "\033[33;41;1mERROR\033[0m: Unable to read or decode: '%s'\n", InputName ); + return 1; + } + TitleBar ( InputName ); + CopyTags ( InputName ); + + // read WAV-Header + if ( 0 != Read_WAV_Header (&Wave) ) { + stderr_printf ( "\033[33;41;1mERROR\033[0m: Invalid file header, not a WAVE file '%s'\n", InputName ); + return 1; + } + + m.SampleFreq = Wave.SampleFreq; + SamplesInWAVE = Wave.PCMSamples; + + if ( Wave.SampleFreq != 44100. && Wave.SampleFreq != 48000. && Wave.SampleFreq != 37800. && Wave.SampleFreq != 32000. ) { + stderr_printf ( "\033[33;41;1mERROR\033[0m: Sampling frequency of %g kHz is not supported!\n\n", (double)(Wave.SampleFreq * 1.e-3) ); + return 1; + } + + if ( Wave.BitsPerSample < 8 || Wave.BitsPerSample > 32 ) { + stderr_printf ( "\033[33;41;1mERROR\033[0m: %i bits per sample are not supported!\n\n", Wave.BitsPerSample ); + return 1; + } + + switch ( Wave.Channels ) { + case 0: + stderr_printf ( "\033[33;41;1mERROR\033[0m: 0 channels file, this is nonsense\n\n" ); + return 1; + case 1: case 2: + break; + case 3: case 4: case 5: case 6: case 7: case 8: + stderr_printf ( "WARNING: %i channel(s) file, only first 2 channels are encoded.\n\n", Wave.Channels ); + break; + default: + stderr_printf ( "\033[33;41;1mERROR\033[0m: %i channel(s) file, not supported\n\n", Wave.Channels ); + return 1; + } + + SetQualityParams (&m, 5.0); + + if ( EvalParameters (&m, argc, argv, &InputName, &OutputName, 0 ) < 0 ) + return 1; + + if ( (long double)(SamplesInWAVE) >= Wave.SampleFreq * (SkipTime + Duration) ) { + SamplesInWAVE = Wave.SampleFreq * (SkipTime + Duration); + } + + mpc_encoder_init (&e, SamplesInWAVE, FramesBlockPwr, SeekDistance); + Init_Psychoakustiktabellen (&m); // must be done AFTER decoding command line parameters + + // check fade-length + if ( FadeInTime + FadeOutTime > (long double)(SamplesInWAVE) / Wave.SampleFreq ) { + stderr_printf ( "WARNING: Duration of fade in + out exceeds file length!\n"); + FadeInTime = FadeOutTime = 0.5 * (long double)(SamplesInWAVE) / Wave.SampleFreq; + } + + e.outputFile = OpenStream(OutputName); + + ShowParameters (&m, InputName, OutputName ); + if ( WIN32_MESSAGES && FrontendPresent ) + SendModeMessage (m.MainQual); + + if ( SkipTime > 0. ) { + unsigned long SkipSamples = m.SampleFreq * SkipTime; + signed long read; + + while ( SkipSamples > 0 ) { + read = Read_WAV_Samples ( &Wave, mini(BLOCK, SkipSamples), &Main, CENTER, ScalingFactorl, ScalingFactorr, &Silence ); + if ( read <= 0 ) + break; + SkipSamples -= read; + SamplesInWAVE -= read; + } + } + + e.MS_Channelmode = m.MS_Channelmode; + e.seek_ref = ftell(e.outputFile); + writeMagic(&e); + writeStreamInfo ( &e, m.Max_Band, m.MS_Channelmode > 0, SamplesInWAVE, 0, + m.SampleFreq, Wave.Channels > 2 ? 2 : Wave.Channels); + si_size = writeBlock(&e, "SH", MPC_TRUE, 0); + writeGainInfo ( &e, 0, 0, 0, 0); + writeBlock(&e, "RG", MPC_FALSE, 0); + if (NoEncoderInfo == 0) { + writeEncoderInfo(&e, m.FullQual, m.PNS > 0, MPCENC_MAJOR, MPCENC_MINOR, MPCENC_BUILD); + writeBlock(&e, "EI", MPC_FALSE, 0); + } + if (NoSeekTable == 0) { + e.seek_ptr = ftell(e.outputFile); + writeBits (&e, 0, 16); + writeBits (&e, 0, 24); // jump 40 bits for seek table pointer + writeBlock(&e, "SO", MPC_FALSE, 0); // reserve space for seek offset + } + + + // initialize timer + ShowProgress (&m, 0, SamplesInWAVE, e.outputBits ); + T = time ( NULL ); + + // read samples + CurrentRead = Read_WAV_Samples ( &Wave, (int)minf(BLOCK, SamplesInWAVE - AllSamplesRead), &Main, CENTER, ScalingFactorl, ScalingFactorr, &Silence ); + AllSamplesRead += CurrentRead; + + if (CurrentRead > 0) + { + fill_float( Main.L, Main.L[CENTER], CENTER ); + fill_float( Main.R, Main.R[CENTER], CENTER ); + fill_float( Main.M, Main.M[CENTER], CENTER ); + fill_float( Main.S, Main.S[CENTER], CENTER ); + } + + Analyse_Init ( Main.L[CENTER], Main.R[CENTER], X, m.Max_Band ); + + // adapt SamplesInWAVE to the real number of contained samples + if ( myfeof (Wave.fp) ) { + stderr_printf ( "WAVE file has incorrect header: header: %.3f s, contents: %.3f s \n", + (long double)(SamplesInWAVE) / m.SampleFreq, (long double)(AllSamplesRead) / m.SampleFreq); + } + + for ( N = 0; (mpc_uint64_t)N * BLOCK < SamplesInWAVE + DECODER_DELAY; N++ ) { + + // setting residual data-fields to zero + if ( CurrentRead < BLOCK && N > 0 ) { + fill_float( Main.L + (CENTER + CurrentRead), Main.L[CENTER + CurrentRead - 1], BLOCK - CurrentRead ); + fill_float( Main.R + (CENTER + CurrentRead), Main.R[CENTER + CurrentRead - 1], BLOCK - CurrentRead ); + fill_float( Main.M + (CENTER + CurrentRead), Main.M[CENTER + CurrentRead - 1], BLOCK - CurrentRead ); + fill_float( Main.S + (CENTER + CurrentRead), Main.S[CENTER + CurrentRead - 1], BLOCK - CurrentRead ); + } + + /*********************************************************************************/ + /* Fade In and Fade Out */ + /*********************************************************************************/ + if ( FadeInTime > 0. ) + if ( FadeInTime > (long double)(BLOCK + (mpc_uint64_t)N*BLOCK) / Wave.SampleFreq ) + Fading_In ( &Main, N*BLOCK, Wave.SampleFreq ); + if ( FadeOutTime > 0. ) + if ( FadeOutTime > (long double)(SamplesInWAVE - (mpc_uint64_t)N*BLOCK) / Wave.SampleFreq ) + Fading_Out ( &Main, N*BLOCK, Wave.SampleFreq ); + + /********************************************************************/ + /* Encoder-Core */ + /********************************************************************/ + // you only get null samples at the output of the filterbank when the last frame contains zeroes + + memset ( e.Res_L, 0, sizeof e.Res_L ); + memset ( e.Res_R, 0, sizeof e.Res_R ); + + if ( !Silence || !OldSilence ) { + Analyse_Filter ( &Main, X, m.Max_Band ); // Analysis-Filterbank (Main -> X) + SMR = Psychoakustisches_Modell (&m, m.Max_Band*0+31, &Main, TransientL, TransientR ); // Psychoacoustics return SMRs for input data 'Main' + if ( m.minSMR > 0 ) + RaiseSMR (&m, m.Max_Band, &SMR ); // Minimum-operation on SBRs (full bandwidth) + if ( m.MS_Channelmode > 0 ) + MS_LR_Entscheidung ( m.Max_Band, e.MS_Flag, &SMR, X ); // Selection of M/S- or L/R-Coding + SCF_Extraktion (&m, &e, m.Max_Band, X ); // Extraction of the scalefactors and normalization of the subband samples + TransientenCalc ( Transient, TransientL, TransientR ); + if ( m.NS_Order > 0 ) { + NS_Analyse (&m, m.Max_Band, e.MS_Flag, SMR, Transient ); // calculate possible ANS-Filter and the expected gain + } + + Allocate ( m.Max_Band, e.Res_L, X[0].L, e.SCF_Index_L[0], m.SNR_comp_L, SMR.L, Power_L, Transient , m.PNS ); // allocate bits for left + right channel + Allocate ( m.Max_Band, e.Res_R, X[0].R, e.SCF_Index_R[0], m.SNR_comp_R, SMR.R, Power_R, Transient , m.PNS ); + + Quantisierung (&m, m.Max_Band, e.Res_L, e.Res_R, X, e.Q ); // quantize samples + } + + OldSilence = Silence; + writeBitstream_SV8 ( &e, m.Max_Band); // write SV8-Bitstream + + if ( (int)(time (NULL) - T) >= 0 ) { // output + T += labs (DisplayUpdateTime); + ShowProgress (&m, (mpc_uint64_t)(N+1) * BLOCK, SamplesInWAVE, e.outputBits ); + } + + memmove ( Main.L, Main.L + BLOCK, CENTER * sizeof(float) ); + memmove ( Main.R, Main.R + BLOCK, CENTER * sizeof(float) ); + memmove ( Main.M, Main.M + BLOCK, CENTER * sizeof(float) ); + memmove ( Main.S, Main.S + BLOCK, CENTER * sizeof(float) ); + + // read samples + CurrentRead = Read_WAV_Samples ( &Wave, (int)minf(BLOCK, SamplesInWAVE - AllSamplesRead), &Main, CENTER, ScalingFactorl, ScalingFactorr, &Silence ); + AllSamplesRead += CurrentRead; + + // adapt SamplesInWAV to the real number of contained samples + if ( myfeof (Wave.fp) ) { + stderr_printf ( "WAVE file has incorrect header: header: %.3f s, contents: %.3f s \n", + (long double)(SamplesInWAVE) / m.SampleFreq, (long double)(AllSamplesRead) / m.SampleFreq); + SamplesInWAVE = AllSamplesRead; + } + } + + // write the last incomplete block + if (e.framesInBlock != 0) { + if ((e.block_cnt & ((1 << e.seek_pwr) - 1)) == 0) { + e.seek_table[e.seek_pos] = ftell(e.outputFile); + e.seek_pos++; + } + e.block_cnt++; + writeBlock(&e, "AP", MPC_FALSE, 0); + } + if (NoSeekTable == 0) { + writeSeekTable(&e); + writeBlock(&e, "ST", MPC_FALSE, 0); // write seek table block + } + writeBlock(&e, "SE", MPC_FALSE, 0); // write end of stream block + + if (Wave.PCMSamples != AllSamplesRead) { + fseek(e.outputFile, e.seek_ref + 4, SEEK_SET); + writeStreamInfo ( &e, m.Max_Band, m.MS_Channelmode > 0, SamplesInWAVE, 0, + m.SampleFreq, Wave.Channels > 2 ? 2 : Wave.Channels); + writeBlock(&e, "SH", MPC_TRUE, si_size); + fseek(e.outputFile, 0, SEEK_END); + } + + ShowProgress (&m, SamplesInWAVE, SamplesInWAVE, e.outputBits ); + + FinalizeTags ( e.outputFile, APE_Version, 0 ); + fclose ( e.outputFile ); + fclose ( Wave.fp ); + mpc_encoder_exit(&e); + + if ( DelInput == 0xAFFEDEAD && remove (InputName) == -1 ) // delete input file if DelInput is active + stderr_printf ( "\n\n\033[33;41;1mERROR\033[0m: Could not delete input file '%s'\n", InputName ); + + if ( WIN32_MESSAGES && FrontendPresent ) + SendQuitMessage (); + + stderr_printf ( "\n" ); + + OverdriveReport (&e); // output a report if clipping was necessary + + return 0; +} + + +/************ The main() function *****************************/ +int mpc_cdecl +main ( int argc, char** argv ) +{ + int ret; + +#ifdef _OS2 + _wildcard ( &argc, &argv ); +#endif + +#ifdef LC_CTYPE + setlocale(LC_CTYPE, ""); + NoUnicode = (strcmp(nl_langinfo(CODESET), "UTF-8") != 0); +#endif + + if ( WIN32_MESSAGES ) { + FrontendPresent = SearchForFrontend (); // search for presence of Windows Frontend + if ( FrontendPresent ) + SendStartupMessage ( MPCENC_VERSION, 8); + } + + // Welcome message + if ( argc < 2 || ( 0 != strcmp (argv[1], "--silent") && 0 != strcmp (argv[1], "--quiet")) ) + (void) stderr_printf ("\r\x1B[1m\r%s\n\x1B[0m\r \r", About ); + +#ifdef FAST_MATH + Init_FastMath (); +#endif + + // no arguments or call for help + if ( argc < 2 || 0==strcmp (argv[1],"-h") || 0==strcmp (argv[1],"-?") || 0==strcmp (argv[1],"--help") ) { + PsyModel m; + SetQualityParams (&m, 5.0); + dup2 ( 1, 2 ); + shorthelp (); + return 1; + } + + if ( 0==strcmp (argv[1],"--longhelp") || 0==strcmp (argv[1],"-??") ) { + PsyModel m; + SetQualityParams (&m, 5.0); + dup2 ( 1, 2 ); + longhelp (&m); + return 1; + } + + ret = mainloop ( argc, argv ); // analyze command line and do the requested work + + if(IsEndBeep) + stderr_printf("\a\a\a"); + +#ifdef BUGBUG + reppr (); +#endif + return ret; +} + +/* end of mpcenc.c */ diff --git a/mpcenc/mpcenc.h b/mpcenc/mpcenc.h new file mode 100755 index 0000000..9cd886a --- /dev/null +++ b/mpcenc/mpcenc.h @@ -0,0 +1,314 @@ +/* + * Musepack audio compression + * Copyright (c) 2005-2009, The Musepack Development Team + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef MPCENC_MPCENC_H +#define MPCENC_MPCENC_H + +#include "libmpcenc.h" +#include "libmpcpsy.h" +#include +#include + +//// optimization/feature defines ////////////////////////////////// +#ifndef NOT_INCLUDE_CONFIG_H +# include "config.h" +#endif + +//// portable system includes ////////////////////////////////////// +#include +#include + +//// system dependent system includes ////////////////////////////// +// low level I/O, where are prototypes and constants? +#if defined _WIN32 || defined __TURBOC__ || defined __ZTC__ || defined _MSC_VER +# include +# include +# include +#elif defined __unix__ || defined __linux__ || defined __APPLE__ +# include +# include +# include +#else +// .... add Includes for new Operating System here (with prefix: #elif defined) +# include +#endif + +#if defined __linux__ +# include +#elif defined __FreeBSD__ +# include +#elif defined _MSC_VER +# include +#endif + + +#if !defined(__APPLE__) +// use optimized assembler routines for Pentium III/K6-2/Athlon (only 32 bit OS, Intel x86 and no MAKE_xxBITS) +// you need the NASM assembler on your system, the program becomes a little bit larger and decoding +// on AMD K6-2 (x3), AMD K6-III (x3), AMD Duron (x1.7), AMD Athlon (x1.7), Pentium III (x2) and Pentium 4 (x1.8) becomes faster +#define USE_ASM + +#endif + +// Use termios for reading values from keyboard without echo and ENTER +#define USE_TERMIOS + +// make debug output in tags.c stfu +#define STFU + +#if INT_MAX < 2147483647L +# undef USE_ASM +#endif + +#ifndef O_BINARY +# ifdef _O_BINARY +# define O_BINARY _O_BINARY +# else +# define O_BINARY 0 +# endif +#endif + +#if defined _WIN32 || defined __TURBOC__ +# define strncasecmp(__s1,__s2,__n) strnicmp ((__s1), (__s2), (__n)) +# define strcasecmp(__s1,__s2) stricmp ((__s1), (__s2)) +#endif + +#if defined _WIN32 +# include +# define snprintf _snprintf +# define getcwd(__buff,__len) _getcwd ((__buff), (__len)) +#endif + +//// Binary/Low-Level-IO /////////////////////////////////////////// +// + +#if defined __BORLANDC__ || defined _WIN32 +# define FILENO(__fp) _fileno ((__fp)) +#elif defined __CYGWIN__ || defined __TURBOC__ || defined __unix__ || defined __EMX__ || defined _MSC_VER +# define FILENO(__fp) fileno ((__fp)) +#else +# define FILENO(__fp) fileno ((__fp)) +#endif + + +// +// If we have access to a file via file name, we can open the file with an +// additional "b" or a O_BINARY within the (f)open function to get a +// transparent untranslated data stream which is necessary for audio bitstream +// data and also for PCM data. If we are working with +// stdin/stdout/FILENO_STDIN/FILENO_STDOUT we can't open the file with these +// attributes, because the files are already open. So we need a non +// standardized sequence to switch to this mode (not necessary for Unix). +// Mostly the sequence is the same for incoming and outgoing streams, but only +// mostly so we need one for IN and one for OUT. +// Macros are called with the file pointer and you get back the untransalted file +// pointer which can be equal or different from the original. +// + +#if defined __EMX__ +# define SETBINARY_IN(__fp) (_fsetmode ( (__fp), "b" ), (__fp)) +# define SETBINARY_OUT(__fp) (_fsetmode ( (__fp), "b" ), (__fp)) +#elif defined __TURBOC__ || defined __BORLANDC__ +# define SETBINARY_IN(__fp) (setmode ( FILENO ((__fp)), O_BINARY ), (__fp)) +# define SETBINARY_OUT(__fp) (setmode ( FILENO ((__fp)), O_BINARY ), (__fp)) +#elif defined __CYGWIN__ +# define SETBINARY_IN(__fp) (setmode ( FILENO ((__fp)), _O_BINARY ), (__fp)) +# define SETBINARY_OUT(__fp) (setmode ( FILENO ((__fp)), _O_BINARY ), (__fp)) +#elif defined _WIN32 +# define SETBINARY_IN(__fp) (_setmode ( FILENO ((__fp)), _O_BINARY ), (__fp)) +# define SETBINARY_OUT(__fp) (_setmode ( FILENO ((__fp)), _O_BINARY ), (__fp)) +#elif defined _MSC_VER +# define SETBINARY_IN(__fp) (setmode ( FILENO ((__fp)), O_BINARY ), (__fp)) +# define SETBINARY_OUT(__fp) (setmode ( FILENO ((__fp)), O_BINARY ), (__fp)) +#elif defined __unix__ +# define SETBINARY_IN(__fp) (__fp) +# define SETBINARY_OUT(__fp) (__fp) +#elif 0 +# define SETBINARY_IN(__fp) (freopen ( NULL, "rb", (__fp) ), (__fp)) +# define SETBINARY_OUT(__fp) (freopen ( NULL, "wb", (__fp) ), (__fp)) +#else +# define SETBINARY_IN(__fp) (__fp) +# define SETBINARY_OUT(__fp) (__fp) +#endif + +// file I/O using ANSI buffered file I/O via file pointer FILE* (fopen, fread, fwrite, fclose) +#define READ(fp,ptr,len) fread (ptr, 1, len, fp) // READ returns -1 or 0 on error/EOF, otherwise > 0 +#define READ1(fp,ptr) fread (ptr, 1, 1, fp) // READ returns -1 or 0 on error/EOF, otherwise > 0 + +#ifdef _WIN32 +# define POPEN_READ_BINARY_OPEN(cmd) _popen ((cmd), "rb") +#else +# define POPEN_READ_BINARY_OPEN(cmd) popen ((cmd), "r") +#endif + +// Path separator +#if defined __unix__ || defined __bsdi__ || defined __FreeBSD__ || defined __OpenBSD__ || defined __NetBSD__ || defined __APPLE__ +# define PATH_SEP '/' +# define DRIVE_SEP '\0' +# define EXE_EXT "" +# define DEV_NULL "/dev/null" +# define ENVPATH_SEP ':' +#elif defined _WIN32 || defined __TURBOC__ || defined __ZTC__ || defined _MSC_VER +# define PATH_SEP '\\' +# define DRIVE_SEP ':' +# define EXE_EXT ".exe" +# define DEV_NULL "\\nul" +# define ENVPATH_SEP ';' +#else +# define PATH_SEP '/' // Amiga: C:/ +# define DRIVE_SEP ':' +# define EXE_EXT "" +# define DEV_NULL "nul" +# define ENVPATH_SEP ';' +#endif + +#ifdef _WIN32 +# define TitleBar(text) SetConsoleTitle (text) +#else +# define TitleBar(text) (void) (text) +#endif + + +//// constants ///////////////////////////////////////////////////// +#define DECODER_DELAY (512 - 32 + 1) +#define BLK_SIZE (36 * 32) + + +//// procedures/functions ////////////////////////////////////////// +// pipeopen.c +FILE* pipeopen ( const char* command, const char* filename ); + +// stderr.c +void SetStderrSilent ( mpc_bool_t state ); +mpc_bool_t GetStderrSilent ( void ); +int mpc_cdecl stderr_printf ( const char* format, ... ); + +// quant.h +#define SCFfac 0.832980664785f // = SCF[n-1]/SCF[n] + +// wave_in.h +typedef struct { + FILE* fp; // File pointer to read data + mpc_size_t PCMOffset; // File offset of PCM data + long double SampleFreq; // Sample frequency in Hz + mpc_uint_t BitsPerSample; // used bits per sample, 8*BytesPerSample-7 <= BitsPerSample <= BytesPerSample + mpc_uint_t BytesPerSample; // allocated bytes per sample + mpc_uint_t Channels; // Number of channels, 1...8 + mpc_size_t PCMBytes; // PCM Samples (in 8 bit units) + mpc_size_t PCMSamples; // PCM Samples per Channel + mpc_bool_t raw; // raw: headerless format +} wave_t; + +typedef float SCFTriple [3]; + +// FIXME : put in lib header + +void Init_FFT ( PsyModel* ); + +// FIXME : put in lib header +void Init_Psychoakustik ( PsyModel* ); +SMRTyp Psychoakustisches_Modell ( PsyModel *, const int, const PCMDataTyp*, int* TransientL, int* TransientR ); +void TransientenCalc ( int* Transient, const int* TransientL, const int* TransientR ); +void RaiseSMR ( PsyModel*, const int, SMRTyp* ); +void MS_LR_Entscheidung ( const int, unsigned char* MS, SMRTyp*, SubbandFloatTyp* ); +void Init_Psychoakustiktabellen ( PsyModel* ); + +void NS_Analyse (PsyModel*, const int, const unsigned char* MS, const SMRTyp, const int* Transient ); + +void Analyse_Filter(const PCMDataTyp*, SubbandFloatTyp*, const int); +void Analyse_Init ( float Left, float Right, SubbandFloatTyp* out, const int MaxBand ); + +void SetQualityParams (PsyModel *, float ); +int TestProfileParams ( PsyModel* ); + +extern const float Butfly [7]; // Antialiasing to calculate the subband powers +extern const float InvButfly [7]; // Antialiasing to calculate the masking thresholds +extern const float iw [PART_LONG]; // inverse partition-width for long +extern const float iw_short [PART_SHORT]; // inverse partition-width for short +extern const int wl [PART_LONG]; // w_low for long +extern const int wl_short [PART_SHORT]; // w_low for short +extern const int wh [PART_LONG]; // w_high for long +extern const int wh_short [PART_SHORT]; // w_high for short + + +// quant.c +extern float __invSCF [128 + 6]; // tabulated scalefactors (inverted) +#define invSCF (__invSCF + 6) + +float ISNR_Schaetzer ( const float* samples, const float comp, const int res); +float ISNR_Schaetzer_Trans ( const float* samples, const float comp, const int res); +void QuantizeSubband ( mpc_int16_t* qu_output, const float* input, const int res, float* errors, const int maxNsOrder ); +void QuantizeSubbandWithNoiseShaping ( mpc_int16_t* qu_output, const float* input, const int res, float* errors, const float* FIR ); + +void NoiseInjectionComp ( void ); + +// keyboard.c +int WaitKey ( void ); +int CheckKeyKeep ( void ); +int CheckKey ( void ); + + +// regress.c +void Regression ( float* const _r, float* const _b, const float* p, const float* q ); + + +// tags.c +void Init_Tags ( void ); +int FinalizeTags ( FILE* fp, unsigned int Version, unsigned int flags ); +int addtag ( const char* key, size_t keylen, const char* value, size_t valuelen, int converttoutf8, int flags ); +int gettag ( const char* key, char* dst, size_t len ); +int CopyTags ( const char* filename ); + + +// wave_in.c +int Open_WAV_Header ( wave_t* type, const char* name ); +size_t Read_WAV_Samples ( wave_t* t, const size_t RequestedSamples, PCMDataTyp* data, const ptrdiff_t offset, const float scalel, const float scaler, int* Silence ); +int Read_WAV_Header ( wave_t* type ); + + +// winmsg.c +#ifdef _WIN32 +#define WIN32_MESSAGES 1 // support Windows-Messaging to Frontend +int SearchForFrontend ( void ); +void SendQuitMessage ( void ); +void SendModeMessage ( const int ); +void SendStartupMessage ( const char*, const int); +void SendProgressMessage ( const int, const float, const float ); +#else +# define WIN32_MESSAGES 0 +# define SearchForFrontend() (0) +# define SendQuitMessage() (void)0 +# define SendModeMessage(x) (void)0 +# define SendStartupMessage(x,y) (void)0 +# define SendProgressMessage(x,y,z) (void)0 +#endif /* _WIN32 */ + + +#define MPPENC_DENORMAL_FIX_BASE ( 32. * 1024. /* normalized sample value range */ / ( (float) (1 << 24 /* first bit below 32-bit PCM range */ ) ) ) +#define MPPENC_DENORMAL_FIX_LEFT ( MPPENC_DENORMAL_FIX_BASE ) +#define MPPENC_DENORMAL_FIX_RIGHT ( MPPENC_DENORMAL_FIX_BASE * 0.5f ) + +#ifndef LAST_HUFFMAN +# define LAST_HUFFMAN 7 +#endif + +#endif /* MPCENC_MPCENC_H */ + +/* end of mpcenc.h */ diff --git a/mpcenc/pipeopen.c b/mpcenc/pipeopen.c new file mode 100755 index 0000000..43499ad --- /dev/null +++ b/mpcenc/pipeopen.c @@ -0,0 +1,195 @@ +/* + * Opens a communication channel to another program using unnamed pipe mechanism and stdin/stdout. + * + * (C) Frank Klemm 2001,02. All rights reserved. + * + * Principles: + * + * History: + * 2001 created + * 2002 + * + * Global functions: + * - pipeopen + * + * TODO: + * - + */ + +#include +#include + +#include "mpcenc.h" + + +/* + * + */ + +static int +EscapeProgramPathName ( const char* longprogname, + char* escaped, + size_t len ) +{ + int ret = 0; + +#ifdef _WIN32 + ret = GetShortPathName ( longprogname, escaped, len ); +#else + if ( strlen (longprogname) <= len-3 ) + ret = sprintf ( escaped, "\"%s\"", longprogname ); // Note that this only helps against spaces and some similar things in the file name, not against all strange stuff +#endif + + if ( ret <= 0 || ret >= (int)len ) { + } + + return ret; +} + + +/* + * + */ + +static FILE* +OpenPipeWhenBinaryExist ( const char* path, + size_t pathlen, + const char* executable_filename, + const char* command_line ) +{ + char filename [4096]; + char cmdline [4096]; + char* p = filename; + FILE* fp; + + for ( ; *path && pathlen--; path++ ) + if ( *path != '"' ) + *p++ = *path; + *p++ = PATH_SEP; + strcpy ( p, executable_filename ); +#ifdef DEBUG2 + stderr_printf ("Test for file %s \n", filename ); +#endif + fp = fopen ( filename, "rb" ); + if ( fp != NULL ) { + fclose ( fp ); + EscapeProgramPathName ( filename, cmdline, sizeof cmdline ); + strcat ( cmdline, command_line ); + fp = POPEN_READ_BINARY_OPEN ( cmdline ); +#ifdef DEBUG2 + stderr_printf ("Executed %s\n", cmdline ); +#endif + } + return fp; +} + + +/* + * + */ + +static FILE* +TracePathList ( const char* p, + const char* executable_filename, + const char* command_line ) +{ + const char* nextsep; + FILE* fp; + + while ( p != NULL && *p != '\0' ) { + if ( (nextsep = strchr (p, ENVPATH_SEP)) == NULL ) { + fp = OpenPipeWhenBinaryExist ( p, (size_t) -1, executable_filename, command_line ); + p = NULL; + } + else { + fp = OpenPipeWhenBinaryExist ( p, (size_t)(nextsep-p), executable_filename, command_line ); + p = nextsep + 1; + } + if ( fp != NULL ) + return fp; + } + return NULL; +} + + +/* + * Executes command line given by command. + * The command must be found in some predefined paths or in the ${PATH} aka %PATH% + * The char # in command is replaced by the contents + * of filename. Special characters are escaped. + */ + +FILE* +pipeopen ( const char* command, const char* filename ) +{ + static const char pathlist [] = +#ifdef _WIN32 + "."; +#else + "/usr/bin:/usr/local/bin:/opt/mpp:."; +#endif + char command_line [4096]; // -o - bar.pac + char executable_filename [4096]; // foo.exe + char* p; + const char* q; + FILE* fp; + + // does the source file exist and is readble? + if ( (fp = fopen (filename, "rb")) == NULL ) { + stderr_printf ("file '%s' not found.\n", filename ); + return NULL; + } + fclose (fp); + + // extract executable name from the 'command' to executable_filename, append executable extention + p = executable_filename; + for ( ; *command != ' ' && *command != '\0'; command++ ) + *p++ = *command; + strcpy ( p, EXE_EXT ); + + + // Copy 'command' to 'command_line' replacing '#' by filename + p = command_line; + for ( ; *command != '\0'; command++ ) { + if ( *command != '#' ) { + *p++ = *command; + } + else { + q = filename; + if (*q == '-') { + *p++ = '.'; + *p++ = PATH_SEP; + } +#ifdef _WIN32 // Windows secure Way to "escape" + *p++ = '"'; + while (*q) + *p++ = *q++; + *p++ = '"'; +#else // Unix secure Way to \e\s\c\a\p\e + while (*q) { + if ( !isalnum(*q) && *q != '.' && *q != '-' && *q != '_' && *q != '/' ) + *p++ = '\\'; + *p++ = *q++; + } +#endif + } + } + *p = '\0'; + + // Try the several built-in paths to find binary + fp = TracePathList ( pathlist , executable_filename, command_line ); + if ( fp != NULL ) + return fp; + + // Try the PATH settings to find binary (Why we must search for the executable in all PATH settings? --> popen itself do not return useful information) + fp = TracePathList ( getenv ("PATH"), executable_filename, command_line ); + if ( fp != NULL ) + return fp; + +#ifdef DEBUG2 + stderr_printf ("Nothing found to execute.\n" ); +#endif + return NULL; +} + +/* end of pipeopen.c */ diff --git a/mpcenc/predict.h b/mpcenc/predict.h new file mode 100755 index 0000000..f568832 --- /dev/null +++ b/mpcenc/predict.h @@ -0,0 +1,177 @@ +/* + * Musepack audio compression + * Copyright (c) 2005-2009, The Musepack Development Team + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mpcenc.h" + + +#define MAX_LPC_ORDER 35 +#define log2(x) ( log (x) * (1./M_LN2) ) +#define ORDER_PENALTY 0 + + +static int // best prediction order model +CalculateLPCCoeffs ( Int32_t* buf, // Samples + size_t nbuf, // Number of samples + Int32_t offset, // + double* lpcout, // quantized prediction coefficients + int nlpc, // max. prediction order + float* psigbit, // expected number of bits per original signal sample + float* presbit ) // expected number of bits per residual signal sample +{ + static double* fbuf = NULL; + static int nflpc = 0; + static int nfbuf = 0; + int nbit; + int i; + int j; + int bestnbit; + int bestnlpc; + double e; + double bestesize; + double ci; + double esize; + double acf [MAX_LPC_ORDER + 1]; + double ref [MAX_LPC_ORDER + 1]; + double lpc [MAX_LPC_ORDER + 1]; + double tmp [MAX_LPC_ORDER + 1]; + double escale = 0.5 * M_LN2 * M_LN2 / nbuf; + double sum; + + if ( nlpc >= nbuf ) // if necessary, limit the LPC order to the number of samples available + nlpc = nbuf - 1; + + if ( nlpc > nflpc || nbuf > nfbuf ) { // grab some space for a 'zero mean' buffer of floats if needed + if ( fbuf != NULL ) + free ( fbuf - nflpc ); + fbuf = nlpc + ((double*) calloc ( nlpc+nbuf, sizeof (*fbuf) )); + nfbuf = nbuf; + nflpc = nlpc; + } + + e = 0.; + for ( j = 0; j < nbuf; j++ ) { // zero mean signal and compute energy + sum = fbuf [j] = buf[j] - (double)offset; + e += sum * sum; + } + + esize = e > 0. ? 0.5 * log2 (escale * e) : 0.; + *psigbit = esize; // return the expected number of bits per original signal sample + + acf [0] = e; // store the best values so far (the zeroth order predictor) + bestnlpc = 0; + bestnbit = nbuf * esize; + bestesize = esize; + + for ( i = 1; i <= nlpc && e > 0. && i < bestnlpc + 4; i++ ) { // just check two more than bestnlpc + + sum = 0.; + for ( j = i; j < nbuf; j++ ) // compute the jth autocorrelation coefficient + sum += fbuf [j] * fbuf [j-i]; + acf [i] = sum; + + ci = 0.; // compute the reflection and LP coeffients for order j predictor + for ( j = 1; j < i; j++ ) + ci += lpc [j] * acf [i-j]; + lpc [i] = ref [i] = ci = (acf [i] - ci) / e; + for ( j = 1; j < i; j++ ) + tmp [j] = lpc [j] - ci * lpc [i-j]; + for ( j = 1; j < i; j++ ) + lpc [j] = tmp [j]; + + e *= 1 - ci*ci; // compute the new energy in the prediction residual + esize = e > 0. ? 0.5 * log2 (escale * e) : 0.; + + nbit = nbuf * esize + i * ORDER_PENALTY; + if ( nbit < bestnbit ) { // store this model if it is the best so far + bestnlpc = i; // store best model order + bestnbit = nbit; + bestesize = esize; + + for ( j = 0; j < bestnlpc; j++ ) // store the quantized LP coefficients + lpcout [j] = lpc [j+1]; + } + } + + *presbit = bestesize; // return the expected number of bits per residual signal sample + return bestnlpc; // return the best model order +} + + +static void +Pred ( const unsigned int* new, + unsigned int* old ) +{ + static Double DOUBLE [36]; + Float org; + Float pred; + int i; + int j; + int sum = 18; + int order; + double oldeff = 0.; + double neweff = 0.; + + for ( i = 0; i < 36; i++ ) + sum += old [i]; + sum = (int) floor (sum / 36.); + + order = CalculateLPCCoeffs ( old, 36, sum*0, DOUBLE, 35, &org, &pred ); + + printf ("avg: %4u [%2u] %.2f %.2f\n\n", sum, order, org, pred ); + if ( order < 1 ) + return; + + for ( i = 0; i < order; i++ ) + printf ("%f ", DOUBLE[i] ); + printf ("\n"); + + for ( i = 0; i < 36; i++ ) { + double sum = 0.; + for ( j = 1; j <= order; j++ ) { + sum += (i-j < 0 ? old[i-j+36] : new [i-j]) * DOUBLE [j-1]; + } + printf ("%2u: %6.2f %3d\n", i, sum, new [i] ); + oldeff += new[i] * new[i]; + neweff += (sum-new[i]) * (sum-new[i]); + } + printf ("%6.2f %6.2f\n", sqrt(oldeff), sqrt(neweff) ); +} + + +void +Predicate ( int Channel, int Band, unsigned int* x, int* scf ) +{ + static Int32_t OLD [2] [32] [36]; + int i; + + printf ("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n"); + for ( i = 0; i < 36; i++ ) + printf ("%2d ", OLD [Channel][Band][i] ); + printf ("\n"); + for ( i = 0; i < 36; i++ ) + printf ("%2d ", x[i] ); + printf ("\n"); + printf ("%2u-%2u-%2u ", scf[0], scf[1], scf[2] ); + Pred ( x, OLD [Channel][Band] ); + for ( i = 0; i < 36; i++ ) + OLD [Channel][Band][i] = x[i]; +} + +/* end of predict.c */ diff --git a/mpcenc/stderr.c b/mpcenc/stderr.c new file mode 100755 index 0000000..e1835e8 --- /dev/null +++ b/mpcenc/stderr.c @@ -0,0 +1,185 @@ +/* + * stderr - Message output system + * + * (C) Frank Klemm, Janne Hyv�inen 2002. All rights reserved. + * + * Principles: + * + * History: + * 2001 created + * 2002 Spring added functionality to switch on and off printing to easily allow silent modes + * 2002-10-10 Escape sequence handling for Windows added. + * + * Global functions: + * - SetStderrSilent() + * - GetStderrSilent() + * - stderr_printf() + * + * TODO: + * - + */ + +#include + +#ifdef _WIN32 +# include +#endif + +#include +#include +// #include "mpcenc.h" + +#define WRITE(fp,ptr,len) fwrite (ptr, 1, len, fp) // WRITE returns -1 or 0 on error/EOF, otherwise > 0 + +static mpc_bool_t stderr_silent = 0; + + +void +SetStderrSilent ( mpc_bool_t state ) +{ + stderr_silent = state; +} + + +mpc_bool_t +GetStderrSilent ( void ) +{ + return stderr_silent; +} + + +int mpc_cdecl +stderr_printf ( const char* format, ... ) +{ + char buff [2 * 1024 + 3072]; + char* p = buff; + int ret; + va_list v; + + /* print to a buffer */ + va_start ( v, format ); + ret = vsprintf ( p, format, v ); + va_end ( v ); + + if ( !stderr_silent ) { + +#if defined __unix__ || defined __UNIX__ + + WRITE ( stderr, buff, ret ); + +#elif defined _WIN32 + +# define FOREGROUND_ALL ( FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED ) +# define BACKGROUND_ALL ( BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED ) + + // for Windows systems we must merge carriage returns into the stream to avoid staircases + // Also escape sequences must be detected and replaced (incomplete now) + + char buff [128], *q; + static int init = 0; + CONSOLE_SCREEN_BUFFER_INFO con_info; + static HANDLE hSTDERR; + static WORD attr; + static WORD attr_initial; + DWORD written; + + if ( init == 0 ) { + hSTDERR = GetStdHandle ( STD_ERROR_HANDLE ); + attr = hSTDERR == INVALID_HANDLE_VALUE || GetConsoleScreenBufferInfo ( hSTDERR, &con_info ) == 0 + ? FOREGROUND_ALL : con_info.wAttributes; + attr_initial = attr; + init = 1; + } + + if ( hSTDERR == INVALID_HANDLE_VALUE ) { + while ( ( q = strchr (p, '\n')) != NULL ) { + WRITE ( stderr, p, q-p ); + WRITE ( stderr, "\r\n", 2 ); + p = q+1; + } + WRITE ( stderr, p, strlen (p) ); + } + else { + for ( ; *p; p++ ) { + switch ( *p ) { + case '\n': + SetConsoleTextAttribute ( hSTDERR, attr_initial ); + fprintf ( stderr, "\r\n" ); + SetConsoleTextAttribute ( hSTDERR, attr ); + break; + + case '\x1B': + if ( p[1] == '[' ) { + unsigned int tmp; + + p++; + cont: p++; + for ( tmp = 0; (unsigned int)( *p - '0' ) < 10u; p++ ) + tmp = 10 * tmp + ( *p - '0' ); + + switch ( *p ) { + case ';': + case 'm': + switch ( tmp ) { + case 0: attr = FOREGROUND_ALL; break; // reset defaults + case 1: attr |= FOREGROUND_INTENSITY; break; // high intensity on + case 2: attr &= ~FOREGROUND_ALL; attr |= FOREGROUND_INTENSITY; break; // (very) low intensity + case 3: break; // italic on + case 4: break; // underline on + case 5: break; // blinking on + case 7: break; // reverse + case 8: attr = 0; break; // invisible + case 30: attr &= ~FOREGROUND_ALL; break; + case 31: attr &= ~FOREGROUND_ALL; attr |= FOREGROUND_RED; break; + case 32: attr &= ~FOREGROUND_ALL; attr |= FOREGROUND_GREEN; break; + case 33: attr &= ~FOREGROUND_ALL; attr |= FOREGROUND_RED | FOREGROUND_GREEN; break; + case 34: attr &= ~FOREGROUND_ALL; attr |= FOREGROUND_BLUE; break; + case 35: attr &= ~FOREGROUND_ALL; attr |= FOREGROUND_RED | FOREGROUND_BLUE; break; + case 36: attr &= ~FOREGROUND_ALL; attr |= FOREGROUND_GREEN | FOREGROUND_BLUE; break; + case 37: case 39: attr |= FOREGROUND_ALL; break; + case 40: case 49: + attr &= ~BACKGROUND_ALL; break; + case 41: attr &= ~BACKGROUND_ALL; attr |= BACKGROUND_RED; break; + case 42: attr &= ~BACKGROUND_ALL; attr |= BACKGROUND_GREEN; break; + case 43: attr &= ~BACKGROUND_ALL; attr |= BACKGROUND_RED | BACKGROUND_GREEN; break; + case 44: attr &= ~BACKGROUND_ALL; attr |= BACKGROUND_BLUE; break; + case 45: attr &= ~BACKGROUND_ALL; attr |= BACKGROUND_RED | BACKGROUND_BLUE; break; + case 46: attr &= ~BACKGROUND_ALL; attr |= BACKGROUND_GREEN | BACKGROUND_BLUE; break; + case 47: attr |= BACKGROUND_ALL; break; + } + SetConsoleTextAttribute ( hSTDERR, attr ); + if ( *p == ';' ) + goto cont; + break; + + default: + WriteFile ( hSTDERR, buff, sprintf ( buff, "Unknown escape sequence ending with '%c'\n", *p ), &written, NULL ); + break; + } + break; + } + default: + fputc ( *p, stderr ); + break; + } + } /* end for */ + } + +#else + char * q; + // for non-Unix systems we must merge carriage returns into the stream to avoid staircases + while ( ( q = strchr (p, '\n')) != NULL ) { + WRITE ( stderr, p, q-p ); + WRITE ( stderr, "\r\n", 2 ); + p = q+1; + } + WRITE ( stderr, p, strlen (p) ); + +#endif + + } + + return ret; +} + +/* end of stderr.c */ diff --git a/mpcenc/wave_in.c b/mpcenc/wave_in.c new file mode 100755 index 0000000..27aa233 --- /dev/null +++ b/mpcenc/wave_in.c @@ -0,0 +1,572 @@ +/* + * Musepack audio compression + * Copyright (c) 2005-2009, The Musepack Development Team + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +# include +#include "mpcenc.h" + +#ifdef _WIN32 + +static int +init_in ( const int SampleCount, + const int SampleFreq, + const int Channels, + const int BitsPerSample ); +static size_t +get_in ( void* DataPtr ); + +#endif + +#define EXT(x) (0 == strcasecmp (ext, #x)) + +int +Open_WAV_Header ( wave_t* type, const char* filename ) +{ + const char* ext = strrchr ( filename, '.'); + FILE* fp; + + type -> raw = 0; + + if ( 0 == strcmp ( filename, "-") || 0 == strcmp ( filename, "/dev/stdin") ) { + fp = SETBINARY_IN ( stdin ); + } + else if ( ext == NULL ) { + fp = NULL; + } + else if ( EXT(.wav) ) { + fp = fopen ( filename, "rb" ); + } + else if ( EXT(.wv) ) { // wavpack (www.wavpack.com) + fp = pipeopen ( "wvunpack # -", filename ); + } + else if ( EXT(.la) ) { // lossless-audio (www.lossless-audio.com) + fp = pipeopen ( "la -console #", filename ); + } + else if ( EXT(.raw) || EXT(.cdr) || EXT(.pcm) ) { + fp = fopen ( filename, "rb" ); + type->Channels = 2; + type->BitsPerSample = 16; + type->BytesPerSample = 2; + type->SampleFreq = 44100.; + type->raw = 1; + type->PCMOffset = 0; + type->PCMBytes = 0xFFFFFFFF; + type->PCMSamples = 86400 * type->SampleFreq; + } + else if ( EXT(.pac) || EXT(.lpac) || EXT(.lpa) ) { + fp = pipeopen ( "lpac -o -x #", filename ); + } + else if ( EXT(.fla) || EXT(.flac) ) { +#ifdef _WIN32 + stderr_printf ( "*** Install at least version 1.03 of FLAC.EXE. Thanks! ***\n\n" ); +#endif + fp = pipeopen ( "flac -d -s -c - < #", filename ); + } + else if ( EXT(.rka) || EXT(.rkau) ) { + fp = pipeopen ( "rkau # -", filename ); + } + else if ( EXT(.sz) ) { + fp = pipeopen ( "szip -d < #", filename ); + } + else if ( EXT(.sz2) ) { + fp = pipeopen ( "szip2 -d < #", filename ); + } + else if ( EXT(.ofr) ) { + fp = pipeopen ( "optimfrog d # -", filename ); + } + else if ( EXT(.ape) ) { + fp = pipeopen ( "mac # - -d", filename ); + } + else if ( EXT(.shn) || EXT(.shorten) ) { +#ifdef _WIN32 + stderr_printf ( "*** Install at least version 3.4 of Shorten.exe. Thanks! ***\n\n" ); +#endif + fp = pipeopen ( "shorten -x # -", filename ); // Test if it's okay !!!! + if ( fp == NULL ) + fp = pipeopen ( "shortn32 -x # -", filename ); + } + else if ( EXT(.mod) ) { + fp = pipeopen ( "xmp -b16 -c -f44100 --stereo -o- #", filename ); + type->Channels = 2; + type->BitsPerSample = 16; + type->BytesPerSample = 2; + type->SampleFreq = 44100.; + type->raw = 1; + type->PCMOffset = 0; + type->PCMBytes = 0xFFFFFFFF; + type->PCMSamples = 86400 * type->SampleFreq; + } + else { + fp = NULL; + } + + type -> fp = fp; + return fp == NULL ? -1 : 0; +} + +#undef EXT + + +static float f0 ( const void* p ) +{ + return (void)p, 0.; +} + +static float f8 ( const void* p ) +{ + return (((unsigned char*)p)[0] - 128) * 256.; +} + +static float f16 ( const void* p ) +{ + return ((unsigned char*)p)[0] + 256. * ((signed char*)p)[1]; +} + +static float f24 ( const void* p ) +{ + return ((unsigned char*)p)[0]*(1./256) + ((unsigned char*)p)[1] + 256 * ((signed char*)p)[2]; +} + +static float f32 ( const void* p ) +{ + return ((unsigned char*)p)[0]*(1./65536) + ((unsigned char*)p)[1]*(1./256) + ((unsigned char*)p)[2] + 256 * ((signed char*)p)[3]; +} + + +typedef float (*rf_t) (const void*); + +static int +DigitalSilence ( void* buffer, size_t len ) +{ + unsigned long* pl; + unsigned char* pc; + size_t loops; + + for ( pl = buffer, loops = len >> 3; loops--; pl += 2 ) + if ( pl[0] | pl[1] ) + return 0; + + for ( pc = (unsigned char*)pl, loops = len & 7; loops--; pc++ ) + if ( pc[0] ) + return 0; + + return 1; +} + + +size_t +Read_WAV_Samples ( wave_t* t, + const size_t RequestedSamples, + PCMDataTyp* data, + const ptrdiff_t offset, + const float scalel, + const float scaler, + int* Silence ) +{ + static const rf_t rf [5] = { f0, f8, f16, f24, f32 }; + short Buffer [8 * 32/16 * BLOCK]; // read buffer, up to 8 channels, up to 32 bit + size_t ReadSamples; // returns number of read samples + size_t i; + short* b = (short*) Buffer; + char* c = (char*) Buffer; + float* l = data -> L + offset; + float* r = data -> R + offset; + float* m = data -> M + offset; + float* s = data -> S + offset; + + // Read PCM data +#ifdef _WIN32 + if ( t->fp != (FILE*)-1 ) { + ReadSamples = fread ( b, t->BytesPerSample * t->Channels, RequestedSamples, t->fp ); + } + else { + while (1) { + ReadSamples = get_in (b) / ( t->Channels * t->BytesPerSample ); + if ( ReadSamples != 0 ) + break; + Sleep (10); + } + } +#else + ReadSamples = fread ( b, t->BytesPerSample * t->Channels, RequestedSamples, t->fp ); +#endif + + + *Silence = DigitalSilence ( b, ReadSamples * t->BytesPerSample * t->Channels ); + + // Add Null Samples if EOF is reached + if ( ReadSamples != RequestedSamples ) + //memset ( b + ReadSamples * t->Channels, 0, (RequestedSamples - ReadSamples) * (sizeof(short) * t->Channels) ); + memset ( c + ReadSamples * t->Channels * t->BytesPerSample, t->BytesPerSample == 1 ? 0x80 : 0, (RequestedSamples - ReadSamples) * (t->BytesPerSample * t->Channels) ); + + // Convert to float and calculate M=(L+R)/2 and S=(L-R)/2 signals +#ifndef MPC_BIG_ENDIAN + if ( t->BytesPerSample == 2 ) { + switch ( t->Channels ) { + case 1: + for ( i = 0; i < RequestedSamples; i++, b++ ) { + float temp = b[0] * scalel; + l[i] = temp + MPPENC_DENORMAL_FIX_LEFT; + r[i] = temp + MPPENC_DENORMAL_FIX_RIGHT; + m[i] = (l[i] + r[i]) * 0.5f; + s[i] = (l[i] - r[i]) * 0.5f; + } + break; + case 2: + for ( i = 0; i < RequestedSamples; i++, b += 2 ) { + l[i] = b[0] * scalel + MPPENC_DENORMAL_FIX_LEFT; // left + r[i] = b[1] * scaler + MPPENC_DENORMAL_FIX_RIGHT; // right + m[i] = (l[i] + r[i]) * 0.5f; + s[i] = (l[i] - r[i]) * 0.5f; + } + break; + case 5: + case 6: + case 7: + case 8: + for ( i = 0; i < RequestedSamples; i++, b += t->Channels ) { + l[i] = (0.4142 * b[0] + 0.2928 * b[1] + 0.2928 * b[3] - 0.1464 * b[4]) * scalel + MPPENC_DENORMAL_FIX_LEFT; // left + r[i] = (0.4142 * b[2] + 0.2928 * b[1] + 0.2928 * b[4] - 0.1464 * b[3]) * scaler + MPPENC_DENORMAL_FIX_RIGHT; // right + m[i] = (l[i] + r[i]) * 0.5f; + s[i] = (l[i] - r[i]) * 0.5f; + } + break; + default: + for ( i = 0; i < RequestedSamples; i++, b += t->Channels ) { + l[i] = b[0] * scalel + MPPENC_DENORMAL_FIX_LEFT; // left + r[i] = b[1] * scaler + MPPENC_DENORMAL_FIX_RIGHT; // right + m[i] = (l[i] + r[i]) * 0.5f; + s[i] = (l[i] - r[i]) * 0.5f; + } + break; + } + } + else +#endif + { + unsigned int bytes = t->BytesPerSample; + rf_t f = rf [bytes]; + + c = (char*)b; + switch ( t->Channels ) { + case 1: + for ( i = 0; i < RequestedSamples; i++, c += bytes ) { + float temp = f(c) * scalel; + l[i] = temp + MPPENC_DENORMAL_FIX_LEFT; + r[i] = temp + MPPENC_DENORMAL_FIX_RIGHT; + m[i] = (l[i] + r[i]) * 0.5f; + s[i] = (l[i] - r[i]) * 0.5f; + } + break; + case 2: + for ( i = 0; i < RequestedSamples; i++, c += 2*bytes ) { + l[i] = f(c) * scalel + MPPENC_DENORMAL_FIX_LEFT; // left + r[i] = f(c+bytes) * scaler + MPPENC_DENORMAL_FIX_RIGHT; // right + m[i] = (l[i] + r[i]) * 0.5f; + s[i] = (l[i] - r[i]) * 0.5f; + } + break; + default: + for ( i = 0; i < RequestedSamples; i++, c += bytes * t->Channels ) { + l[i] = f(c) * scalel + MPPENC_DENORMAL_FIX_LEFT; // left + r[i] = f(c+bytes) * scaler + MPPENC_DENORMAL_FIX_RIGHT; // right + m[i] = (l[i] + r[i]) * 0.5f; + s[i] = (l[i] - r[i]) * 0.5f; + } + break; + } + } + return ReadSamples; +} + + +// read WAVE header + +static unsigned short +Read16 ( FILE* fp ) +{ + unsigned char buff [2]; + + if (fread ( buff, 1, 2, fp ) != 2 ) + return -1; + return buff[0] | (buff[1] << 8); +} + +static unsigned long +Read32 ( FILE* fp ) +{ + unsigned char buff [4]; + + if ( fread ( buff, 1, 4, fp ) != 4 ) + return -1; + return (buff[0] | (buff[1] << 8)) | ((unsigned long)(buff[2] | (buff[3] << 8)) << 16); +} + + +int +Read_WAV_Header ( wave_t* type ) +{ + int bytealign; + + FILE* fp = type->fp; + + if ( type->raw ) + return 0; + + fseek ( fp, 0, SEEK_SET ); + if ( Read32 (fp) != 0x46464952 ) { // 4 Byte: check for "RIFF" + stderr_printf ( Read32(fp) == -1 ? " ERROR: Empty file or no data from coprocess!\n\n" + : " ERROR: 'RIFF' not found in WAVE header!\n\n"); + return -1; + } + Read32 (fp); // 4 Byte: chunk size (ignored) + if ( Read32 (fp) != 0x45564157 ) { // 4 Byte: check for "WAVE" + stderr_printf ( " ERROR: 'WAVE' not found in WAVE header!\n\n"); + return -1; + } + if ( Read32 (fp) != 0x20746D66 ) { // 4 Byte: check for "fmt " + stderr_printf ( " ERROR: 'fmt ' not found in WAVE header!\n\n"); + return -1; + } + Read32 (fp); // 4 Byte: read chunk-size (ignored) + if ( Read16 (fp) != 0x0001 ) { // 2 Byte: check for linear PCM + stderr_printf ( " ERROR: WAVE file has no linear PCM format!\n\n"); + return -1; + } + type -> Channels = Read16 (fp); // 2 Byte: read no. of channels + type -> SampleFreq = Read32 (fp); // 4 Byte: read sampling frequency + Read32 (fp); // 4 Byte: read avg. blocksize (fs*channels*bytepersample) + bytealign = Read16 (fp); // 2 Byte: read byte-alignment (channels*bytepersample) + type->BitsPerSample = Read16 (fp); // 2 Byte: read bits per sample + type->BytesPerSample= (type->BitsPerSample + 7) / 8; + while ( 1 ) { // search for "data" + if ( feof (fp) ) + return -1; + if ( Read16 (fp) != 0x6164 ) + continue; + if ( Read16 (fp) == 0x6174 ) + break; + } + type->PCMBytes = Read32 (fp); // 4 Byte: no. of byte in file + if ( feof (fp) ) return -1; + + // finally calculate number of samples + if (type->PCMBytes >= 0xFFFFFF00 || + type->PCMBytes == 0 || + (mpc_uint32_t)type->PCMBytes % (type -> Channels * type->BytesPerSample) != 0) { + type->PCMSamples = 36000000 * type->SampleFreq; + } + else { + type->PCMSamples = type->PCMBytes / bytealign; + } + type->PCMOffset = ftell (fp); + return 0; +} + + +#ifdef _WIN32 + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#ifndef __MINGW32__ +#include +#endif +#include +#include + + +#define NBLK 383 // 10 sec of audio + + +typedef struct { + int active; + char* data; + size_t datalen; + WAVEHDR hdr; +} oblk_t; + +static HWAVEIN Input_WAVHandle; +static HWAVEOUT Output_WAVHandle; +static size_t BufferBytes; +static WAVEHDR whi [NBLK]; +static char* data [NBLK]; +static oblk_t array [NBLK]; +static unsigned int NextInputIndex; +static unsigned int NextOutputIndex; + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +int +init_in ( const int SampleCount, + const int SampleFreq, + const int Channels, + const int BitsPerSample ) +{ + + WAVEFORMATEX pwf; + MMRESULT r; + int i; + + pwf.wFormatTag = WAVE_FORMAT_PCM; + pwf.nChannels = Channels; + pwf.nSamplesPerSec = SampleFreq; + pwf.nAvgBytesPerSec = SampleFreq * Channels * ((BitsPerSample + 7) / 8); + pwf.nBlockAlign = Channels * ((BitsPerSample + 7) / 8); + pwf.wBitsPerSample = BitsPerSample; + pwf.cbSize = 0; + + r = waveInOpen ( &Input_WAVHandle, WAVE_MAPPER, &pwf, 0, 0, CALLBACK_EVENT ); + if ( r != MMSYSERR_NOERROR ) { + fprintf ( stderr, "waveInOpen failed: "); + switch (r) { + case MMSYSERR_ALLOCATED: fprintf ( stderr, "resource already allocated\n" ); break; + case MMSYSERR_INVALPARAM: fprintf ( stderr, "invalid Params\n" ); break; + case MMSYSERR_BADDEVICEID: fprintf ( stderr, "device identifier out of range\n" ); break; + case MMSYSERR_NODRIVER: fprintf ( stderr, "no device driver present\n" ); break; + case MMSYSERR_NOMEM: fprintf ( stderr, "unable to allocate or lock memory\n" ); break; + case WAVERR_BADFORMAT: fprintf ( stderr, "attempted to open with an unsupported waveform-audio format\n" ); break; + case WAVERR_SYNC: fprintf ( stderr, "device is synchronous but waveOutOpen was\n" ); break; + default: fprintf ( stderr, "unknown error code: %#X\n", r ); break; + } + return -1; + } + + BufferBytes = SampleCount * Channels * ((BitsPerSample + 7) / 8); + + for ( i = 0; i < NBLK; i++ ) { + whi [i].lpData = data [i] = malloc (BufferBytes); + whi [i].dwBufferLength = BufferBytes; + whi [i].dwFlags = 0; + whi [i].dwLoops = 0; + + r = waveInPrepareHeader ( Input_WAVHandle, whi + i, sizeof (*whi) ); if ( r != MMSYSERR_NOERROR ) { fprintf ( stderr, "waveInPrepareHeader (%u) failed\n", i ); return -1; } + r = waveInAddBuffer ( Input_WAVHandle, whi + i, sizeof (*whi) ); if ( r != MMSYSERR_NOERROR ) { fprintf ( stderr, "waveInAddBuffer (%u) failed\n", i ); return -1; } + } + NextInputIndex = 0; + waveInStart (Input_WAVHandle); + return 0; +} + + +size_t +get_in ( void* DataPtr ) +{ + MMRESULT r; + size_t Bytes; + + if ( whi [NextInputIndex].dwFlags & WHDR_DONE ) { + Bytes = whi [NextInputIndex].dwBytesRecorded; + memcpy ( DataPtr, data [NextInputIndex], Bytes ); + + r = waveInUnprepareHeader ( Input_WAVHandle, whi + NextInputIndex, sizeof (*whi) ); if ( r != MMSYSERR_NOERROR ) { fprintf ( stderr, "waveInUnprepareHeader (%d) failed\n", NextInputIndex ); return -1; } + whi [NextInputIndex].lpData = data [NextInputIndex]; + whi [NextInputIndex].dwBufferLength = BufferBytes; + whi [NextInputIndex].dwFlags = 0; + whi [NextInputIndex].dwLoops = 0; + r = waveInPrepareHeader ( Input_WAVHandle, whi + NextInputIndex, sizeof (*whi) ); if ( r != MMSYSERR_NOERROR ) { fprintf ( stderr, "waveInPrepareHeader (%d) failed\n", NextInputIndex ); return -1; } + r = waveInAddBuffer ( Input_WAVHandle, whi + NextInputIndex, sizeof (*whi) ); if ( r != MMSYSERR_NOERROR ) { fprintf ( stderr, "waveInAddBuffer (%d) failed\n", NextInputIndex ); return -1; } + NextInputIndex = (NextInputIndex + 1) % NBLK; + return Bytes; + } + return 0; +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +int +init_out ( const int SampleCount, + const int SampleFreq, + const int Channels, + const int BitsPerSample ) +{ + WAVEFORMATEX pwf; + MMRESULT r; + int i; + + pwf.wFormatTag = WAVE_FORMAT_PCM; + pwf.nChannels = Channels; + pwf.nSamplesPerSec = SampleFreq; + pwf.nAvgBytesPerSec = SampleFreq * Channels * ((BitsPerSample + 7) / 8); + pwf.nBlockAlign = Channels * ((BitsPerSample + 7) / 8); + pwf.wBitsPerSample = BitsPerSample; + pwf.cbSize = 0; + + r = waveOutOpen ( &Output_WAVHandle, WAVE_MAPPER, &pwf, 0, 0, CALLBACK_EVENT ); + if ( r != MMSYSERR_NOERROR ) { + fprintf ( stderr, "waveOutOpen failed\n" ); + switch (r) { + case MMSYSERR_ALLOCATED: fprintf ( stderr, "resource already allocated\n" ); break; + case MMSYSERR_INVALPARAM: fprintf ( stderr, "invalid Params\n" ); break; + case MMSYSERR_BADDEVICEID: fprintf ( stderr, "device identifier out of range\n" ); break; + case MMSYSERR_NODRIVER: fprintf ( stderr, "no device driver present\n" ); break; + case MMSYSERR_NOMEM: fprintf ( stderr, "unable to allocate or lock memory\n" ); break; + case WAVERR_BADFORMAT: fprintf ( stderr, "attempted to open with an unsupported waveform-audio format\n" ); break; + case WAVERR_SYNC: fprintf ( stderr, "device is synchronous but waveOutOpen was\n" ); break; + default: fprintf ( stderr, "unknown error code: %#X\n", r ); break; + } + return -1; + } + + BufferBytes = SampleCount * Channels * ((BitsPerSample + 7) / 8); + + for ( i = 0; i < NBLK; i++ ) { + array [i].active = 0; + array [i].data = malloc (BufferBytes); + } + NextOutputIndex = 0; + return 0; +} + + +int +put_out ( const void* DataPtr, + const size_t Bytes ) +{ + MMRESULT r; + int i = NextOutputIndex; + + if ( array [i].active ) + while ( ! (array [i].hdr.dwFlags & WHDR_DONE) ) + Sleep (26); + + r = waveOutUnprepareHeader ( Output_WAVHandle, &(array [i].hdr), sizeof (array [i].hdr) ); if ( r != MMSYSERR_NOERROR ) { fprintf ( stderr, "waveOutUnprepareHeader (%d) failed\n", i ); return -1; } + + array [i].active = 1; + array [i].hdr.lpData = array [i].data; + array [i].hdr.dwBufferLength = Bytes; + array [i].hdr.dwFlags = 0; + array [i].hdr.dwLoops = 0; + memcpy ( array [i].data, DataPtr, Bytes ); + + r = waveOutPrepareHeader ( Output_WAVHandle, &(array [i].hdr), sizeof (array [i].hdr) ); if ( r != MMSYSERR_NOERROR ) { fprintf ( stderr, "waveOutPrepareHeader (%d) failed\n", i ); return -1; } + r = waveOutWrite ( Output_WAVHandle, &(array [i].hdr), sizeof (array [i].hdr) ); if ( r != MMSYSERR_NOERROR ) { fprintf ( stderr, "waveOutAddBuffer (%d) failed\n", i ); return -1; } + + NextInputIndex = (NextInputIndex + 1) % NBLK; + return Bytes; +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +#endif + +/* end of wave_in.c */ diff --git a/mpcenc/winmsg.c b/mpcenc/winmsg.c new file mode 100755 index 0000000..1d248da --- /dev/null +++ b/mpcenc/winmsg.c @@ -0,0 +1,90 @@ +/* + * Musepack audio compression + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mpcenc.h" + +#ifdef _WIN32 + +#include + +static HWND FrontEndHandle; + + +int +SearchForFrontend ( void ) +{ + FrontEndHandle = FindWindow ( NULL, "mpcdispatcher" ); // check for dispatcher window and (send startup-message???) + + return FrontEndHandle != 0; +} + + +static void +SendMsg ( const char* s ) +{ + COPYDATASTRUCT MsgData; + + MsgData.dwData = 3; // build message + MsgData.lpData = (char*)s; + MsgData.cbData = strlen(s) + 1; + + SendMessage ( FrontEndHandle, WM_COPYDATA, (WPARAM) NULL, (LPARAM) &MsgData ); // send message +} + + +void +SendStartupMessage ( const char* Version, + const int SV) +{ + char startup [120]; + + sprintf ( startup, "#START#MP+ v%s SV%i", Version, SV); // fill startup-message + SendMsg ( startup ); +} + + +void +SendQuitMessage ( void ) +{ + SendMsg ("#EOF#"); +} + + +void +SendModeMessage ( const int Profile ) +{ + char message [32]; + + sprintf ( message, "#PARAM#%d#", Profile-8 ); // fill message + SendMsg ( message ); +} + + +void /* sends progress information to the frontend */ +SendProgressMessage ( const int bitrate, + const float speed, + const float percent ) +{ + char message [64]; + + sprintf ( message, "#STAT#%4ik %5.2fx %5.1f%%#", bitrate, speed, percent ); + SendMsg ( message ); +} + +#endif /* _WIN32 */ diff --git a/mpcgain/CMakeFiles/CMakeDirectoryInformation.cmake b/mpcgain/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f5f0d8d --- /dev/null +++ b/mpcgain/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/dewdude/musepack/musepack_src_r475") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/dewdude/musepack/musepack_src_r475") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/mpcgain/CMakeFiles/mpcgain.dir/DependInfo.cmake b/mpcgain/CMakeFiles/mpcgain.dir/DependInfo.cmake new file mode 100644 index 0000000..b716b84 --- /dev/null +++ b/mpcgain/CMakeFiles/mpcgain.dir/DependInfo.cmake @@ -0,0 +1,24 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/dewdude/musepack/musepack_src_r475/mpcgain/mpcgain.c" "mpcgain/CMakeFiles/mpcgain.dir/mpcgain.c.o" "gcc" "mpcgain/CMakeFiles/mpcgain.dir/mpcgain.c.o.d" + "" "mpcgain/mpcgain" "gcc" "mpcgain/CMakeFiles/mpcgain.dir/link.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/mpcgain/CMakeFiles/mpcgain.dir/build.make b/mpcgain/CMakeFiles/mpcgain.dir/build.make new file mode 100644 index 0000000..86ef2f1 --- /dev/null +++ b/mpcgain/CMakeFiles/mpcgain.dir/build.make @@ -0,0 +1,115 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +# Include any dependencies generated for this target. +include mpcgain/CMakeFiles/mpcgain.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include mpcgain/CMakeFiles/mpcgain.dir/compiler_depend.make + +# Include the progress variables for this target. +include mpcgain/CMakeFiles/mpcgain.dir/progress.make + +# Include the compile flags for this target's objects. +include mpcgain/CMakeFiles/mpcgain.dir/flags.make + +mpcgain/CMakeFiles/mpcgain.dir/codegen: +.PHONY : mpcgain/CMakeFiles/mpcgain.dir/codegen + +mpcgain/CMakeFiles/mpcgain.dir/mpcgain.c.o: mpcgain/CMakeFiles/mpcgain.dir/flags.make +mpcgain/CMakeFiles/mpcgain.dir/mpcgain.c.o: mpcgain/mpcgain.c +mpcgain/CMakeFiles/mpcgain.dir/mpcgain.c.o: mpcgain/CMakeFiles/mpcgain.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object mpcgain/CMakeFiles/mpcgain.dir/mpcgain.c.o" + cd /home/dewdude/musepack/musepack_src_r475/mpcgain && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT mpcgain/CMakeFiles/mpcgain.dir/mpcgain.c.o -MF CMakeFiles/mpcgain.dir/mpcgain.c.o.d -o CMakeFiles/mpcgain.dir/mpcgain.c.o -c /home/dewdude/musepack/musepack_src_r475/mpcgain/mpcgain.c + +mpcgain/CMakeFiles/mpcgain.dir/mpcgain.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcgain.dir/mpcgain.c.i" + cd /home/dewdude/musepack/musepack_src_r475/mpcgain && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/mpcgain/mpcgain.c > CMakeFiles/mpcgain.dir/mpcgain.c.i + +mpcgain/CMakeFiles/mpcgain.dir/mpcgain.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcgain.dir/mpcgain.c.s" + cd /home/dewdude/musepack/musepack_src_r475/mpcgain && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/mpcgain/mpcgain.c -o CMakeFiles/mpcgain.dir/mpcgain.c.s + +# Object files for target mpcgain +mpcgain_OBJECTS = \ +"CMakeFiles/mpcgain.dir/mpcgain.c.o" + +# External object files for target mpcgain +mpcgain_EXTERNAL_OBJECTS = + +mpcgain/mpcgain: mpcgain/CMakeFiles/mpcgain.dir/mpcgain.c.o +mpcgain/mpcgain: mpcgain/CMakeFiles/mpcgain.dir/build.make +mpcgain/mpcgain: mpcgain/CMakeFiles/mpcgain.dir/compiler_depend.ts +mpcgain/mpcgain: libmpcdec/libmpcdec.so +mpcgain/mpcgain: mpcgain/CMakeFiles/mpcgain.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C executable mpcgain" + cd /home/dewdude/musepack/musepack_src_r475/mpcgain && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/mpcgain.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +mpcgain/CMakeFiles/mpcgain.dir/build: mpcgain/mpcgain +.PHONY : mpcgain/CMakeFiles/mpcgain.dir/build + +mpcgain/CMakeFiles/mpcgain.dir/clean: + cd /home/dewdude/musepack/musepack_src_r475/mpcgain && $(CMAKE_COMMAND) -P CMakeFiles/mpcgain.dir/cmake_clean.cmake +.PHONY : mpcgain/CMakeFiles/mpcgain.dir/clean + +mpcgain/CMakeFiles/mpcgain.dir/depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/mpcgain /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/mpcgain /home/dewdude/musepack/musepack_src_r475/mpcgain/CMakeFiles/mpcgain.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : mpcgain/CMakeFiles/mpcgain.dir/depend + diff --git a/mpcgain/CMakeFiles/mpcgain.dir/cmake_clean.cmake b/mpcgain/CMakeFiles/mpcgain.dir/cmake_clean.cmake new file mode 100644 index 0000000..de30427 --- /dev/null +++ b/mpcgain/CMakeFiles/mpcgain.dir/cmake_clean.cmake @@ -0,0 +1,12 @@ +file(REMOVE_RECURSE + "CMakeFiles/mpcgain.dir/link.d" + "CMakeFiles/mpcgain.dir/mpcgain.c.o" + "CMakeFiles/mpcgain.dir/mpcgain.c.o.d" + "mpcgain" + "mpcgain.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/mpcgain.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/mpcgain/CMakeFiles/mpcgain.dir/compiler_depend.make b/mpcgain/CMakeFiles/mpcgain.dir/compiler_depend.make new file mode 100644 index 0000000..4f5cc64 --- /dev/null +++ b/mpcgain/CMakeFiles/mpcgain.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for mpcgain. +# This may be replaced when dependencies are built. diff --git a/mpcgain/CMakeFiles/mpcgain.dir/compiler_depend.ts b/mpcgain/CMakeFiles/mpcgain.dir/compiler_depend.ts new file mode 100644 index 0000000..fe0fb27 --- /dev/null +++ b/mpcgain/CMakeFiles/mpcgain.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for mpcgain. diff --git a/mpcgain/CMakeFiles/mpcgain.dir/depend.make b/mpcgain/CMakeFiles/mpcgain.dir/depend.make new file mode 100644 index 0000000..36068d1 --- /dev/null +++ b/mpcgain/CMakeFiles/mpcgain.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for mpcgain. +# This may be replaced when dependencies are built. diff --git a/mpcgain/CMakeFiles/mpcgain.dir/flags.make b/mpcgain/CMakeFiles/mpcgain.dir/flags.make new file mode 100644 index 0000000..93014c6 --- /dev/null +++ b/mpcgain/CMakeFiles/mpcgain.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# compile C with /usr/bin/cc +C_DEFINES = -DCVD_FASTLOG -DFAST_MATH + +C_INCLUDES = -I/home/dewdude/musepack/musepack_src_r475/include + +C_FLAGS = -O3 -Wall -fomit-frame-pointer -pipe + diff --git a/mpcgain/CMakeFiles/mpcgain.dir/link.txt b/mpcgain/CMakeFiles/mpcgain.dir/link.txt new file mode 100644 index 0000000..f62874e --- /dev/null +++ b/mpcgain/CMakeFiles/mpcgain.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -O3 -Wall -fomit-frame-pointer -pipe -Wl,--dependency-file=CMakeFiles/mpcgain.dir/link.d CMakeFiles/mpcgain.dir/mpcgain.c.o -o mpcgain -L/home/dewdude/musepack/musepack_src_r475/libmpcdec -Wl,-rpath,/home/dewdude/musepack/musepack_src_r475/libmpcdec: -lREPLAY_GAIN_LIBRARY-NOTFOUND ../libmpcdec/libmpcdec.so -lm diff --git a/mpcgain/CMakeFiles/mpcgain.dir/progress.make b/mpcgain/CMakeFiles/mpcgain.dir/progress.make new file mode 100644 index 0000000..6e6a7b1 --- /dev/null +++ b/mpcgain/CMakeFiles/mpcgain.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 37 +CMAKE_PROGRESS_2 = 38 + diff --git a/mpcgain/CMakeFiles/progress.marks b/mpcgain/CMakeFiles/progress.marks new file mode 100644 index 0000000..573541a --- /dev/null +++ b/mpcgain/CMakeFiles/progress.marks @@ -0,0 +1 @@ +0 diff --git a/mpcgain/CMakeLists.txt b/mpcgain/CMakeLists.txt new file mode 100755 index 0000000..1cd8098 --- /dev/null +++ b/mpcgain/CMakeLists.txt @@ -0,0 +1,37 @@ +FIND_PATH(REPLAY_GAIN_INCLUDE_DIR replaygain/gain_analysis.h + /usr/include + /usr/local/include + ${libmpc_SOURCE_DIR}/../libreplaygain/include +) + +FIND_LIBRARY(REPLAY_GAIN_LIBRARY NAMES replaygain replaygain_static PATHS + /usr/lib + /usr/local/lib + ${libmpc_SOURCE_DIR}/../libreplaygain/bin/src/release +) + +if(REPLAY_GAIN_INCLUDE_DIR AND REPLAY_GAIN_LIBRARY) + message(STATUS "Building mpcgain with replaygain support") + include_directories(${libmpc_SOURCE_DIR}/include) + include_directories(${REPLAY_GAIN_INCLUDE_DIR}) + + link_directories(${libmpc_BINARY_DIR}/libmpcdec) + + add_executable(mpcgain mpcgain.c) + + target_link_libraries(mpcgain ${REPLAY_GAIN_LIBRARY}) + + if(SHARED) + target_link_libraries(mpcgain mpcdec) + else() + target_link_libraries(mpcgain mpcdec_static) + endif() + + if(NOT MSVC) + target_link_libraries(mpcgain m) + endif() + + install(TARGETS mpcgain RUNTIME DESTINATION bin) +else() + message(STATUS "Skipping mpcgain (libreplaygain not found)") +endif() diff --git a/mpcgain/Makefile b/mpcgain/Makefile new file mode 100644 index 0000000..0242da6 --- /dev/null +++ b/mpcgain/Makefile @@ -0,0 +1,189 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# The main all target +all: cmake_check_build_system + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles /home/dewdude/musepack/musepack_src_r475/mpcgain//CMakeFiles/progress.marks + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcgain/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcgain/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcgain/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcgain/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/mpcgain/Makefile.am b/mpcgain/Makefile.am new file mode 100755 index 0000000..8fb81ac --- /dev/null +++ b/mpcgain/Makefile.am @@ -0,0 +1,16 @@ +EXTRA_DIST = CMakeLists.txt + +AM_CPPFLAGS = -I$(top_srcdir)/include + +AM_CFLAGS = -ffast-math + +if HAVE_VISIBILITY + AM_CFLAGS += -fvisibility=hidden +endif + + +METASOURCES = AUTO +bin_PROGRAMS = mpcgain +mpcgain_LDADD = -lm -lreplaygain \ + $(top_builddir)/libmpcdec/libmpcdec.la +mpcgain_SOURCES = mpcgain.c diff --git a/mpcgain/cmake_install.cmake b/mpcgain/cmake_install.cmake new file mode 100644 index 0000000..30526ab --- /dev/null +++ b/mpcgain/cmake_install.cmake @@ -0,0 +1,50 @@ +# Install script for directory: /home/dewdude/musepack/musepack_src_r475/mpcgain + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/home/dewdude/musepack/musepack_src_r475/mpcgain/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/mpcgain/mpcgain.c b/mpcgain/mpcgain.c new file mode 100755 index 0000000..d367fff --- /dev/null +++ b/mpcgain/mpcgain.c @@ -0,0 +1,309 @@ +/* + Copyright (c) 2006-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +#include +#include +#include +#include +#include + +#include "../libmpcdec/internal.h" +#include "../libmpcdec/huffman.h" +#include "../libmpcdec/mpc_bits_reader.h" + +#define MPCGAIN_MAJOR 0 +#define MPCGAIN_MINOR 9 +#define MPCGAIN_BUILD 3 + +#define _cat(a,b,c) #a"."#b"."#c +#define cat(a,b,c) _cat(a,b,c) +#define MPCGAIN_VERSION cat(MPCGAIN_MAJOR,MPCGAIN_MINOR,MPCGAIN_BUILD) + +#define MAX_HEAD_SIZE 20 // maximum size of the packet header before chapter gain (2 + 9 + 9) + +const char About [] = "mpcgain - Musepack (MPC) ReplayGain calculator v" MPCGAIN_VERSION " (C) 2006-2009 MDT\nBuilt " __DATE__ " " __TIME__ "\n"; + + +static void usage(const char *exename) +{ + printf("Usage: %s [ ... ]\n", exename); +} + +static mpc_inline MPC_SAMPLE_FORMAT _max(MPC_SAMPLE_FORMAT a, MPC_SAMPLE_FORMAT b) +{ + if (a > b) + return a; + return b; +} + +static mpc_inline MPC_SAMPLE_FORMAT max_abs(MPC_SAMPLE_FORMAT a, MPC_SAMPLE_FORMAT b) +{ + if (b < 0) + b = -b; + if (b > a) + return b; + return a; +} + +static MPC_SAMPLE_FORMAT analyze_get_max(MPC_SAMPLE_FORMAT * sample_buffer, int sample_nb) +{ + Float_t left_samples[MPC_FRAME_LENGTH * sizeof(Float_t)]; + Float_t right_samples[MPC_FRAME_LENGTH * sizeof(Float_t)]; + MPC_SAMPLE_FORMAT max = 0; + int i; + + for (i = 0; i < sample_nb; i++){ + left_samples[i] = sample_buffer[2 * i] * (1 << 15); + right_samples[i] = sample_buffer[2 * i + 1] * (1 << 15); + max = max_abs(max, sample_buffer[2 * i]); + max = max_abs(max, sample_buffer[2 * i + 1]); + } + gain_analyze_samples(left_samples, right_samples, sample_nb, 2); + + return max; +} + + + +static void write_chaps_gain(mpc_demux * demux, const char * file_name, + mpc_uint16_t * chap_gain, mpc_uint16_t * chap_peak) +{ + unsigned char buffer[MAX_HEAD_SIZE]; + mpc_bits_reader r; + mpc_block b; + mpc_uint64_t size, dummy; + FILE * file; + int chap = 0; + long next_chap_pos = demux->chap_pos >> 3; + + + file = fopen( file_name, "r+b"); + if (file == 0) { + fprintf(stderr, "Can't open file \"%s\" for writing\n", file_name); + return; + } + + while (1) { + fseek(file, next_chap_pos, SEEK_SET); + fread(buffer, 1, MAX_HEAD_SIZE, file); + r.buff = buffer; + r.count = 8; + size = mpc_bits_get_block(&r, &b); + + if (memcmp(b.key, "CT", 2) != 0) + break; + + b.size += size; + size += mpc_bits_get_size(&r, &dummy); + + fseek(file, next_chap_pos + size, SEEK_SET); + buffer[0] = chap_gain[chap] >> 8; + buffer[1] = chap_gain[chap] & 0xFF; + buffer[2] = chap_peak[chap] >> 8; + buffer[3] = chap_peak[chap] & 0xFF; + fwrite(buffer, 1, 4, file); // writing chapter gain / peak + + chap++; + next_chap_pos += b.size; + } + + fclose(file); +} + +int main(int argc, char **argv) +{ + MPC_SAMPLE_FORMAT album_max = 0; + mpc_uint16_t album_gain; + mpc_uint16_t album_peak; + mpc_uint16_t * title_gain; + mpc_uint16_t * title_peak; + mpc_uint32_t * header_pos; + int j; + + printf(About); + + if (argc < 2) { + usage(argv[0]); + return 0; + } + + title_gain = malloc((sizeof(mpc_uint16_t) * 2 + sizeof(mpc_uint32_t)) * (argc - 1)); + title_peak = title_gain + (argc - 1); + header_pos = (mpc_uint32_t *) (title_peak + (argc - 1)); + + for (j = 1; j < argc; j++) { + MPC_SAMPLE_FORMAT sample_buffer[MPC_DECODER_BUFFER_LENGTH]; + MPC_SAMPLE_FORMAT title_max = 0, chap_max; + mpc_uint16_t * chap_gain, * chap_peak; + mpc_reader reader; + mpc_demux* demux; + mpc_streaminfo si; + mpc_status err; + int chap_nb, chap = 0; + mpc_uint64_t cur_sample = 1, next_chap_sample = mpc_int64_max; + + err = mpc_reader_init_stdio(&reader, argv[j]); + if (err < 0) return !MPC_STATUS_OK; + + demux = mpc_demux_init(&reader); + if (!demux) return !MPC_STATUS_OK; + mpc_demux_get_info(demux, &si); + + chap_nb = mpc_demux_chap_nb(demux); + mpc_demux_seek_sample(demux, 0); + if (chap_nb > 0) { + mpc_chap_info * chap_info = mpc_demux_chap(demux, chap); + next_chap_sample = chap_info->sample; + chap_gain = malloc(sizeof(mpc_uint16_t) * 2 * chap_nb); + chap_peak = chap_gain + chap_nb; + } + + if (j == 1) gain_init_analysis ( si.sample_freq ); + + while (1) { + mpc_frame_info frame; + int i = 0; + + frame.buffer = sample_buffer; + mpc_demux_decode(demux, &frame); + if (frame.bits == -1) break; + + while (next_chap_sample < cur_sample + frame.samples) { + int sample_nb = (int)(next_chap_sample - cur_sample); + + chap_max = _max(chap_max, analyze_get_max(sample_buffer + 2 * i, sample_nb)); + + if (chap == 0) // first samples are not in a chapter + gain_get_chapter(); + else { + chap_gain[chap - 1] = (mpc_uint16_t) (gain_get_chapter() * 256); + chap_peak[chap - 1] = (mpc_uint16_t) (log10(chap_max * (1 << 15)) * 20 * 256); + } + chap++; + title_max = _max(title_max, chap_max); + chap_max = 0; + i += sample_nb; + cur_sample = next_chap_sample; + if (chap < chap_nb) { + mpc_chap_info * chap_info = mpc_demux_chap(demux, chap); + next_chap_sample = chap_info->sample; + } else + next_chap_sample = mpc_int64_max; + } + + chap_max = _max(chap_max, analyze_get_max(sample_buffer + 2 * i, frame.samples - i)); + cur_sample += frame.samples - i; + } + + if (chap_nb > 0) { + chap_gain[chap - 1] = (mpc_uint16_t) (gain_get_chapter() * 256); + chap_peak[chap - 1] = (mpc_uint16_t) (log10(chap_max * (1 << 15)) * 20 * 256); + write_chaps_gain(demux, argv[j], chap_gain, chap_peak); + } + + title_max = _max(title_max, chap_max); + album_max = _max(album_max, title_max); + + title_gain[j-1] = (mpc_uint16_t) (gain_get_title() * 256); + title_peak[j-1] = (mpc_uint16_t) (log10(title_max * (1 << 15)) * 20 * 256); + header_pos[j-1] = si.header_position + 4; + + mpc_demux_exit(demux); + mpc_reader_exit_stdio(&reader); + if (chap_nb > 0) + free(chap_gain); + } + + album_gain = (mpc_uint16_t) (gain_get_album() * 256); + album_peak = (mpc_uint16_t) (log10(album_max * (1 << 15)) * 20 * 256); + + for (j = 0; j < argc - 1; j++) { + unsigned char buffer[64]; + mpc_bits_reader r; + mpc_block b; + mpc_uint64_t size; + FILE * file; + + file = fopen( argv[j + 1], "r+b"); + if (file == 0) { + fprintf(stderr, "Can't open file \"%s\" for writing\n", argv[j + 1]); + continue; + } + fseek(file, header_pos[j] - 4, SEEK_SET); + fread(buffer, 1, 16, file); + if (memcmp(buffer, "MPCK", 4) != 0) { + fprintf(stderr, "Unsupported file format, not a sv8 file : %s\n", argv[j + 1]); + fclose(file); + continue; + } + r.buff = buffer + 4; + r.count = 8; + + for(;;) { + size = mpc_bits_get_block(&r, &b); + if (mpc_check_key(b.key) != MPC_STATUS_OK) break; + + if (memcmp(b.key, "RG", 2) == 0) break; + header_pos[j] += b.size + size; + fseek(file, header_pos[j], SEEK_SET); + fread(buffer, 1, 16, file); + r.buff = buffer; + r.count = 8; + } + + if (memcmp(b.key, "RG", 2) != 0 || b.size < 9) { //check for the loop above having aborted without finding the packet we want to update + fprintf(stderr, "Unsupported file format or corrupted file : %s\n", argv[j + 1]); + fclose(file); + continue; + } + header_pos[j] += size; + + buffer[size] = 1; // replaygain version + buffer[size + 1] = title_gain[j] >> 8; + buffer[size + 2] = title_gain[j] & 0xFF; + buffer[size + 3] = title_peak[j] >> 8; + buffer[size + 4] = title_peak[j] & 0xFF; + buffer[size + 5] = album_gain >> 8; + buffer[size + 6] = album_gain & 0xFF; + buffer[size + 7] = album_peak >> 8; + buffer[size + 8] = album_peak & 0xFF; + + fseek(file, header_pos[j], SEEK_SET); + fwrite(buffer + size, 1, b.size, file); + fclose(file); + } + + free(title_gain); + + return 0; +} diff --git a/wavcmp/CMakeFiles/CMakeDirectoryInformation.cmake b/wavcmp/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f5f0d8d --- /dev/null +++ b/wavcmp/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/dewdude/musepack/musepack_src_r475") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/dewdude/musepack/musepack_src_r475") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/wavcmp/CMakeFiles/progress.marks b/wavcmp/CMakeFiles/progress.marks new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/wavcmp/CMakeFiles/progress.marks @@ -0,0 +1 @@ +5 diff --git a/wavcmp/CMakeFiles/wavcmp.dir/DependInfo.cmake b/wavcmp/CMakeFiles/wavcmp.dir/DependInfo.cmake new file mode 100644 index 0000000..db2d5b5 --- /dev/null +++ b/wavcmp/CMakeFiles/wavcmp.dir/DependInfo.cmake @@ -0,0 +1,24 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/dewdude/musepack/musepack_src_r475/wavcmp/wavcmp.c" "wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o" "gcc" "wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o.d" + "" "wavcmp/wavcmp" "gcc" "wavcmp/CMakeFiles/wavcmp.dir/link.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/wavcmp/CMakeFiles/wavcmp.dir/build.make b/wavcmp/CMakeFiles/wavcmp.dir/build.make new file mode 100644 index 0000000..d054392 --- /dev/null +++ b/wavcmp/CMakeFiles/wavcmp.dir/build.make @@ -0,0 +1,115 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +# Include any dependencies generated for this target. +include wavcmp/CMakeFiles/wavcmp.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include wavcmp/CMakeFiles/wavcmp.dir/compiler_depend.make + +# Include the progress variables for this target. +include wavcmp/CMakeFiles/wavcmp.dir/progress.make + +# Include the compile flags for this target's objects. +include wavcmp/CMakeFiles/wavcmp.dir/flags.make + +wavcmp/CMakeFiles/wavcmp.dir/codegen: +.PHONY : wavcmp/CMakeFiles/wavcmp.dir/codegen + +wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o: wavcmp/CMakeFiles/wavcmp.dir/flags.make +wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o: wavcmp/wavcmp.c +wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o: wavcmp/CMakeFiles/wavcmp.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o" + cd /home/dewdude/musepack/musepack_src_r475/wavcmp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o -MF CMakeFiles/wavcmp.dir/wavcmp.c.o.d -o CMakeFiles/wavcmp.dir/wavcmp.c.o -c /home/dewdude/musepack/musepack_src_r475/wavcmp/wavcmp.c + +wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/wavcmp.dir/wavcmp.c.i" + cd /home/dewdude/musepack/musepack_src_r475/wavcmp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/wavcmp/wavcmp.c > CMakeFiles/wavcmp.dir/wavcmp.c.i + +wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/wavcmp.dir/wavcmp.c.s" + cd /home/dewdude/musepack/musepack_src_r475/wavcmp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/wavcmp/wavcmp.c -o CMakeFiles/wavcmp.dir/wavcmp.c.s + +# Object files for target wavcmp +wavcmp_OBJECTS = \ +"CMakeFiles/wavcmp.dir/wavcmp.c.o" + +# External object files for target wavcmp +wavcmp_EXTERNAL_OBJECTS = + +wavcmp/wavcmp: wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o +wavcmp/wavcmp: wavcmp/CMakeFiles/wavcmp.dir/build.make +wavcmp/wavcmp: wavcmp/CMakeFiles/wavcmp.dir/compiler_depend.ts +wavcmp/wavcmp: libwavformat/libwavformat_static.a +wavcmp/wavcmp: wavcmp/CMakeFiles/wavcmp.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C executable wavcmp" + cd /home/dewdude/musepack/musepack_src_r475/wavcmp && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/wavcmp.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +wavcmp/CMakeFiles/wavcmp.dir/build: wavcmp/wavcmp +.PHONY : wavcmp/CMakeFiles/wavcmp.dir/build + +wavcmp/CMakeFiles/wavcmp.dir/clean: + cd /home/dewdude/musepack/musepack_src_r475/wavcmp && $(CMAKE_COMMAND) -P CMakeFiles/wavcmp.dir/cmake_clean.cmake +.PHONY : wavcmp/CMakeFiles/wavcmp.dir/clean + +wavcmp/CMakeFiles/wavcmp.dir/depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/wavcmp /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/wavcmp /home/dewdude/musepack/musepack_src_r475/wavcmp/CMakeFiles/wavcmp.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : wavcmp/CMakeFiles/wavcmp.dir/depend + diff --git a/wavcmp/CMakeFiles/wavcmp.dir/cmake_clean.cmake b/wavcmp/CMakeFiles/wavcmp.dir/cmake_clean.cmake new file mode 100644 index 0000000..6204243 --- /dev/null +++ b/wavcmp/CMakeFiles/wavcmp.dir/cmake_clean.cmake @@ -0,0 +1,12 @@ +file(REMOVE_RECURSE + "CMakeFiles/wavcmp.dir/link.d" + "CMakeFiles/wavcmp.dir/wavcmp.c.o" + "CMakeFiles/wavcmp.dir/wavcmp.c.o.d" + "wavcmp" + "wavcmp.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/wavcmp.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/wavcmp/CMakeFiles/wavcmp.dir/compiler_depend.internal b/wavcmp/CMakeFiles/wavcmp.dir/compiler_depend.internal new file mode 100644 index 0000000..978ce0f --- /dev/null +++ b/wavcmp/CMakeFiles/wavcmp.dir/compiler_depend.internal @@ -0,0 +1,60 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o + /home/dewdude/musepack/musepack_src_r475/wavcmp/wavcmp.c + /home/dewdude/musepack/musepack_src_r475/libwavformat/libwaveformat.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/long-double.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/typesizes.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +wavcmp/wavcmp + /home/dewdude/musepack/musepack_src_r475/libwavformat/libwavformat_static.a + /usr/lib/Scrt1.o + /usr/lib/crti.o + /usr/lib/crtn.o + /usr/lib/libc.so + /usr/lib/libgcc_s.so + /usr/lib/libgcc_s.so.1 + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a + /usr/lib/ld-linux-x86-64.so.2 + /usr/lib/libc.so.6 + /usr/lib/libc_nonshared.a + /home/dewdude/musepack/musepack_src_r475/wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o + diff --git a/wavcmp/CMakeFiles/wavcmp.dir/compiler_depend.make b/wavcmp/CMakeFiles/wavcmp.dir/compiler_depend.make new file mode 100644 index 0000000..eae4791 --- /dev/null +++ b/wavcmp/CMakeFiles/wavcmp.dir/compiler_depend.make @@ -0,0 +1,164 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o: wavcmp/wavcmp.c \ + libwavformat/libwaveformat.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +wavcmp/wavcmp: libwavformat/libwavformat_static.a \ + /usr/lib/Scrt1.o \ + /usr/lib/crti.o \ + /usr/lib/crtn.o \ + /usr/lib/libc.so \ + /usr/lib/libgcc_s.so \ + /usr/lib/libgcc_s.so.1 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/ld-linux-x86-64.so.2 \ + /usr/lib/libc.so.6 \ + /usr/lib/libc_nonshared.a \ + wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o + + +wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o: + +/usr/lib/libc_nonshared.a: + +/usr/lib/libc.so.6: + +/usr/lib/ld-linux-x86-64.so.2: + +/usr/lib/libgcc_s.so.1: + +/usr/lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/crtn.o: + +/usr/lib/crti.o: + +/usr/lib/Scrt1.o: + +libwavformat/libwavformat_static.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h: + +/usr/include/gnu/stubs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/stdc-predef.h: + +/usr/include/bits/timesize.h: + +/usr/include/stdint.h: + +wavcmp/wavcmp.c: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/time64.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o: + +/usr/include/bits/stdint-intn.h: + +/usr/include/strings.h: + +/usr/include/bits/libc-header-start.h: + +/usr/include/bits/floatn.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h: + +/usr/include/bits/types/locale_t.h: + +libwavformat/libwaveformat.h: + +/usr/include/bits/types/__mbstate_t.h: + +/usr/include/bits/stdint-uintn.h: + +/usr/include/bits/long-double.h: + +/usr/include/bits/floatn-common.h: + +/usr/include/bits/stdint-least.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/wchar.h: + +/usr/include/bits/types.h: + +/usr/include/bits/types/__locale_t.h: + +/usr/lib/libc.so: + +/usr/include/bits/types/FILE.h: + +/usr/include/bits/types/__FILE.h: + +/usr/include/bits/wordsize.h: + +/usr/include/bits/types/__fpos_t.h: + +/usr/include/bits/types/__fpos64_t.h: + +/usr/include/features-time64.h: + +/usr/include/string.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/types/cookie_io_functions_t.h: + +/usr/include/bits/types/struct_FILE.h: + +/usr/include/bits/stdio.h: + +/usr/include/features.h: diff --git a/wavcmp/CMakeFiles/wavcmp.dir/compiler_depend.ts b/wavcmp/CMakeFiles/wavcmp.dir/compiler_depend.ts new file mode 100644 index 0000000..7ed7ca6 --- /dev/null +++ b/wavcmp/CMakeFiles/wavcmp.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for wavcmp. diff --git a/wavcmp/CMakeFiles/wavcmp.dir/depend.make b/wavcmp/CMakeFiles/wavcmp.dir/depend.make new file mode 100644 index 0000000..3bf8205 --- /dev/null +++ b/wavcmp/CMakeFiles/wavcmp.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for wavcmp. +# This may be replaced when dependencies are built. diff --git a/wavcmp/CMakeFiles/wavcmp.dir/flags.make b/wavcmp/CMakeFiles/wavcmp.dir/flags.make new file mode 100644 index 0000000..1f91788 --- /dev/null +++ b/wavcmp/CMakeFiles/wavcmp.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# compile C with /usr/bin/cc +C_DEFINES = -DCVD_FASTLOG -DFAST_MATH + +C_INCLUDES = -I/home/dewdude/musepack/musepack_src_r475/libwavformat + +C_FLAGS = -O3 -Wall -fomit-frame-pointer -pipe + diff --git a/wavcmp/CMakeFiles/wavcmp.dir/link.d b/wavcmp/CMakeFiles/wavcmp.dir/link.d new file mode 100644 index 0000000..8cde86d --- /dev/null +++ b/wavcmp/CMakeFiles/wavcmp.dir/link.d @@ -0,0 +1,79 @@ +wavcmp: \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o \ + CMakeFiles/wavcmp.dir/wavcmp.c.o \ + ../libwavformat/libwavformat_static.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/libc.so.6 \ + /usr/lib/libc_nonshared.a \ + /usr/lib/ld-linux-x86-64.so.2 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o \ + /usr/lib/ld-linux-x86-64.so.2 + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o: + +CMakeFiles/wavcmp.dir/wavcmp.c.o: + +../libwavformat/libwavformat_static.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/libc.so.6: + +/usr/lib/libc_nonshared.a: + +/usr/lib/ld-linux-x86-64.so.2: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o: + +/usr/lib/ld-linux-x86-64.so.2: diff --git a/wavcmp/CMakeFiles/wavcmp.dir/link.txt b/wavcmp/CMakeFiles/wavcmp.dir/link.txt new file mode 100644 index 0000000..6fafb23 --- /dev/null +++ b/wavcmp/CMakeFiles/wavcmp.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -O3 -Wall -fomit-frame-pointer -pipe -Wl,--dependency-file=CMakeFiles/wavcmp.dir/link.d CMakeFiles/wavcmp.dir/wavcmp.c.o -o wavcmp -L/home/dewdude/musepack/musepack_src_r475/libwavformat -Wl,-rpath,/home/dewdude/musepack/musepack_src_r475/libwavformat: ../libwavformat/libwavformat_static.a diff --git a/wavcmp/CMakeFiles/wavcmp.dir/progress.make b/wavcmp/CMakeFiles/wavcmp.dir/progress.make new file mode 100644 index 0000000..1f42eb5 --- /dev/null +++ b/wavcmp/CMakeFiles/wavcmp.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 41 +CMAKE_PROGRESS_2 = 42 + diff --git a/wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o b/wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o new file mode 100644 index 0000000000000000000000000000000000000000..22327b36e1c968b95dd7279ede8aa5608fd29f7e GIT binary patch literal 5032 zcmbVPU2GIp6u#RZTe0q}fLcK91P3jGW4Br?jXyi>wjJU|5h#)ST)1BW>qTxlH z)C;qXr=^xKYL^;==bYatT%3^(&ETB${>*8!JYU5=J4kwlW0qy4WGkN@G_rCcW8|#c zZ8;sY}9tzXj$w21Sj(hQTm!OIcn;?MdKz4T0@KG}iJ+=Lcq>=h9g(4CLLHd4-MUY*9o z>!m}~M?zn>oH~_?b2R`zH;Z8(->E&J?bM#sqNnxA6UsQu&;>#`-MLR;v1sJ|fpW;h zdg(p|B0)%s!72_)$0n55z}(yzRtBYF7sM`2D6azoKtd`u1Av^j8OM@}4}uDuX_vFx z1qzUeTIs+L(Dlg)CD1@f@G>Mocfv}5BG6tbD#35QYmr*UK_#ZCN-Yzp5v?%m+f?|prg!5nIZcy}Nv5{$ z0I36x=1BI}(lJ{Z?3t`vFP-`vsjujh_oG?i6KeJQ73WNFhDHPj*;Bo~U)}9YZJwW> z*I{X}gA>XO_zOEfQQq7JoN>LlK;IP)&;da4a=uSw!Hy{#cgmD~iq5nX%8QT`I$+s+ z7uFb@nfu|N`FZDi=7%lxyLaKNk8c73U)s;oGxfMBJoQPc>81V6>?)YLWPN5zsgI@_U+!@UnyzR0nWx`4*TzW}4PfrX^GYp51X_v06W1A?< z%HXV63p<{B06ns7l{a=4Qbz}{o7I#+^G~6U-}Ccy3b*4*e@{=B+}i)}z*;%j zp|-0*xxKBuBNz;}(|K@DWO#7fK!VHV!_z9)J|7!j4H(LDw;*+b>Vnb^BXi zs@ME&&tDbxcNQA@{TFVj8C&A-1W5C@0;SvE3?|+FM(vu~XpMioWf&;TVTBHs4!8Zs z`3h5{ww#5-8x7w)dC0_lp>I;Xe%~ue(UL(i1-RRsE0Kz7I$m) zWPCA9Zl&XT@{|W}Ww_T#D5HML(AJak>m!5r!qNMr`rkPnG0`x2D|iVG-t=+BhmQqNYsoaQ*f7D!CHv# zDil^KYX$r|0pB9v%LKfS;qVhcYb^KkkifrQ;N!hVK|Zd5^9=++a6LD`!||gCf_VL( zbYaRD{ht$X(a%n}Hz?@;MtHdYTowFFhGSf;Vx0f2z;71tYmo?o{;`&E{tAX;hgFs1 zw+MW!6&$}q;5Q2RT~+w_$%TR)R%h-fT!kMIaI86;KTrja3ON4$aek@_{sP0X!`}wZ zpAz_D-rf-Sm^;otD&SZLIR2r4!*^pDKP&hb@54&=gMz+q7Wkb4j=wS7f3JXx``yZL z4AUg=cL;p(91{ZnT7jRe!p{kKi@*n!3SK+muNjeDn4UY^Iz>7?IOlEl;2}017I3x% z7g2M2(spc+s5v|9_QPDu8mX9S8@p|yCSrDssDrs2QL`BwAU&u;#TAE8d&@RJh-K~k zD1)dCOafm`W#X|EQRA6(+OWX6m9Y&KKHBc2wTq31th@@9J z_*Hl+335eQ4+Hf1f9-={i$2@o5rxN}5<$>;eBOr`=CyBQgw-Bv-tc!2%lqVDW5|DCOF19*#E-pMGSQ>_aI=H7qO-w?+<40 zT^C6wO8Gm>^0$lGV*aoma(kY?O0m)80{@G`4i>*{ jD%s*7@!J0jsZq09 literal 0 HcmV?d00001 diff --git a/wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o.d b/wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o.d new file mode 100644 index 0000000..a00ae7b --- /dev/null +++ b/wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o.d @@ -0,0 +1,25 @@ +wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o: \ + /home/dewdude/musepack/musepack_src_r475/wavcmp/wavcmp.c \ + /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/features-time64.h /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdio.h \ + /usr/include/string.h /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/__locale_t.h /usr/include/strings.h \ + /home/dewdude/musepack/musepack_src_r475/libwavformat/libwaveformat.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdint-least.h diff --git a/wavcmp/CMakeLists.txt b/wavcmp/CMakeLists.txt new file mode 100755 index 0000000..034ae1d --- /dev/null +++ b/wavcmp/CMakeLists.txt @@ -0,0 +1,8 @@ +include_directories(${libmpc_SOURCE_DIR}/libwavformat) +link_directories(${libmpc_BINARY_DIR}/libwavformat) + +add_executable(wavcmp wavcmp.c) + +target_link_libraries(wavcmp wavformat_static) + +install(TARGETS wavcmp RUNTIME DESTINATION bin) diff --git a/wavcmp/Makefile b/wavcmp/Makefile new file mode 100644 index 0000000..74df8a3 --- /dev/null +++ b/wavcmp/Makefile @@ -0,0 +1,231 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# The main all target +all: cmake_check_build_system + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles /home/dewdude/musepack/musepack_src_r475/wavcmp//CMakeFiles/progress.marks + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 wavcmp/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 wavcmp/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 wavcmp/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 wavcmp/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +wavcmp/CMakeFiles/wavcmp.dir/rule: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 wavcmp/CMakeFiles/wavcmp.dir/rule +.PHONY : wavcmp/CMakeFiles/wavcmp.dir/rule + +# Convenience name for target. +wavcmp: wavcmp/CMakeFiles/wavcmp.dir/rule +.PHONY : wavcmp + +# fast build rule for target. +wavcmp/fast: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f wavcmp/CMakeFiles/wavcmp.dir/build.make wavcmp/CMakeFiles/wavcmp.dir/build +.PHONY : wavcmp/fast + +wavcmp.o: wavcmp.c.o +.PHONY : wavcmp.o + +# target to build an object file +wavcmp.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f wavcmp/CMakeFiles/wavcmp.dir/build.make wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.o +.PHONY : wavcmp.c.o + +wavcmp.i: wavcmp.c.i +.PHONY : wavcmp.i + +# target to preprocess a source file +wavcmp.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f wavcmp/CMakeFiles/wavcmp.dir/build.make wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.i +.PHONY : wavcmp.c.i + +wavcmp.s: wavcmp.c.s +.PHONY : wavcmp.s + +# target to generate assembly for a file +wavcmp.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f wavcmp/CMakeFiles/wavcmp.dir/build.make wavcmp/CMakeFiles/wavcmp.dir/wavcmp.c.s +.PHONY : wavcmp.c.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... wavcmp" + @echo "... wavcmp.o" + @echo "... wavcmp.i" + @echo "... wavcmp.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/wavcmp/Makefile.am b/wavcmp/Makefile.am new file mode 100755 index 0000000..b101630 --- /dev/null +++ b/wavcmp/Makefile.am @@ -0,0 +1,10 @@ +AM_CPPFLAGS = -I$(top_srcdir)/libwavformat + +if HAVE_VISIBILITY + AM_CFLAGS = -fvisibility=hidden +endif + +METASOURCES = AUTO +bin_PROGRAMS = wavcmp +wavcmp_SOURCES = wavcmp.c +wavcmp_LDADD = $(top_builddir)/libwavformat/libwavformat.a diff --git a/wavcmp/cmake_install.cmake b/wavcmp/cmake_install.cmake new file mode 100644 index 0000000..88523cb --- /dev/null +++ b/wavcmp/cmake_install.cmake @@ -0,0 +1,70 @@ +# Install script for directory: /home/dewdude/musepack/musepack_src_r475/wavcmp + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) + if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wavcmp" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wavcmp") + file(RPATH_CHECK + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wavcmp" + RPATH "") + endif() + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE EXECUTABLE FILES "/home/dewdude/musepack/musepack_src_r475/wavcmp/wavcmp") + if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wavcmp" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wavcmp") + file(RPATH_CHANGE + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wavcmp" + OLD_RPATH "/home/dewdude/musepack/musepack_src_r475/libwavformat:" + NEW_RPATH "") + if(CMAKE_INSTALL_DO_STRIP) + execute_process(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wavcmp") + endif() + endif() +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/home/dewdude/musepack/musepack_src_r475/wavcmp/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/wavcmp/wavcmp b/wavcmp/wavcmp new file mode 100755 index 0000000000000000000000000000000000000000..480b91f010814384ae38d1971ce4ba80ee4472a1 GIT binary patch literal 34392 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 N<>(7>1aU>}e*w8YwDbS~ literal 0 HcmV?d00001 diff --git a/wavcmp/wavcmp.c b/wavcmp/wavcmp.c new file mode 100755 index 0000000..702a352 --- /dev/null +++ b/wavcmp/wavcmp.c @@ -0,0 +1,144 @@ +/* +* C Implementation: wavcmp +* +* Description: +* +* +* Author: Nicolas Botti , (C) 2007 +* +* Copyright: See COPYING file that comes with this distribution +* +*/ + +#include +#include + +#include + +t_wav_uint32 wav_write(void* p_user_data, void const* p_buffer, t_wav_uint32 p_bytes) +{ + return (t_wav_uint32) fwrite(p_buffer, 1, p_bytes, (FILE*) p_user_data); +} + +t_wav_uint32 wav_seek(void* p_user_data, t_wav_uint32 p_position) +{ + return (t_wav_uint32) !fseek((FILE*) p_user_data, p_position, SEEK_SET); +} + +t_wav_uint32 wav_read(void * p_user_data,void * p_buffer,t_wav_uint32 p_bytes) +{ + return (t_wav_uint32) fread(p_buffer, 1, p_bytes, (FILE*) p_user_data); +} + +static void +usage(const char *exename) +{ + printf("Usage: %s []\n", exename); +} + +int +main(int argc, char **argv) +{ + t_wav_output_file wav_output; + t_wav_input_file wav_in_1; + t_wav_input_file wav_in_2; + int is_wav_output; + int err; + int total_samples, total_diff; + + if(4 < argc && argc < 3) + { + usage(argv[0]); + return 0; + } + + t_wav_input_file_callback wavi_fc; + memset(&wav_in_1, 0, sizeof wav_in_1); + wavi_fc.m_read = wav_read; + wavi_fc.m_user_data = fopen(argv[1], "rb"); + if(!wavi_fc.m_user_data) return 1; + if (! waveformat_input_open(&wav_in_1, wavi_fc)) return 1; + + memset(&wav_in_2, 0, sizeof wav_in_2); + wavi_fc.m_read = wav_read; + wavi_fc.m_user_data = fopen(argv[2], "rb"); + if(!wavi_fc.m_user_data) return 1; + if (! waveformat_input_open(&wav_in_2, wavi_fc)) return 1; + + if (wav_in_1.m_channels != wav_in_2.m_channels) { + printf("Channel number doesn't match\n"); + return 1; + } + if (wav_in_1.m_samples_per_sec != wav_in_2.m_samples_per_sec) { + printf("Sample rate doesn't match\n"); + return 1; + } + if (wav_in_1.m_bits_per_sample != wav_in_2.m_bits_per_sample) { + printf("Sample size doesn't match\n"); + return 1; + } + if (wav_in_1.m_data_size != wav_in_2.m_data_size) { + printf("File length doesn't match\n"); + return 1; + } + + is_wav_output = argc > 3; + if(is_wav_output) + { + t_wav_output_file_callback wavo_fc; + memset(&wav_output, 0, sizeof wav_output); + wavo_fc.m_seek = wav_seek; + wavo_fc.m_write = wav_write; + wavo_fc.m_user_data = fopen(argv[3], "wb"); + if(!wavo_fc.m_user_data) return 1; + err = waveformat_output_open(&wav_output, wavo_fc, wav_in_1.m_channels, wav_in_1.m_bits_per_sample, 0, wav_in_1.m_samples_per_sec, wav_in_2.m_data_size); + if(!err) return 1; + } + + total_samples = 0; + total_diff = 0; + + while(1) + { + short sample_buff[2][512]; + unsigned int samples[2]; + + samples[0] = waveformat_input_process_int16(& wav_in_1, sample_buff[0], 512); + samples[1] = waveformat_input_process_int16(& wav_in_2, sample_buff[1], 512); + + if (samples[0] != samples[1] || samples[0] == 0) + break; + + int i = 0; + for( ; i < samples[0]; i++) { + sample_buff[0][i] -= sample_buff[1][i]; + if (sample_buff[0][i]) { + printf("diff @ sample %i channel %i : %i\n", (total_samples + i) / wav_in_1.m_channels, (total_samples + i) % wav_in_1.m_channels, sample_buff[0][i]); + total_diff++; + } + } + total_samples += samples[0]; + + if(is_wav_output) + if(waveformat_output_process_int16(&wav_output, sample_buff[0], samples[0]) < 0) + break; + } + + if (total_diff != 0) + printf("%i diff found\n", total_diff); + else + printf("no diff found\n"); + + waveformat_input_close(&wav_in_1); + waveformat_input_close(&wav_in_2); + fclose(wav_in_1.m_callback.m_user_data); + fclose(wav_in_2.m_callback.m_user_data); + + if(is_wav_output) + { + waveformat_output_close(&wav_output); + fclose(wav_output.m_callback.m_user_data); + } + + return 0; +} diff --git a/win32/attgetopt.c b/win32/attgetopt.c new file mode 100755 index 0000000..099c35f --- /dev/null +++ b/win32/attgetopt.c @@ -0,0 +1,67 @@ +/** + * @file attgetopt.c + * @ingroup wbxml2xml_tool + * @ingroup xml2wbxml_tool + * + * AT&T's public domain implementation of getopt. + * + * From the mod.sources newsgroup, volume 3, issue 58, with modifications + * to bring it up to 21st century C. + * + * Taken from Kannel Project (http://www.kannel.org/) + */ + +#include +#include + + +#define ERR(s, c) if (opterr) (void) fprintf(stderr, "%s: %s\n", argv[0], s) + +int opterr = 1; +int optind = 1; +int optopt; +char *optarg; + +int getopt(int argc, char **argv, char *opts) +{ + static int sp = 1; + register int c; + register char *cp; + + if(sp == 1) { + if(optind >= argc || + argv[optind][0] != '-' || argv[optind][1] == '\0') + return(EOF); + else if(strcmp(argv[optind], "--") == 0) { + optind++; + return(EOF); + } + } + optopt = c = argv[optind][sp]; + if(c == ':' || (cp=strchr(opts, c)) == NULL) { + ERR(": illegal option -- ", c); + if(argv[optind][++sp] == '\0') { + optind++; + sp = 1; + } + return('?'); + } + if(*++cp == ':') { + if(argv[optind][sp+1] != '\0') + optarg = &argv[optind++][sp+1]; + else if(++optind >= argc) { + ERR(": option requires an argument -- ", c); + sp = 1; + return('?'); + } else + optarg = argv[optind++]; + sp = 1; + } else { + if(argv[optind][++sp] == '\0') { + sp = 1; + optind++; + } + optarg = NULL; + } + return(c); +} diff --git a/win32/basename.c b/win32/basename.c new file mode 100755 index 0000000..bbd556c --- /dev/null +++ b/win32/basename.c @@ -0,0 +1,170 @@ +/* basename.c + * + * $Id: basename.c,v 1.2 2007/03/08 23:15:58 keithmarshall Exp $ + * + * Provides an implementation of the "basename" function, conforming + * to SUSv3, with extensions to accommodate Win32 drive designators, + * and suitable for use on native Microsoft(R) Win32 platforms. + * + * Written by Keith Marshall + * + * This is free software. You may redistribute and/or modify it as you + * see fit, without restriction of copyright. + * + * This software is provided "as is", in the hope that it may be useful, + * but WITHOUT WARRANTY OF ANY KIND, not even any implied warranty of + * MERCHANTABILITY, nor of FITNESS FOR ANY PARTICULAR PURPOSE. At no + * time will the author accept any form of liability for any damages, + * however caused, resulting from the use of this software. + * + */ + +#include +#include +#include +#include +#include + +#ifndef __cdecl /* If compiling on any non-Win32 platform ... */ +#define __cdecl /* this may not be defined. */ +#endif + +__cdecl char *basename( char *path ) +{ + size_t len; + static char *retfail = NULL; + + /* to handle path names for files in multibyte character locales, + * we need to set up LC_CTYPE to match the host file system locale + */ + + char *locale = setlocale( LC_CTYPE, NULL ); + if( locale != NULL ) locale = strdup( locale ); + setlocale( LC_CTYPE, "" ); + + if( path && *path ) + { + /* allocate sufficient local storage space, + * in which to create a wide character reference copy of path + */ + + wchar_t * refcopy, * refpath; + len = mbstowcs( NULL, path, 0 ); + refcopy = malloc((1 + len) * sizeof(wchar_t)); + + /* create the wide character reference copy of path, + * and step over the drive designator, if present ... + */ + + refpath = refcopy; + if( ((len = mbstowcs( refpath, path, len )) > 1) && (refpath[1] == L':') ) + { + /* FIXME: maybe should confirm *refpath is a valid drive designator */ + + refpath += 2; + } + + /* ensure that our wide character reference path is NUL terminated */ + + refcopy[ len ] = L'\0'; + + /* check again, just to ensure we still have a non-empty path name ... */ + + if( *refpath ) + { + /* and, when we do, process it in the wide character domain ... + * scanning from left to right, to the char after the final dir separator + */ + + wchar_t *refname; + for( refname = refpath ; *refpath ; ++refpath ) + { + if( (*refpath == L'/') || (*refpath == L'\\') ) + { + /* we found a dir separator ... + * step over it, and any others which immediately follow it + */ + + while( (*refpath == L'/') || (*refpath == L'\\') ) + ++refpath; + + /* if we didn't reach the end of the path string ... */ + + if( *refpath ) + + /* then we have a new candidate for the base name */ + + refname = refpath; + + /* otherwise ... + * strip off any trailing dir separators which we found + */ + + else while( (refpath > refname) + && ((*--refpath == L'/') || (*refpath == L'\\')) ) + *refpath = L'\0'; + } + } + + /* in the wide character domain ... + * refname now points at the resolved base name ... + */ + + if( *refname ) + { + /* if it's not empty, + * then we transform the full normalised path back into + * the multibyte character domain, and skip over the dirname, + * to return the resolved basename. + */ + + if( (len = wcstombs( path, refcopy, len )) != (size_t)(-1) ) + path[ len ] = '\0'; + *refname = L'\0'; + if( (len = wcstombs( NULL, refcopy, 0 )) != (size_t)(-1) ) + path += len; + } + + else + { + /* the basename is empty, so return the default value of "/", + * transforming from wide char to multibyte char domain, and + * returning it in our own buffer. + */ + + retfail = realloc( retfail, len = 1 + wcstombs( NULL, L"/", 0 )); + wcstombs( path = retfail, L"/", len ); + } + + /* restore the caller's locale, clean up, and return the result */ + + setlocale( LC_CTYPE, locale ); + free( locale ); + return( path ); + } + + free(refcopy); + /* or we had an empty residual path name, after the drive designator, + * in which case we simply fall through ... + */ + } + + /* and, if we get to here ... + * the path name is either NULL, or it decomposes to an empty string; + * in either case, we return the default value of "." in our own buffer, + * reloading it with the correct value, transformed from the wide char + * to the multibyte char domain, just in case the caller trashed it + * after a previous call. + */ + + retfail = realloc( retfail, len = 1 + wcstombs( NULL, L".", 0 )); + wcstombs( retfail, L".", len ); + + /* restore the caller's locale, clean up, and return the result */ + + setlocale( LC_CTYPE, locale ); + free( locale ); + return( retfail ); +} + +/* $RCSfile: basename.c,v $$Revision: 1.2 $: end of file */ diff --git a/win32/dirent.c b/win32/dirent.c new file mode 100755 index 0000000..58d96e7 --- /dev/null +++ b/win32/dirent.c @@ -0,0 +1,299 @@ +/* ///////////////////////////////////////////////////////////////////////////// + * File: dirent.c + * + * Purpose: Definition of the opendir() API functions for the Win32 platform. + * + * Created: 19th October 2002 + * Updated: 12th September 2006 + * + * Home: http://synesis.com.au/software/ + * + * Copyright (c) 2002-2006, Matthew Wilson and Synesis Software + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * - Neither the names of Matthew Wilson and Synesis Software nor the names of + * any contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * ////////////////////////////////////////////////////////////////////////// */ + + +#ifndef UNIXEM_DOCUMENTATION_SKIP_SECTION +# define _SYNSOFT_VER_C_DIRENT_MAJOR 2 +# define _SYNSOFT_VER_C_DIRENT_MINOR 2 +# define _SYNSOFT_VER_C_DIRENT_REVISION 5 +# define _SYNSOFT_VER_C_DIRENT_EDIT 32 +#endif /* !UNIXEM_DOCUMENTATION_SKIP_SECTION */ + +/* ///////////////////////////////////////////////////////////////////////////// + * Includes + */ + +#include + +#include +#include +#include + +/* ///////////////////////////////////////////////////////////////////////////// + * Compiler differences + */ + +#if defined(__BORLANDC__) +# define UNIXEM_opendir_PROVIDED_BY_COMPILER +#elif defined(__DMC__) +# define UNIXEM_opendir_PROVIDED_BY_COMPILER +#elif defined(__GNUC__) +# define UNIXEM_opendir_PROVIDED_BY_COMPILER +#elif defined(__INTEL_COMPILER) +#elif defined(_MSC_VER) +#elif defined(__MWERKS__) +#elif defined(__WATCOMC__) +#else +# error Compiler not discriminated +#endif /* compiler */ + + +#if defined(UNIXEM_opendir_PROVIDED_BY_COMPILER) && \ + !defined(UNIXEM_FORCE_ANY_COMPILER) +# error The opendir() API is provided by this compiler, so should not be built here +#endif /* !UNIXEM_opendir_PROVIDED_BY_COMPILER */ + +/* ///////////////////////////////////////////////////////////////////////////// + * Constants and definitions + */ + +#ifndef FILE_ATTRIBUTE_ERROR +# define FILE_ATTRIBUTE_ERROR (0xFFFFFFFF) +#endif /* FILE_ATTRIBUTE_ERROR */ + +/* ///////////////////////////////////////////////////////////////////////////// + * Typedefs + */ + +struct dirent_dir +{ + char directory[_MAX_DIR + 1]; /* . */ + WIN32_FIND_DATAA find_data; /* The Win32 FindFile data. */ + HANDLE hFind; /* The Win32 FindFile handle. */ + struct dirent dirent; /* The handle's entry. */ +}; + +struct wdirent_dir +{ + wchar_t directory[_MAX_DIR + 1]; /* . */ + WIN32_FIND_DATAW find_data; /* The Win32 FindFile data. */ + HANDLE hFind; /* The Win32 FindFile handle. */ + struct wdirent dirent; /* The handle's entry. */ +}; + +/* ///////////////////////////////////////////////////////////////////////////// + * Helper functions + */ + +static HANDLE unixem__dirent__findfile_directory(char const *name, LPWIN32_FIND_DATAA data) +{ + char search_spec[_MAX_PATH +1]; + + /* Simply add the *.*, ensuring the path separator is + * included. + */ + (void)lstrcpyA(search_spec, name); + if( '\\' != search_spec[lstrlenA(search_spec) - 1] && + '/' != search_spec[lstrlenA(search_spec) - 1]) + { + (void)lstrcatA(search_spec, "\\*.*"); + } + else + { + (void)lstrcatA(search_spec, "*.*"); + } + + return FindFirstFileA(search_spec, data); +} + +#if 0 +static HANDLE unixem__dirent__wfindfile_directory(wchar_t const *name, LPWIN32_FIND_DATAW data) +{ + wchar_t search_spec[_MAX_PATH +1]; + + /* Simply add the *.*, ensuring the path separator is + * included. + */ + lstrcpyW(search_spec, name); + if( L'\\' != search_spec[lstrlenW(search_spec) - 1] && + L'/' != search_spec[lstrlenW(search_spec) - 1]) + { + lstrcatW(search_spec, L"\\*.*"); + } + else + { + lstrcatW(search_spec, L"*.*"); + } + + return FindFirstFileW(search_spec, data); +} +#endif /* 0 */ + +/* ///////////////////////////////////////////////////////////////////////////// + * API functions + */ + +DIR *opendir(char const *name) +{ + DIR *result = NULL; + DWORD dwAttr; + + /* Must be a valid name */ + if( !name || + !*name || + (dwAttr = GetFileAttributes(name)) == 0xFFFFFFFF) + { + errno = ENOENT; + } + /* Must be a directory */ + else if(!(dwAttr & FILE_ATTRIBUTE_DIRECTORY)) + { + errno = ENOTDIR; + } + else + { + result = (DIR*)malloc(sizeof(DIR)); + + if(result == NULL) + { + errno = ENOMEM; + } + else + { + result->hFind = unixem__dirent__findfile_directory(name, &result->find_data); + + if(result->hFind == INVALID_HANDLE_VALUE) + { + free(result); + + result = NULL; + } + else + { + /* Save the directory, in case of rewind. */ + (void)lstrcpyA(result->directory, name); + (void)lstrcpyA(result->dirent.d_name, result->find_data.cFileName); + result->dirent.d_mode = (int)result->find_data.dwFileAttributes; + } + } + } + +#if 0 + if(NULL != dir) + { + struct dirent *readdir(DIR *dir) + + } +#endif /* 0 */ + + + + return result; +} + +int closedir(DIR *dir) +{ + int ret; + + if(dir == NULL) + { + errno = EBADF; + + ret = -1; + } + else + { + /* Close the search handle, if not already done. */ + if(dir->hFind != INVALID_HANDLE_VALUE) + { + (void)FindClose(dir->hFind); + } + + free(dir); + + ret = 0; + } + + return ret; +} + +void rewinddir(DIR *dir) +{ + /* Close the search handle, if not already done. */ + if(dir->hFind != INVALID_HANDLE_VALUE) + { + (void)FindClose(dir->hFind); + } + + dir->hFind = unixem__dirent__findfile_directory(dir->directory, &dir->find_data); + + if(dir->hFind != INVALID_HANDLE_VALUE) + { + (void)lstrcpyA(dir->dirent.d_name, dir->find_data.cFileName); + } +} + +struct dirent *readdir(DIR *dir) +{ + /* The last find exhausted the matches, so return NULL. */ + if(dir->hFind == INVALID_HANDLE_VALUE) + { + if(FILE_ATTRIBUTE_ERROR == dir->find_data.dwFileAttributes) + { + errno = EBADF; + } + else + { + dir->find_data.dwFileAttributes = FILE_ATTRIBUTE_ERROR; + } + + return NULL; + } + else + { + /* Copy the result of the last successful match to + * dirent. + */ + (void)lstrcpyA(dir->dirent.d_name, dir->find_data.cFileName); + + /* Attempt the next match. */ + if(!FindNextFileA(dir->hFind, &dir->find_data)) + { + /* Exhausted all matches, so close and null the + * handle. + */ + (void)FindClose(dir->hFind); + dir->hFind = INVALID_HANDLE_VALUE; + } + + return &dir->dirent; + } +} + +/* ////////////////////////////////////////////////////////////////////////// */ diff --git a/win32/dirent.h b/win32/dirent.h new file mode 100755 index 0000000..94c916e --- /dev/null +++ b/win32/dirent.h @@ -0,0 +1,186 @@ +/* ///////////////////////////////////////////////////////////////////////////// + * File: dirent.h + * + * Purpose: Declaration of the opendir() API functions and types for the + * Win32 platform. + * + * Created: 19th October 2002 + * Updated: 12th September 2006 + * + * Home: http://synesis.com.au/software/ + * + * Copyright (c) 2002-2006, Matthew Wilson and Synesis Software + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * - Neither the names of Matthew Wilson and Synesis Software nor the names of + * any contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * ////////////////////////////////////////////////////////////////////////// */ + + +/** \file dirent.h + * + * Contains the declarations for the opendir()/readdir() API. + */ + +#ifndef SYNSOFT_UNIXEM_INCL_H_DIRENT +#define SYNSOFT_UNIXEM_INCL_H_DIRENT + +#ifndef UNIXEM_DOCUMENTATION_SKIP_SECTION +# define SYNSOFT_UNIXEM_VER_H_DIRENT_MAJOR 3 +# define SYNSOFT_UNIXEM_VER_H_DIRENT_MINOR 3 +# define SYNSOFT_UNIXEM_VER_H_DIRENT_REVISION 1 +# define SYNSOFT_UNIXEM_VER_H_DIRENT_EDIT 29 +#endif /* !UNIXEM_DOCUMENTATION_SKIP_SECTION */ + +/* ////////////////////////////////////////////////////////////////////////// */ + +/** \weakgroup unixem Synesis Software UNIX Emulation for Win32 + * \brief The UNIX emulation library + */ + +/** \weakgroup unixem_dirent opendir()/readdir() API + * \ingroup UNIXem unixem + * \brief This API provides facilities for enumerating the contents of directories + * @{ + */ + +/* ////////////////////////////////////////////////////////////////////////// */ + +#ifndef _WIN32 +# error This file is only currently defined for compilation on Win32 systems +#endif /* _WIN32 */ + +/* ///////////////////////////////////////////////////////////////////////////// + * Includes + */ + +#include + +/* ///////////////////////////////////////////////////////////////////////////// + * Constants and definitions + */ + +#ifndef NAME_MAX +# define NAME_MAX (260) /*!< \brief The maximum number of characters (including null terminator) in a directory entry name */ +#endif /* !NAME_MAX */ + +/* ///////////////////////////////////////////////////////////////////////////// + * Typedefs + */ + +typedef struct dirent_dir DIR; /*!< \brief Handle type for ANSI directory enumeration. \note dirent_dir is defined internally */ +typedef struct wdirent_dir wDIR; /*!< \brief Handle type for Unicode directory enumeration. \note dirent_dir is defined internally */ + +/** \brief Results structure for readdir() + */ +struct dirent +{ + char d_name[NAME_MAX + 1]; /*!< file name (null-terminated) */ + int d_mode; +}; + +/** \brief Results structure for wreaddir() + */ +struct wdirent +{ + wchar_t d_name[NAME_MAX + 1]; /*!< file name (null-terminated) */ + int d_mode; +}; + +/* ///////////////////////////////////////////////////////////////////////////// + * API functions + */ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** \brief Returns a pointer to the next directory entry. + * + * This function opens the directory named by filename, and returns a + * directory to be used to in subsequent operations. NULL is returned + * if name cannot be accessed, or if resources cannot be acquired to + * process the request. + * + * \param name The name of the directory to search + * \return The directory handle from which the entries are read or NULL + */ +DIR *opendir(const char *name); +/** \brief Identical semantics to opendir(), but for Unicode searches. + */ +wDIR *wopendir(const wchar_t *name); + +/** \brief Closes a directory handle + * + * This function closes a directory handle that was opened with opendir() + * and releases any resources associated with that directory handle. + * + * \param dir The directory handle from which the entries are read + * \return 0 on success, or -1 to indicate error. + */ +int closedir(DIR *dir); +/** \brief Identical semantics to closedir(), but for Unicode searches. + */ +int wclosedir(wDIR *dir); + +/** \brief Resets a directory search position + * + * This function resets the position of the named directory handle to + * the beginning of the directory. + * + * \param dir The directory handle whose position should be reset + */ +void rewinddir(DIR *dir); +/** \brief Identical semantics to rewinddir(), but for Unicode searches. + */ +void wrewinddir(wDIR *dir); + +/** \brief Returns a pointer to the next directory entry. + * + * This function returns a pointer to the next directory entry, or NULL upon + * reaching the end of the directory or detecting an invalid seekdir() operation + * + * \param dir The directory handle from which the entries are read + * \return A dirent structure or NULL + */ +struct dirent *readdir(DIR *dir); +/** \brief Identical semantics to readdir(), but for Unicode searches. + */ +struct wdirent *wreaddir(wDIR *dir); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +/* ////////////////////////////////////////////////////////////////////////// */ + +/** @} // end of group unixem_dirent */ + +/* ////////////////////////////////////////////////////////////////////////// */ + +#endif /* SYNSOFT_UNIXEM_INCL_H_DIRENT */ + +/* ////////////////////////////////////////////////////////////////////////// */ diff --git a/win32/getopt.h b/win32/getopt.h new file mode 100755 index 0000000..bebdd27 --- /dev/null +++ b/win32/getopt.h @@ -0,0 +1,20 @@ +/** + * @file getopt.h + * @ingroup wbxml2xml_tool + * @ingroup xml2wbxml_tool + * + * @author Kannel Team (http://www.kannel.org/) + * + * @brief getopt() implementation + */ + +#ifndef WBXML_GETOPT_H +#define WBXML_GETOPT_H + +int getopt(int argc, char **argv, char *opts); +extern int opterr; +extern int optind; +extern int optopt; +extern char *optarg; + +#endif diff --git a/win32/libcommon.vcproj b/win32/libcommon.vcproj new file mode 100755 index 0000000..f99908d --- /dev/null +++ b/win32/libcommon.vcproj @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win32/libcommon_2005.vcproj b/win32/libcommon_2005.vcproj new file mode 100755 index 0000000..05e94e8 --- /dev/null +++ b/win32/libcommon_2005.vcproj @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win32/libgen.h b/win32/libgen.h new file mode 100755 index 0000000..2e69378 --- /dev/null +++ b/win32/libgen.h @@ -0,0 +1,27 @@ +#ifndef _LIBGEN_H_ +/* + * libgen.h + * + * $Id: libgen.h,v 1.2 2007/06/23 07:34:15 dannysmith Exp $ + * + * This file has no copyright assigned and is placed in the Public Domain. + * This file is a part of the mingw-runtime package. + * No warranty is given; refer to the file DISCLAIMER within the package. + * + * Functions for splitting pathnames into dirname and basename components. + * + */ +#define _LIBGEN_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +extern char *basename (char *); + +#ifdef __cplusplus +} +#endif + +#endif /* _LIBGEN_H_: end of file */ + diff --git a/win32/libmpcdec.vcproj b/win32/libmpcdec.vcproj new file mode 100755 index 0000000..31991b0 --- /dev/null +++ b/win32/libmpcdec.vcproj @@ -0,0 +1,252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win32/libmpcdec_2005.vcproj b/win32/libmpcdec_2005.vcproj new file mode 100755 index 0000000..c7bc055 --- /dev/null +++ b/win32/libmpcdec_2005.vcproj @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win32/libmpcenc.vcproj b/win32/libmpcenc.vcproj new file mode 100755 index 0000000..b233682 --- /dev/null +++ b/win32/libmpcenc.vcproj @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win32/libmpcpsy.vcproj b/win32/libmpcpsy.vcproj new file mode 100755 index 0000000..b331bdc --- /dev/null +++ b/win32/libmpcpsy.vcproj @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win32/libwavformat.vcproj b/win32/libwavformat.vcproj new file mode 100755 index 0000000..39cf662 --- /dev/null +++ b/win32/libwavformat.vcproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win32/mpc2sv8.vcproj b/win32/mpc2sv8.vcproj new file mode 100755 index 0000000..69d2a16 --- /dev/null +++ b/win32/mpc2sv8.vcproj @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win32/mpccut.vcproj b/win32/mpccut.vcproj new file mode 100755 index 0000000..dfbf19e --- /dev/null +++ b/win32/mpccut.vcproj @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win32/mpcdec.vcproj b/win32/mpcdec.vcproj new file mode 100755 index 0000000..5ca7609 --- /dev/null +++ b/win32/mpcdec.vcproj @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win32/mpcenc.vcproj b/win32/mpcenc.vcproj new file mode 100755 index 0000000..ace6179 --- /dev/null +++ b/win32/mpcenc.vcproj @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win32/mpcgain.vcproj b/win32/mpcgain.vcproj new file mode 100755 index 0000000..9ff0413 --- /dev/null +++ b/win32/mpcgain.vcproj @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win32/musepack.sln b/win32/musepack.sln new file mode 100755 index 0000000..d6004b9 --- /dev/null +++ b/win32/musepack.sln @@ -0,0 +1,105 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpcenc", "mpcenc.vcproj", "{15082E34-9324-469F-8423-F995B4814A37}" + ProjectSection(ProjectDependencies) = postProject + {49A26D14-0AD0-497E-A982-42BFD4D992FC} = {49A26D14-0AD0-497E-A982-42BFD4D992FC} + {7CF31624-B40E-466F-9107-785816C787C4} = {7CF31624-B40E-466F-9107-785816C787C4} + {44EC1266-D2EE-47B8-ACFC-8BD52E7FFF96} = {44EC1266-D2EE-47B8-ACFC-8BD52E7FFF96} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcommon", "libcommon.vcproj", "{49A26D14-0AD0-497E-A982-42BFD4D992FC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmpcpsy", "libmpcpsy.vcproj", "{7CF31624-B40E-466F-9107-785816C787C4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmpcenc", "libmpcenc.vcproj", "{44EC1266-D2EE-47B8-ACFC-8BD52E7FFF96}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpcdec", "mpcdec.vcproj", "{A527175B-22A9-41AB-B2E8-580F573CCAFB}" + ProjectSection(ProjectDependencies) = postProject + {49A26D14-0AD0-497E-A982-42BFD4D992FC} = {49A26D14-0AD0-497E-A982-42BFD4D992FC} + {13D176A2-B6BB-403F-A816-AA1F388078B7} = {13D176A2-B6BB-403F-A816-AA1F388078B7} + {4C5362CD-0BF2-4B3B-971B-8293EB1A1DC3} = {4C5362CD-0BF2-4B3B-971B-8293EB1A1DC3} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpccut", "mpccut.vcproj", "{ABBF9DD7-650F-48A8-9810-B76F233520F3}" + ProjectSection(ProjectDependencies) = postProject + {44EC1266-D2EE-47B8-ACFC-8BD52E7FFF96} = {44EC1266-D2EE-47B8-ACFC-8BD52E7FFF96} + {49A26D14-0AD0-497E-A982-42BFD4D992FC} = {49A26D14-0AD0-497E-A982-42BFD4D992FC} + {4C5362CD-0BF2-4B3B-971B-8293EB1A1DC3} = {4C5362CD-0BF2-4B3B-971B-8293EB1A1DC3} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpc2sv8", "mpc2sv8.vcproj", "{36225C6A-FFA3-4E70-928E-1F69F7A3FCE1}" + ProjectSection(ProjectDependencies) = postProject + {49A26D14-0AD0-497E-A982-42BFD4D992FC} = {49A26D14-0AD0-497E-A982-42BFD4D992FC} + {44EC1266-D2EE-47B8-ACFC-8BD52E7FFF96} = {44EC1266-D2EE-47B8-ACFC-8BD52E7FFF96} + {4C5362CD-0BF2-4B3B-971B-8293EB1A1DC3} = {4C5362CD-0BF2-4B3B-971B-8293EB1A1DC3} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmpcdec", "libmpcdec.vcproj", "{4C5362CD-0BF2-4B3B-971B-8293EB1A1DC3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libwavformat", "libwavformat.vcproj", "{13D176A2-B6BB-403F-A816-AA1F388078B7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libreplaygain", "..\..\..\libreplaygain\libreplaygain.vcproj", "{CB7A02E8-393A-481B-BD18-E7D041D8C6B1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpcgain", "mpcgain.vcproj", "{76CBB7D4-0524-4569-9150-34BDE4235D04}" + ProjectSection(ProjectDependencies) = postProject + {49A26D14-0AD0-497E-A982-42BFD4D992FC} = {49A26D14-0AD0-497E-A982-42BFD4D992FC} + {4C5362CD-0BF2-4B3B-971B-8293EB1A1DC3} = {4C5362CD-0BF2-4B3B-971B-8293EB1A1DC3} + {CB7A02E8-393A-481B-BD18-E7D041D8C6B1} = {CB7A02E8-393A-481B-BD18-E7D041D8C6B1} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {15082E34-9324-469F-8423-F995B4814A37}.Debug|Win32.ActiveCfg = Debug|Win32 + {15082E34-9324-469F-8423-F995B4814A37}.Debug|Win32.Build.0 = Debug|Win32 + {15082E34-9324-469F-8423-F995B4814A37}.Release|Win32.ActiveCfg = Release|Win32 + {15082E34-9324-469F-8423-F995B4814A37}.Release|Win32.Build.0 = Release|Win32 + {49A26D14-0AD0-497E-A982-42BFD4D992FC}.Debug|Win32.ActiveCfg = Debug|Win32 + {49A26D14-0AD0-497E-A982-42BFD4D992FC}.Debug|Win32.Build.0 = Debug|Win32 + {49A26D14-0AD0-497E-A982-42BFD4D992FC}.Release|Win32.ActiveCfg = Release|Win32 + {49A26D14-0AD0-497E-A982-42BFD4D992FC}.Release|Win32.Build.0 = Release|Win32 + {7CF31624-B40E-466F-9107-785816C787C4}.Debug|Win32.ActiveCfg = Debug|Win32 + {7CF31624-B40E-466F-9107-785816C787C4}.Debug|Win32.Build.0 = Debug|Win32 + {7CF31624-B40E-466F-9107-785816C787C4}.Release|Win32.ActiveCfg = Release|Win32 + {7CF31624-B40E-466F-9107-785816C787C4}.Release|Win32.Build.0 = Release|Win32 + {44EC1266-D2EE-47B8-ACFC-8BD52E7FFF96}.Debug|Win32.ActiveCfg = Debug|Win32 + {44EC1266-D2EE-47B8-ACFC-8BD52E7FFF96}.Debug|Win32.Build.0 = Debug|Win32 + {44EC1266-D2EE-47B8-ACFC-8BD52E7FFF96}.Release|Win32.ActiveCfg = Release|Win32 + {44EC1266-D2EE-47B8-ACFC-8BD52E7FFF96}.Release|Win32.Build.0 = Release|Win32 + {A527175B-22A9-41AB-B2E8-580F573CCAFB}.Debug|Win32.ActiveCfg = Debug|Win32 + {A527175B-22A9-41AB-B2E8-580F573CCAFB}.Debug|Win32.Build.0 = Debug|Win32 + {A527175B-22A9-41AB-B2E8-580F573CCAFB}.Release|Win32.ActiveCfg = Release|Win32 + {A527175B-22A9-41AB-B2E8-580F573CCAFB}.Release|Win32.Build.0 = Release|Win32 + {ABBF9DD7-650F-48A8-9810-B76F233520F3}.Debug|Win32.ActiveCfg = Debug|Win32 + {ABBF9DD7-650F-48A8-9810-B76F233520F3}.Debug|Win32.Build.0 = Debug|Win32 + {ABBF9DD7-650F-48A8-9810-B76F233520F3}.Release|Win32.ActiveCfg = Release|Win32 + {ABBF9DD7-650F-48A8-9810-B76F233520F3}.Release|Win32.Build.0 = Release|Win32 + {36225C6A-FFA3-4E70-928E-1F69F7A3FCE1}.Debug|Win32.ActiveCfg = Debug|Win32 + {36225C6A-FFA3-4E70-928E-1F69F7A3FCE1}.Debug|Win32.Build.0 = Debug|Win32 + {36225C6A-FFA3-4E70-928E-1F69F7A3FCE1}.Release|Win32.ActiveCfg = Release|Win32 + {36225C6A-FFA3-4E70-928E-1F69F7A3FCE1}.Release|Win32.Build.0 = Release|Win32 + {4C5362CD-0BF2-4B3B-971B-8293EB1A1DC3}.Debug|Win32.ActiveCfg = Debug|Win32 + {4C5362CD-0BF2-4B3B-971B-8293EB1A1DC3}.Debug|Win32.Build.0 = Debug|Win32 + {4C5362CD-0BF2-4B3B-971B-8293EB1A1DC3}.Release|Win32.ActiveCfg = Release|Win32 + {4C5362CD-0BF2-4B3B-971B-8293EB1A1DC3}.Release|Win32.Build.0 = Release|Win32 + {13D176A2-B6BB-403F-A816-AA1F388078B7}.Debug|Win32.ActiveCfg = Debug|Win32 + {13D176A2-B6BB-403F-A816-AA1F388078B7}.Debug|Win32.Build.0 = Debug|Win32 + {13D176A2-B6BB-403F-A816-AA1F388078B7}.Release|Win32.ActiveCfg = Release|Win32 + {13D176A2-B6BB-403F-A816-AA1F388078B7}.Release|Win32.Build.0 = Release|Win32 + {CB7A02E8-393A-481B-BD18-E7D041D8C6B1}.Debug|Win32.ActiveCfg = Debug|Win32 + {CB7A02E8-393A-481B-BD18-E7D041D8C6B1}.Debug|Win32.Build.0 = Debug|Win32 + {CB7A02E8-393A-481B-BD18-E7D041D8C6B1}.Release|Win32.ActiveCfg = Release|Win32 + {CB7A02E8-393A-481B-BD18-E7D041D8C6B1}.Release|Win32.Build.0 = Release|Win32 + {76CBB7D4-0524-4569-9150-34BDE4235D04}.Debug|Win32.ActiveCfg = Debug|Win32 + {76CBB7D4-0524-4569-9150-34BDE4235D04}.Debug|Win32.Build.0 = Debug|Win32 + {76CBB7D4-0524-4569-9150-34BDE4235D04}.Release|Win32.ActiveCfg = Release|Win32 + {76CBB7D4-0524-4569-9150-34BDE4235D04}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/win32/musepack_2005.sln b/win32/musepack_2005.sln new file mode 100755 index 0000000..ffd2a9d --- /dev/null +++ b/win32/musepack_2005.sln @@ -0,0 +1,29 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcommon_2005", "libcommon_2005.vcproj", "{0B4DF6B1-30B1-42E1-BC54-B62A178609C0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmpcdec_2005", "libmpcdec_2005.vcproj", "{7E82CFCF-1B5F-496D-8A1D-863CF574C7AF}" + ProjectSection(ProjectDependencies) = postProject + {0B4DF6B1-30B1-42E1-BC54-B62A178609C0} = {0B4DF6B1-30B1-42E1-BC54-B62A178609C0} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0B4DF6B1-30B1-42E1-BC54-B62A178609C0}.Debug|Win32.ActiveCfg = Debug|Win32 + {0B4DF6B1-30B1-42E1-BC54-B62A178609C0}.Debug|Win32.Build.0 = Debug|Win32 + {0B4DF6B1-30B1-42E1-BC54-B62A178609C0}.Release|Win32.ActiveCfg = Release|Win32 + {0B4DF6B1-30B1-42E1-BC54-B62A178609C0}.Release|Win32.Build.0 = Release|Win32 + {7E82CFCF-1B5F-496D-8A1D-863CF574C7AF}.Debug|Win32.ActiveCfg = Debug|Win32 + {7E82CFCF-1B5F-496D-8A1D-863CF574C7AF}.Debug|Win32.Build.0 = Debug|Win32 + {7E82CFCF-1B5F-496D-8A1D-863CF574C7AF}.Release|Win32.ActiveCfg = Release|Win32 + {7E82CFCF-1B5F-496D-8A1D-863CF574C7AF}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal

    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 +#include +#include +#include + +#include +#include +#include + +#include "../libmpcdec/decoder.h" +#include "../libmpcdec/internal.h" +#include "../libmpcenc/libmpcenc.h" + +#define TMP_BUF_SIZE 128 + +#define MPC2SV8_MAJOR 1 +#define MPC2SV8_MINOR 0 +#define MPC2SV8_BUILD 0 + +#define _cat(a,b,c) #a"."#b"."#c +#define cat(a,b,c) _cat(a,b,c) +#define MPC2SV8_VERSION cat(MPC2SV8_MAJOR,MPC2SV8_MINOR,MPC2SV8_BUILD) + +const char About [] = "mpc2sv8 - Musepack (MPC) sv7 to sv8 converter v" MPC2SV8_VERSION " (C) 2007-2009 MDT\nBuilt " __DATE__ " " __TIME__ "\n"; + +static void datacpy(mpc_decoder * d, mpc_encoder_t * e) +{ + static const int offset[] = { 0, 1, 2, 3, 4, 7, 15, 31, 63, 127, 255, 511, + 1023, 2047, 4095, 8191, 16383, 32767 }; + int i, j; + + memcpy(e->SCF_Index_L, d->SCF_Index_L, sizeof(e->SCF_Index_L)); + memcpy(e->SCF_Index_R, d->SCF_Index_R, sizeof(e->SCF_Index_R)); + memcpy(e->Res_L, d->Res_L, sizeof(e->Res_L)); + memcpy(e->Res_R, d->Res_R, sizeof(e->Res_R)); + memcpy(e->MS_Flag, d->MS_Flag, sizeof(e->MS_Flag)); + + for( i = 0; i <= d->max_band; i++){ + mpc_int16_t * q_d = d->Q[i].L, * q_e = e->Q[i].L, Res = d->Res_L[i]; + + if (Res > 0) + for( j = 0; j < 36; j++) + q_e[j] = q_d[j] + offset[Res]; + + q_d = d->Q[i].R, q_e = e->Q[i].R, Res = d->Res_R[i]; + + if (Res > 0) + for( j = 0; j < 36; j++) + q_e[j] = q_d[j] + offset[Res]; + } +} + +static void +usage(const char *exename) +{ + printf("Usage:\n" + "%s \n" + "or\n" + "%s [ ... ] \n", exename, exename); +} + +int convert(char * sv7file, char * sv8file) +{ + mpc_reader reader; + mpc_demux* demux; + mpc_streaminfo si; + mpc_status err; + mpc_encoder_t e; + mpc_uint_t si_size; + mpc_size_t stream_size; + size_t r_size; + FILE * in_file; + char buf[TMP_BUF_SIZE]; + + err = mpc_reader_init_stdio(&reader, sv7file); + if(err < 0) return err; + + demux = mpc_demux_init(&reader); + if(!demux) { + err = !MPC_STATUS_OK; + goto READER_ERR; + } + mpc_demux_get_info(demux, &si); + + if (si.stream_version >= 8) { + fprintf(stderr, "Error : the file \"%s\" is already a sv8 file\n", sv7file); + err = !MPC_STATUS_OK; + goto DEMUX_ERR; + } + + mpc_encoder_init(&e, si.samples, 6, 1); + e.outputFile = fopen( sv8file, "w+b" ); + e.MS_Channelmode = si.ms; + + // copy begining of file + in_file = fopen(sv7file, "rb"); + if(in_file == 0) { + err = !MPC_STATUS_OK; + goto OUT_FILE_ERR; + } + r_size = si.header_position; + while(r_size) { + size_t tmp_size = fread(buf, 1, mini(TMP_BUF_SIZE, r_size), in_file); + if (fwrite(buf, 1, tmp_size, e.outputFile) != tmp_size) { + fprintf(stderr, "Error writing to target file : \"%s\"\n", sv8file); + err = MPC_STATUS_FAIL; + goto IN_FILE_ERR; + } + r_size -= tmp_size; + } + + // stream conversion + e.seek_ref = ftell(e.outputFile); + writeMagic(&e); + writeStreamInfo( &e, si.max_band, si.ms > 0, si.samples, 0, si.sample_freq, + si.channels); + si_size = writeBlock(&e, "SH", MPC_TRUE, 0); + writeGainInfo(&e, si.gain_title, si.peak_title, si.gain_album, si.peak_album); + si_size = writeBlock(&e, "RG", MPC_FALSE, 0); + writeEncoderInfo(&e, si.profile, si.pns, si.encoder_version / 100, + si.encoder_version % 100, 0); + writeBlock(&e, "EI", MPC_FALSE, 0); + e.seek_ptr = ftell(e.outputFile); + writeBits (&e, 0, 16); + writeBits (&e, 0, 24); // jump 40 bits for seek table pointer + writeBlock(&e, "SO", MPC_FALSE, 0); // reserve space for seek offset + while(MPC_TRUE) + { + mpc_frame_info frame; + + demux->d->samples_to_skip = MPC_FRAME_LENGTH + MPC_DECODER_SYNTH_DELAY; + err = mpc_demux_decode(demux, &frame); + + if(frame.bits == -1) break; + + datacpy(demux->d, &e); + writeBitstream_SV8 ( &e, si.max_band); // write SV8-Bitstream + } + + if (err != MPC_STATUS_OK) + fprintf(stderr, "An error occured while decoding, this file may be corrupted\n"); + + // write the last incomplete block + if (e.framesInBlock != 0) { + if ((e.block_cnt & ((1 << e.seek_pwr) - 1)) == 0) { + e.seek_table[e.seek_pos] = ftell(e.outputFile); + e.seek_pos++; + } + e.block_cnt++; + writeBlock(&e, "AP", MPC_FALSE, 0); + } + writeSeekTable(&e); + writeBlock(&e, "ST", MPC_FALSE, 0); // write seek table block + writeBlock(&e, "SE", MPC_FALSE, 0); // write end of stream block + if (demux->d->samples != si.samples) { + fseek(e.outputFile, e.seek_ref + 4, SEEK_SET); + writeStreamInfo( &e, si.max_band, si.ms > 0, demux->d->samples, 0, + si.sample_freq, si.channels); + writeBlock(&e, "SH", MPC_TRUE, si_size); + fseek(e.outputFile, 0, SEEK_END); + } + + // copy end of file + + stream_size = (((mpc_demux_pos(demux) + 7 - 20) >> 3) - si.header_position + 3) & ~3; + fseek(in_file, si.header_position + stream_size, SEEK_SET); + while((r_size = fread(buf, 1, TMP_BUF_SIZE, in_file))) { + if (fwrite(buf, 1, r_size, e.outputFile) != r_size) { + fprintf(stderr, "Error writing to target file"); + break; + } + } + +IN_FILE_ERR: + fclose ( in_file ); +OUT_FILE_ERR: + fclose ( e.outputFile ); + mpc_encoder_exit(&e); +DEMUX_ERR: + mpc_demux_exit(demux); +READER_ERR: + mpc_reader_exit_stdio(&reader); + + return err; +} + +mpc_bool_t is_dir(char * dir_path) +{ + DIR * out_dir = opendir(dir_path); + if (out_dir != 0) { + closedir(out_dir); + return MPC_TRUE; + } + return MPC_FALSE; +} + +int +main(int argc, char **argv) +{ + int c, i; + mpc_bool_t overwrite = MPC_FALSE, use_dir = MPC_FALSE; + int ret = MPC_STATUS_OK; + printf(About); + + while ((c = getopt(argc , argv, "oh")) != -1) { + switch (c) { + case 'o': + overwrite = MPC_TRUE; + break; + case 'h': + usage(argv[0]); + return 0; + } + } + + use_dir = is_dir(argv[argc - 1]); + + if((argc - optind) < 2 || (use_dir == MPC_FALSE && (argc - optind) > 2)) { + usage(argv[0]); + return 0; + } + + for (i = optind; i < argc - 1; i++) { + char * in_file = argv[i]; + char * out_file = argv[argc - 1]; + if (use_dir == MPC_TRUE) { + char * file_name = basename(in_file); + out_file = malloc(strlen(file_name) + strlen(argv[argc - 1]) + 2); + sprintf(out_file, "%s/%s", argv[argc - 1], file_name); + } + if (overwrite == MPC_FALSE) { + FILE * test_file = fopen( out_file, "rb" ); + if ( test_file != 0 ) { + fprintf(stderr, "Error : output file \"%s\" already exists\n", out_file); + fclose(test_file); + continue; + } + } + // FIXME : test if in and out files are the same + ret = convert(in_file, out_file); + if (use_dir == MPC_TRUE) + free(out_file); + } + + return ret; +} diff --git a/mpcchap/CMakeFiles/CMakeDirectoryInformation.cmake b/mpcchap/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f5f0d8d --- /dev/null +++ b/mpcchap/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/dewdude/musepack/musepack_src_r475") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/dewdude/musepack/musepack_src_r475") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/mpcchap/CMakeFiles/mpcchap.dir/DependInfo.cmake b/mpcchap/CMakeFiles/mpcchap.dir/DependInfo.cmake new file mode 100644 index 0000000..cbadaf7 --- /dev/null +++ b/mpcchap/CMakeFiles/mpcchap.dir/DependInfo.cmake @@ -0,0 +1,27 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/dewdude/musepack/musepack_src_r475/common/tags.c" "mpcchap/CMakeFiles/mpcchap.dir/__/common/tags.c.o" "gcc" "mpcchap/CMakeFiles/mpcchap.dir/__/common/tags.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/mpcchap/dictionary.c" "mpcchap/CMakeFiles/mpcchap.dir/dictionary.c.o" "gcc" "mpcchap/CMakeFiles/mpcchap.dir/dictionary.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/mpcchap/iniparser.c" "mpcchap/CMakeFiles/mpcchap.dir/iniparser.c.o" "gcc" "mpcchap/CMakeFiles/mpcchap.dir/iniparser.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/mpcchap/mpcchap.c" "mpcchap/CMakeFiles/mpcchap.dir/mpcchap.c.o" "gcc" "mpcchap/CMakeFiles/mpcchap.dir/mpcchap.c.o.d" + "" "mpcchap/mpcchap" "gcc" "mpcchap/CMakeFiles/mpcchap.dir/link.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/mpcchap/CMakeFiles/mpcchap.dir/build.make b/mpcchap/CMakeFiles/mpcchap.dir/build.make new file mode 100644 index 0000000..eb232ca --- /dev/null +++ b/mpcchap/CMakeFiles/mpcchap.dir/build.make @@ -0,0 +1,164 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +# Include any dependencies generated for this target. +include mpcchap/CMakeFiles/mpcchap.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include mpcchap/CMakeFiles/mpcchap.dir/compiler_depend.make + +# Include the progress variables for this target. +include mpcchap/CMakeFiles/mpcchap.dir/progress.make + +# Include the compile flags for this target's objects. +include mpcchap/CMakeFiles/mpcchap.dir/flags.make + +mpcchap/CMakeFiles/mpcchap.dir/codegen: +.PHONY : mpcchap/CMakeFiles/mpcchap.dir/codegen + +mpcchap/CMakeFiles/mpcchap.dir/mpcchap.c.o: mpcchap/CMakeFiles/mpcchap.dir/flags.make +mpcchap/CMakeFiles/mpcchap.dir/mpcchap.c.o: mpcchap/mpcchap.c +mpcchap/CMakeFiles/mpcchap.dir/mpcchap.c.o: mpcchap/CMakeFiles/mpcchap.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object mpcchap/CMakeFiles/mpcchap.dir/mpcchap.c.o" + cd /home/dewdude/musepack/musepack_src_r475/mpcchap && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT mpcchap/CMakeFiles/mpcchap.dir/mpcchap.c.o -MF CMakeFiles/mpcchap.dir/mpcchap.c.o.d -o CMakeFiles/mpcchap.dir/mpcchap.c.o -c /home/dewdude/musepack/musepack_src_r475/mpcchap/mpcchap.c + +mpcchap/CMakeFiles/mpcchap.dir/mpcchap.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcchap.dir/mpcchap.c.i" + cd /home/dewdude/musepack/musepack_src_r475/mpcchap && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/mpcchap/mpcchap.c > CMakeFiles/mpcchap.dir/mpcchap.c.i + +mpcchap/CMakeFiles/mpcchap.dir/mpcchap.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcchap.dir/mpcchap.c.s" + cd /home/dewdude/musepack/musepack_src_r475/mpcchap && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/mpcchap/mpcchap.c -o CMakeFiles/mpcchap.dir/mpcchap.c.s + +mpcchap/CMakeFiles/mpcchap.dir/dictionary.c.o: mpcchap/CMakeFiles/mpcchap.dir/flags.make +mpcchap/CMakeFiles/mpcchap.dir/dictionary.c.o: mpcchap/dictionary.c +mpcchap/CMakeFiles/mpcchap.dir/dictionary.c.o: mpcchap/CMakeFiles/mpcchap.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object mpcchap/CMakeFiles/mpcchap.dir/dictionary.c.o" + cd /home/dewdude/musepack/musepack_src_r475/mpcchap && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT mpcchap/CMakeFiles/mpcchap.dir/dictionary.c.o -MF CMakeFiles/mpcchap.dir/dictionary.c.o.d -o CMakeFiles/mpcchap.dir/dictionary.c.o -c /home/dewdude/musepack/musepack_src_r475/mpcchap/dictionary.c + +mpcchap/CMakeFiles/mpcchap.dir/dictionary.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcchap.dir/dictionary.c.i" + cd /home/dewdude/musepack/musepack_src_r475/mpcchap && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/mpcchap/dictionary.c > CMakeFiles/mpcchap.dir/dictionary.c.i + +mpcchap/CMakeFiles/mpcchap.dir/dictionary.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcchap.dir/dictionary.c.s" + cd /home/dewdude/musepack/musepack_src_r475/mpcchap && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/mpcchap/dictionary.c -o CMakeFiles/mpcchap.dir/dictionary.c.s + +mpcchap/CMakeFiles/mpcchap.dir/iniparser.c.o: mpcchap/CMakeFiles/mpcchap.dir/flags.make +mpcchap/CMakeFiles/mpcchap.dir/iniparser.c.o: mpcchap/iniparser.c +mpcchap/CMakeFiles/mpcchap.dir/iniparser.c.o: mpcchap/CMakeFiles/mpcchap.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object mpcchap/CMakeFiles/mpcchap.dir/iniparser.c.o" + cd /home/dewdude/musepack/musepack_src_r475/mpcchap && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT mpcchap/CMakeFiles/mpcchap.dir/iniparser.c.o -MF CMakeFiles/mpcchap.dir/iniparser.c.o.d -o CMakeFiles/mpcchap.dir/iniparser.c.o -c /home/dewdude/musepack/musepack_src_r475/mpcchap/iniparser.c + +mpcchap/CMakeFiles/mpcchap.dir/iniparser.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcchap.dir/iniparser.c.i" + cd /home/dewdude/musepack/musepack_src_r475/mpcchap && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/mpcchap/iniparser.c > CMakeFiles/mpcchap.dir/iniparser.c.i + +mpcchap/CMakeFiles/mpcchap.dir/iniparser.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcchap.dir/iniparser.c.s" + cd /home/dewdude/musepack/musepack_src_r475/mpcchap && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/mpcchap/iniparser.c -o CMakeFiles/mpcchap.dir/iniparser.c.s + +mpcchap/CMakeFiles/mpcchap.dir/__/common/tags.c.o: mpcchap/CMakeFiles/mpcchap.dir/flags.make +mpcchap/CMakeFiles/mpcchap.dir/__/common/tags.c.o: common/tags.c +mpcchap/CMakeFiles/mpcchap.dir/__/common/tags.c.o: mpcchap/CMakeFiles/mpcchap.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building C object mpcchap/CMakeFiles/mpcchap.dir/__/common/tags.c.o" + cd /home/dewdude/musepack/musepack_src_r475/mpcchap && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT mpcchap/CMakeFiles/mpcchap.dir/__/common/tags.c.o -MF CMakeFiles/mpcchap.dir/__/common/tags.c.o.d -o CMakeFiles/mpcchap.dir/__/common/tags.c.o -c /home/dewdude/musepack/musepack_src_r475/common/tags.c + +mpcchap/CMakeFiles/mpcchap.dir/__/common/tags.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcchap.dir/__/common/tags.c.i" + cd /home/dewdude/musepack/musepack_src_r475/mpcchap && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/common/tags.c > CMakeFiles/mpcchap.dir/__/common/tags.c.i + +mpcchap/CMakeFiles/mpcchap.dir/__/common/tags.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcchap.dir/__/common/tags.c.s" + cd /home/dewdude/musepack/musepack_src_r475/mpcchap && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/common/tags.c -o CMakeFiles/mpcchap.dir/__/common/tags.c.s + +# Object files for target mpcchap +mpcchap_OBJECTS = \ +"CMakeFiles/mpcchap.dir/mpcchap.c.o" \ +"CMakeFiles/mpcchap.dir/dictionary.c.o" \ +"CMakeFiles/mpcchap.dir/iniparser.c.o" \ +"CMakeFiles/mpcchap.dir/__/common/tags.c.o" + +# External object files for target mpcchap +mpcchap_EXTERNAL_OBJECTS = + +mpcchap/mpcchap: mpcchap/CMakeFiles/mpcchap.dir/mpcchap.c.o +mpcchap/mpcchap: mpcchap/CMakeFiles/mpcchap.dir/dictionary.c.o +mpcchap/mpcchap: mpcchap/CMakeFiles/mpcchap.dir/iniparser.c.o +mpcchap/mpcchap: mpcchap/CMakeFiles/mpcchap.dir/__/common/tags.c.o +mpcchap/mpcchap: mpcchap/CMakeFiles/mpcchap.dir/build.make +mpcchap/mpcchap: mpcchap/CMakeFiles/mpcchap.dir/compiler_depend.ts +mpcchap/mpcchap: libmpcdec/libmpcdec.so +mpcchap/mpcchap: libmpcenc/libmpcenc_static.a +mpcchap/mpcchap: mpcchap/CMakeFiles/mpcchap.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Linking C executable mpcchap" + cd /home/dewdude/musepack/musepack_src_r475/mpcchap && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/mpcchap.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +mpcchap/CMakeFiles/mpcchap.dir/build: mpcchap/mpcchap +.PHONY : mpcchap/CMakeFiles/mpcchap.dir/build + +mpcchap/CMakeFiles/mpcchap.dir/clean: + cd /home/dewdude/musepack/musepack_src_r475/mpcchap && $(CMAKE_COMMAND) -P CMakeFiles/mpcchap.dir/cmake_clean.cmake +.PHONY : mpcchap/CMakeFiles/mpcchap.dir/clean + +mpcchap/CMakeFiles/mpcchap.dir/depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/mpcchap /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/mpcchap /home/dewdude/musepack/musepack_src_r475/mpcchap/CMakeFiles/mpcchap.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : mpcchap/CMakeFiles/mpcchap.dir/depend + diff --git a/mpcchap/CMakeFiles/mpcchap.dir/cmake_clean.cmake b/mpcchap/CMakeFiles/mpcchap.dir/cmake_clean.cmake new file mode 100644 index 0000000..9d696e1 --- /dev/null +++ b/mpcchap/CMakeFiles/mpcchap.dir/cmake_clean.cmake @@ -0,0 +1,18 @@ +file(REMOVE_RECURSE + "CMakeFiles/mpcchap.dir/link.d" + "CMakeFiles/mpcchap.dir/__/common/tags.c.o" + "CMakeFiles/mpcchap.dir/__/common/tags.c.o.d" + "CMakeFiles/mpcchap.dir/dictionary.c.o" + "CMakeFiles/mpcchap.dir/dictionary.c.o.d" + "CMakeFiles/mpcchap.dir/iniparser.c.o" + "CMakeFiles/mpcchap.dir/iniparser.c.o.d" + "CMakeFiles/mpcchap.dir/mpcchap.c.o" + "CMakeFiles/mpcchap.dir/mpcchap.c.o.d" + "mpcchap" + "mpcchap.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/mpcchap.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/mpcchap/CMakeFiles/mpcchap.dir/compiler_depend.make b/mpcchap/CMakeFiles/mpcchap.dir/compiler_depend.make new file mode 100644 index 0000000..8ba0cdc --- /dev/null +++ b/mpcchap/CMakeFiles/mpcchap.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for mpcchap. +# This may be replaced when dependencies are built. diff --git a/mpcchap/CMakeFiles/mpcchap.dir/compiler_depend.ts b/mpcchap/CMakeFiles/mpcchap.dir/compiler_depend.ts new file mode 100644 index 0000000..4174d48 --- /dev/null +++ b/mpcchap/CMakeFiles/mpcchap.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for mpcchap. diff --git a/mpcchap/CMakeFiles/mpcchap.dir/depend.make b/mpcchap/CMakeFiles/mpcchap.dir/depend.make new file mode 100644 index 0000000..a89785a --- /dev/null +++ b/mpcchap/CMakeFiles/mpcchap.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for mpcchap. +# This may be replaced when dependencies are built. diff --git a/mpcchap/CMakeFiles/mpcchap.dir/flags.make b/mpcchap/CMakeFiles/mpcchap.dir/flags.make new file mode 100644 index 0000000..93014c6 --- /dev/null +++ b/mpcchap/CMakeFiles/mpcchap.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# compile C with /usr/bin/cc +C_DEFINES = -DCVD_FASTLOG -DFAST_MATH + +C_INCLUDES = -I/home/dewdude/musepack/musepack_src_r475/include + +C_FLAGS = -O3 -Wall -fomit-frame-pointer -pipe + diff --git a/mpcchap/CMakeFiles/mpcchap.dir/link.txt b/mpcchap/CMakeFiles/mpcchap.dir/link.txt new file mode 100644 index 0000000..5f27205 --- /dev/null +++ b/mpcchap/CMakeFiles/mpcchap.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -O3 -Wall -fomit-frame-pointer -pipe -Wl,--dependency-file=CMakeFiles/mpcchap.dir/link.d CMakeFiles/mpcchap.dir/mpcchap.c.o CMakeFiles/mpcchap.dir/dictionary.c.o CMakeFiles/mpcchap.dir/iniparser.c.o CMakeFiles/mpcchap.dir/__/common/tags.c.o -o mpcchap -L/home/dewdude/musepack/musepack_src_r475/libmpcdec -L/home/dewdude/musepack/musepack_src_r475/libmpcenc -Wl,-rpath,/home/dewdude/musepack/musepack_src_r475/libmpcdec:/home/dewdude/musepack/musepack_src_r475/libmpcenc: ../libmpcdec/libmpcdec.so ../libmpcenc/libmpcenc_static.a -lCUEFILE_LIBRARY-NOTFOUND -lm diff --git a/mpcchap/CMakeFiles/mpcchap.dir/progress.make b/mpcchap/CMakeFiles/mpcchap.dir/progress.make new file mode 100644 index 0000000..bac260a --- /dev/null +++ b/mpcchap/CMakeFiles/mpcchap.dir/progress.make @@ -0,0 +1,6 @@ +CMAKE_PROGRESS_1 = 3 +CMAKE_PROGRESS_2 = 4 +CMAKE_PROGRESS_3 = 5 +CMAKE_PROGRESS_4 = 6 +CMAKE_PROGRESS_5 = 7 + diff --git a/mpcchap/CMakeFiles/progress.marks b/mpcchap/CMakeFiles/progress.marks new file mode 100644 index 0000000..573541a --- /dev/null +++ b/mpcchap/CMakeFiles/progress.marks @@ -0,0 +1 @@ +0 diff --git a/mpcchap/CMakeLists.txt b/mpcchap/CMakeLists.txt new file mode 100755 index 0000000..ebbe2df --- /dev/null +++ b/mpcchap/CMakeLists.txt @@ -0,0 +1,35 @@ +FIND_PATH(CUEFILE_INCLUDE_DIR cuetools/cuefile.h + ${libmpc_SOURCE_DIR}/../libcuefile/include +) + +FIND_LIBRARY(CUEFILE_LIBRARY NAMES cuefile PATHS + ${CUEFILE_INCLUDE_DIR}/../src +) + +if(CUEFILE_INCLUDE_DIR AND CUEFILE_LIBRARY) + message(STATUS "Building mpcchap with cuefile support") + include_directories(${libmpc_SOURCE_DIR}/include) + include_directories(${CUEFILE_INCLUDE_DIR}) + + link_directories(${libmpc_BINARY_DIR}/libmpcdec) + link_directories(${libmpc_BINARY_DIR}/libmpcenc) + + add_executable(mpcchap mpcchap.c dictionary.c iniparser.c ${libmpc_SOURCE_DIR}/common/tags.c) + + if(SHARED) + target_link_libraries(mpcchap mpcdec) + else() + target_link_libraries(mpcchap mpcdec_static) + endif() + + target_link_libraries(mpcchap mpcenc_static) + target_link_libraries(mpcchap ${CUEFILE_LIBRARY}) + + if(NOT MSVC) + target_link_libraries(mpcchap m) + endif() + + install(TARGETS mpcchap RUNTIME DESTINATION bin) +else() + message(STATUS "Skipping mpcchap (libcuefile not found)") +endif() diff --git a/mpcchap/Makefile b/mpcchap/Makefile new file mode 100644 index 0000000..701c51b --- /dev/null +++ b/mpcchap/Makefile @@ -0,0 +1,189 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# The main all target +all: cmake_check_build_system + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles /home/dewdude/musepack/musepack_src_r475/mpcchap//CMakeFiles/progress.marks + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcchap/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcchap/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcchap/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcchap/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/mpcchap/Makefile.am b/mpcchap/Makefile.am new file mode 100755 index 0000000..be99c49 --- /dev/null +++ b/mpcchap/Makefile.am @@ -0,0 +1,19 @@ +EXTRA_DIST = CMakeLists.txt + +bin_PROGRAMS = mpcchap + +common_sources = ../common/tags.c ../common/crc32.c + +AM_CPPFLAGS = -I$(top_srcdir)/include + +if HAVE_VISIBILITY + AM_CFLAGS = -fvisibility=hidden +endif + +METASOURCES = AUTO +mpcchap_SOURCES = dictionary.c iniparser.c mpcchap.c $(common_sources) \ +dictionary.h iniparser.h + +mpcchap_LDADD = $(top_builddir)/libmpcdec/libmpcdec.la \ + $(top_builddir)/libmpcenc/libmpcenc.a \ + -lm -lcuefile diff --git a/mpcchap/cmake_install.cmake b/mpcchap/cmake_install.cmake new file mode 100644 index 0000000..a135066 --- /dev/null +++ b/mpcchap/cmake_install.cmake @@ -0,0 +1,50 @@ +# Install script for directory: /home/dewdude/musepack/musepack_src_r475/mpcchap + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/home/dewdude/musepack/musepack_src_r475/mpcchap/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/mpcchap/dictionary.c b/mpcchap/dictionary.c new file mode 100755 index 0000000..540f3fe --- /dev/null +++ b/mpcchap/dictionary.c @@ -0,0 +1,400 @@ +/*-------------------------------------------------------------------------*/ +/** + @file dictionary.c + @author N. Devillard + @date Sep 2007 + @version $Revision: 1.27 $ + @brief Implements a dictionary for string variables. + + This module implements a simple dictionary object, i.e. a list + of string/string associations. This object is useful to store e.g. + informations retrieved from a configuration file (ini files). +*/ +/*--------------------------------------------------------------------------*/ + +/* + $Id: dictionary.c,v 1.27 2007-11-23 21:39:18 ndevilla Exp $ + $Revision: 1.27 $ +*/ +/*--------------------------------------------------------------------------- + Includes + ---------------------------------------------------------------------------*/ +#include "dictionary.h" + +/** Maximum value size for integers and doubles. */ +#define MAXVALSZ 1024 + +/** Minimal allocated number of entries in a dictionary */ +#define DICTMINSZ 128 + +/** Invalid key token */ +#define DICT_INVALID_KEY ((char*)-1) + +/*--------------------------------------------------------------------------- + Private functions + ---------------------------------------------------------------------------*/ + +/* Doubles the allocated size associated to a pointer */ +/* 'size' is the current allocated size. */ +static void * mem_double(void * ptr, int size) +{ + void * newptr ; + + newptr = calloc(2*size, 1); + if (newptr==NULL) { + return NULL ; + } + memcpy(newptr, ptr, size); + free(ptr); + return newptr ; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Duplicate a string + @param s String to duplicate + @return Pointer to a newly allocated string, to be freed with free() + + This is a replacement for strdup(). This implementation is provided + for systems that do not have it. + */ +/*--------------------------------------------------------------------------*/ +static char * xstrdup(char * s) +{ + char * t ; + if (!s) + return NULL ; + t = malloc(strlen(s)+1) ; + if (t) { + strcpy(t,s); + } + return t ; +} + +/*--------------------------------------------------------------------------- + Function codes + ---------------------------------------------------------------------------*/ +/*-------------------------------------------------------------------------*/ +/** + @brief Compute the hash key for a string. + @param key Character string to use for key. + @return 1 unsigned int on at least 32 bits. + + This hash function has been taken from an Article in Dr Dobbs Journal. + This is normally a collision-free function, distributing keys evenly. + The key is stored anyway in the struct so that collision can be avoided + by comparing the key itself in last resort. + */ +/*--------------------------------------------------------------------------*/ +unsigned dictionary_hash(char * key) +{ + int len ; + unsigned hash ; + int i ; + + len = strlen(key); + for (hash=0, i=0 ; i>6) ; + } + hash += (hash <<3); + hash ^= (hash >>11); + hash += (hash <<15); + return hash ; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Create a new dictionary object. + @param size Optional initial size of the dictionary. + @return 1 newly allocated dictionary objet. + + This function allocates a new dictionary object of given size and returns + it. If you do not know in advance (roughly) the number of entries in the + dictionary, give size=0. + */ +/*--------------------------------------------------------------------------*/ +dictionary * dictionary_new(int size) +{ + dictionary * d ; + + /* If no size was specified, allocate space for DICTMINSZ */ + if (sizesize = size ; + d->val = (char **)calloc(size, sizeof(char*)); + d->key = (char **)calloc(size, sizeof(char*)); + d->hash = (unsigned int *)calloc(size, sizeof(unsigned)); + return d ; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Delete a dictionary object + @param d dictionary object to deallocate. + @return void + + Deallocate a dictionary object and all memory associated to it. + */ +/*--------------------------------------------------------------------------*/ +void dictionary_del(dictionary * d) +{ + int i ; + + if (d==NULL) return ; + for (i=0 ; isize ; i++) { + if (d->key[i]!=NULL) + free(d->key[i]); + if (d->val[i]!=NULL) + free(d->val[i]); + } + free(d->val); + free(d->key); + free(d->hash); + free(d); + return ; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Get a value from a dictionary. + @param d dictionary object to search. + @param key Key to look for in the dictionary. + @param def Default value to return if key not found. + @return 1 pointer to internally allocated character string. + + This function locates a key in a dictionary and returns a pointer to its + value, or the passed 'def' pointer if no such key can be found in + dictionary. The returned character pointer points to data internal to the + dictionary object, you should not try to free it or modify it. + */ +/*--------------------------------------------------------------------------*/ +char * dictionary_get(dictionary * d, char * key, char * def) +{ + unsigned hash ; + int i ; + + hash = dictionary_hash(key); + for (i=0 ; isize ; i++) { + if (d->key[i]==NULL) + continue ; + /* Compare hash */ + if (hash==d->hash[i]) { + /* Compare string, to avoid hash collisions */ + if (!strcmp(key, d->key[i])) { + return d->val[i] ; + } + } + } + return def ; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Set a value in a dictionary. + @param d dictionary object to modify. + @param key Key to modify or add. + @param val Value to add. + @return int 0 if Ok, anything else otherwise + + If the given key is found in the dictionary, the associated value is + replaced by the provided one. If the key cannot be found in the + dictionary, it is added to it. + + It is Ok to provide a NULL value for val, but NULL values for the dictionary + or the key are considered as errors: the function will return immediately + in such a case. + + Notice that if you dictionary_set a variable to NULL, a call to + dictionary_get will return a NULL value: the variable will be found, and + its value (NULL) is returned. In other words, setting the variable + content to NULL is equivalent to deleting the variable from the + dictionary. It is not possible (in this implementation) to have a key in + the dictionary without value. + + This function returns non-zero in case of failure. + */ +/*--------------------------------------------------------------------------*/ +int dictionary_set(dictionary * d, char * key, char * val) +{ + int i ; + unsigned hash ; + + if (d==NULL || key==NULL) return -1 ; + + /* Compute hash for this key */ + hash = dictionary_hash(key) ; + /* Find if value is already in dictionary */ + if (d->n>0) { + for (i=0 ; isize ; i++) { + if (d->key[i]==NULL) + continue ; + if (hash==d->hash[i]) { /* Same hash value */ + if (!strcmp(key, d->key[i])) { /* Same key */ + /* Found a value: modify and return */ + if (d->val[i]!=NULL) + free(d->val[i]); + d->val[i] = val ? xstrdup(val) : NULL ; + /* Value has been modified: return */ + return 0 ; + } + } + } + } + /* Add a new value */ + /* See if dictionary needs to grow */ + if (d->n==d->size) { + + /* Reached maximum size: reallocate dictionary */ + d->val = (char **)mem_double(d->val, d->size * sizeof(char*)) ; + d->key = (char **)mem_double(d->key, d->size * sizeof(char*)) ; + d->hash = (unsigned int *)mem_double(d->hash, d->size * sizeof(unsigned)) ; + if ((d->val==NULL) || (d->key==NULL) || (d->hash==NULL)) { + /* Cannot grow dictionary */ + return -1 ; + } + /* Double size */ + d->size *= 2 ; + } + + /* Insert key in the first empty slot */ + for (i=0 ; isize ; i++) { + if (d->key[i]==NULL) { + /* Add key here */ + break ; + } + } + /* Copy key */ + d->key[i] = xstrdup(key); + d->val[i] = val ? xstrdup(val) : NULL ; + d->hash[i] = hash; + d->n ++ ; + return 0 ; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Delete a key in a dictionary + @param d dictionary object to modify. + @param key Key to remove. + @return void + + This function deletes a key in a dictionary. Nothing is done if the + key cannot be found. + */ +/*--------------------------------------------------------------------------*/ +void dictionary_unset(dictionary * d, char * key) +{ + unsigned hash ; + int i ; + + if (key == NULL) { + return; + } + + hash = dictionary_hash(key); + for (i=0 ; isize ; i++) { + if (d->key[i]==NULL) + continue ; + /* Compare hash */ + if (hash==d->hash[i]) { + /* Compare string, to avoid hash collisions */ + if (!strcmp(key, d->key[i])) { + /* Found key */ + break ; + } + } + } + if (i>=d->size) + /* Key not found */ + return ; + + free(d->key[i]); + d->key[i] = NULL ; + if (d->val[i]!=NULL) { + free(d->val[i]); + d->val[i] = NULL ; + } + d->hash[i] = 0 ; + d->n -- ; + return ; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Dump a dictionary to an opened file pointer. + @param d Dictionary to dump + @param f Opened file pointer. + @return void + + Dumps a dictionary onto an opened file pointer. Key pairs are printed out + as @c [Key]=[Value], one per line. It is Ok to provide stdout or stderr as + output file pointers. + */ +/*--------------------------------------------------------------------------*/ +void dictionary_dump(dictionary * d, FILE * out) +{ + int i ; + + if (d==NULL || out==NULL) return ; + if (d->n<1) { + fprintf(out, "empty dictionary\n"); + return ; + } + for (i=0 ; isize ; i++) { + if (d->key[i]) { + fprintf(out, "%20s\t[%s]\n", + d->key[i], + d->val[i] ? d->val[i] : "UNDEF"); + } + } + return ; +} + + +/* Test code */ +#ifdef TESTDIC +#define NVALS 20000 +int main(int argc, char *argv[]) +{ + dictionary * d ; + char * val ; + int i ; + char cval[90] ; + + /* Allocate dictionary */ + printf("allocating...\n"); + d = dictionary_new(0); + + /* Set values in dictionary */ + printf("setting %d values...\n", NVALS); + for (i=0 ; in != 0) { + printf("error deleting values\n"); + } + printf("deallocating...\n"); + dictionary_del(d); + return 0 ; +} +#endif +/* vim: set ts=4 et sw=4 tw=75 */ diff --git a/mpcchap/dictionary.h b/mpcchap/dictionary.h new file mode 100755 index 0000000..15dbdea --- /dev/null +++ b/mpcchap/dictionary.h @@ -0,0 +1,177 @@ + +/*-------------------------------------------------------------------------*/ +/** + @file dictionary.h + @author N. Devillard + @date Sep 2007 + @version $Revision: 1.12 $ + @brief Implements a dictionary for string variables. + + This module implements a simple dictionary object, i.e. a list + of string/string associations. This object is useful to store e.g. + informations retrieved from a configuration file (ini files). +*/ +/*--------------------------------------------------------------------------*/ + +/* + $Id: dictionary.h,v 1.12 2007-11-23 21:37:00 ndevilla Exp $ + $Author: ndevilla $ + $Date: 2007-11-23 21:37:00 $ + $Revision: 1.12 $ +*/ + +#ifndef _DICTIONARY_H_ +#define _DICTIONARY_H_ + +/*--------------------------------------------------------------------------- + Includes + ---------------------------------------------------------------------------*/ + +#include +#include +#include + +#ifndef _MSC_VER +# include +#endif + +/*--------------------------------------------------------------------------- + New types + ---------------------------------------------------------------------------*/ + + +/*-------------------------------------------------------------------------*/ +/** + @brief Dictionary object + + This object contains a list of string/string associations. Each + association is identified by a unique string key. Looking up values + in the dictionary is speeded up by the use of a (hopefully collision-free) + hash function. + */ +/*-------------------------------------------------------------------------*/ +typedef struct _dictionary_ { + int n ; /** Number of entries in dictionary */ + int size ; /** Storage size */ + char ** val ; /** List of string values */ + char ** key ; /** List of string keys */ + unsigned * hash ; /** List of hash values for keys */ +} dictionary ; + + +/*--------------------------------------------------------------------------- + Function prototypes + ---------------------------------------------------------------------------*/ + +/*-------------------------------------------------------------------------*/ +/** + @brief Compute the hash key for a string. + @param key Character string to use for key. + @return 1 unsigned int on at least 32 bits. + + This hash function has been taken from an Article in Dr Dobbs Journal. + This is normally a collision-free function, distributing keys evenly. + The key is stored anyway in the struct so that collision can be avoided + by comparing the key itself in last resort. + */ +/*--------------------------------------------------------------------------*/ +unsigned dictionary_hash(char * key); + +/*-------------------------------------------------------------------------*/ +/** + @brief Create a new dictionary object. + @param size Optional initial size of the dictionary. + @return 1 newly allocated dictionary objet. + + This function allocates a new dictionary object of given size and returns + it. If you do not know in advance (roughly) the number of entries in the + dictionary, give size=0. + */ +/*--------------------------------------------------------------------------*/ +dictionary * dictionary_new(int size); + +/*-------------------------------------------------------------------------*/ +/** + @brief Delete a dictionary object + @param d dictionary object to deallocate. + @return void + + Deallocate a dictionary object and all memory associated to it. + */ +/*--------------------------------------------------------------------------*/ +void dictionary_del(dictionary * vd); + +/*-------------------------------------------------------------------------*/ +/** + @brief Get a value from a dictionary. + @param d dictionary object to search. + @param key Key to look for in the dictionary. + @param def Default value to return if key not found. + @return 1 pointer to internally allocated character string. + + This function locates a key in a dictionary and returns a pointer to its + value, or the passed 'def' pointer if no such key can be found in + dictionary. The returned character pointer points to data internal to the + dictionary object, you should not try to free it or modify it. + */ +/*--------------------------------------------------------------------------*/ +char * dictionary_get(dictionary * d, char * key, char * def); + + +/*-------------------------------------------------------------------------*/ +/** + @brief Set a value in a dictionary. + @param d dictionary object to modify. + @param key Key to modify or add. + @param val Value to add. + @return int 0 if Ok, anything else otherwise + + If the given key is found in the dictionary, the associated value is + replaced by the provided one. If the key cannot be found in the + dictionary, it is added to it. + + It is Ok to provide a NULL value for val, but NULL values for the dictionary + or the key are considered as errors: the function will return immediately + in such a case. + + Notice that if you dictionary_set a variable to NULL, a call to + dictionary_get will return a NULL value: the variable will be found, and + its value (NULL) is returned. In other words, setting the variable + content to NULL is equivalent to deleting the variable from the + dictionary. It is not possible (in this implementation) to have a key in + the dictionary without value. + + This function returns non-zero in case of failure. + */ +/*--------------------------------------------------------------------------*/ +int dictionary_set(dictionary * vd, char * key, char * val); + +/*-------------------------------------------------------------------------*/ +/** + @brief Delete a key in a dictionary + @param d dictionary object to modify. + @param key Key to remove. + @return void + + This function deletes a key in a dictionary. Nothing is done if the + key cannot be found. + */ +/*--------------------------------------------------------------------------*/ +void dictionary_unset(dictionary * d, char * key); + + +/*-------------------------------------------------------------------------*/ +/** + @brief Dump a dictionary to an opened file pointer. + @param d Dictionary to dump + @param f Opened file pointer. + @return void + + Dumps a dictionary onto an opened file pointer. Key pairs are printed out + as @c [Key]=[Value], one per line. It is Ok to provide stdout or stderr as + output file pointers. + */ +/*--------------------------------------------------------------------------*/ +void dictionary_dump(dictionary * d, FILE * out); + +#endif diff --git a/mpcchap/iniparser.c b/mpcchap/iniparser.c new file mode 100755 index 0000000..2ad88eb --- /dev/null +++ b/mpcchap/iniparser.c @@ -0,0 +1,723 @@ + +/*-------------------------------------------------------------------------*/ +/** + @file iniparser.c + @author N. Devillard + @date Sep 2007 + @version 3.0 + @brief Parser for ini files. +*/ +/*--------------------------------------------------------------------------*/ +/* + $Id: iniparser.c,v 2.18 2008-01-03 18:35:39 ndevilla Exp $ + $Revision: 2.18 $ + $Date: 2008-01-03 18:35:39 $ +*/ +/*---------------------------- Includes ------------------------------------*/ +#include +#include "iniparser.h" + +/*---------------------------- Defines -------------------------------------*/ +#define ASCIILINESZ (1024) +#define INI_INVALID_KEY ((char*)-1) + +/*--------------------------------------------------------------------------- + Private to this module + ---------------------------------------------------------------------------*/ +/** + * This enum stores the status for each parsed line (internal use only). + */ +typedef enum _line_status_ { + LINE_UNPROCESSED, + LINE_ERROR, + LINE_EMPTY, + LINE_COMMENT, + LINE_SECTION, + LINE_VALUE +} line_status ; + +/*-------------------------------------------------------------------------*/ +/** + @brief Convert a string to lowercase. + @param s String to convert. + @return ptr to statically allocated string. + + This function returns a pointer to a statically allocated string + containing a lowercased version of the input string. Do not free + or modify the returned string! Since the returned string is statically + allocated, it will be modified at each function call (not re-entrant). + */ +/*--------------------------------------------------------------------------*/ +static char * strlwc(const char * s) +{ + static char l[ASCIILINESZ+1]; + int i ; + + if (s==NULL) return NULL ; + memset(l, 0, ASCIILINESZ+1); + i=0 ; + while (s[i] && i l) { + if (!isspace((int)*(last-1))) + break ; + last -- ; + } + *last = (char)0; + return (char*)l ; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Get number of sections in a dictionary + @param d Dictionary to examine + @return int Number of sections found in dictionary + + This function returns the number of sections found in a dictionary. + The test to recognize sections is done on the string stored in the + dictionary: a section name is given as "section" whereas a key is + stored as "section:key", thus the test looks for entries that do not + contain a colon. + + This clearly fails in the case a section name contains a colon, but + this should simply be avoided. + + This function returns -1 in case of error. + */ +/*--------------------------------------------------------------------------*/ +int iniparser_getnsec(dictionary * d) +{ + int i ; + int nsec ; + + if (d==NULL) return -1 ; + nsec=0 ; + for (i=0 ; isize ; i++) { + if (d->key[i]==NULL) + continue ; + if (strchr(d->key[i], ':')==NULL) { + nsec ++ ; + } + } + return nsec ; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Get name for section n in a dictionary. + @param d Dictionary to examine + @param n Section number (from 0 to nsec-1). + @return Pointer to char string + + This function locates the n-th section in a dictionary and returns + its name as a pointer to a string statically allocated inside the + dictionary. Do not free or modify the returned string! + + This function returns NULL in case of error. + */ +/*--------------------------------------------------------------------------*/ +char * iniparser_getsecname(dictionary * d, int n) +{ + int i ; + int foundsec ; + + if (d==NULL || n<0) return NULL ; + foundsec=0 ; + for (i=0 ; isize ; i++) { + if (d->key[i]==NULL) + continue ; + if (strchr(d->key[i], ':')==NULL) { + foundsec++ ; + if (foundsec>n) + break ; + } + } + if (foundsec<=n) { + return NULL ; + } + return d->key[i] ; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Get number of keys for section n in a dictionary. + @param d Dictionary to examine + @param n Section number (from 0 to nsec-1). + @return Number of keys in section + + This function locates the n-th section in a dictionary and returns + the number of keys in this section. + + This function returns -1 in case of error. + */ +/*--------------------------------------------------------------------------*/ +int iniparser_getnkey(dictionary * d, int n) +{ + int i, i_sec, cnt = 0 ; + + if (d==NULL) return -1 ; + for (i_sec=i=0 ; isize ; i++) { + if (d->key[i]==NULL) + continue ; + if (strchr(d->key[i], ':')==NULL) { + if (n == -1) + break; + n -- ; + } + if (n == -1) + cnt ++; + } + return (cnt - 1); +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Get key and string for key nkey in section nsec in a dictionary. + @param d Dictionary to examine + @param nsec Section number. + @param nkey Key number. + @param string Pointer where the string will be returned. + @return Pointer to char string + + This function locates the nkey-th key in the nsec-th section in a dictionary + and returns the key name and the key string as a pointer to strings + statically allocated inside the dictionary. + Do not free or modify the returned strings! + + This function returns NULL in case of error. + */ +/*--------------------------------------------------------------------------*/ +char * iniparser_getkeyname(dictionary * d, int nsec, int nkey, char ** string) +{ + int i, keylen; + + if (d==NULL) return 0 ; + for (i=0 ; isize ; i++) { + if (d->key[i]==NULL) + continue ; + if (strchr(d->key[i], ':')==NULL) { + if (nsec == 0) + break; + nsec -- ; + } + } + keylen = strlen(d->key[i]) + 1; + i++; + for (; isize ; i++) { + if (d->key[i]==NULL) + continue ; + if (nkey == 0) + break; + nkey--; + } + + *string = d->val[i]; + return d->key[i] + keylen; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Dump a dictionary to an opened file pointer. + @param d Dictionary to dump. + @param f Opened file pointer to dump to. + @return void + + This function prints out the contents of a dictionary, one element by + line, onto the provided file pointer. It is OK to specify @c stderr + or @c stdout as output files. This function is meant for debugging + purposes mostly. + */ +/*--------------------------------------------------------------------------*/ +void iniparser_dump(dictionary * d, FILE * f) +{ + int i ; + + if (d==NULL || f==NULL) return ; + for (i=0 ; isize ; i++) { + if (d->key[i]==NULL) + continue ; + if (d->val[i]!=NULL) { + fprintf(f, "[%s]=[%s]\n", d->key[i], d->val[i]); + } else { + fprintf(f, "[%s]=UNDEF\n", d->key[i]); + } + } + return ; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Save a dictionary to a loadable ini file + @param d Dictionary to dump + @param f Opened file pointer to dump to + @return void + + This function dumps a given dictionary into a loadable ini file. + It is Ok to specify @c stderr or @c stdout as output files. + */ +/*--------------------------------------------------------------------------*/ +void iniparser_dump_ini(dictionary * d, FILE * f) +{ + int i, j ; + char keym[ASCIILINESZ+1]; + int nsec ; + char * secname ; + int seclen ; + + if (d==NULL || f==NULL) return ; + + nsec = iniparser_getnsec(d); + if (nsec<1) { + /* No section in file: dump all keys as they are */ + for (i=0 ; isize ; i++) { + if (d->key[i]==NULL) + continue ; + fprintf(f, "%s = %s\n", d->key[i], d->val[i]); + } + return ; + } + for (i=0 ; isize ; j++) { + if (d->key[j]==NULL) + continue ; + if (!strncmp(d->key[j], keym, seclen+1)) { + fprintf(f, + "%-30s = %s\n", + d->key[j]+seclen+1, + d->val[j] ? d->val[j] : ""); + } + } + } + fprintf(f, "\n"); + return ; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Get the string associated to a key + @param d Dictionary to search + @param key Key string to look for + @param def Default value to return if key not found. + @return pointer to statically allocated character string + + This function queries a dictionary for a key. A key as read from an + ini file is given as "section:key". If the key cannot be found, + the pointer passed as 'def' is returned. + The returned char pointer is pointing to a string allocated in + the dictionary, do not free or modify it. + */ +/*--------------------------------------------------------------------------*/ +char * iniparser_getstring(dictionary * d, const char * key, char * def) +{ + char * lc_key ; + char * sval ; + + if (d==NULL || key==NULL) + return def ; + + lc_key = strlwc(key); + sval = dictionary_get(d, lc_key, def); + return sval ; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Get the string associated to a key, convert to an int + @param d Dictionary to search + @param key Key string to look for + @param notfound Value to return in case of error + @return integer + + This function queries a dictionary for a key. A key as read from an + ini file is given as "section:key". If the key cannot be found, + the notfound value is returned. + + Supported values for integers include the usual C notation + so decimal, octal (starting with 0) and hexadecimal (starting with 0x) + are supported. Examples: + + "42" -> 42 + "042" -> 34 (octal -> decimal) + "0x42" -> 66 (hexa -> decimal) + + Warning: the conversion may overflow in various ways. Conversion is + totally outsourced to strtol(), see the associated man page for overflow + handling. + + Credits: Thanks to A. Becker for suggesting strtol() + */ +/*--------------------------------------------------------------------------*/ +int iniparser_getint(dictionary * d, const char * key, int notfound) +{ + char * str ; + + str = iniparser_getstring(d, key, INI_INVALID_KEY); + if (str==INI_INVALID_KEY) return notfound ; + return (int)strtol(str, NULL, 0); +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Get the string associated to a key, convert to a double + @param d Dictionary to search + @param key Key string to look for + @param notfound Value to return in case of error + @return double + + This function queries a dictionary for a key. A key as read from an + ini file is given as "section:key". If the key cannot be found, + the notfound value is returned. + */ +/*--------------------------------------------------------------------------*/ +double iniparser_getdouble(dictionary * d, char * key, double notfound) +{ + char * str ; + + str = iniparser_getstring(d, key, INI_INVALID_KEY); + if (str==INI_INVALID_KEY) return notfound ; + return atof(str); +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Get the string associated to a key, convert to a boolean + @param d Dictionary to search + @param key Key string to look for + @param notfound Value to return in case of error + @return integer + + This function queries a dictionary for a key. A key as read from an + ini file is given as "section:key". If the key cannot be found, + the notfound value is returned. + + A true boolean is found if one of the following is matched: + + - A string starting with 'y' + - A string starting with 'Y' + - A string starting with 't' + - A string starting with 'T' + - A string starting with '1' + + A false boolean is found if one of the following is matched: + + - A string starting with 'n' + - A string starting with 'N' + - A string starting with 'f' + - A string starting with 'F' + - A string starting with '0' + + The notfound value returned if no boolean is identified, does not + necessarily have to be 0 or 1. + */ +/*--------------------------------------------------------------------------*/ +int iniparser_getboolean(dictionary * d, const char * key, int notfound) +{ + char * c ; + int ret ; + + c = iniparser_getstring(d, key, INI_INVALID_KEY); + if (c==INI_INVALID_KEY) return notfound ; + if (c[0]=='y' || c[0]=='Y' || c[0]=='1' || c[0]=='t' || c[0]=='T') { + ret = 1 ; + } else if (c[0]=='n' || c[0]=='N' || c[0]=='0' || c[0]=='f' || c[0]=='F') { + ret = 0 ; + } else { + ret = notfound ; + } + return ret; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Finds out if a given entry exists in a dictionary + @param ini Dictionary to search + @param entry Name of the entry to look for + @return integer 1 if entry exists, 0 otherwise + + Finds out if a given entry exists in the dictionary. Since sections + are stored as keys with NULL associated values, this is the only way + of querying for the presence of sections in a dictionary. + */ +/*--------------------------------------------------------------------------*/ +int iniparser_find_entry( + dictionary * ini, + char * entry +) +{ + int found=0 ; + if (iniparser_getstring(ini, entry, INI_INVALID_KEY)!=INI_INVALID_KEY) { + found = 1 ; + } + return found ; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Set an entry in a dictionary. + @param ini Dictionary to modify. + @param entry Entry to modify (entry name) + @param val New value to associate to the entry. + @return int 0 if Ok, -1 otherwise. + + If the given entry can be found in the dictionary, it is modified to + contain the provided value. If it cannot be found, -1 is returned. + It is Ok to set val to NULL. + */ +/*--------------------------------------------------------------------------*/ +int iniparser_set(dictionary * ini, char * entry, char * val) +{ + return dictionary_set(ini, strlwc(entry), val) ; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Delete an entry in a dictionary + @param ini Dictionary to modify + @param entry Entry to delete (entry name) + @return void + + If the given entry can be found, it is deleted from the dictionary. + */ +/*--------------------------------------------------------------------------*/ +void iniparser_unset(dictionary * ini, char * entry) +{ + dictionary_unset(ini, strlwc(entry)); +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Load a single line from an INI file + @param input_line Input line, may be concatenated multi-line input + @param section Output space to store section + @param key Output space to store key + @param value Output space to store value + @return line_status value + */ +/*--------------------------------------------------------------------------*/ +static line_status iniparser_line( + char * input_line, + char * section, + char * key, + char * value) +{ + line_status sta ; + char line[ASCIILINESZ+1]; + int len ; + + strcpy(line, strstrip(input_line)); + len = (int)strlen(line); + + sta = LINE_UNPROCESSED ; + if (len<1) { + /* Empty line */ + sta = LINE_EMPTY ; + } else if (line[0]=='#' || line[0]==';') { + /* Comment line */ + sta = LINE_COMMENT ; + } else if (line[0]=='[' && line[len-1]==']') { + /* Section name */ + sscanf(line, "[%[^]]", section); + strcpy(section, strstrip(section)); + strcpy(section, section); + sta = LINE_SECTION ; + } else if (sscanf (line, "%[^=] = \"%[^\"]\"", key, value) == 2 + || sscanf (line, "%[^=] = '%[^\']'", key, value) == 2 + || sscanf (line, "%[^=] = %[^;#]", key, value) == 2) { + /* Usual key=value, with or without comments */ + strcpy(key, strstrip(key)); + strcpy(key, key); + strcpy(value, strstrip(value)); + /* + * sscanf cannot handle '' or "" as empty values + * this is done here + */ + if (!strcmp(value, "\"\"") || (!strcmp(value, "''"))) { + value[0]=0 ; + } + sta = LINE_VALUE ; + } else if (sscanf(line, "%[^=] = %[;#]", key, value)==2 + || sscanf(line, "%[^=] %[=]", key, value) == 2) { + /* + * Special cases: + * key= + * key=; + * key=# + */ + strcpy(key, strstrip(key)); + strcpy(key, key); + value[0]=0 ; + sta = LINE_VALUE ; + } else { + /* Generate syntax error */ + sta = LINE_ERROR ; + } + return sta ; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Parse an ini file and return an allocated dictionary object + @param ininame Name of the ini file to read. + @return Pointer to newly allocated dictionary + + This is the parser for ini files. This function is called, providing + the name of the file to be read. It returns a dictionary object that + should not be accessed directly, but through accessor functions + instead. + + The returned dictionary must be freed using iniparser_freedict(). + */ +/*--------------------------------------------------------------------------*/ +dictionary * iniparser_load(const char * ininame) +{ + FILE * in ; + + char line [ASCIILINESZ+1] ; + char section [ASCIILINESZ+1] ; + char key [ASCIILINESZ+1] ; + char tmp [ASCIILINESZ+1] ; + char val [ASCIILINESZ+1] ; + + int last=0 ; + int len ; + int lineno=0 ; + int errs=0; + + dictionary * dict ; + + if ((in=fopen(ininame, "r"))==NULL) { + fprintf(stderr, "iniparser: cannot open %s\n", ininame); + return NULL ; + } + + dict = dictionary_new(0) ; + if (!dict) { + fclose(in); + return NULL ; + } + + memset(line, 0, ASCIILINESZ); + memset(section, 0, ASCIILINESZ); + memset(key, 0, ASCIILINESZ); + memset(val, 0, ASCIILINESZ); + last=0 ; + + while (fgets(line+last, ASCIILINESZ-last, in)!=NULL) { + lineno++ ; + len = (int)strlen(line)-1; + /* Safety check against buffer overflows */ + if (line[len]!='\n') { + fprintf(stderr, + "iniparser: input line too long in %s (%d)\n", + ininame, + lineno); + dictionary_del(dict); + fclose(in); + return NULL ; + } + /* Get rid of \n and spaces at end of line */ + while ((len>=0) && + ((line[len]=='\n') || (isspace(line[len])))) { + line[len]=0 ; + len-- ; + } + /* Detect multi-line */ + if (line[len]=='\\') { + /* Multi-line value */ + last=len ; + continue ; + } else { + last=0 ; + } + switch (iniparser_line(line, section, key, val)) { + case LINE_EMPTY: + case LINE_COMMENT: + break ; + + case LINE_SECTION: + errs = dictionary_set(dict, section, NULL); + break ; + + case LINE_VALUE: + sprintf(tmp, "%s:%s", section, key); + errs = dictionary_set(dict, tmp, val) ; + break ; + + case LINE_ERROR: + fprintf(stderr, "iniparser: syntax error in %s (%d):\n", + ininame, + lineno); + fprintf(stderr, "-> %s\n", line); + errs++ ; + break; + + default: + break ; + } + memset(line, 0, ASCIILINESZ); + last=0; + if (errs<0) { + fprintf(stderr, "iniparser: memory allocation failure\n"); + break ; + } + } + if (errs) { + dictionary_del(dict); + dict = NULL ; + } + fclose(in); + return dict ; +} + +/*-------------------------------------------------------------------------*/ +/** + @brief Free all memory associated to an ini dictionary + @param d Dictionary to free + @return void + + Free all memory associated to an ini dictionary. + It is mandatory to call this function before the dictionary object + gets out of the current context. + */ +/*--------------------------------------------------------------------------*/ +void iniparser_freedict(dictionary * d) +{ + dictionary_del(d); +} + +/* vim: set ts=4 et sw=4 tw=75 */ diff --git a/mpcchap/iniparser.h b/mpcchap/iniparser.h new file mode 100755 index 0000000..4af1e3a --- /dev/null +++ b/mpcchap/iniparser.h @@ -0,0 +1,316 @@ + +/*-------------------------------------------------------------------------*/ +/** + @file iniparser.h + @author N. Devillard + @date Sep 2007 + @version 3.0 + @brief Parser for ini files. +*/ +/*--------------------------------------------------------------------------*/ + +/* + $Id: iniparser.h,v 1.24 2007-11-23 21:38:19 ndevilla Exp $ + $Revision: 1.24 $ +*/ + +#ifndef _INIPARSER_H_ +#define _INIPARSER_H_ + +/*--------------------------------------------------------------------------- + Includes + ---------------------------------------------------------------------------*/ + +#include +#include +#include + +/* + * The following #include is necessary on many Unixes but not Linux. + * It is not needed for Windows platforms. + * Uncomment it if needed. + */ +/* #include */ + +#include "dictionary.h" + +/*--------------------------------------------------------------------------- + Macros + ---------------------------------------------------------------------------*/ +/** For backwards compatibility only */ +#define iniparser_getstr(d, k) iniparser_getstring(d, k, NULL) +#define iniparser_setstr iniparser_setstring + +/*-------------------------------------------------------------------------*/ +/** + @brief Get number of sections in a dictionary + @param d Dictionary to examine + @return int Number of sections found in dictionary + + This function returns the number of sections found in a dictionary. + The test to recognize sections is done on the string stored in the + dictionary: a section name is given as "section" whereas a key is + stored as "section:key", thus the test looks for entries that do not + contain a colon. + + This clearly fails in the case a section name contains a colon, but + this should simply be avoided. + + This function returns -1 in case of error. + */ +/*--------------------------------------------------------------------------*/ + +int iniparser_getnsec(dictionary * d); + + +/*-------------------------------------------------------------------------*/ +/** + @brief Get name for section n in a dictionary. + @param d Dictionary to examine + @param n Section number (from 0 to nsec-1). + @return Pointer to char string + + This function locates the n-th section in a dictionary and returns + its name as a pointer to a string statically allocated inside the + dictionary. Do not free or modify the returned string! + + This function returns NULL in case of error. + */ +/*--------------------------------------------------------------------------*/ + +char * iniparser_getsecname(dictionary * d, int n); + + +/*-------------------------------------------------------------------------*/ +/** +@brief Get number of keys for section n in a dictionary. +@param d Dictionary to examine +@param n Section number (from 0 to nsec-1). +@return Number of keys in section + + This function locates the n-th section in a dictionary and returns + the number of keys in this section. + + This function returns -1 in case of error. + */ +/*--------------------------------------------------------------------------*/ +int iniparser_getnkey(dictionary * d, int nsec); + + +/*-------------------------------------------------------------------------*/ +/** +@brief Get key and string for key nkey in section nsec in a dictionary. +@param d Dictionary to examine +@param nsec Section number. +@param nkey Key number. +@param string Pointer where the string will be returned. +@return Pointer to char string + + This function locates the nkey-th key in the nsec-th section in a dictionary + and returns the key name and the key string as a pointer to strings + statically allocated inside the dictionary. + Do not free or modify the returned strings! + + This function returns NULL in case of error. + */ +/*--------------------------------------------------------------------------*/ +char * iniparser_getkeyname(dictionary * d, int nsec, int nkey, char ** string); + + +/*-------------------------------------------------------------------------*/ +/** + @brief Save a dictionary to a loadable ini file + @param d Dictionary to dump + @param f Opened file pointer to dump to + @return void + + This function dumps a given dictionary into a loadable ini file. + It is Ok to specify @c stderr or @c stdout as output files. + */ +/*--------------------------------------------------------------------------*/ + +void iniparser_dump_ini(dictionary * d, FILE * f); + +/*-------------------------------------------------------------------------*/ +/** + @brief Dump a dictionary to an opened file pointer. + @param d Dictionary to dump. + @param f Opened file pointer to dump to. + @return void + + This function prints out the contents of a dictionary, one element by + line, onto the provided file pointer. It is OK to specify @c stderr + or @c stdout as output files. This function is meant for debugging + purposes mostly. + */ +/*--------------------------------------------------------------------------*/ +void iniparser_dump(dictionary * d, FILE * f); + +/*-------------------------------------------------------------------------*/ +/** + @brief Get the string associated to a key + @param d Dictionary to search + @param key Key string to look for + @param def Default value to return if key not found. + @return pointer to statically allocated character string + + This function queries a dictionary for a key. A key as read from an + ini file is given as "section:key". If the key cannot be found, + the pointer passed as 'def' is returned. + The returned char pointer is pointing to a string allocated in + the dictionary, do not free or modify it. + */ +/*--------------------------------------------------------------------------*/ +char * iniparser_getstring(dictionary * d, const char * key, char * def); + +/*-------------------------------------------------------------------------*/ +/** + @brief Get the string associated to a key, convert to an int + @param d Dictionary to search + @param key Key string to look for + @param notfound Value to return in case of error + @return integer + + This function queries a dictionary for a key. A key as read from an + ini file is given as "section:key". If the key cannot be found, + the notfound value is returned. + + Supported values for integers include the usual C notation + so decimal, octal (starting with 0) and hexadecimal (starting with 0x) + are supported. Examples: + + - "42" -> 42 + - "042" -> 34 (octal -> decimal) + - "0x42" -> 66 (hexa -> decimal) + + Warning: the conversion may overflow in various ways. Conversion is + totally outsourced to strtol(), see the associated man page for overflow + handling. + + Credits: Thanks to A. Becker for suggesting strtol() + */ +/*--------------------------------------------------------------------------*/ +int iniparser_getint(dictionary * d, const char * key, int notfound); + +/*-------------------------------------------------------------------------*/ +/** + @brief Get the string associated to a key, convert to a double + @param d Dictionary to search + @param key Key string to look for + @param notfound Value to return in case of error + @return double + + This function queries a dictionary for a key. A key as read from an + ini file is given as "section:key". If the key cannot be found, + the notfound value is returned. + */ +/*--------------------------------------------------------------------------*/ +double iniparser_getdouble(dictionary * d, char * key, double notfound); + +/*-------------------------------------------------------------------------*/ +/** + @brief Get the string associated to a key, convert to a boolean + @param d Dictionary to search + @param key Key string to look for + @param notfound Value to return in case of error + @return integer + + This function queries a dictionary for a key. A key as read from an + ini file is given as "section:key". If the key cannot be found, + the notfound value is returned. + + A true boolean is found if one of the following is matched: + + - A string starting with 'y' + - A string starting with 'Y' + - A string starting with 't' + - A string starting with 'T' + - A string starting with '1' + + A false boolean is found if one of the following is matched: + + - A string starting with 'n' + - A string starting with 'N' + - A string starting with 'f' + - A string starting with 'F' + - A string starting with '0' + + The notfound value returned if no boolean is identified, does not + necessarily have to be 0 or 1. + */ +/*--------------------------------------------------------------------------*/ +int iniparser_getboolean(dictionary * d, const char * key, int notfound); + + +/*-------------------------------------------------------------------------*/ +/** + @brief Set an entry in a dictionary. + @param ini Dictionary to modify. + @param entry Entry to modify (entry name) + @param val New value to associate to the entry. + @return int 0 if Ok, -1 otherwise. + + If the given entry can be found in the dictionary, it is modified to + contain the provided value. If it cannot be found, -1 is returned. + It is Ok to set val to NULL. + */ +/*--------------------------------------------------------------------------*/ +int iniparser_setstring(dictionary * ini, char * entry, char * val); + + +/*-------------------------------------------------------------------------*/ +/** + @brief Delete an entry in a dictionary + @param ini Dictionary to modify + @param entry Entry to delete (entry name) + @return void + + If the given entry can be found, it is deleted from the dictionary. + */ +/*--------------------------------------------------------------------------*/ +void iniparser_unset(dictionary * ini, char * entry); + +/*-------------------------------------------------------------------------*/ +/** + @brief Finds out if a given entry exists in a dictionary + @param ini Dictionary to search + @param entry Name of the entry to look for + @return integer 1 if entry exists, 0 otherwise + + Finds out if a given entry exists in the dictionary. Since sections + are stored as keys with NULL associated values, this is the only way + of querying for the presence of sections in a dictionary. + */ +/*--------------------------------------------------------------------------*/ +int iniparser_find_entry(dictionary * ini, char * entry) ; + +/*-------------------------------------------------------------------------*/ +/** + @brief Parse an ini file and return an allocated dictionary object + @param ininame Name of the ini file to read. + @return Pointer to newly allocated dictionary + + This is the parser for ini files. This function is called, providing + the name of the file to be read. It returns a dictionary object that + should not be accessed directly, but through accessor functions + instead. + + The returned dictionary must be freed using iniparser_freedict(). + */ +/*--------------------------------------------------------------------------*/ +dictionary * iniparser_load(const char * ininame); + +/*-------------------------------------------------------------------------*/ +/** + @brief Free all memory associated to an ini dictionary + @param d Dictionary to free + @return void + + Free all memory associated to an ini dictionary. + It is mandatory to call this function before the dictionary object + gets out of the current context. + */ +/*--------------------------------------------------------------------------*/ +void iniparser_freedict(dictionary * d); + +#endif diff --git a/mpcchap/mpcchap.c b/mpcchap/mpcchap.c new file mode 100755 index 0000000..4f02191 --- /dev/null +++ b/mpcchap/mpcchap.c @@ -0,0 +1,321 @@ +/* + Copyright (c) 2008-2009, The Musepack Development Team + All rights reserved. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +#include +#include "../libmpcdec/internal.h" +#include "../libmpcenc/libmpcenc.h" +#include "iniparser.h" + +#include + +#include + +// tags.c +void Init_Tags ( void ); +int FinalizeTags ( FILE* fp, unsigned int Version, unsigned int flags ); +int addtag ( const char* key, size_t keylen, const char* value, + size_t valuelen, int converttoutf8, int flags ); +#define TAG_NO_HEADER 1 +#define TAG_NO_FOOTER 2 +#define TAG_NO_PREAMBLE 4 +#define TAG_VERSION 2000 + +#ifdef _MSC_VER +# include +# define atoll _atoi64 +# define ftruncate chsize +# define strcasecmp stricmp +#endif + +#define MPCCHAP_MAJOR 0 +#define MPCCHAP_MINOR 9 +#define MPCCHAP_BUILD 0 + +#define _cat(a,b,c) #a"."#b"."#c +#define cat(a,b,c) _cat(a,b,c) +#define MPCCHAP_VERSION cat(MPCCHAP_MAJOR,MPCCHAP_MINOR,MPCCHAP_BUILD) + +const char About[] = "%s - Musepack (MPC) sv8 chapter editor v" MPCCHAP_VERSION " (C) 2008-2009 MDT\nBuilt " __DATE__ " " __TIME__ "\n"; + + +static const int Ptis[] = { PTI_TITLE, PTI_PERFORMER, PTI_SONGWRITER, PTI_COMPOSER, + PTI_ARRANGER, PTI_MESSAGE, PTI_GENRE}; +static char const * const APE_keys[] = {"Title", "Artist", "Songwriter", "Composer", + "Arranger", "Comment", "Genre"}; + +static void usage(const char *exename) +{ + fprintf(stderr, + "Usage: %s \n" + " if chapterfile.ini exists, chapter tags in infile.mpc will be\n" + " replaced by those from chapterfile.ini, else chapters will be\n" + " dumped to chapterfile.ini\n" + " chapterfile.ini is something like :\n" + " [chapter_start_sample]\n" + " SomeKey=Some Value\n" + " SomeOtherKey=Some Other Value\n" + " [other_chapter_start]\n" + " YouKnowWhatKey=I think you start to understand ...\n" + , exename); +} + +mpc_status add_chaps_ini(char * mpc_file, char * chap_file, mpc_demux * demux, mpc_streaminfo * si) +{ + struct stat stbuf; + FILE * in_file; + int chap_pos, end_pos, chap_size, i, nchap; + char * tmp_buff; + dictionary * dict; + + chap_pos = (demux->chap_pos >> 3) + si->header_position; + end_pos = mpc_demux_pos(demux) >> 3; + chap_size = end_pos - chap_pos; + + stat(mpc_file, &stbuf); + tmp_buff = malloc(stbuf.st_size - chap_pos - chap_size); + in_file = fopen( mpc_file, "r+b" ); + fseek(in_file, chap_pos + chap_size, SEEK_SET); + fread(tmp_buff, 1, stbuf.st_size - chap_pos - chap_size, in_file); + fseek(in_file, chap_pos, SEEK_SET); + + dict = iniparser_load(chap_file); + + nchap = iniparser_getnsec(dict); + for (i = 0; i < nchap; i++) { + int j, nitem, ntags = 0, tag_len = 0, offset_size; + mpc_uint16_t gain = 0, peak = 0; + char * chap_sec = iniparser_getsecname(dict, i), block_header[12] = "CT", sample_offset[10]; + mpc_int64_t chap_pos = atoll(chap_sec); + + if (chap_pos > si->samples - si->beg_silence) + fprintf(stderr, "warning : chapter %i starts @ %lli samples after the end of the stream (%lli)\n", + i + 1, chap_pos, si->samples - si->beg_silence); + + Init_Tags(); + + nitem = iniparser_getnkey(dict, i); + for (j = 0; j < nitem; j++) { + char * item_key, * item_value; + int key_len, item_len; + item_key = iniparser_getkeyname(dict, i, j, & item_value); + if (strcmp(item_key, "gain") == 0) + gain = atoi(item_value); + else if (strcmp(item_key, "peak") == 0) + peak = atoi(item_value); + else { + key_len = strlen(item_key); + item_len = strlen(item_value); + addtag(item_key, key_len, item_value, item_len, 0, 0); + tag_len += key_len + item_len; + ntags++; + } + } + if (ntags > 0) tag_len += 24 + ntags * 9; + + offset_size = encodeSize(chap_pos, sample_offset, MPC_FALSE); + tag_len = encodeSize(tag_len + 4 + offset_size + 2, block_header + 2, MPC_TRUE); + fwrite(block_header, 1, tag_len + 2, in_file); + fwrite(sample_offset, 1, offset_size, in_file); + sample_offset[0] = gain >> 8; + sample_offset[1] = gain & 0xFF; + sample_offset[2] = peak >> 8; + sample_offset[3] = peak & 0xFF; + fwrite(sample_offset, 1, 4, in_file); + FinalizeTags(in_file, TAG_VERSION, TAG_NO_FOOTER | TAG_NO_PREAMBLE); + } + + fwrite(tmp_buff, 1, stbuf.st_size - chap_pos - chap_size, in_file); + ftruncate(fileno(in_file), ftell(in_file)); + + fclose(in_file); + free(tmp_buff); + iniparser_freedict(dict); + + return MPC_STATUS_OK; +} + +mpc_status add_chaps_cue(char * mpc_file, char * chap_file, mpc_demux * demux, mpc_streaminfo * si) +{ + Cd *cd = 0; + int nchap, format = UNKNOWN; + struct stat stbuf; + FILE * in_file; + int chap_pos, end_pos, chap_size, i; + char * tmp_buff; + + if (0 == (cd = cf_parse(chap_file, &format))) { + fprintf(stderr, "%s: input file error\n", chap_file); + return !MPC_STATUS_OK; + } + + chap_pos = (demux->chap_pos >> 3) + si->header_position; + end_pos = mpc_demux_pos(demux) >> 3; + chap_size = end_pos - chap_pos; + + stat(mpc_file, &stbuf); + tmp_buff = malloc(stbuf.st_size - chap_pos - chap_size); + in_file = fopen( mpc_file, "r+b" ); + fseek(in_file, chap_pos + chap_size, SEEK_SET); + fread(tmp_buff, 1, stbuf.st_size - chap_pos - chap_size, in_file); + fseek(in_file, chap_pos, SEEK_SET); + + nchap = cd_get_ntrack(cd); + for (i = 1; i <= nchap; i++) { + char track_buf[16], block_header[12] = "CT", sample_offset[10]; + int j, nitem = 0, tag_len = 0, key_len, item_len, offset_size; + Track * track; + Cdtext *cdtext; + mpc_int64_t chap_pos; + + track = cd_get_track (cd, i); + cdtext = track_get_cdtext(track); + + // position du chapitre + chap_pos = (mpc_int64_t) si->sample_freq * track_get_start (track) / 75; + + if (chap_pos > si->samples - si->beg_silence) + fprintf(stderr, "warning : chapter %i starts @ %lli samples after the end of the stream (%lli)\n", + i, chap_pos, si->samples - si->beg_silence); + + Init_Tags(); + + sprintf(track_buf, "%i/%i", i, nchap); + key_len = 5; + item_len = strlen(track_buf); + addtag("Track", key_len, track_buf, item_len, 0, 0); + tag_len += key_len + item_len; + nitem++; + + for (j = 0; j < (sizeof(Ptis) / sizeof(*Ptis)); j++) { + char const * item_key = APE_keys[j], * item_value; + item_value = cdtext_get (Ptis[j], cdtext); + if (item_value != 0) { + key_len = strlen(item_key); + item_len = strlen(item_value); + addtag(item_key, key_len, item_value, item_len, 0, 0); + tag_len += key_len + item_len; + nitem++; + } + } + + tag_len += 24 + nitem * 9; + offset_size = encodeSize(chap_pos, sample_offset, MPC_FALSE); + tag_len = encodeSize(tag_len + 4 + offset_size + 2, block_header + 2, MPC_TRUE); + fwrite(block_header, 1, tag_len + 2, in_file); + fwrite(sample_offset, 1, offset_size, in_file); + fwrite("\0\0\0\0", 1, 4, in_file); // put unknow chapter gain / peak + FinalizeTags(in_file, TAG_VERSION, TAG_NO_FOOTER | TAG_NO_PREAMBLE); + } + + fwrite(tmp_buff, 1, stbuf.st_size - chap_pos - chap_size, in_file); + ftruncate(fileno(in_file), ftell(in_file)); + + fclose(in_file); + free(tmp_buff); + + return MPC_STATUS_OK; +} + +mpc_status dump_chaps(mpc_demux * demux, char * chap_file, int chap_nb) +{ + int i; + FILE * out_file; + mpc_chap_info const * chap; + + if (chap_nb <= 0) + return MPC_STATUS_OK; + + out_file = fopen(chap_file, "wb"); + if (out_file == 0) + return !MPC_STATUS_OK; + + for (i = 0; i < chap_nb; i++) { + chap = mpc_demux_chap(demux, i); + fprintf(out_file, "[%lli]\ngain=%i\npeak=%i\n", chap->sample, chap->gain, chap->peak); + if (chap->tag_size > 0) { + int item_count, j; + char const * tag = chap->tag; + item_count = tag[8] | (tag[9] << 8) | (tag[10] << 16) | (tag[11] << 24); + tag += 24; + for( j = 0; j < item_count; j++){ + int key_len = strlen(tag + 8); + int value_len = tag[0] | (tag[1] << 8) | (tag[2] << 16) | (tag[3] << 24); + fprintf(out_file, "%s=\"%.*s\"\n", tag + 8, value_len, tag + 9 + key_len); + tag += 9 + key_len + value_len; + } + } + fprintf(out_file, "\n"); + } + + fclose(out_file); + + return MPC_STATUS_OK; +} + +int main(int argc, char **argv) +{ + mpc_reader reader; + mpc_demux* demux; + mpc_streaminfo si; + char * mpc_file, * chap_file; + mpc_status err; + FILE * test_file; + int chap_nb; + + fprintf(stderr, About, argv[0]); + + if (argc != 3) + usage(argv[0]); + + mpc_file = argv[1]; + chap_file = argv[2]; + + err = mpc_reader_init_stdio(&reader, mpc_file); + if(err < 0) return !MPC_STATUS_OK; + + demux = mpc_demux_init(&reader); + if(!demux) return !MPC_STATUS_OK; + mpc_demux_get_info(demux, &si); + + if (si.stream_version < 8) { + fprintf(stderr, "this file cannot be edited, please convert it first to sv8 using mpc2sv8\n"); + exit(!MPC_STATUS_OK); + } + + chap_nb = mpc_demux_chap_nb(demux); + + test_file = fopen(chap_file, "rb" ); + if (test_file == 0) { + err = dump_chaps(demux, chap_file, chap_nb); + } else { + int len; + fclose(test_file); + len = strlen(chap_file); + if (strcasecmp(chap_file + len - 4, ".cue") == 0 || strcasecmp(chap_file + len - 4, ".toc") == 0) + err = add_chaps_cue(mpc_file, chap_file, demux, &si); + else if (strcasecmp(chap_file + len - 4, ".ini") == 0) + err = add_chaps_ini(mpc_file, chap_file, demux, &si); + else + err = !MPC_STATUS_OK; + } + + mpc_demux_exit(demux); + mpc_reader_exit_stdio(&reader); + return err; +} diff --git a/mpccut/CMakeFiles/CMakeDirectoryInformation.cmake b/mpccut/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f5f0d8d --- /dev/null +++ b/mpccut/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/dewdude/musepack/musepack_src_r475") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/dewdude/musepack/musepack_src_r475") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/mpccut/CMakeFiles/mpccut.dir/DependInfo.cmake b/mpccut/CMakeFiles/mpccut.dir/DependInfo.cmake new file mode 100644 index 0000000..afa054e --- /dev/null +++ b/mpccut/CMakeFiles/mpccut.dir/DependInfo.cmake @@ -0,0 +1,24 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/dewdude/musepack/musepack_src_r475/mpccut/mpccut.c" "mpccut/CMakeFiles/mpccut.dir/mpccut.c.o" "gcc" "mpccut/CMakeFiles/mpccut.dir/mpccut.c.o.d" + "" "mpccut/mpccut" "gcc" "mpccut/CMakeFiles/mpccut.dir/link.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/mpccut/CMakeFiles/mpccut.dir/build.make b/mpccut/CMakeFiles/mpccut.dir/build.make new file mode 100644 index 0000000..302df7f --- /dev/null +++ b/mpccut/CMakeFiles/mpccut.dir/build.make @@ -0,0 +1,116 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +# Include any dependencies generated for this target. +include mpccut/CMakeFiles/mpccut.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include mpccut/CMakeFiles/mpccut.dir/compiler_depend.make + +# Include the progress variables for this target. +include mpccut/CMakeFiles/mpccut.dir/progress.make + +# Include the compile flags for this target's objects. +include mpccut/CMakeFiles/mpccut.dir/flags.make + +mpccut/CMakeFiles/mpccut.dir/codegen: +.PHONY : mpccut/CMakeFiles/mpccut.dir/codegen + +mpccut/CMakeFiles/mpccut.dir/mpccut.c.o: mpccut/CMakeFiles/mpccut.dir/flags.make +mpccut/CMakeFiles/mpccut.dir/mpccut.c.o: mpccut/mpccut.c +mpccut/CMakeFiles/mpccut.dir/mpccut.c.o: mpccut/CMakeFiles/mpccut.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object mpccut/CMakeFiles/mpccut.dir/mpccut.c.o" + cd /home/dewdude/musepack/musepack_src_r475/mpccut && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT mpccut/CMakeFiles/mpccut.dir/mpccut.c.o -MF CMakeFiles/mpccut.dir/mpccut.c.o.d -o CMakeFiles/mpccut.dir/mpccut.c.o -c /home/dewdude/musepack/musepack_src_r475/mpccut/mpccut.c + +mpccut/CMakeFiles/mpccut.dir/mpccut.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpccut.dir/mpccut.c.i" + cd /home/dewdude/musepack/musepack_src_r475/mpccut && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/mpccut/mpccut.c > CMakeFiles/mpccut.dir/mpccut.c.i + +mpccut/CMakeFiles/mpccut.dir/mpccut.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpccut.dir/mpccut.c.s" + cd /home/dewdude/musepack/musepack_src_r475/mpccut && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/mpccut/mpccut.c -o CMakeFiles/mpccut.dir/mpccut.c.s + +# Object files for target mpccut +mpccut_OBJECTS = \ +"CMakeFiles/mpccut.dir/mpccut.c.o" + +# External object files for target mpccut +mpccut_EXTERNAL_OBJECTS = + +mpccut/mpccut: mpccut/CMakeFiles/mpccut.dir/mpccut.c.o +mpccut/mpccut: mpccut/CMakeFiles/mpccut.dir/build.make +mpccut/mpccut: mpccut/CMakeFiles/mpccut.dir/compiler_depend.ts +mpccut/mpccut: libmpcdec/libmpcdec.so +mpccut/mpccut: libmpcenc/libmpcenc_static.a +mpccut/mpccut: mpccut/CMakeFiles/mpccut.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C executable mpccut" + cd /home/dewdude/musepack/musepack_src_r475/mpccut && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/mpccut.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +mpccut/CMakeFiles/mpccut.dir/build: mpccut/mpccut +.PHONY : mpccut/CMakeFiles/mpccut.dir/build + +mpccut/CMakeFiles/mpccut.dir/clean: + cd /home/dewdude/musepack/musepack_src_r475/mpccut && $(CMAKE_COMMAND) -P CMakeFiles/mpccut.dir/cmake_clean.cmake +.PHONY : mpccut/CMakeFiles/mpccut.dir/clean + +mpccut/CMakeFiles/mpccut.dir/depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/mpccut /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/mpccut /home/dewdude/musepack/musepack_src_r475/mpccut/CMakeFiles/mpccut.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : mpccut/CMakeFiles/mpccut.dir/depend + diff --git a/mpccut/CMakeFiles/mpccut.dir/cmake_clean.cmake b/mpccut/CMakeFiles/mpccut.dir/cmake_clean.cmake new file mode 100644 index 0000000..b78c680 --- /dev/null +++ b/mpccut/CMakeFiles/mpccut.dir/cmake_clean.cmake @@ -0,0 +1,12 @@ +file(REMOVE_RECURSE + "CMakeFiles/mpccut.dir/link.d" + "CMakeFiles/mpccut.dir/mpccut.c.o" + "CMakeFiles/mpccut.dir/mpccut.c.o.d" + "mpccut" + "mpccut.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/mpccut.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/mpccut/CMakeFiles/mpccut.dir/compiler_depend.internal b/mpccut/CMakeFiles/mpccut.dir/compiler_depend.internal new file mode 100644 index 0000000..cb56782 --- /dev/null +++ b/mpccut/CMakeFiles/mpccut.dir/compiler_depend.internal @@ -0,0 +1,103 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +mpccut/CMakeFiles/mpccut.dir/mpccut.c.o + /home/dewdude/musepack/musepack_src_r475/mpccut/mpccut.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/huffman.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/internal.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/mpc_bits_reader.h + /home/dewdude/musepack/musepack_src_r475/libmpcenc/libmpcenc.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/getopt_core.h + /usr/include/bits/getopt_ext.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/long-double.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/getopt.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpccut/mpccut + /home/dewdude/musepack/musepack_src_r475/libmpcdec/libmpcdec.so + /home/dewdude/musepack/musepack_src_r475/libmpcenc/libmpcenc_static.a + /usr/lib/Scrt1.o + /usr/lib/crti.o + /usr/lib/crtn.o + /usr/lib/libc.so + /usr/lib/libgcc_s.so + /usr/lib/libgcc_s.so.1 + /usr/lib/libm.so + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a + /usr/lib/ld-linux-x86-64.so.2 + /usr/lib/libc.so.6 + /usr/lib/libc_nonshared.a + /usr/lib/libm.so.6 + /usr/lib/libmvec.so.1 + /home/dewdude/musepack/musepack_src_r475/mpccut/CMakeFiles/mpccut.dir/mpccut.c.o + diff --git a/mpccut/CMakeFiles/mpccut.dir/compiler_depend.make b/mpccut/CMakeFiles/mpccut.dir/compiler_depend.make new file mode 100644 index 0000000..a949299 --- /dev/null +++ b/mpccut/CMakeFiles/mpccut.dir/compiler_depend.make @@ -0,0 +1,293 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +mpccut/CMakeFiles/mpccut.dir/mpccut.c.o: mpccut/mpccut.c \ + include/mpc/mpc_types.h \ + include/mpc/mpcdec.h \ + include/mpc/reader.h \ + include/mpc/streaminfo.h \ + libmpcdec/huffman.h \ + libmpcdec/internal.h \ + libmpcdec/mpc_bits_reader.h \ + libmpcenc/libmpcenc.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_ext.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/getopt.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpccut/mpccut: libmpcdec/libmpcdec.so \ + libmpcenc/libmpcenc_static.a \ + /usr/lib/Scrt1.o \ + /usr/lib/crti.o \ + /usr/lib/crtn.o \ + /usr/lib/libc.so \ + /usr/lib/libgcc_s.so \ + /usr/lib/libgcc_s.so.1 \ + /usr/lib/libm.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/ld-linux-x86-64.so.2 \ + /usr/lib/libc.so.6 \ + /usr/lib/libc_nonshared.a \ + /usr/lib/libm.so.6 \ + /usr/lib/libmvec.so.1 \ + mpccut/CMakeFiles/mpccut.dir/mpccut.c.o + + +/usr/lib/libmvec.so.1: + +/usr/lib/libc.so.6: + +/usr/lib/ld-linux-x86-64.so.2: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o: + +/usr/lib/libm.so: + +/usr/lib/libgcc_s.so.1: + +/usr/lib/libgcc_s.so: + +/usr/lib/libc.so: + +/usr/lib/crtn.o: + +/usr/lib/crti.o: + +libmpcenc/libmpcenc_static.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/lib/libm.so.6: + +/usr/include/sys/select.h: + +/usr/include/sys/cdefs.h: + +/usr/include/strings.h: + +/usr/include/stdlib.h: + +/usr/include/stdint.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/getopt.h: + +/usr/include/features.h: + +/usr/include/features-time64.h: + +/usr/include/bits/stdlib-bsearch.h: + +/usr/include/memory.h: + +libmpcdec/mpc_bits_reader.h: + +/usr/include/bits/types/sigset_t.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdint-least.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdint-intn.h: + +/usr/include/bits/select.h: + +/usr/include/bits/types/__fpos64_t.h: + +/usr/include/stdc-predef.h: + +/usr/include/bits/pthreadtypes-arch.h: + +/usr/include/bits/wchar.h: + +/usr/include/bits/long-double.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/types/struct_timeval.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/floatn.h: + +/usr/include/bits/floatn-common.h: + +/usr/include/bits/libc-header-start.h: + +libmpcenc/libmpcenc.h: + +/usr/include/bits/types/__sigset_t.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/endianness.h: + +/usr/lib/Scrt1.o: + +include/mpc/mpcdec.h: + +include/mpc/reader.h: + +mpccut/mpccut.c: + +/usr/include/bits/thread-shared-types.h: + +libmpcdec/huffman.h: + +/usr/include/bits/byteswap.h: + +/usr/include/string.h: + +/usr/include/bits/time64.h: + +libmpcdec/internal.h: + +mpccut/CMakeFiles/mpccut.dir/mpccut.c.o: + +/usr/include/bits/types/__fpos_t.h: + +/usr/include/bits/wordsize.h: + +include/mpc/mpc_types.h: + +libmpcdec/libmpcdec.so: + +/usr/include/endian.h: + +/usr/include/bits/stdint-uintn.h: + +/usr/include/bits/types/cookie_io_functions_t.h: + +/usr/include/bits/uintn-identity.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/struct_mutex.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/timesize.h: + +/usr/lib/libc_nonshared.a: + +/usr/include/bits/getopt_core.h: + +/usr/include/bits/types.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o: + +/usr/include/bits/types/FILE.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/bits/types/__FILE.h: + +/usr/include/bits/getopt_ext.h: + +/usr/include/bits/types/__locale_t.h: + +include/mpc/streaminfo.h: + +/usr/include/bits/types/__mbstate_t.h: + +/usr/include/bits/types/clock_t.h: + +/usr/include/bits/atomic_wide_counter.h: + +/usr/include/bits/types/clockid_t.h: + +/usr/include/bits/types/locale_t.h: + +/usr/include/bits/types/struct_FILE.h: + +/usr/include/bits/types/struct_timespec.h: + +/usr/include/bits/struct_rwlock.h: + +/usr/include/bits/types/time_t.h: + +/usr/include/stdio.h: + +/usr/include/bits/types/timer_t.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h: + +/usr/include/bits/waitstatus.h: diff --git a/mpccut/CMakeFiles/mpccut.dir/compiler_depend.ts b/mpccut/CMakeFiles/mpccut.dir/compiler_depend.ts new file mode 100644 index 0000000..a162db7 --- /dev/null +++ b/mpccut/CMakeFiles/mpccut.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for mpccut. diff --git a/mpccut/CMakeFiles/mpccut.dir/depend.make b/mpccut/CMakeFiles/mpccut.dir/depend.make new file mode 100644 index 0000000..953f30f --- /dev/null +++ b/mpccut/CMakeFiles/mpccut.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for mpccut. +# This may be replaced when dependencies are built. diff --git a/mpccut/CMakeFiles/mpccut.dir/flags.make b/mpccut/CMakeFiles/mpccut.dir/flags.make new file mode 100644 index 0000000..4c14540 --- /dev/null +++ b/mpccut/CMakeFiles/mpccut.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# compile C with /usr/bin/cc +C_DEFINES = -DCVD_FASTLOG -DFAST_MATH + +C_INCLUDES = -I/home/dewdude/musepack/musepack_src_r475/include -I/home/dewdude/musepack/musepack_src_r475/libmpcdec -I/home/dewdude/musepack/musepack_src_r475/libmpcenc + +C_FLAGS = -O3 -Wall -fomit-frame-pointer -pipe + diff --git a/mpccut/CMakeFiles/mpccut.dir/link.d b/mpccut/CMakeFiles/mpccut.dir/link.d new file mode 100644 index 0000000..e736f5d --- /dev/null +++ b/mpccut/CMakeFiles/mpccut.dir/link.d @@ -0,0 +1,97 @@ +mpccut: \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o \ + CMakeFiles/mpccut.dir/mpccut.c.o \ + ../libmpcdec/libmpcdec.so \ + ../libmpcenc/libmpcenc_static.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so \ + /usr/lib/libm.so.6 \ + /usr/lib/libmvec.so.1 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/libc.so.6 \ + /usr/lib/libc_nonshared.a \ + /usr/lib/ld-linux-x86-64.so.2 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o \ + /usr/lib/ld-linux-x86-64.so.2 + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o: + +CMakeFiles/mpccut.dir/mpccut.c.o: + +../libmpcdec/libmpcdec.so: + +../libmpcenc/libmpcenc_static.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so: + +/usr/lib/libm.so.6: + +/usr/lib/libmvec.so.1: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/libc.so.6: + +/usr/lib/libc_nonshared.a: + +/usr/lib/ld-linux-x86-64.so.2: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o: + +/usr/lib/ld-linux-x86-64.so.2: diff --git a/mpccut/CMakeFiles/mpccut.dir/link.txt b/mpccut/CMakeFiles/mpccut.dir/link.txt new file mode 100644 index 0000000..8277cc0 --- /dev/null +++ b/mpccut/CMakeFiles/mpccut.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -O3 -Wall -fomit-frame-pointer -pipe -Wl,--dependency-file=CMakeFiles/mpccut.dir/link.d CMakeFiles/mpccut.dir/mpccut.c.o -o mpccut -L/home/dewdude/musepack/musepack_src_r475/libmpcdec -L/home/dewdude/musepack/musepack_src_r475/libmpcenc -Wl,-rpath,/home/dewdude/musepack/musepack_src_r475/libmpcdec:/home/dewdude/musepack/musepack_src_r475/libmpcenc: ../libmpcdec/libmpcdec.so ../libmpcenc/libmpcenc_static.a -lm diff --git a/mpccut/CMakeFiles/mpccut.dir/mpccut.c.o b/mpccut/CMakeFiles/mpccut.dir/mpccut.c.o new file mode 100644 index 0000000000000000000000000000000000000000..d5bf972292b903c7b025d80e85ea1f8eea390c7e GIT binary patch literal 8280 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 QtMS2x^eZdN-wXTy7rp<4RsaA1 literal 0 HcmV?d00001 diff --git a/mpccut/CMakeFiles/mpccut.dir/mpccut.c.o.d b/mpccut/CMakeFiles/mpccut.dir/mpccut.c.o.d new file mode 100644 index 0000000..604e04c --- /dev/null +++ b/mpccut/CMakeFiles/mpccut.dir/mpccut.c.o.d @@ -0,0 +1,50 @@ +mpccut/CMakeFiles/mpccut.dir/mpccut.c.o: \ + /home/dewdude/musepack/musepack_src_r475/mpccut/mpccut.c \ + /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/features-time64.h /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdio.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/getopt.h /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_ext.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/memory.h /usr/include/string.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h \ + /home/dewdude/musepack/musepack_src_r475/mpccut/../libmpcenc/libmpcenc.h \ + /home/dewdude/musepack/musepack_src_r475/mpccut/../libmpcdec/internal.h \ + /home/dewdude/musepack/musepack_src_r475/mpccut/../libmpcdec/huffman.h \ + /home/dewdude/musepack/musepack_src_r475/mpccut/../libmpcdec/mpc_bits_reader.h diff --git a/mpccut/CMakeFiles/mpccut.dir/progress.make b/mpccut/CMakeFiles/mpccut.dir/progress.make new file mode 100644 index 0000000..8c8fb6f --- /dev/null +++ b/mpccut/CMakeFiles/mpccut.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 3 +CMAKE_PROGRESS_2 = 4 + diff --git a/mpccut/CMakeFiles/progress.marks b/mpccut/CMakeFiles/progress.marks new file mode 100644 index 0000000..d6b2404 --- /dev/null +++ b/mpccut/CMakeFiles/progress.marks @@ -0,0 +1 @@ +19 diff --git a/mpccut/CMakeLists.txt b/mpccut/CMakeLists.txt new file mode 100755 index 0000000..5507134 --- /dev/null +++ b/mpccut/CMakeLists.txt @@ -0,0 +1,27 @@ +include_directories(${libmpc_SOURCE_DIR}/include) + +include_directories(${libmpc_SOURCE_DIR}/libmpcdec) +link_directories(${libmpc_BINARY_DIR}/libmpcdec) +include_directories(${libmpc_SOURCE_DIR}/libmpcenc) +link_directories(${libmpc_BINARY_DIR}/libmpcenc) + +if(MSVC) +include_directories(${libmpc_SOURCE_DIR}/win32) +add_executable(mpccut mpccut ${libmpc_SOURCE_DIR}/win32/attgetopt) +endif() + +add_executable(mpccut mpccut.c) + +if(SHARED) + target_link_libraries(mpccut mpcdec) +else() + target_link_libraries(mpccut mpcdec_static) +endif() + +target_link_libraries(mpccut mpcenc_static) + +if(NOT MSVC) +target_link_libraries(mpccut m) +endif() + +install(TARGETS mpccut RUNTIME DESTINATION bin) diff --git a/mpccut/Makefile b/mpccut/Makefile new file mode 100644 index 0000000..0c961ef --- /dev/null +++ b/mpccut/Makefile @@ -0,0 +1,231 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# The main all target +all: cmake_check_build_system + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles /home/dewdude/musepack/musepack_src_r475/mpccut//CMakeFiles/progress.marks + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpccut/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpccut/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpccut/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpccut/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +mpccut/CMakeFiles/mpccut.dir/rule: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpccut/CMakeFiles/mpccut.dir/rule +.PHONY : mpccut/CMakeFiles/mpccut.dir/rule + +# Convenience name for target. +mpccut: mpccut/CMakeFiles/mpccut.dir/rule +.PHONY : mpccut + +# fast build rule for target. +mpccut/fast: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f mpccut/CMakeFiles/mpccut.dir/build.make mpccut/CMakeFiles/mpccut.dir/build +.PHONY : mpccut/fast + +mpccut.o: mpccut.c.o +.PHONY : mpccut.o + +# target to build an object file +mpccut.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f mpccut/CMakeFiles/mpccut.dir/build.make mpccut/CMakeFiles/mpccut.dir/mpccut.c.o +.PHONY : mpccut.c.o + +mpccut.i: mpccut.c.i +.PHONY : mpccut.i + +# target to preprocess a source file +mpccut.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f mpccut/CMakeFiles/mpccut.dir/build.make mpccut/CMakeFiles/mpccut.dir/mpccut.c.i +.PHONY : mpccut.c.i + +mpccut.s: mpccut.c.s +.PHONY : mpccut.s + +# target to generate assembly for a file +mpccut.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f mpccut/CMakeFiles/mpccut.dir/build.make mpccut/CMakeFiles/mpccut.dir/mpccut.c.s +.PHONY : mpccut.c.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... mpccut" + @echo "... mpccut.o" + @echo "... mpccut.i" + @echo "... mpccut.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/mpccut/Makefile.am b/mpccut/Makefile.am new file mode 100755 index 0000000..f23da47 --- /dev/null +++ b/mpccut/Makefile.am @@ -0,0 +1,15 @@ +EXTRA_DIST = CMakeLists.txt + +AM_CPPFLAGS = -I$(top_srcdir)/include + +if HAVE_VISIBILITY + AM_CFLAGS = -fvisibility=hidden +endif + +common_sources = ../common/crc32.c + +METASOURCES = AUTO +bin_PROGRAMS = mpccut +mpccut_SOURCES = mpccut.c $(common_sources) +mpccut_LDADD = $(top_builddir)/libmpcenc/libmpcenc.a \ + $(top_builddir)/libmpcdec/libmpcdec.la -lm diff --git a/mpccut/cmake_install.cmake b/mpccut/cmake_install.cmake new file mode 100644 index 0000000..7c5f0a6 --- /dev/null +++ b/mpccut/cmake_install.cmake @@ -0,0 +1,70 @@ +# Install script for directory: /home/dewdude/musepack/musepack_src_r475/mpccut + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) + if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpccut" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpccut") + file(RPATH_CHECK + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpccut" + RPATH "") + endif() + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE EXECUTABLE FILES "/home/dewdude/musepack/musepack_src_r475/mpccut/mpccut") + if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpccut" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpccut") + file(RPATH_CHANGE + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpccut" + OLD_RPATH "/home/dewdude/musepack/musepack_src_r475/libmpcdec:/home/dewdude/musepack/musepack_src_r475/libmpcenc:" + NEW_RPATH "") + if(CMAKE_INSTALL_DO_STRIP) + execute_process(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpccut") + endif() + endif() +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/home/dewdude/musepack/musepack_src_r475/mpccut/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/mpccut/mpccut b/mpccut/mpccut new file mode 100755 index 0000000000000000000000000000000000000000..eecf3fb9ffc24cbe68b728e6498172564522e556 GIT binary patch literal 82744 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 SPmq4)JQwqn0SN|p&Hn{ux+KT| literal 0 HcmV?d00001 diff --git a/mpccut/mpccut.c b/mpccut/mpccut.c new file mode 100755 index 0000000..404d456 --- /dev/null +++ b/mpccut/mpccut.c @@ -0,0 +1,238 @@ +/* + Copyright (c) 2007-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +#include +#include +#include + +#include +#include "../libmpcenc/libmpcenc.h" +#include "../libmpcdec/internal.h" +#include "../libmpcdec/huffman.h" +#include "../libmpcdec/mpc_bits_reader.h" + +#ifdef _MSC_VER +#define atoll _atoi64 +#endif + +#define MPCCUT_MAJOR 0 +#define MPCCUT_MINOR 9 +#define MPCCUT_BUILD 0 + +#define _cat(a,b,c) #a"."#b"."#c +#define cat(a,b,c) _cat(a,b,c) +#define MPCCUT_VERSION cat(MPCCUT_MAJOR,MPCCUT_MINOR,MPCCUT_BUILD) + +const char About [] = "mpccut - Musepack (MPC) stream cutter v" MPCCUT_VERSION " (C) 2007-2009 MDT\nBuilt " __DATE__ " " __TIME__ "\n"; + +static void copy_data(FILE * in_file, int in_file_pos, FILE * out_file, int data_size) +{ + char * buff[512]; + + fseek(in_file, in_file_pos, SEEK_SET); + + while (data_size != 0) { + int read_size = data_size < 512 ? data_size : 512; + read_size = fread(buff, 1, read_size, in_file); + data_size -= read_size; + fwrite(buff, 1, read_size, out_file); + } +} + +static void usage(const char *exename) +{ + printf("Usage: %s [-s start_sample] [-e end_sample] \n", exename); +} + +int main(int argc, char **argv) +{ + mpc_reader reader; + mpc_demux* demux; + mpc_streaminfo si; + mpc_encoder_t e; + unsigned char buffer[16]; + mpc_bits_reader r; + mpc_block b; + mpc_uint64_t size; + mpc_status err; + mpc_int64_t start_sample = 0, end_sample = 0; + mpc_uint32_t beg_silence, start_block, block_num, i; + int c; + FILE * in_file; + + printf(About); + + while ((c = getopt(argc , argv, "s:e:")) != -1) { + switch (c) { + case 's': + start_sample = atoll(optarg); + break; + case 'e': + end_sample = atoll(optarg); + break; + } + } + + if(argc - optind != 2) + { + usage(argv[0]); + return 0; + } + + err = mpc_reader_init_stdio(&reader, argv[optind]); + if(err < 0) return !MPC_STATUS_OK; + + demux = mpc_demux_init(&reader); + if(!demux) return !MPC_STATUS_OK; + mpc_demux_get_info(demux, &si); + + if (si.stream_version < 8) { + fprintf(stderr, "this file cannot be edited, please convert it first to sv8 using mpc2sv8\n"); + exit(!MPC_STATUS_OK); + } + + if (end_sample == 0) + end_sample = si.samples; + else + end_sample += si.beg_silence; + start_sample += si.beg_silence; + + if (start_sample < 0 || end_sample > si.samples || end_sample <= start_sample) { + fprintf(stderr, "specified samples bounds out of stream bounds\n"); + exit(!MPC_STATUS_OK); + } + + beg_silence = start_sample % (MPC_FRAME_LENGTH << si.block_pwr); + start_block = start_sample / (MPC_FRAME_LENGTH << si.block_pwr); + block_num = (end_sample + (MPC_FRAME_LENGTH << si.block_pwr) - 1) / + (MPC_FRAME_LENGTH << si.block_pwr) - start_block; + end_sample -= start_block * (MPC_FRAME_LENGTH << si.block_pwr); + + mpc_encoder_init(&e, end_sample, si.block_pwr, 1); + e.outputFile = fopen( argv[optind + 1], "rb" ); + if ( e.outputFile != 0 ) { + fprintf(stderr, "Error : output file \"%s\" already exists\n", argv[optind + 1]); + exit(MPC_STATUS_FAIL); + } + e.outputFile = fopen( argv[optind + 1], "w+b" ); + + e.seek_ref = 0; + writeMagic(&e); + writeStreamInfo( &e, si.max_band, si.ms > 0, end_sample, beg_silence, + si.sample_freq, si.channels); + writeBlock(&e, "SH", MPC_TRUE, 0); + writeGainInfo(&e, 0, 0, 0, 0); + writeBlock(&e, "RG", MPC_FALSE, 0); + + + in_file = fopen(argv[optind], "rb"); + i = si.header_position + 4; + fseek(in_file, i, SEEK_SET); + fread(buffer, 1, 16, in_file); + r.buff = buffer; + r.count = 8; + size = mpc_bits_get_block(&r, &b); + + while( memcmp(b.key, "AP", 2) != 0 ) { + if ((err = mpc_check_key(b.key)) != MPC_STATUS_OK) { + fprintf(stderr, "Error : invalid input stream\n"); + goto error; + } + if (memcmp(b.key, "EI", 2) == 0) + copy_data(in_file, i, e.outputFile, b.size + size); + i += b.size + size; + fseek(in_file, i, SEEK_SET); + fread(buffer, 1, 16, in_file); + r.buff = buffer; + r.count = 8; + size = mpc_bits_get_block(&r, &b); + } + + e.seek_ptr = ftell(e.outputFile); + writeBits (&e, 0, 16); + writeBits (&e, 0, 24); // jump 40 bits for seek table pointer + writeBlock(&e, "SO", MPC_FALSE, 0); // reserve space for seek offset + + + while( start_block != 0 ){ + if ((err = mpc_check_key(b.key)) != MPC_STATUS_OK) { + fprintf(stderr, "Error : invalid input stream\n"); + goto error; + } + if (memcmp(b.key, "AP", 2) == 0) + start_block--; + i += b.size + size; + fseek(in_file, i, SEEK_SET); + fread(buffer, 1, 16, in_file); + r.buff = buffer; + r.count = 8; + size = mpc_bits_get_block(&r, &b); + } + + while( block_num != 0 ){ + if ((err = mpc_check_key(b.key)) != MPC_STATUS_OK) { + fprintf(stderr, "Error : invalid input stream\n"); + goto error; + } + if (memcmp(b.key, "AP", 2) == 0) { + if ((e.block_cnt & ((1 << e.seek_pwr) - 1)) == 0) { + e.seek_table[e.seek_pos] = ftell(e.outputFile); + e.seek_pos++; + } + e.block_cnt++; + copy_data(in_file, i, e.outputFile, b.size + size); + block_num--; + } + i += b.size + size; + fseek(in_file, i, SEEK_SET); + fread(buffer, 1, 16, in_file); + r.buff = buffer; + r.count = 8; + size = mpc_bits_get_block(&r, &b); + } + + writeSeekTable(&e); + writeBlock(&e, "ST", MPC_FALSE, 0); // write seek table block + writeBlock(&e, "SE", MPC_FALSE, 0); // write end of stream block + +error: + fclose ( e.outputFile ); + fclose ( in_file ); + mpc_demux_exit(demux); + mpc_reader_exit_stdio(&reader); + mpc_encoder_exit(&e); + if (err != MPC_STATUS_OK) + remove(argv[optind + 1]); + + return err; +} diff --git a/mpcdec/CMakeFiles/CMakeDirectoryInformation.cmake b/mpcdec/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f5f0d8d --- /dev/null +++ b/mpcdec/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/dewdude/musepack/musepack_src_r475") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/dewdude/musepack/musepack_src_r475") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/mpcdec/CMakeFiles/mpcdec_cmd.dir/DependInfo.cmake b/mpcdec/CMakeFiles/mpcdec_cmd.dir/DependInfo.cmake new file mode 100644 index 0000000..e90cd8f --- /dev/null +++ b/mpcdec/CMakeFiles/mpcdec_cmd.dir/DependInfo.cmake @@ -0,0 +1,24 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/dewdude/musepack/musepack_src_r475/mpcdec/mpcdec.c" "mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o" "gcc" "mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o.d" + "" "mpcdec/mpcdec" "gcc" "mpcdec/CMakeFiles/mpcdec_cmd.dir/link.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/mpcdec/CMakeFiles/mpcdec_cmd.dir/build.make b/mpcdec/CMakeFiles/mpcdec_cmd.dir/build.make new file mode 100644 index 0000000..2cb9306 --- /dev/null +++ b/mpcdec/CMakeFiles/mpcdec_cmd.dir/build.make @@ -0,0 +1,116 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +# Include any dependencies generated for this target. +include mpcdec/CMakeFiles/mpcdec_cmd.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include mpcdec/CMakeFiles/mpcdec_cmd.dir/compiler_depend.make + +# Include the progress variables for this target. +include mpcdec/CMakeFiles/mpcdec_cmd.dir/progress.make + +# Include the compile flags for this target's objects. +include mpcdec/CMakeFiles/mpcdec_cmd.dir/flags.make + +mpcdec/CMakeFiles/mpcdec_cmd.dir/codegen: +.PHONY : mpcdec/CMakeFiles/mpcdec_cmd.dir/codegen + +mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o: mpcdec/CMakeFiles/mpcdec_cmd.dir/flags.make +mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o: mpcdec/mpcdec.c +mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o: mpcdec/CMakeFiles/mpcdec_cmd.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o" + cd /home/dewdude/musepack/musepack_src_r475/mpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o -MF CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o.d -o CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o -c /home/dewdude/musepack/musepack_src_r475/mpcdec/mpcdec.c + +mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcdec_cmd.dir/mpcdec.c.i" + cd /home/dewdude/musepack/musepack_src_r475/mpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/mpcdec/mpcdec.c > CMakeFiles/mpcdec_cmd.dir/mpcdec.c.i + +mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcdec_cmd.dir/mpcdec.c.s" + cd /home/dewdude/musepack/musepack_src_r475/mpcdec && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/mpcdec/mpcdec.c -o CMakeFiles/mpcdec_cmd.dir/mpcdec.c.s + +# Object files for target mpcdec_cmd +mpcdec_cmd_OBJECTS = \ +"CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o" + +# External object files for target mpcdec_cmd +mpcdec_cmd_EXTERNAL_OBJECTS = + +mpcdec/mpcdec: mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o +mpcdec/mpcdec: mpcdec/CMakeFiles/mpcdec_cmd.dir/build.make +mpcdec/mpcdec: mpcdec/CMakeFiles/mpcdec_cmd.dir/compiler_depend.ts +mpcdec/mpcdec: libwavformat/libwavformat_static.a +mpcdec/mpcdec: libmpcdec/libmpcdec.so +mpcdec/mpcdec: mpcdec/CMakeFiles/mpcdec_cmd.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C executable mpcdec" + cd /home/dewdude/musepack/musepack_src_r475/mpcdec && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/mpcdec_cmd.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +mpcdec/CMakeFiles/mpcdec_cmd.dir/build: mpcdec/mpcdec +.PHONY : mpcdec/CMakeFiles/mpcdec_cmd.dir/build + +mpcdec/CMakeFiles/mpcdec_cmd.dir/clean: + cd /home/dewdude/musepack/musepack_src_r475/mpcdec && $(CMAKE_COMMAND) -P CMakeFiles/mpcdec_cmd.dir/cmake_clean.cmake +.PHONY : mpcdec/CMakeFiles/mpcdec_cmd.dir/clean + +mpcdec/CMakeFiles/mpcdec_cmd.dir/depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/mpcdec /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/mpcdec /home/dewdude/musepack/musepack_src_r475/mpcdec/CMakeFiles/mpcdec_cmd.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : mpcdec/CMakeFiles/mpcdec_cmd.dir/depend + diff --git a/mpcdec/CMakeFiles/mpcdec_cmd.dir/cmake_clean.cmake b/mpcdec/CMakeFiles/mpcdec_cmd.dir/cmake_clean.cmake new file mode 100644 index 0000000..4542dce --- /dev/null +++ b/mpcdec/CMakeFiles/mpcdec_cmd.dir/cmake_clean.cmake @@ -0,0 +1,12 @@ +file(REMOVE_RECURSE + "CMakeFiles/mpcdec_cmd.dir/link.d" + "CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o" + "CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o.d" + "mpcdec" + "mpcdec.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/mpcdec_cmd.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/mpcdec/CMakeFiles/mpcdec_cmd.dir/compiler_depend.internal b/mpcdec/CMakeFiles/mpcdec_cmd.dir/compiler_depend.internal new file mode 100644 index 0000000..e322270 --- /dev/null +++ b/mpcdec/CMakeFiles/mpcdec_cmd.dir/compiler_depend.internal @@ -0,0 +1,107 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o + /home/dewdude/musepack/musepack_src_r475/mpcdec/mpcdec.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h + /home/dewdude/musepack/musepack_src_r475/libwavformat/libwaveformat.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/decoder.h + /home/dewdude/musepack/musepack_src_r475/libmpcdec/internal.h + /usr/include/alloca.h + /usr/include/assert.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/getopt_core.h + /usr/include/bits/getopt_ext.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/long-double.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_itimerspec.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_tm.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/getopt.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/include/time.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpcdec/mpcdec + /home/dewdude/musepack/musepack_src_r475/libmpcdec/libmpcdec.so + /home/dewdude/musepack/musepack_src_r475/libwavformat/libwavformat_static.a + /usr/lib/Scrt1.o + /usr/lib/crti.o + /usr/lib/crtn.o + /usr/lib/libc.so + /usr/lib/libgcc_s.so + /usr/lib/libgcc_s.so.1 + /usr/lib/libm.so + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a + /usr/lib/ld-linux-x86-64.so.2 + /usr/lib/libc.so.6 + /usr/lib/libc_nonshared.a + /usr/lib/libm.so.6 + /usr/lib/libmvec.so.1 + /home/dewdude/musepack/musepack_src_r475/mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o + diff --git a/mpcdec/CMakeFiles/mpcdec_cmd.dir/compiler_depend.make b/mpcdec/CMakeFiles/mpcdec_cmd.dir/compiler_depend.make new file mode 100644 index 0000000..6f5d4c0 --- /dev/null +++ b/mpcdec/CMakeFiles/mpcdec_cmd.dir/compiler_depend.make @@ -0,0 +1,305 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o: mpcdec/mpcdec.c \ + include/mpc/mpc_types.h \ + include/mpc/mpcdec.h \ + include/mpc/reader.h \ + include/mpc/streaminfo.h \ + libwavformat/libwaveformat.h \ + libmpcdec/decoder.h \ + libmpcdec/internal.h \ + /usr/include/alloca.h \ + /usr/include/assert.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_ext.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_itimerspec.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_tm.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/getopt.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/include/time.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpcdec/mpcdec: libmpcdec/libmpcdec.so \ + libwavformat/libwavformat_static.a \ + /usr/lib/Scrt1.o \ + /usr/lib/crti.o \ + /usr/lib/crtn.o \ + /usr/lib/libc.so \ + /usr/lib/libgcc_s.so \ + /usr/lib/libgcc_s.so.1 \ + /usr/lib/libm.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/ld-linux-x86-64.so.2 \ + /usr/lib/libc.so.6 \ + /usr/lib/libc_nonshared.a \ + /usr/lib/libm.so.6 \ + /usr/lib/libmvec.so.1 \ + mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o + + +/usr/lib/libmvec.so.1: + +/usr/lib/libc.so.6: + +/usr/lib/ld-linux-x86-64.so.2: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o: + +/usr/lib/libm.so: + +/usr/lib/libgcc_s.so.1: + +/usr/lib/libgcc_s.so: + +/usr/lib/libc.so: + +/usr/lib/crtn.o: + +/usr/lib/crti.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h: + +/usr/lib/libm.so.6: + +/usr/include/sys/select.h: + +/usr/include/sys/cdefs.h: + +/usr/include/strings.h: + +/usr/include/stdlib.h: + +/usr/include/stdint.h: + +mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o: + +/usr/include/memory.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/getopt.h: + +/usr/include/features.h: + +/usr/include/features-time64.h: + +/usr/include/bits/wordsize.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/time.h: + +/usr/include/bits/stdlib-bsearch.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdint-least.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdint-intn.h: + +/usr/include/bits/select.h: + +/usr/include/bits/types/__fpos64_t.h: + +/usr/include/bits/libc-header-start.h: + +/usr/include/bits/long-double.h: + +/usr/include/bits/types/sigset_t.h: + +libmpcdec/decoder.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/types/struct_timeval.h: + +/usr/include/bits/wchar.h: + +/usr/include/bits/types/struct_tm.h: + +/usr/include/bits/floatn-common.h: + +/usr/include/bits/endianness.h: + +/usr/lib/Scrt1.o: + +include/mpc/mpcdec.h: + +include/mpc/reader.h: + +/usr/include/bits/thread-shared-types.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/floatn.h: + +libwavformat/libwaveformat.h: + +/usr/include/bits/types/locale_t.h: + +libmpcdec/internal.h: + +/usr/include/bits/types/__fpos_t.h: + +/usr/include/stdc-predef.h: + +/usr/include/bits/pthreadtypes-arch.h: + +/usr/include/assert.h: + +include/mpc/mpc_types.h: + +libmpcdec/libmpcdec.so: + +/usr/include/endian.h: + +/usr/include/bits/stdint-uintn.h: + +/usr/include/bits/types/cookie_io_functions_t.h: + +/usr/include/bits/uintn-identity.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/types/__sigset_t.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types/struct_itimerspec.h: + +/usr/include/bits/waitflags.h: + +libwavformat/libwavformat_static.a: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/time.h: + +/usr/include/string.h: + +/usr/include/bits/time64.h: + +/usr/include/bits/struct_mutex.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/timesize.h: + +/usr/lib/libc_nonshared.a: + +/usr/include/bits/getopt_core.h: + +/usr/include/bits/types.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o: + +/usr/include/bits/types/FILE.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/bits/types/__FILE.h: + +/usr/include/bits/getopt_ext.h: + +/usr/include/bits/types/__locale_t.h: + +include/mpc/streaminfo.h: + +/usr/include/bits/types/__mbstate_t.h: + +/usr/include/bits/types/clock_t.h: + +mpcdec/mpcdec.c: + +/usr/include/bits/atomic_wide_counter.h: + +/usr/include/bits/types/clockid_t.h: + +/usr/include/bits/types/struct_FILE.h: + +/usr/include/bits/types/struct_timespec.h: + +/usr/include/bits/struct_rwlock.h: + +/usr/include/bits/types/time_t.h: + +/usr/include/stdio.h: + +/usr/include/bits/types/timer_t.h: diff --git a/mpcdec/CMakeFiles/mpcdec_cmd.dir/compiler_depend.ts b/mpcdec/CMakeFiles/mpcdec_cmd.dir/compiler_depend.ts new file mode 100644 index 0000000..7171960 --- /dev/null +++ b/mpcdec/CMakeFiles/mpcdec_cmd.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for mpcdec_cmd. diff --git a/mpcdec/CMakeFiles/mpcdec_cmd.dir/depend.make b/mpcdec/CMakeFiles/mpcdec_cmd.dir/depend.make new file mode 100644 index 0000000..6322738 --- /dev/null +++ b/mpcdec/CMakeFiles/mpcdec_cmd.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for mpcdec_cmd. +# This may be replaced when dependencies are built. diff --git a/mpcdec/CMakeFiles/mpcdec_cmd.dir/flags.make b/mpcdec/CMakeFiles/mpcdec_cmd.dir/flags.make new file mode 100644 index 0000000..80defb7 --- /dev/null +++ b/mpcdec/CMakeFiles/mpcdec_cmd.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# compile C with /usr/bin/cc +C_DEFINES = -DCVD_FASTLOG -DFAST_MATH + +C_INCLUDES = -I/home/dewdude/musepack/musepack_src_r475/include -I/home/dewdude/musepack/musepack_src_r475/libwavformat -I/home/dewdude/musepack/musepack_src_r475/libmpcdec + +C_FLAGS = -O3 -Wall -fomit-frame-pointer -pipe + diff --git a/mpcdec/CMakeFiles/mpcdec_cmd.dir/link.d b/mpcdec/CMakeFiles/mpcdec_cmd.dir/link.d new file mode 100644 index 0000000..25baec3 --- /dev/null +++ b/mpcdec/CMakeFiles/mpcdec_cmd.dir/link.d @@ -0,0 +1,97 @@ +mpcdec: \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o \ + CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so \ + /usr/lib/libm.so.6 \ + /usr/lib/libmvec.so.1 \ + ../libwavformat/libwavformat_static.a \ + ../libmpcdec/libmpcdec.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/libc.so.6 \ + /usr/lib/libc_nonshared.a \ + /usr/lib/ld-linux-x86-64.so.2 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o \ + /usr/lib/ld-linux-x86-64.so.2 + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o: + +CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so: + +/usr/lib/libm.so.6: + +/usr/lib/libmvec.so.1: + +../libwavformat/libwavformat_static.a: + +../libmpcdec/libmpcdec.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/libc.so.6: + +/usr/lib/libc_nonshared.a: + +/usr/lib/ld-linux-x86-64.so.2: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o: + +/usr/lib/ld-linux-x86-64.so.2: diff --git a/mpcdec/CMakeFiles/mpcdec_cmd.dir/link.txt b/mpcdec/CMakeFiles/mpcdec_cmd.dir/link.txt new file mode 100644 index 0000000..1b8c91d --- /dev/null +++ b/mpcdec/CMakeFiles/mpcdec_cmd.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -O3 -Wall -fomit-frame-pointer -pipe -Wl,--dependency-file=CMakeFiles/mpcdec_cmd.dir/link.d CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o -o mpcdec -L/home/dewdude/musepack/musepack_src_r475/libwavformat -L/home/dewdude/musepack/musepack_src_r475/libmpcdec -Wl,-rpath,/home/dewdude/musepack/musepack_src_r475/libwavformat:/home/dewdude/musepack/musepack_src_r475/libmpcdec: -lm ../libwavformat/libwavformat_static.a ../libmpcdec/libmpcdec.so diff --git a/mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o b/mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o new file mode 100644 index 0000000000000000000000000000000000000000..9dc47ad900c24204828c80a994674389c6c38285 GIT binary patch literal 9832 zcmb_h4{%h)8Q%jU@x;7{icqy~@dAmO^X?EtjG7BUUfO`Dpi+eNa`!H|=5lwvdq)5n z8=4FC%^9^*+8Jil+Ey#AwmJ-@La9ce1zNQXEyb2j|2U34Tq@n8CV`*xErk9*^c z?N09PzTf`7-+ue;zJ2>P-<;Ka`v{MRspMg|vY|VLGIoFumFq>Zo{eLdGQH<;xo(}c z_UP8>m(lP5R_Z<5%eQG)HDc*-d2o+)O2EDS+M0f>(>C^R%cnY0=`NN|v2;An675k| z%i@WoF@sm-yewyCjYub7YGiYXbc$ESyv#^N(=j7!*JrY6MdsDtxTPxK55;S|Y~I|v z?fT9{?D||HX7HS8WR0{9wnZ{YBbT#pBA^{Q=RQW?OUR{;vwowk;K-YLKu>w_NykWU%fF?8(?cfFB z-UBzC?TnZhefZ0nG2nY^qri%`8_*H6-LRR!gK9Bc!r`2kW2%m&ja+In$mNsC<=l4p zIxbt~U5R9pw;DXrmP%)hSdF)~eb523J(1(>Ml$1Fp3d`VB*pVN9LX5;Hvh6qc%pdxe9xX$SM(e$rtv&B~dOq}YJpoN@m)g3uPq*g#%H=Ac z_ci+FX}uSMtzHz3>(&n4YV>hQ&>q?VdU|oCM6eE)nH@T;AceJ9)wjXd4GlK;Z4tS! ztMC5AqZQr&xUfGzPLGO!1doJk_J(_oc(g~?k3z$OuO9MQ!GT%9BdA-6-UP5T9xIQb zQ*cwQ7qJdX(+m5}O1vxAi}mF@>Uji$AsW<+CK!R2G++{uIpcW`mD9r+SY8nB}cQk#`n+=GuSW3L$v1{e!Xvv?=>LH$~C?> zArvp+_@2}%3%=b@I;q_+#(B8uN$sos!bsa#@Vy4KI_UZ|2yy{NYoZ9c7z$}M+>4$q zzQ>^nrWM|VVCnWOc4NM1Gku+I81$QX)2Ot(Dwd2~+e(hHU-!Fz5mu{WZuIWFiEgW)xFu1nO z8s9pwf$}b3ZdJ^9?;f)fMoFv_Fi1PWYL{$T3coZ0>>OeR-}9ftfuH?99FWibE4UEK zP{Lz0Sdz0p{SnN5dvIp;zOD75yM_H)@9U5^S|1J{^*Oyq#B$ga-O;4o@j>xnUpLT# zdtNz!()l!YpnMZp3Qq>}C#43BTmxE^1+cdRBJq;FJNIsFflf>el<77fl5F zH#Gs{r1qfw2wF$y6k~rbSMx@HPVW;Haa~L8ZnoZyYssxz4J>VT+Sa}O z=KSIYdxrNM=D}UMbrcu7uf?@AEY6!Nf!hcnd{g8F-&1G{^_AL1qkN4JMZ3p6+c_wC z#arOuQ_$n^7KjErxalm$Mm+Tg7k)fczFL&00tMbw@7jUNVE-leuQ=ec{5q5c1KF@= zfp;gb<#S*wkim^q^_+P#Yvi^f%a;cI0e^s30~87brq#mbCO)TezPBNtNSb_ZdMOW1 zgR0O}9=vfzVET-y0r?Jos-Cg#oA>>ARRgy3@lTKMnbSJ&HY|%Yd*;j;yn6QB1vNZ4 z)gST)g-9?M42f!3-57@-Miodf{GNWqFbbGF^8S4LmR%xq&x*U4XIZ7^@-d^!9|JPt zSID}{F>kD>yr-gE;5SJ83lhHz@cW?*FJqB>qakaksC;z9?27S^jBKdjeWRKysvj;3 zR|Hm{H?v}T&*-L#$JTmAJmRgG-dGU`S5yP1p<+DPG*py_FBrL_tm4JBo(GU5HQh3- zAH|Ljl&T*&*z4i7BN;k)ZW_tPoCDf}QpPGAHTZBa1}|Pmvg29C#yao`;=XJ!-m3bG z61Q`OGIq7ZgF}!gRg0^fDx}UY%4P7iG(6d3Rd!B~Z<724!|BYPXk~1P1D_@NIS2j~ zaesjWW$aGL?{?JOEAb~B_+p8RH!7)%O8jMlVKE``zdP`>#E(1hytwzmTp6Aoka+oU zn5`1`=dple0)AWI5Kjl*C;9g|@b5~#Q)jKj>m2+aNS$s6{*2^v2mYMIoioCYV;Q^B z!QUwPA|sbyLwPKDUc@sG*lzgY+UrdF06;#M6=E%b@*((@;^TOXC9_bh5rCb7-$hKV zMvSTX__2%5Na#-~eXk2X)&-y7f@6G3=}&UOXS(2bx!{Hi-r<6;bito=!8f?zZ@A#N zSt!-tQ!aQJ>?ca`FL%MGxZpEf@URPhp9{Xk1(z>qf0X%~XHLb-4S1P`mmBdi9WOWG zB^VIbpty=lNL;6gt1t@+g`ltw3iF__4+?>h5C{pYkdO%p+mNsg3EPmcog$c1Y>rR} z*$UWHNC*ee^AdmotnG78ln}I4WS_Rxo04FaZZ2tj#df z8I#4uAxfM;%OF5 zrlTFC!ah@B;JjfU)~G(f=~xsFx?1ANbi|wzD&4L??Y2?91)H&twcKl3fNt?lYyL%7#C8TTz#yL6iFC$DvADRlfE4WcTB7Y8E%8VqiEEpk@cmK+ zKiF4_R73E|1iwh)Fnt+v6dyU55Wfa~3b)_CxYrr3ul8KXFC%>WJ!|u?CHOa?jLE6L z+J*&=yBgK5{a&+mt|R#G3BQ)$ZxI}KSxV=q#L<7;t0)}Tb4=*Z_3%@8rNogRAoxUr z2MMkd9CyM>XED*Ier_WCDTMzAg5%yv>HLY{ls_6BhlGCOXN2P8dWZ?}Y4B6{WQk)& z{lRq-6Y_6_pW@#}_;fzpPH^12DE=a%L&qyY_*5rLaC{3Zoh}!h2MM3*^b*`lbk?}& ztS5ZjJ*sv$5uEDx6MPKe?{d*UK=>CD{!xNc{WAo|y}t726Bqrl@C}a%tEv73f>Zs8 z1jla&r9WBXIPP@3>Ik3e&m=h2|1!bx{jBuwbkSc(__!7+zCm!RpC>r3b&9{jMgJkf zr#jyu_{Bu$`z|_96F$}XIl=LpOZl_jMQ1a?rxX6GM2G7Ck>HmS{$Gd=9j~_upXwYT z_&B0-!bPVHCjum#S5#*V!7qb4)!*?1A5ZW}632}C+2F#zgW&kBs`Qr-ocd!B9QXc; zpOZLdwB6N&Pj&hTj^7+gXDz{Lzn+yiW>kNh3x7AkX}|tSaO%%H1jq9a<!EYvbmBgL%p`PGZ68>zWL;YM$_;}W!{P`ZissB&9 z=&U0+^?yCVssB3(UPs#9OK?2UR{s1);@ID-2!4|As|fxn;Zy%FlSebC!wLTiiQ~9X zovDP6b;_Scg46xXT!K#`{Fua1gYI*3gpX%5N`EuqYc_ zem%jx*cnI|AF4l&;8#PP@`p4 z$(s3$VyN67&6)7sCe7eR83|P|hbljO_e7G+A5C|58YyT#l{O7O9Jkhr&jNYhmdg9# z!zW{8&E>LTqrD}bg@5(R&i)S>2V0D}9Ns~tdRf9}lP2dkJFc}jmi3eb<(KROOtI(2 zDtt#{JL-H4*J4bQ;D`9Iv4Z;*@GF&&OB1e5sQG#Aaqo|sxYwsiwZG8Opt@CgJs6d; z$Nw>6`k^A)w}bsx@O;3r?2Lc6?2tO&lIG`}ncM*trQ&};#($^Rw#4}3qvwo&D`40@ zJ})$_lXmJHP1SK#kongkM|<_%I#`XHaY$qAZ19S{Vp4e*luOxHN_*w6FoKJ^SGgta zo#Q|LGwhXK0Scw!_aeSDAgOtZ@x#8Tb`}0OVCX-7Thhd3`}pps3Avb5{tPLL3VErM z_7uaivQzjkp@8G+9KU*L@AOOguk2rk0%|(#Gtz#YBFfxpzZ39M@!Kimr%OAGAATPw zdlkP@ZKKI}IdKB=!NBS4D`Ah{n$EEYi0N`drX3w~#t(feWnalrg|U5hHh6W~{}(0* BpW^@k literal 0 HcmV?d00001 diff --git a/mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o.d b/mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o.d new file mode 100644 index 0000000..bca6865 --- /dev/null +++ b/mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o.d @@ -0,0 +1,52 @@ +mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o: \ + /home/dewdude/musepack/musepack_src_r475/mpcdec/mpcdec.c \ + /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/features-time64.h /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdio.h \ + /usr/include/assert.h /usr/include/time.h /usr/include/bits/time.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_tm.h \ + /usr/include/bits/types/struct_timespec.h /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/types/struct_itimerspec.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcdec.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/memory.h /usr/include/string.h /usr/include/strings.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/streaminfo.h \ + /home/dewdude/musepack/musepack_src_r475/mpcdec/../libmpcdec/decoder.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/reader.h \ + /home/dewdude/musepack/musepack_src_r475/mpcdec/../libmpcdec/internal.h \ + /home/dewdude/musepack/musepack_src_r475/libwavformat/libwaveformat.h \ + /usr/include/getopt.h /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_ext.h diff --git a/mpcdec/CMakeFiles/mpcdec_cmd.dir/progress.make b/mpcdec/CMakeFiles/mpcdec_cmd.dir/progress.make new file mode 100644 index 0000000..a35c33b --- /dev/null +++ b/mpcdec/CMakeFiles/mpcdec_cmd.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 15 +CMAKE_PROGRESS_2 = 16 + diff --git a/mpcdec/CMakeFiles/progress.marks b/mpcdec/CMakeFiles/progress.marks new file mode 100644 index 0000000..60d3b2f --- /dev/null +++ b/mpcdec/CMakeFiles/progress.marks @@ -0,0 +1 @@ +15 diff --git a/mpcdec/CMakeLists.txt b/mpcdec/CMakeLists.txt new file mode 100755 index 0000000..79d2ba6 --- /dev/null +++ b/mpcdec/CMakeLists.txt @@ -0,0 +1,29 @@ +include_directories(${libmpc_SOURCE_DIR}/include) + +include_directories(${libmpc_SOURCE_DIR}/libwavformat) +link_directories(${libmpc_BINARY_DIR}/libwavformat) +include_directories(${libmpc_SOURCE_DIR}/libmpcdec) +link_directories(${libmpc_BINARY_DIR}/libmpcdec) + +if(MSVC) +include_directories(${libmpc_SOURCE_DIR}/win32) +add_executable(mpcdec_cmd mpcdec.c ${libmpc_SOURCE_DIR}/win32/attgetopt) +endif() + +add_executable(mpcdec_cmd mpcdec.c) + +if(NOT MSVC) +target_link_libraries(mpcdec_cmd m) +endif() + +target_link_libraries(mpcdec_cmd wavformat_static) + +if(SHARED) + target_link_libraries(mpcdec_cmd mpcdec) +else() + target_link_libraries(mpcdec_cmd mpcdec_static) +endif() + +SET_TARGET_PROPERTIES(mpcdec_cmd PROPERTIES OUTPUT_NAME "mpcdec") + +install(TARGETS mpcdec_cmd RUNTIME DESTINATION bin) diff --git a/mpcdec/Makefile b/mpcdec/Makefile new file mode 100644 index 0000000..02a8fea --- /dev/null +++ b/mpcdec/Makefile @@ -0,0 +1,231 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/dewdude/musepack/musepack_src_r475 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/dewdude/musepack/musepack_src_r475 + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# The main all target +all: cmake_check_build_system + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles /home/dewdude/musepack/musepack_src_r475/mpcdec//CMakeFiles/progress.marks + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcdec/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/dewdude/musepack/musepack_src_r475/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcdec/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcdec/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcdec/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +mpcdec/CMakeFiles/mpcdec_cmd.dir/rule: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpcdec/CMakeFiles/mpcdec_cmd.dir/rule +.PHONY : mpcdec/CMakeFiles/mpcdec_cmd.dir/rule + +# Convenience name for target. +mpcdec_cmd: mpcdec/CMakeFiles/mpcdec_cmd.dir/rule +.PHONY : mpcdec_cmd + +# fast build rule for target. +mpcdec_cmd/fast: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f mpcdec/CMakeFiles/mpcdec_cmd.dir/build.make mpcdec/CMakeFiles/mpcdec_cmd.dir/build +.PHONY : mpcdec_cmd/fast + +mpcdec.o: mpcdec.c.o +.PHONY : mpcdec.o + +# target to build an object file +mpcdec.c.o: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f mpcdec/CMakeFiles/mpcdec_cmd.dir/build.make mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.o +.PHONY : mpcdec.c.o + +mpcdec.i: mpcdec.c.i +.PHONY : mpcdec.i + +# target to preprocess a source file +mpcdec.c.i: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f mpcdec/CMakeFiles/mpcdec_cmd.dir/build.make mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.i +.PHONY : mpcdec.c.i + +mpcdec.s: mpcdec.c.s +.PHONY : mpcdec.s + +# target to generate assembly for a file +mpcdec.c.s: + cd /home/dewdude/musepack/musepack_src_r475 && $(MAKE) $(MAKESILENT) -f mpcdec/CMakeFiles/mpcdec_cmd.dir/build.make mpcdec/CMakeFiles/mpcdec_cmd.dir/mpcdec.c.s +.PHONY : mpcdec.c.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... mpcdec_cmd" + @echo "... mpcdec.o" + @echo "... mpcdec.i" + @echo "... mpcdec.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/mpcdec/Makefile.am b/mpcdec/Makefile.am new file mode 100755 index 0000000..ca00d12 --- /dev/null +++ b/mpcdec/Makefile.am @@ -0,0 +1,14 @@ +EXTRA_DIST = CMakeLists.txt + +AM_CPPFLAGS = -I$(top_srcdir)/libwavformat -I$(top_srcdir)/include + +if HAVE_VISIBILITY + AM_CFLAGS = -fvisibility=hidden +endif + +METASOURCES = AUTO +bin_PROGRAMS = mpcdec +mpcdec_SOURCES = mpcdec.c +mpcdec_LDADD = -lm \ + $(top_builddir)/libmpcdec/libmpcdec.la \ + $(top_builddir)/libwavformat/libwavformat.a diff --git a/mpcdec/cmake_install.cmake b/mpcdec/cmake_install.cmake new file mode 100644 index 0000000..ea49d99 --- /dev/null +++ b/mpcdec/cmake_install.cmake @@ -0,0 +1,70 @@ +# Install script for directory: /home/dewdude/musepack/musepack_src_r475/mpcdec + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) + if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpcdec" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpcdec") + file(RPATH_CHECK + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpcdec" + RPATH "") + endif() + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE EXECUTABLE FILES "/home/dewdude/musepack/musepack_src_r475/mpcdec/mpcdec") + if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpcdec" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpcdec") + file(RPATH_CHANGE + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpcdec" + OLD_RPATH "/home/dewdude/musepack/musepack_src_r475/libwavformat:/home/dewdude/musepack/musepack_src_r475/libmpcdec:" + NEW_RPATH "") + if(CMAKE_INSTALL_DO_STRIP) + execute_process(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/mpcdec") + endif() + endif() +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/home/dewdude/musepack/musepack_src_r475/mpcdec/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/mpcdec/mpcdec b/mpcdec/mpcdec new file mode 100755 index 0000000000000000000000000000000000000000..7b1d1c11292398967a493d9c99ca44bcc02f0ee7 GIT binary patch literal 29944 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 xl#1v6Gxu +#include +#include +#include +#include "../libmpcdec/decoder.h" +#include "../libmpcdec/internal.h" +#include +#include + +#ifdef _MSC_VER +#include +#endif + +#ifdef WIN32 +# include +# include +# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) +#else +# define SET_BINARY_MODE(file) +#endif + +#define MPCDEC_MAJOR 1 +#define MPCDEC_MINOR 0 +#define MPCDEC_BUILD 0 + +#define _cat(a,b,c) #a"."#b"."#c +#define cat(a,b,c) _cat(a,b,c) +#define MPCDEC_VERSION cat(MPCDEC_MAJOR,MPCDEC_MINOR,MPCDEC_BUILD) + +const char About [] = "mpcdec - Musepack (MPC) decoder v" MPCDEC_VERSION " (C) 2006-2009 MDT\nBuilt " __DATE__ " " __TIME__ "\n"; + + +t_wav_uint32 mpc_wav_output_write(void* p_user_data, void const* p_buffer, t_wav_uint32 p_bytes) +{ + FILE* p_handle = (FILE*) p_user_data; + return (t_wav_uint32) fwrite(p_buffer, 1, p_bytes, p_handle); +} + +t_wav_uint32 mpc_wav_output_seek(void* p_user_data, t_wav_uint32 p_position) +{ + FILE* p_handle = (FILE*) p_user_data; + return (t_wav_uint32) !fseek(p_handle, p_position, SEEK_SET); +} + +static void print_info(mpc_streaminfo * info, char * filename) +{ + int time = (int) mpc_streaminfo_get_length(info); + int minutes = time / 60; + int seconds = time % 60; + + fprintf(stderr, "file: %s\n", filename); + fprintf(stderr, "stream version %d\n", info->stream_version); + fprintf(stderr, "encoder: %s\n", info->encoder); + fprintf(stderr, "profile: %s (q=%0.2f)\n", info->profile_name, info->profile - 5); + fprintf(stderr, "PNS: %s\n", info->pns == 0xFF ? "unknow" : info->pns ? "on" : "off"); + fprintf(stderr, "mid/side stereo: %s\n", info->ms ? "on" : "off"); + fprintf(stderr, "gapless: %s\n", info->is_true_gapless ? "on" : "off"); + fprintf(stderr, "average bitrate: %6.1f kbps\n", info->average_bitrate * 1.e-3); + fprintf(stderr, "samplerate: %d Hz\n", info->sample_freq); + fprintf(stderr, "channels: %d\n", info->channels); + fprintf(stderr, "length: %d:%.2d (%u samples)\n", minutes, seconds, (mpc_uint32_t)mpc_streaminfo_get_length_samples(info)); + fprintf(stderr, "file size: %d Bytes\n", info->total_file_length); + fprintf(stderr, "track peak: %2.2f dB\n", info->peak_title / 256.f); + fprintf(stderr, "track gain: %2.2f dB / %2.2f dB\n", info->gain_title / 256.f, info->gain_title == 0 ? 0 : 64.82f - info->gain_title / 256.f); + fprintf(stderr, "album peak: %2.2f dB\n", info->peak_album / 256.f); + fprintf(stderr, "album gain: %2.2f dB / %2.2f dB\n", info->gain_album / 256.f, info->gain_album == 0 ? 0 : 64.82f - info->gain_album / 256.f); + fprintf(stderr, "\n"); + +} + +static void +usage(const char *exename) +{ + fprintf(stderr, "Usage: %s [-i] [-h] []\n" + "-i : print file information on stdout\n" + "-c : check the file for stream errors\n" + " (doesn't fully decode, outfile will be ignored)\n" + "-h : print this help\n" + "you can use stdin and stdout as resp. and\n" + " replacing the file name by \"-\"\n", exename); +} + +int +main(int argc, char **argv) +{ + mpc_reader reader; + mpc_demux* demux; + mpc_streaminfo si; + mpc_status err; + mpc_bool_t info = MPC_FALSE, is_wav_output = MPC_FALSE, check = MPC_FALSE; + MPC_SAMPLE_FORMAT sample_buffer[MPC_DECODER_BUFFER_LENGTH]; + clock_t begin, end, sum; int total_samples; t_wav_output_file wav_output; + int c; + + fprintf(stderr, About); + + while ((c = getopt(argc , argv, "ihc")) != -1) { + switch (c) { + case 'i': + info = MPC_TRUE; + break; + case 'c': + check = MPC_TRUE; + break; + case 'h': + usage(argv[0]); + return 0; + } + } + + if(2 < argc - optind || argc - optind < 1) + { + usage(argv[0]); + return 0; + } + + if (strcmp(argv[optind], "-") == 0) { + SET_BINARY_MODE(stdin); + err = mpc_reader_init_stdio_stream(& reader, stdin); + } else + err = mpc_reader_init_stdio(&reader, argv[optind]); + if(err < 0) return !MPC_STATUS_OK; + + demux = mpc_demux_init(&reader); + if(!demux) return !MPC_STATUS_OK; + mpc_demux_get_info(demux, &si); + + if (info == MPC_TRUE) { + print_info(&si, argv[optind]); + mpc_demux_exit(demux); + mpc_reader_exit_stdio(&reader); + return 0; + } + + if (!check) + is_wav_output = argc - optind > 1; + if(is_wav_output) + { + t_wav_output_file_callback wavo_fc; + memset(&wav_output, 0, sizeof wav_output); + wavo_fc.m_seek = mpc_wav_output_seek; + wavo_fc.m_write = mpc_wav_output_write; + if (strcmp(argv[optind + 1], "-") == 0) { + SET_BINARY_MODE(stdout); + wavo_fc.m_user_data = stdout; + } else + wavo_fc.m_user_data = fopen(argv[optind + 1], "wb"); + if(!wavo_fc.m_user_data) return !MPC_STATUS_OK; + err = waveformat_output_open(&wav_output, wavo_fc, si.channels, 16, 0, si.sample_freq, (t_wav_uint32) si.samples * si.channels); + if(!err) return !MPC_STATUS_OK; + } + + sum = total_samples = 0; + while(MPC_TRUE) + { + mpc_frame_info frame; + + frame.buffer = sample_buffer; + if (check) + demux->d->samples_to_skip = MPC_FRAME_LENGTH + MPC_DECODER_SYNTH_DELAY; + begin = clock(); + err = mpc_demux_decode(demux, &frame); + end = clock(); + if(frame.bits == -1) break; + + total_samples += frame.samples; + sum += end - begin; + + if(is_wav_output) { +#ifdef MPC_FIXED_POINT + mpc_int16_t tmp_buff[MPC_DECODER_BUFFER_LENGTH]; + int i; + for( i = 0; i < MPC_DECODER_BUFFER_LENGTH; i++) { + int tmp = sample_buffer[i] >> MPC_FIXED_POINT_FRACTPART; + if (tmp > ((1 << 15) - 1)) tmp = ((1 << 15) - 1); + if (tmp < -(1 << 15)) tmp = -(1 << 15); + tmp_buff[i] = tmp; + } + if(waveformat_output_process_int16(&wav_output, tmp_buff, frame.samples * si.channels) < 0) +#else + if(waveformat_output_process_float32(&wav_output, sample_buffer, frame.samples * si.channels) < 0) +#endif + break; + } + } + + if (err != MPC_STATUS_OK) + fprintf(stderr, "An error occured while decoding\n"); + else if (check) + fprintf(stderr, "No error found\n"); + + if (!check) { + fprintf(stderr, "%u samples ", total_samples); + if (sum <= 0) sum = 1; + total_samples = (mpc_uint32_t) ((mpc_uint64_t) total_samples * CLOCKS_PER_SEC * 100 / ((mpc_uint64_t)si.sample_freq * sum)); + fprintf(stderr, "decoded in %u ms (%u.%02ux)\n", + (unsigned int) (sum * 1000 / CLOCKS_PER_SEC), + total_samples / 100, + total_samples % 100 + ); + } + + mpc_demux_exit(demux); + mpc_reader_exit_stdio(&reader); + if(is_wav_output) + { + waveformat_output_close(&wav_output); + fclose(wav_output.m_callback.m_user_data); + } + +#ifdef _MSC_VER + assert(_CrtCheckMemory()); + _CrtDumpMemoryLeaks(); +#endif + return err; +} diff --git a/mpcenc/CMakeFiles/CMakeDirectoryInformation.cmake b/mpcenc/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f5f0d8d --- /dev/null +++ b/mpcenc/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/dewdude/musepack/musepack_src_r475") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/dewdude/musepack/musepack_src_r475") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/mpcenc/CMakeFiles/mpcenc.dir/DependInfo.cmake b/mpcenc/CMakeFiles/mpcenc.dir/DependInfo.cmake new file mode 100644 index 0000000..28054a9 --- /dev/null +++ b/mpcenc/CMakeFiles/mpcenc.dir/DependInfo.cmake @@ -0,0 +1,30 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/dewdude/musepack/musepack_src_r475/common/tags.c" "mpcenc/CMakeFiles/mpcenc.dir/__/common/tags.c.o" "gcc" "mpcenc/CMakeFiles/mpcenc.dir/__/common/tags.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/mpcenc/keyboard.c" "mpcenc/CMakeFiles/mpcenc.dir/keyboard.c.o" "gcc" "mpcenc/CMakeFiles/mpcenc.dir/keyboard.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/mpcenc/mpcenc.c" "mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.o" "gcc" "mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/mpcenc/pipeopen.c" "mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o" "gcc" "mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/mpcenc/stderr.c" "mpcenc/CMakeFiles/mpcenc.dir/stderr.c.o" "gcc" "mpcenc/CMakeFiles/mpcenc.dir/stderr.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/mpcenc/wave_in.c" "mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o" "gcc" "mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o.d" + "/home/dewdude/musepack/musepack_src_r475/mpcenc/winmsg.c" "mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.o" "gcc" "mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.o.d" + "" "mpcenc/mpcenc" "gcc" "mpcenc/CMakeFiles/mpcenc.dir/link.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/mpcenc/CMakeFiles/mpcenc.dir/__/common/tags.c.o b/mpcenc/CMakeFiles/mpcenc.dir/__/common/tags.c.o new file mode 100644 index 0000000000000000000000000000000000000000..72b1eccc1409561f90439e238b106d258fe2849e GIT binary patch literal 17912 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 CMakeFiles/mpcenc.dir/keyboard.c.i + +mpcenc/CMakeFiles/mpcenc.dir/keyboard.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcenc.dir/keyboard.c.s" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/mpcenc/keyboard.c -o CMakeFiles/mpcenc.dir/keyboard.c.s + +mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.o: mpcenc/CMakeFiles/mpcenc.dir/flags.make +mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.o: mpcenc/mpcenc.c +mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.o: mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.o" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.o -MF CMakeFiles/mpcenc.dir/mpcenc.c.o.d -o CMakeFiles/mpcenc.dir/mpcenc.c.o -c /home/dewdude/musepack/musepack_src_r475/mpcenc/mpcenc.c + +mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcenc.dir/mpcenc.c.i" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/mpcenc/mpcenc.c > CMakeFiles/mpcenc.dir/mpcenc.c.i + +mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcenc.dir/mpcenc.c.s" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/mpcenc/mpcenc.c -o CMakeFiles/mpcenc.dir/mpcenc.c.s + +mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o: mpcenc/CMakeFiles/mpcenc.dir/flags.make +mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o: mpcenc/pipeopen.c +mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o: mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o -MF CMakeFiles/mpcenc.dir/pipeopen.c.o.d -o CMakeFiles/mpcenc.dir/pipeopen.c.o -c /home/dewdude/musepack/musepack_src_r475/mpcenc/pipeopen.c + +mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcenc.dir/pipeopen.c.i" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/mpcenc/pipeopen.c > CMakeFiles/mpcenc.dir/pipeopen.c.i + +mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcenc.dir/pipeopen.c.s" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/mpcenc/pipeopen.c -o CMakeFiles/mpcenc.dir/pipeopen.c.s + +mpcenc/CMakeFiles/mpcenc.dir/stderr.c.o: mpcenc/CMakeFiles/mpcenc.dir/flags.make +mpcenc/CMakeFiles/mpcenc.dir/stderr.c.o: mpcenc/stderr.c +mpcenc/CMakeFiles/mpcenc.dir/stderr.c.o: mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building C object mpcenc/CMakeFiles/mpcenc.dir/stderr.c.o" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT mpcenc/CMakeFiles/mpcenc.dir/stderr.c.o -MF CMakeFiles/mpcenc.dir/stderr.c.o.d -o CMakeFiles/mpcenc.dir/stderr.c.o -c /home/dewdude/musepack/musepack_src_r475/mpcenc/stderr.c + +mpcenc/CMakeFiles/mpcenc.dir/stderr.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcenc.dir/stderr.c.i" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/mpcenc/stderr.c > CMakeFiles/mpcenc.dir/stderr.c.i + +mpcenc/CMakeFiles/mpcenc.dir/stderr.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcenc.dir/stderr.c.s" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/mpcenc/stderr.c -o CMakeFiles/mpcenc.dir/stderr.c.s + +mpcenc/CMakeFiles/mpcenc.dir/__/common/tags.c.o: mpcenc/CMakeFiles/mpcenc.dir/flags.make +mpcenc/CMakeFiles/mpcenc.dir/__/common/tags.c.o: common/tags.c +mpcenc/CMakeFiles/mpcenc.dir/__/common/tags.c.o: mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building C object mpcenc/CMakeFiles/mpcenc.dir/__/common/tags.c.o" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT mpcenc/CMakeFiles/mpcenc.dir/__/common/tags.c.o -MF CMakeFiles/mpcenc.dir/__/common/tags.c.o.d -o CMakeFiles/mpcenc.dir/__/common/tags.c.o -c /home/dewdude/musepack/musepack_src_r475/common/tags.c + +mpcenc/CMakeFiles/mpcenc.dir/__/common/tags.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcenc.dir/__/common/tags.c.i" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/common/tags.c > CMakeFiles/mpcenc.dir/__/common/tags.c.i + +mpcenc/CMakeFiles/mpcenc.dir/__/common/tags.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcenc.dir/__/common/tags.c.s" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/common/tags.c -o CMakeFiles/mpcenc.dir/__/common/tags.c.s + +mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o: mpcenc/CMakeFiles/mpcenc.dir/flags.make +mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o: mpcenc/wave_in.c +mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o: mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building C object mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o -MF CMakeFiles/mpcenc.dir/wave_in.c.o.d -o CMakeFiles/mpcenc.dir/wave_in.c.o -c /home/dewdude/musepack/musepack_src_r475/mpcenc/wave_in.c + +mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcenc.dir/wave_in.c.i" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/mpcenc/wave_in.c > CMakeFiles/mpcenc.dir/wave_in.c.i + +mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcenc.dir/wave_in.c.s" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/mpcenc/wave_in.c -o CMakeFiles/mpcenc.dir/wave_in.c.s + +mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.o: mpcenc/CMakeFiles/mpcenc.dir/flags.make +mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.o: mpcenc/winmsg.c +mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.o: mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building C object mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.o" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.o -MF CMakeFiles/mpcenc.dir/winmsg.c.o.d -o CMakeFiles/mpcenc.dir/winmsg.c.o -c /home/dewdude/musepack/musepack_src_r475/mpcenc/winmsg.c + +mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpcenc.dir/winmsg.c.i" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/dewdude/musepack/musepack_src_r475/mpcenc/winmsg.c > CMakeFiles/mpcenc.dir/winmsg.c.i + +mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpcenc.dir/winmsg.c.s" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/dewdude/musepack/musepack_src_r475/mpcenc/winmsg.c -o CMakeFiles/mpcenc.dir/winmsg.c.s + +# Object files for target mpcenc +mpcenc_OBJECTS = \ +"CMakeFiles/mpcenc.dir/keyboard.c.o" \ +"CMakeFiles/mpcenc.dir/mpcenc.c.o" \ +"CMakeFiles/mpcenc.dir/pipeopen.c.o" \ +"CMakeFiles/mpcenc.dir/stderr.c.o" \ +"CMakeFiles/mpcenc.dir/__/common/tags.c.o" \ +"CMakeFiles/mpcenc.dir/wave_in.c.o" \ +"CMakeFiles/mpcenc.dir/winmsg.c.o" + +# External object files for target mpcenc +mpcenc_EXTERNAL_OBJECTS = + +mpcenc/mpcenc: mpcenc/CMakeFiles/mpcenc.dir/keyboard.c.o +mpcenc/mpcenc: mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.o +mpcenc/mpcenc: mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o +mpcenc/mpcenc: mpcenc/CMakeFiles/mpcenc.dir/stderr.c.o +mpcenc/mpcenc: mpcenc/CMakeFiles/mpcenc.dir/__/common/tags.c.o +mpcenc/mpcenc: mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o +mpcenc/mpcenc: mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.o +mpcenc/mpcenc: mpcenc/CMakeFiles/mpcenc.dir/build.make +mpcenc/mpcenc: mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.ts +mpcenc/mpcenc: libmpcpsy/libmpcpsy_static.a +mpcenc/mpcenc: libmpcenc/libmpcenc_static.a +mpcenc/mpcenc: mpcenc/CMakeFiles/mpcenc.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/dewdude/musepack/musepack_src_r475/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Linking C executable mpcenc" + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/mpcenc.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +mpcenc/CMakeFiles/mpcenc.dir/build: mpcenc/mpcenc +.PHONY : mpcenc/CMakeFiles/mpcenc.dir/build + +mpcenc/CMakeFiles/mpcenc.dir/clean: + cd /home/dewdude/musepack/musepack_src_r475/mpcenc && $(CMAKE_COMMAND) -P CMakeFiles/mpcenc.dir/cmake_clean.cmake +.PHONY : mpcenc/CMakeFiles/mpcenc.dir/clean + +mpcenc/CMakeFiles/mpcenc.dir/depend: + cd /home/dewdude/musepack/musepack_src_r475 && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/mpcenc /home/dewdude/musepack/musepack_src_r475 /home/dewdude/musepack/musepack_src_r475/mpcenc /home/dewdude/musepack/musepack_src_r475/mpcenc/CMakeFiles/mpcenc.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : mpcenc/CMakeFiles/mpcenc.dir/depend + diff --git a/mpcenc/CMakeFiles/mpcenc.dir/cmake_clean.cmake b/mpcenc/CMakeFiles/mpcenc.dir/cmake_clean.cmake new file mode 100644 index 0000000..7ebf9f4 --- /dev/null +++ b/mpcenc/CMakeFiles/mpcenc.dir/cmake_clean.cmake @@ -0,0 +1,24 @@ +file(REMOVE_RECURSE + "CMakeFiles/mpcenc.dir/link.d" + "CMakeFiles/mpcenc.dir/__/common/tags.c.o" + "CMakeFiles/mpcenc.dir/__/common/tags.c.o.d" + "CMakeFiles/mpcenc.dir/keyboard.c.o" + "CMakeFiles/mpcenc.dir/keyboard.c.o.d" + "CMakeFiles/mpcenc.dir/mpcenc.c.o" + "CMakeFiles/mpcenc.dir/mpcenc.c.o.d" + "CMakeFiles/mpcenc.dir/pipeopen.c.o" + "CMakeFiles/mpcenc.dir/pipeopen.c.o.d" + "CMakeFiles/mpcenc.dir/stderr.c.o" + "CMakeFiles/mpcenc.dir/stderr.c.o.d" + "CMakeFiles/mpcenc.dir/wave_in.c.o" + "CMakeFiles/mpcenc.dir/wave_in.c.o.d" + "CMakeFiles/mpcenc.dir/winmsg.c.o" + "CMakeFiles/mpcenc.dir/winmsg.c.o.d" + "mpcenc" + "mpcenc.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/mpcenc.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.internal b/mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.internal new file mode 100644 index 0000000..0c81655 --- /dev/null +++ b/mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.internal @@ -0,0 +1,676 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +mpcenc/CMakeFiles/mpcenc.dir/__/common/tags.c.o + /home/dewdude/musepack/musepack_src_r475/common/tags.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/long-double.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpcenc/CMakeFiles/mpcenc.dir/keyboard.c.o + /home/dewdude/musepack/musepack_src_r475/mpcenc/keyboard.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/datatypes.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/libmpcenc/libmpcenc.h + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h + /home/dewdude/musepack/musepack_src_r475/mpcenc/config.h + /home/dewdude/musepack/musepack_src_r475/mpcenc/mpcenc.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/confname.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/environments.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-fast.h + /usr/include/bits/fp-logb.h + /usr/include/bits/getopt_core.h + /usr/include/bits/getopt_posix.h + /usr/include/bits/iscanonical.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/locale.h + /usr/include/bits/long-double.h + /usr/include/bits/math-vector.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls-macros.h + /usr/include/bits/mathcalls-narrow.h + /usr/include/bits/mathcalls.h + /usr/include/bits/posix_opt.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/termios-baud.h + /usr/include/bits/termios-c_cc.h + /usr/include/bits/termios-c_cflag.h + /usr/include/bits/termios-c_iflag.h + /usr/include/bits/termios-c_lflag.h + /usr/include/bits/termios-c_oflag.h + /usr/include/bits/termios-cbaud.h + /usr/include/bits/termios-misc.h + /usr/include/bits/termios-struct.h + /usr/include/bits/termios-tcflow.h + /usr/include/bits/termios.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/unistd_ext.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/fpu_control.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/langinfo.h + /usr/include/locale.h + /usr/include/math.h + /usr/include/memory.h + /usr/include/nl_types.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/ttydefaults.h + /usr/include/sys/types.h + /usr/include/termios.h + /usr/include/unistd.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.o + /home/dewdude/musepack/musepack_src_r475/mpcenc/mpcenc.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/datatypes.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpcmath.h + /home/dewdude/musepack/musepack_src_r475/libmpcenc/libmpcenc.h + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h + /home/dewdude/musepack/musepack_src_r475/mpcenc/config.h + /home/dewdude/musepack/musepack_src_r475/mpcenc/mpcenc.h + /usr/include/alloca.h + /usr/include/asm-generic/errno-base.h + /usr/include/asm-generic/errno.h + /usr/include/asm/errno.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/confname.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/environments.h + /usr/include/bits/errno.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-fast.h + /usr/include/bits/fp-logb.h + /usr/include/bits/getopt_core.h + /usr/include/bits/getopt_posix.h + /usr/include/bits/iscanonical.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/locale.h + /usr/include/bits/long-double.h + /usr/include/bits/math-vector.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls-macros.h + /usr/include/bits/mathcalls-narrow.h + /usr/include/bits/mathcalls.h + /usr/include/bits/posix_opt.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/termios-baud.h + /usr/include/bits/termios-c_cc.h + /usr/include/bits/termios-c_cflag.h + /usr/include/bits/termios-c_iflag.h + /usr/include/bits/termios-c_lflag.h + /usr/include/bits/termios-c_oflag.h + /usr/include/bits/termios-cbaud.h + /usr/include/bits/termios-misc.h + /usr/include/bits/termios-struct.h + /usr/include/bits/termios-tcflow.h + /usr/include/bits/termios.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_itimerspec.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_tm.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/unistd_ext.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/errno.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/fpu_control.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/langinfo.h + /usr/include/linux/errno.h + /usr/include/locale.h + /usr/include/math.h + /usr/include/memory.h + /usr/include/nl_types.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/ttydefaults.h + /usr/include/sys/types.h + /usr/include/termios.h + /usr/include/time.h + /usr/include/unistd.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o + /home/dewdude/musepack/musepack_src_r475/mpcenc/pipeopen.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/datatypes.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/libmpcenc/libmpcenc.h + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h + /home/dewdude/musepack/musepack_src_r475/mpcenc/config.h + /home/dewdude/musepack/musepack_src_r475/mpcenc/mpcenc.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/confname.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/environments.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-fast.h + /usr/include/bits/fp-logb.h + /usr/include/bits/getopt_core.h + /usr/include/bits/getopt_posix.h + /usr/include/bits/iscanonical.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/locale.h + /usr/include/bits/long-double.h + /usr/include/bits/math-vector.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls-macros.h + /usr/include/bits/mathcalls-narrow.h + /usr/include/bits/mathcalls.h + /usr/include/bits/posix_opt.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/unistd_ext.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/ctype.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/fpu_control.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/langinfo.h + /usr/include/locale.h + /usr/include/math.h + /usr/include/memory.h + /usr/include/nl_types.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/include/unistd.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpcenc/CMakeFiles/mpcenc.dir/stderr.c.o + /home/dewdude/musepack/musepack_src_r475/mpcenc/stderr.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/long-double.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/memory.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o + /home/dewdude/musepack/musepack_src_r475/mpcenc/wave_in.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/datatypes.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/libmpcenc/libmpcenc.h + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h + /home/dewdude/musepack/musepack_src_r475/mpcenc/config.h + /home/dewdude/musepack/musepack_src_r475/mpcenc/mpcenc.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/confname.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/environments.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-fast.h + /usr/include/bits/fp-logb.h + /usr/include/bits/getopt_core.h + /usr/include/bits/getopt_posix.h + /usr/include/bits/iscanonical.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/locale.h + /usr/include/bits/long-double.h + /usr/include/bits/math-vector.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls-macros.h + /usr/include/bits/mathcalls-narrow.h + /usr/include/bits/mathcalls.h + /usr/include/bits/posix_opt.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/unistd_ext.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/fpu_control.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/langinfo.h + /usr/include/locale.h + /usr/include/math.h + /usr/include/memory.h + /usr/include/nl_types.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/include/unistd.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.o + /home/dewdude/musepack/musepack_src_r475/mpcenc/winmsg.c + /home/dewdude/musepack/musepack_src_r475/include/mpc/datatypes.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h + /home/dewdude/musepack/musepack_src_r475/libmpcenc/libmpcenc.h + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h + /home/dewdude/musepack/musepack_src_r475/mpcenc/config.h + /home/dewdude/musepack/musepack_src_r475/mpcenc/mpcenc.h + /usr/include/alloca.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/byteswap.h + /usr/include/bits/confname.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/environments.h + /usr/include/bits/floatn-common.h + /usr/include/bits/floatn.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-fast.h + /usr/include/bits/fp-logb.h + /usr/include/bits/getopt_core.h + /usr/include/bits/getopt_posix.h + /usr/include/bits/iscanonical.h + /usr/include/bits/libc-header-start.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/locale.h + /usr/include/bits/long-double.h + /usr/include/bits/math-vector.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls-macros.h + /usr/include/bits/mathcalls-narrow.h + /usr/include/bits/mathcalls.h + /usr/include/bits/posix_opt.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/select.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-least.h + /usr/include/bits/stdint-uintn.h + /usr/include/bits/stdio.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/time64.h + /usr/include/bits/timesize.h + /usr/include/bits/types.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__locale_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/cookie_io_functions_t.h + /usr/include/bits/types/locale_t.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/bits/typesizes.h + /usr/include/bits/uintn-identity.h + /usr/include/bits/unistd_ext.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/bits/wchar.h + /usr/include/bits/wordsize.h + /usr/include/endian.h + /usr/include/features-time64.h + /usr/include/features.h + /usr/include/fpu_control.h + /usr/include/gnu/stubs-64.h + /usr/include/gnu/stubs.h + /usr/include/langinfo.h + /usr/include/locale.h + /usr/include/math.h + /usr/include/memory.h + /usr/include/nl_types.h + /usr/include/stdc-predef.h + /usr/include/stdint.h + /usr/include/stdio.h + /usr/include/stdlib.h + /usr/include/string.h + /usr/include/strings.h + /usr/include/sys/cdefs.h + /usr/include/sys/select.h + /usr/include/sys/types.h + /usr/include/unistd.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + diff --git a/mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.make b/mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.make new file mode 100644 index 0000000..ad8e191 --- /dev/null +++ b/mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.make @@ -0,0 +1,925 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +mpcenc/CMakeFiles/mpcenc.dir/__/common/tags.c.o: common/tags.c \ + include/mpc/mpc_types.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpcenc/CMakeFiles/mpcenc.dir/keyboard.c.o: mpcenc/keyboard.c \ + include/mpc/datatypes.h \ + include/mpc/minimax.h \ + include/mpc/mpc_types.h \ + libmpcenc/libmpcenc.h \ + libmpcpsy/libmpcpsy.h \ + mpcenc/config.h \ + mpcenc/mpcenc.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/confname.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/environments.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_posix.h \ + /usr/include/bits/iscanonical.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/locale.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/mathcalls.h \ + /usr/include/bits/posix_opt.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/termios-baud.h \ + /usr/include/bits/termios-c_cc.h \ + /usr/include/bits/termios-c_cflag.h \ + /usr/include/bits/termios-c_iflag.h \ + /usr/include/bits/termios-c_lflag.h \ + /usr/include/bits/termios-c_oflag.h \ + /usr/include/bits/termios-cbaud.h \ + /usr/include/bits/termios-misc.h \ + /usr/include/bits/termios-struct.h \ + /usr/include/bits/termios-tcflow.h \ + /usr/include/bits/termios.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/unistd_ext.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/fpu_control.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/langinfo.h \ + /usr/include/locale.h \ + /usr/include/math.h \ + /usr/include/memory.h \ + /usr/include/nl_types.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/ttydefaults.h \ + /usr/include/sys/types.h \ + /usr/include/termios.h \ + /usr/include/unistd.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.o: mpcenc/mpcenc.c \ + include/mpc/datatypes.h \ + include/mpc/minimax.h \ + include/mpc/mpc_types.h \ + include/mpc/mpcmath.h \ + libmpcenc/libmpcenc.h \ + libmpcpsy/libmpcpsy.h \ + mpcenc/config.h \ + mpcenc/mpcenc.h \ + /usr/include/alloca.h \ + /usr/include/asm-generic/errno-base.h \ + /usr/include/asm-generic/errno.h \ + /usr/include/asm/errno.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/confname.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/environments.h \ + /usr/include/bits/errno.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_posix.h \ + /usr/include/bits/iscanonical.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/locale.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/mathcalls.h \ + /usr/include/bits/posix_opt.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/termios-baud.h \ + /usr/include/bits/termios-c_cc.h \ + /usr/include/bits/termios-c_cflag.h \ + /usr/include/bits/termios-c_iflag.h \ + /usr/include/bits/termios-c_lflag.h \ + /usr/include/bits/termios-c_oflag.h \ + /usr/include/bits/termios-cbaud.h \ + /usr/include/bits/termios-misc.h \ + /usr/include/bits/termios-struct.h \ + /usr/include/bits/termios-tcflow.h \ + /usr/include/bits/termios.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_itimerspec.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_tm.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/unistd_ext.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/errno.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/fpu_control.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/langinfo.h \ + /usr/include/linux/errno.h \ + /usr/include/locale.h \ + /usr/include/math.h \ + /usr/include/memory.h \ + /usr/include/nl_types.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/ttydefaults.h \ + /usr/include/sys/types.h \ + /usr/include/termios.h \ + /usr/include/time.h \ + /usr/include/unistd.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o: mpcenc/pipeopen.c \ + include/mpc/datatypes.h \ + include/mpc/minimax.h \ + include/mpc/mpc_types.h \ + libmpcenc/libmpcenc.h \ + libmpcpsy/libmpcpsy.h \ + mpcenc/config.h \ + mpcenc/mpcenc.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/confname.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/environments.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_posix.h \ + /usr/include/bits/iscanonical.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/locale.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/mathcalls.h \ + /usr/include/bits/posix_opt.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/unistd_ext.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/ctype.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/fpu_control.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/langinfo.h \ + /usr/include/locale.h \ + /usr/include/math.h \ + /usr/include/memory.h \ + /usr/include/nl_types.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/include/unistd.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpcenc/CMakeFiles/mpcenc.dir/stderr.c.o: mpcenc/stderr.c \ + include/mpc/mpc_types.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/memory.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o: mpcenc/wave_in.c \ + include/mpc/datatypes.h \ + include/mpc/minimax.h \ + include/mpc/mpc_types.h \ + libmpcenc/libmpcenc.h \ + libmpcpsy/libmpcpsy.h \ + mpcenc/config.h \ + mpcenc/mpcenc.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/confname.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/environments.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_posix.h \ + /usr/include/bits/iscanonical.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/locale.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/mathcalls.h \ + /usr/include/bits/posix_opt.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/unistd_ext.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/fpu_control.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/langinfo.h \ + /usr/include/locale.h \ + /usr/include/math.h \ + /usr/include/memory.h \ + /usr/include/nl_types.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/include/unistd.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + +mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.o: mpcenc/winmsg.c \ + include/mpc/datatypes.h \ + include/mpc/minimax.h \ + include/mpc/mpc_types.h \ + libmpcenc/libmpcenc.h \ + libmpcpsy/libmpcpsy.h \ + mpcenc/config.h \ + mpcenc/mpcenc.h \ + /usr/include/alloca.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/confname.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/environments.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_posix.h \ + /usr/include/bits/iscanonical.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/locale.h \ + /usr/include/bits/long-double.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/mathcalls.h \ + /usr/include/bits/posix_opt.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/select.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-least.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdio.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/timesize.h \ + /usr/include/bits/types.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/bits/unistd_ext.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/wordsize.h \ + /usr/include/endian.h \ + /usr/include/features-time64.h \ + /usr/include/features.h \ + /usr/include/fpu_control.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/gnu/stubs.h \ + /usr/include/langinfo.h \ + /usr/include/locale.h \ + /usr/include/math.h \ + /usr/include/memory.h \ + /usr/include/nl_types.h \ + /usr/include/stdc-predef.h \ + /usr/include/stdint.h \ + /usr/include/stdio.h \ + /usr/include/stdlib.h \ + /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/sys/cdefs.h \ + /usr/include/sys/select.h \ + /usr/include/sys/types.h \ + /usr/include/unistd.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h + + +/usr/include/stdio.h: + +/usr/include/bits/types/timer_t.h: + +/usr/include/bits/mathcalls-narrow.h: + +/usr/include/stdint.h: + +/usr/include/bits/termios-c_iflag.h: + +/usr/include/bits/iscanonical.h: + +/usr/include/math.h: + +/usr/include/endian.h: + +/usr/include/bits/types/cookie_io_functions_t.h: + +/usr/include/bits/stdint-uintn.h: + +include/mpc/minimax.h: + +/usr/include/bits/types/time_t.h: + +/usr/include/bits/termios-c_cc.h: + +mpcenc/pipeopen.c: + +/usr/include/bits/types/struct_timeval.h: + +/usr/include/bits/types/struct_timespec.h: + +/usr/include/bits/types/struct_FILE.h: + +/usr/include/bits/types/locale_t.h: + +/usr/include/bits/types/clockid_t.h: + +/usr/include/errno.h: + +/usr/include/bits/types/__locale_t.h: + +/usr/include/bits/wordsize.h: + +/usr/include/bits/uintn-identity.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/math-vector.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/floatn.h: + +/usr/include/gnu/stubs.h: + +/usr/include/bits/pthreadtypes-arch.h: + +/usr/include/stdc-predef.h: + +/usr/include/bits/types/__sigset_t.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/bits/timesize.h: + +/usr/include/asm/errno.h: + +/usr/include/memory.h: + +include/mpc/mpc_types.h: + +mpcenc/winmsg.c: + +/usr/include/bits/errno.h: + +/usr/include/bits/libc-header-start.h: + +/usr/include/bits/long-double.h: + +/usr/include/bits/floatn-common.h: + +/usr/include/bits/termios-struct.h: + +/usr/include/bits/termios-c_lflag.h: + +/usr/include/features-time64.h: + +/usr/include/bits/types/__fpos64_t.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/endian.h: + +include/mpc/mpcmath.h: + +/usr/include/bits/struct_mutex.h: + +/usr/include/bits/stdint-intn.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdint-least.h: + +/usr/include/bits/termios.h: + +/usr/include/bits/endianness.h: + +/usr/include/features.h: + +/usr/include/fpu_control.h: + +mpcenc/stderr.c: + +/usr/include/bits/stdio.h: + +/usr/include/bits/wchar.h: + +/usr/include/bits/types/struct_tm.h: + +/usr/include/bits/thread-shared-types.h: + +include/mpc/datatypes.h: + +/usr/include/bits/types/sigset_t.h: + +/usr/include/bits/termios-misc.h: + +/usr/include/bits/types/__FILE.h: + +common/tags.c: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h: + +/usr/include/bits/getopt_posix.h: + +/usr/include/bits/stdlib-bsearch.h: + +/usr/include/time.h: + +/usr/include/bits/types.h: + +/usr/include/bits/getopt_core.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/bits/time64.h: + +/usr/include/bits/mathcalls-helper-functions.h: + +/usr/include/string.h: + +/usr/include/stdlib.h: + +/usr/include/bits/termios-baud.h: + +/usr/include/strings.h: + +/usr/include/sys/cdefs.h: + +/usr/include/sys/select.h: + +/usr/include/bits/environments.h: + +/usr/include/sys/types.h: + +/usr/include/bits/struct_rwlock.h: + +/usr/include/bits/types/struct_itimerspec.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h: + +/usr/include/bits/unistd_ext.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h: + +/usr/include/bits/select.h: + +mpcenc/keyboard.c: + +libmpcpsy/libmpcpsy.h: + +/usr/include/asm-generic/errno-base.h: + +mpcenc/config.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/types/__mbstate_t.h: + +/usr/include/bits/time.h: + +mpcenc/mpcenc.h: + +/usr/include/bits/waitflags.h: + +/usr/include/ctype.h: + +libmpcenc/libmpcenc.h: + +/usr/include/bits/confname.h: + +/usr/include/bits/types/FILE.h: + +/usr/include/bits/flt-eval-method.h: + +/usr/include/bits/termios-tcflow.h: + +/usr/include/bits/libm-simd-decl-stubs.h: + +/usr/include/bits/locale.h: + +/usr/include/bits/mathcalls-macros.h: + +/usr/include/termios.h: + +/usr/include/bits/types/clock_t.h: + +/usr/include/bits/types/__fpos_t.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/atomic_wide_counter.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/termios-c_cflag.h: + +/usr/include/bits/termios-c_oflag.h: + +/usr/include/bits/fp-fast.h: + +/usr/include/bits/termios-cbaud.h: + +/usr/include/langinfo.h: + +/usr/include/linux/errno.h: + +/usr/include/locale.h: + +/usr/include/nl_types.h: + +/usr/include/sys/ttydefaults.h: + +/usr/include/unistd.h: + +mpcenc/mpcenc.c: + +/usr/include/bits/fp-logb.h: + +/usr/include/asm-generic/errno.h: + +mpcenc/wave_in.c: diff --git a/mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.ts b/mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.ts new file mode 100644 index 0000000..32ba0a4 --- /dev/null +++ b/mpcenc/CMakeFiles/mpcenc.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for mpcenc. diff --git a/mpcenc/CMakeFiles/mpcenc.dir/depend.make b/mpcenc/CMakeFiles/mpcenc.dir/depend.make new file mode 100644 index 0000000..bdb1004 --- /dev/null +++ b/mpcenc/CMakeFiles/mpcenc.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for mpcenc. +# This may be replaced when dependencies are built. diff --git a/mpcenc/CMakeFiles/mpcenc.dir/flags.make b/mpcenc/CMakeFiles/mpcenc.dir/flags.make new file mode 100644 index 0000000..10b194b --- /dev/null +++ b/mpcenc/CMakeFiles/mpcenc.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# compile C with /usr/bin/cc +C_DEFINES = -DCVD_FASTLOG -DFAST_MATH + +C_INCLUDES = -I/home/dewdude/musepack/musepack_src_r475/include -I/home/dewdude/musepack/musepack_src_r475/libmpcpsy -I/home/dewdude/musepack/musepack_src_r475/libmpcenc + +C_FLAGS = -O3 -Wall -fomit-frame-pointer -pipe + diff --git a/mpcenc/CMakeFiles/mpcenc.dir/keyboard.c.o b/mpcenc/CMakeFiles/mpcenc.dir/keyboard.c.o new file mode 100644 index 0000000000000000000000000000000000000000..5def26c1457f289ed5ffc09caeb0dcc3cba13ef5 GIT binary patch literal 2568 zcmb_dQEOa96rQ_@ZA`YiTd7j1()(~N35}QBU?7$%8?xz+w$z}N7FyZf-MyO)n`Fb? z2{cl$<@Uj43HHH!?uVV)geY4(BF9a&6eYm7Uc{ov!rS*Gl>MsU6r(?^?H);X;XB?r=kO{&en=AB*vF&$ix*?p+D(3a z=QhQEou#gp{k7};NLv|JTe;!f!rEQFb=5hH#JP9c5BT@Q75TA?$NbB0`&^=@J#n0O z$Q(Vec=XhIxts3s&gXKKT>@Et{XTNuy9p zw=t<`{PO0r9Js^lmM7U$BjOTgN(mYJPO%0_c zCzfJX7Z?r+VyXG_@su4>+WPo?W?jiyN7DO8Zj!T2_$$ix4fI?l7o|>RE~oB{W^!|x zk-0H;nBY8YB%h)yX6{%iF$$wY(@VfezCb5!4YDnam81v2y#;)S*>Al;9z*@z{M|Z4 z5lKlCU>W#H<$%4tV5}qeNEmqMl#i+0J@DB*@VEBB&k~NjUD6PFZlo_#8hx58SY83xr-D-dFNZK=i1`^(~Vu*pPaDGp`VKA*X|2owb6Mpd$Jhk}+9p=oGafYJcMGkh}_z1SgMAl*Vyh zkfcA(1)_1(2l8I5`Z($X@nhA;$JM-{H1h7Jrt@Ak@DT%#6t44X|IZA6bDeDi$6L|< zBdQL_J7(Yo12_F|8Mx{H(7;W9o7RMYCz_Um8fd($=9d$=z9-CWZLSKxOj?AouIo`4 ztoW`7t_bE~=+-fnm(p+5))(Bf`iom6B$LsQvsQJ>`hPxg%*Mm@OGFPq;)JwI{ zUkwz4|E6pT$B`JnIk{k7_KfYQ^HS4)yptk_~GnoNh20RJ2CfYjy0zexQ^HFL7R1ctxu?UZP)tDzvTZe z1>pWC-4_**&RUGPvSRJqHHz>CZQ3aV* s2Zc9?e`7KpZ!lRq#LuexqrW%6Ao|?n8Dj@&Fev_l;=iIDl}^V01vtuY?EnA( literal 0 HcmV?d00001 diff --git a/mpcenc/CMakeFiles/mpcenc.dir/keyboard.c.o.d b/mpcenc/CMakeFiles/mpcenc.dir/keyboard.c.o.d new file mode 100644 index 0000000..3a9a892 --- /dev/null +++ b/mpcenc/CMakeFiles/mpcenc.dir/keyboard.c.o.d @@ -0,0 +1,66 @@ +mpcenc/CMakeFiles/mpcenc.dir/keyboard.c.o: \ + /home/dewdude/musepack/musepack_src_r475/mpcenc/keyboard.c \ + /usr/include/stdc-predef.h \ + /home/dewdude/musepack/musepack_src_r475/mpcenc/mpcenc.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcenc/libmpcenc.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/stdlib.h /usr/include/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/time64.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/memory.h /usr/include/string.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/datatypes.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h \ + /home/dewdude/musepack/musepack_src_r475/mpcenc/config.h \ + /usr/include/math.h /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/iscanonical.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt_posix.h \ + /usr/include/bits/getopt_core.h /usr/include/bits/unistd_ext.h \ + /usr/include/locale.h /usr/include/bits/locale.h /usr/include/langinfo.h \ + /usr/include/nl_types.h /usr/include/fpu_control.h \ + /usr/include/termios.h /usr/include/bits/termios.h \ + /usr/include/bits/termios-struct.h /usr/include/bits/termios-c_cc.h \ + /usr/include/bits/termios-c_iflag.h /usr/include/bits/termios-c_oflag.h \ + /usr/include/bits/termios-c_cflag.h /usr/include/bits/termios-cbaud.h \ + /usr/include/bits/termios-c_lflag.h /usr/include/bits/termios-tcflow.h \ + /usr/include/bits/termios-misc.h /usr/include/bits/termios-baud.h \ + /usr/include/sys/ttydefaults.h diff --git a/mpcenc/CMakeFiles/mpcenc.dir/link.d b/mpcenc/CMakeFiles/mpcenc.dir/link.d new file mode 100644 index 0000000..a660983 --- /dev/null +++ b/mpcenc/CMakeFiles/mpcenc.dir/link.d @@ -0,0 +1,115 @@ +mpcenc: \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o \ + CMakeFiles/mpcenc.dir/keyboard.c.o \ + CMakeFiles/mpcenc.dir/mpcenc.c.o \ + CMakeFiles/mpcenc.dir/pipeopen.c.o \ + CMakeFiles/mpcenc.dir/stderr.c.o \ + CMakeFiles/mpcenc.dir/__/common/tags.c.o \ + CMakeFiles/mpcenc.dir/wave_in.c.o \ + CMakeFiles/mpcenc.dir/winmsg.c.o \ + ../libmpcpsy/libmpcpsy_static.a \ + ../libmpcenc/libmpcenc_static.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so \ + /usr/lib/libm.so.6 \ + /usr/lib/libmvec.so.1 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so \ + /usr/lib/libc.so.6 \ + /usr/lib/libc_nonshared.a \ + /usr/lib/ld-linux-x86-64.so.2 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o \ + /usr/lib/ld-linux-x86-64.so.2 + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o: + +CMakeFiles/mpcenc.dir/keyboard.c.o: + +CMakeFiles/mpcenc.dir/mpcenc.c.o: + +CMakeFiles/mpcenc.dir/pipeopen.c.o: + +CMakeFiles/mpcenc.dir/stderr.c.o: + +CMakeFiles/mpcenc.dir/__/common/tags.c.o: + +CMakeFiles/mpcenc.dir/wave_in.c.o: + +CMakeFiles/mpcenc.dir/winmsg.c.o: + +../libmpcpsy/libmpcpsy_static.a: + +../libmpcenc/libmpcenc_static.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libm.so: + +/usr/lib/libm.so.6: + +/usr/lib/libmvec.so.1: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libc.so: + +/usr/lib/libc.so.6: + +/usr/lib/libc_nonshared.a: + +/usr/lib/ld-linux-x86-64.so.2: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/libgcc_s.so.1: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o: + +/usr/lib/ld-linux-x86-64.so.2: diff --git a/mpcenc/CMakeFiles/mpcenc.dir/link.txt b/mpcenc/CMakeFiles/mpcenc.dir/link.txt new file mode 100644 index 0000000..9e86310 --- /dev/null +++ b/mpcenc/CMakeFiles/mpcenc.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -O3 -Wall -fomit-frame-pointer -pipe -Wl,--dependency-file=CMakeFiles/mpcenc.dir/link.d CMakeFiles/mpcenc.dir/keyboard.c.o CMakeFiles/mpcenc.dir/mpcenc.c.o CMakeFiles/mpcenc.dir/pipeopen.c.o CMakeFiles/mpcenc.dir/stderr.c.o CMakeFiles/mpcenc.dir/__/common/tags.c.o CMakeFiles/mpcenc.dir/wave_in.c.o CMakeFiles/mpcenc.dir/winmsg.c.o -o mpcenc -L/home/dewdude/musepack/musepack_src_r475/libmpcpsy -L/home/dewdude/musepack/musepack_src_r475/libmpcenc -Wl,-rpath,/home/dewdude/musepack/musepack_src_r475/libmpcpsy:/home/dewdude/musepack/musepack_src_r475/libmpcenc: ../libmpcpsy/libmpcpsy_static.a ../libmpcenc/libmpcenc_static.a -lm diff --git a/mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.o b/mpcenc/CMakeFiles/mpcenc.dir/mpcenc.c.o new file mode 100644 index 0000000000000000000000000000000000000000..c1a50a3efdac6472da5c455cfe75925772dd0f87 GIT binary patch literal 83120 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 QQ*Xb>)vxavU<Vbqg(;hm$Y{E*-6~z%w6Dk@ zO36Ch3lvDigbylyGJMd4L|OPi$doaHf6>H*xCG2pvSkK?3C1{CJ?Hh_?(Suc22b+d zz2|q&xqr?*_r7jDg7<5@`)h4lnU6Od~rI;;^g9S3W)o!?b2S>+8~Rl@c zWzNfOOwePF$<+a#-^r=9hfB1P!m2&Z>DDUf;!|nhNq4#fI$R1~=csb|irX0bqi|bs zVk|jT`^MMFDUW`0@=K*62^|x3g`=|^>z6md3r+%yz*Rf~UDOx>Z?H@s zLp*+wk1(qAZ^T}W$;nSxc;RT9L$FggvD9qma|=(IbDJD?j!tBzGnrTisjQAyk{AgD zLw@_J>i8;qIHKDFkwmytEg>yhE5!*DQk#g!YCD4AO=cw&@p(g8H4@cpd!o@zDj`i< zw{Ei6G;MENZFjC$>r|(`&QZ7C>2%f+QV4z6;h6^ySP&bLhLG{QRI=!cp$$bk_!5y0 zlu64L6cwKWV+XLO%oajQ(YanOJ8skD@}mWsZ0{>$_ieAvOwS*?=&m8OS5ISsm>$CvoUFByuiXc7`Iz^7vm)s9s<40!cdLp z;k|iyG7o<<4?mHIpU%VI$-_Saz6c`i!dw9{a|X&mc;;Hya320e9{yb(PNKo6KN9ta zRUg>_MGL6Ay8Yq$VAvb$Z9EW+>#8pjj_c7_B&s^{*^sDL?+&4{gQ)JU=Bo~CPJFG$ z*V81f$9&OV62Rd|z!!?d{m4R~VUt%UQL`x?jRnJcfOtG{-Rs-u@pbR>1iZmeZm!Vc z(|e{plQI4NQ2!b5PN;Y@`D1!7_+ZEWZciZQ?eX)O|G&}>?wFD@U%+gCu53Zx zV{v3EvGWQmmqCdpE~fJ$iH8})!SVvnB#y(skGLl&E8#)T%n+G!%Q7zKXe-KEP_WO3 z^>>0V_6fgWvxJXdJ&R^-5%GDrSe>T@wxJZWUxXD|HTSmXYS{{f0{e1U_!{QV|K)fy zAD5ReGJoFA%O>W}bzX8mu6v<^_k?x+l=)ld#rKc<<9`PBY4tzA{BLkWR$Bda;B)2A zc}y4(j1LN`czAKu|}`Txo0 L-zWHD)$0EbzxS6Y literal 0 HcmV?d00001 diff --git a/mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o.d b/mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o.d new file mode 100644 index 0000000..25704fd --- /dev/null +++ b/mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o.d @@ -0,0 +1,60 @@ +mpcenc/CMakeFiles/mpcenc.dir/pipeopen.c.o: \ + /home/dewdude/musepack/musepack_src_r475/mpcenc/pipeopen.c \ + /usr/include/stdc-predef.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/stdlib.h /usr/include/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/time64.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/memory.h /usr/include/string.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ + /usr/include/ctype.h \ + /home/dewdude/musepack/musepack_src_r475/mpcenc/mpcenc.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcenc/libmpcenc.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/datatypes.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h \ + /home/dewdude/musepack/musepack_src_r475/mpcenc/config.h \ + /usr/include/math.h /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/iscanonical.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt_posix.h \ + /usr/include/bits/getopt_core.h /usr/include/bits/unistd_ext.h \ + /usr/include/locale.h /usr/include/bits/locale.h /usr/include/langinfo.h \ + /usr/include/nl_types.h /usr/include/fpu_control.h diff --git a/mpcenc/CMakeFiles/mpcenc.dir/progress.make b/mpcenc/CMakeFiles/mpcenc.dir/progress.make new file mode 100644 index 0000000..7d5f5a8 --- /dev/null +++ b/mpcenc/CMakeFiles/mpcenc.dir/progress.make @@ -0,0 +1,9 @@ +CMAKE_PROGRESS_1 = 17 +CMAKE_PROGRESS_2 = 18 +CMAKE_PROGRESS_3 = 19 +CMAKE_PROGRESS_4 = 20 +CMAKE_PROGRESS_5 = 21 +CMAKE_PROGRESS_6 = 22 +CMAKE_PROGRESS_7 = 23 +CMAKE_PROGRESS_8 = 24 + diff --git a/mpcenc/CMakeFiles/mpcenc.dir/stderr.c.o b/mpcenc/CMakeFiles/mpcenc.dir/stderr.c.o new file mode 100644 index 0000000000000000000000000000000000000000..7e4e68272ae0e7f6d947ccf91a5173431f6de012 GIT binary patch literal 2144 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 literal 0 HcmV?d00001 diff --git a/mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o.d b/mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o.d new file mode 100644 index 0000000..f0b0e6f --- /dev/null +++ b/mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o.d @@ -0,0 +1,60 @@ +mpcenc/CMakeFiles/mpcenc.dir/wave_in.c.o: \ + /home/dewdude/musepack/musepack_src_r475/mpcenc/wave_in.c \ + /usr/include/stdc-predef.h /usr/include/string.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/features-time64.h /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /home/dewdude/musepack/musepack_src_r475/mpcenc/mpcenc.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcenc/libmpcenc.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/mpc_types.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h /usr/include/bits/stdint-intn.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/memory.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \ + /home/dewdude/musepack/musepack_src_r475/libmpcpsy/libmpcpsy.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/datatypes.h \ + /home/dewdude/musepack/musepack_src_r475/include/mpc/minimax.h \ + /home/dewdude/musepack/musepack_src_r475/mpcenc/config.h \ + /usr/include/math.h /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/iscanonical.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt_posix.h \ + /usr/include/bits/getopt_core.h /usr/include/bits/unistd_ext.h \ + /usr/include/locale.h /usr/include/bits/locale.h /usr/include/langinfo.h \ + /usr/include/nl_types.h /usr/include/fpu_control.h diff --git a/mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.o b/mpcenc/CMakeFiles/mpcenc.dir/winmsg.c.o new file mode 100644 index 0000000000000000000000000000000000000000..e0b8750da9f068f10f9b5937b59efdfd473f9f3a GIT binary patch literal 936 zcmbVKu};G<5Iu)Np&J_#3}K>3VAYYbFd$1+>4Mmh7#K)HR1iv1#YWJHU*MBE_iy?I zaM$|4b+?{$e)rzpvmGm6gWH=(2;dNK4gZW)fUYO%rL3U?2LQu<|0?bd@9xiImC8h_ zIO!#+QYu+awQ!9wcQJ7YA`mmuIE3Tg_S{-S>bGF=vnCSxc&$n^mN|el)6!-mMBA+J zg)3WpT9D6~%|MQf0h!ljSyZT1wJjuG?9$jQe{+0Xy~{~cPm0D)HxArRI7S + +int +WaitKey ( void ) +{ + return getch (); +} + +int +CheckKeyKeep ( void ) +{ + int ch; + + if ( !kbhit () ) + return -1; + + ch = getch (); + ungetch (ch); + return ch; +} + +int +CheckKey ( void ) +{ + if ( !kbhit () ) + return -1; + + return getch (); +} + +#else + +# ifdef USE_TERMIOS +# include + +static struct termios stored_settings; + +static void +echo_on ( void ) +{ + tcsetattr ( 0, TCSANOW, &stored_settings ); +} + +static void +echo_off ( void ) +{ + struct termios new_settings; + + tcgetattr ( 0, &stored_settings ); + new_settings = stored_settings; + + new_settings.c_lflag &= ~ECHO; + new_settings.c_lflag &= ~ICANON; // Disable canonical mode, and set buffer size to 1 byte + new_settings.c_cc[VTIME] = 0; + new_settings.c_cc[VMIN] = 1; + + tcsetattr ( 0, TCSANOW, &new_settings ); +} + +# else +# define echo_off() (void)0 +# define echo_on() (void)0 +# endif + +int +WaitKey ( void ) +{ + unsigned char buff [1]; + int ret; + + echo_off (); + ret = read ( 0, buff, 1 ); + echo_on (); + return ret == 1 ? buff[0] : -1; +} + +int +CheckKeyKeep ( void ) +{ + struct timeval tv = { 0, 0 }; // Do not wait at all, not even a microsecond + fd_set read_fd; + + FD_ZERO ( &read_fd ); // Must be done first to initialize read_fd + FD_SET ( 0, &read_fd ); // Makes select() ask if input is ready; 0 is file descriptor for stdin + + if ( -1 == select ( 1, // number of the largest fd to check + 1 + &read_fd, + NULL, // No writes + NULL, // No exceptions + &tv ) ) + return -1; // an error occured + + return FD_ISSET (0, &read_fd) ? 0xFF : -1; // read_fd now holds a bit map of files that are readable. We test the entry for the standard input (file 0). +} + +int +CheckKey ( void ) +{ + if ( CheckKeyKeep () < 0 ) + return -1; + return WaitKey (); +} + +#endif + +/* end of keyboard.c */ diff --git a/mpcenc/mpcenc b/mpcenc/mpcenc new file mode 100755 index 0000000000000000000000000000000000000000..51743130fdbec06285c738952a0a66fd2545892e GIT binary patch literal 259328 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 z