breakfastquay / rubberband

Official mirror of Rubber Band Library, an audio time-stretching and pitch-shifting library.
http://breakfastquay.com/rubberband/
GNU General Public License v2.0
580 stars 93 forks source link

Win64 meson cross compile broken on v2.0.0 #48

Closed DeadSix27 closed 2 years ago

DeadSix27 commented 3 years ago

Seems like the cstdint import is just missing, I would add a PR but idk if you want that import to happen in sysutils.h or in StretchCalculator.h

Build log

``` FAILED: rubberband.lib.p/src_StretchCalculator.cpp.obj x86_64-w64-mingw32-g++ -Irubberband.lib.p -I. -I.. -I../rubberband -I../src -I/xc/workdir/toolchain/x86_64-w64-mingw32/xc/workdir/toolchain/x86_64-w64-mingw32/x86_64-w64-mingw32/include -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++14 -O3 -O3 -mtune=skylake -march=skylake -ffast-math -pthread -DUSE_BUILTIN_FFT -DHAVE_LIBSAMPLERATE -DNO_THREAD_CHECKS -DNO_TIMING -DNDEBUG -D_WIN32 -DNOMINMAX -D_USE_MATH_DEFINES -DGETOPT_API= -MD -MQ rubberband.lib.p/src_StretchCalculator.cpp.obj -MF rubberband.lib.p/src_StretchCalculator.cpp.obj.d -o rubberband.lib.p/src_StretchCalculator.cpp.obj -c ../src/StretchCalculator.cpp In file included from ../src/StretchCalculator.cpp:24: ../src/StretchCalculator.h:116:5: error: 'int64_t' does not name a type 116 | int64_t m_inFrameCounter; | ^~~~~~~ ../src/StretchCalculator.h:31:1: note: 'int64_t' is defined in header ''; did you forget to '#include '? 30 | #include +++ |+#include 31 | ../src/StretchCalculator.h:117:15: error: 'int64_t' was not declared in this scope 117 | std::pair m_frameCheckpoint; | ^~~~~~~ ../src/StretchCalculator.h:117:15: note: 'int64_t' is defined in header ''; did you forget to '#include '? ../src/StretchCalculator.h:117:24: error: 'int64_t' was not declared in this scope 117 | std::pair m_frameCheckpoint; | ^~~~~~~ ../src/StretchCalculator.h:117:24: note: 'int64_t' is defined in header ''; did you forget to '#include '? ../src/StretchCalculator.h:117:31: error: template argument 1 is invalid 117 | std::pair m_frameCheckpoint; | ^ ../src/StretchCalculator.h:117:31: error: template argument 2 is invalid ../src/StretchCalculator.h:118:5: error: 'int64_t' does not name a type 118 | int64_t expectedOutFrame(int64_t inFrame, double timeRatio); | ^~~~~~~ ../src/StretchCalculator.h:118:5: note: 'int64_t' is defined in header ''; did you forget to '#include '? ../src/StretchCalculator.cpp: In constructor 'RubberBand::StretchCalculator::StretchCalculator(size_t, size_t, bool)': ../src/StretchCalculator.cpp:49:5: error: class 'RubberBand::StretchCalculator' does not have any field named 'm_inFrameCounter' 49 | m_inFrameCounter(0), | ^~~~~~~~~~~~~~~~ ../src/StretchCalculator.cpp:50:5: error: expression list treated as compound expression in mem-initializer [-fpermissive] 50 | m_frameCheckpoint(0, 0), | ^~~~~~~~~~~~~~~~~~~~~~~ ../src/StretchCalculator.cpp:50:23: warning: left operand of comma operator has no effect [-Wunused-value] 50 | m_frameCheckpoint(0, 0), | ^ ../src/StretchCalculator.cpp: At global scope: ../src/StretchCalculator.cpp:324:1: error: no declaration matches 'int64_t RubberBand::StretchCalculator::expectedOutFrame(int64_t, double)' 324 | StretchCalculator::expectedOutFrame(int64_t inFrame, double timeRatio) | ^~~~~~~~~~~~~~~~~ ../src/StretchCalculator.cpp:324:1: note: no functions named 'int64_t RubberBand::StretchCalculator::expectedOutFrame(int64_t, double)' In file included from ../src/StretchCalculator.cpp:24: ../src/StretchCalculator.h:35:7: note: 'class RubberBand::StretchCalculator' defined here 35 | class StretchCalculator | ^~~~~~~~~~~~~~~~~ ../src/StretchCalculator.cpp: In member function 'int RubberBand::StretchCalculator::calculateSingle(double, double, float, size_t, size_t, size_t)': ../src/StretchCalculator.cpp:387:14: error: 'm_inFrameCounter' was not declared in this scope; did you mean 'm_outFrameCounter'? 387 | (m_inFrameCounter, m_prevTimeRatio); | ^~~~~~~~~~~~~~~~ | m_outFrameCounter ../src/StretchCalculator.cpp:386:32: error: 'expectedOutFrame' was not declared in this scope 386 | int64_t toCheckpoint = expectedOutFrame | ^~~~~~~~~~~~~~~~ ../src/StretchCalculator.cpp:407:45: error: 'm_inFrameCounter' was not declared in this scope; did you mean 'm_outFrameCounter'? 407 | std::cerr << "inFrameCounter = " << m_inFrameCounter | ^~~~~~~~~~~~~~~~ | m_outFrameCounter ../src/StretchCalculator.cpp:415:10: error: 'm_inFrameCounter' was not declared in this scope; did you mean 'm_outFrameCounter'? 415 | (m_inFrameCounter + analysisWindowSize/4, timeRatio); | ^~~~~~~~~~~~~~~~ | m_outFrameCounter ../src/StretchCalculator.cpp:414:24: error: 'expectedOutFrame' was not declared in this scope 414 | int64_t intended = expectedOutFrame | ^~~~~~~~~~~~~~~~ ../src/StretchCalculator.cpp: In member function 'void RubberBand::StretchCalculator::reset()': ../src/StretchCalculator.cpp:533:5: error: 'm_inFrameCounter' was not declared in this scope; did you mean 'm_outFrameCounter'? 533 | m_inFrameCounter = 0; | ^~~~~~~~~~~~~~~~ | m_outFrameCounter ../src/StretchCalculator.cpp:534:30: error: cannot convert 'std::pair' to 'int' in assignment 534 | m_frameCheckpoint = std::pair(0, 0); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | std::pair [9/30] Compiling C++ object rubberband.lib.p/src_system_Allocators.cpp.obj [10/30] Compiling C++ object rubberband.lib.p/src_audiocurves_PercussiveAudioCurve.cpp.obj [11/30] Compiling C++ object rubberband.lib.p/src_dsp_Resampler.cpp.obj [12/30] Compiling C++ object rubberband.lib.p/src_base_Profiler.cpp.obj [13/30] Compiling C++ object rubberband.lib.p/src_RubberBandStretcher.cpp.obj [14/30] Compiling C++ object rubberband.lib.p/src_StretcherProcess.cpp.obj In file included from ../src/dsp/Window.h:31, from ../src/StretcherImpl.h:29, from ../src/StretcherProcess.cpp:24: ../src/base/RingBuffer.h: In instantiation of 'RubberBand::RingBuffer::~RingBuffer() [with T = float]': ../src/base/RingBuffer.h:219:1: required from here ../src/dsp/../system/sysutils.h:119:22: warning: statement has no effect [-Wunused-value] 119 | #define MUNLOCK(a,b) 1 | ^ ../src/base/RingBuffer.h:226:9: note: in expansion of macro 'MUNLOCK' 226 | MUNLOCK((void *)m_buffer, m_size * sizeof(T)); | ^~~~~~~ [15/30] Compiling C++ object rubberband.lib.p/src_dsp_FFT.cpp.obj ninja: build stopped: subcommand failed. ```

cannam commented 3 years ago

Thanks for reporting that! Is adding

#include <cstdint>

at the top of StretchCalculator.h enough to fix this, in your build?

If so then I'll add that (or yes, perhaps in sysutils.h, having seen your edit - but don't send a PR, as this is only a mirror of the main repo so PRs can't actually be pulled).

DeadSix27 commented 3 years ago

yep

DeadSix27 commented 2 years ago

Thanks for fixing it in https://github.com/breakfastquay/rubberband/commit/b3c920a35ed1ea4da37ddd62a12d3a81278097d1