From f52dfd3ac36b9543fbb13c06c84c8f78e76b58aa Mon Sep 17 00:00:00 2001 From: Paul Licameli <paul.licameli@audacityteam.org> Date: Sat, 3 Jul 2021 14:54:29 -0400 Subject: [PATCH] New library for math... ... note the swap of target_link_libraries lines in src/CMakeLists.txt, needed to build at least on macOS, becuase FFT.h must be looked up first in lib-math, not in lib-src/twolame Also making a dependency cycle of SampleFormat and Dither! But we will tolerate that within one small library. --- include/audacity/Types.h | 27 ---------- libraries/CMakeLists.txt | 1 + libraries/lib-math/CMakeLists.txt | 31 +++++++++++ {src => libraries/lib-math}/Dither.cpp | 0 {src => libraries/lib-math}/Dither.h | 7 +-- {src => libraries/lib-math}/FFT.cpp | 1 - {src => libraries/lib-math}/FFT.h | 19 +++---- .../lib-math}/InterpolateAudio.cpp | 0 .../lib-math}/InterpolateAudio.h | 3 +- {src => libraries/lib-math}/Matrix.cpp | 0 {src => libraries/lib-math}/Matrix.h | 0 {src => libraries/lib-math}/RealFFTf.cpp | 3 -- {src => libraries/lib-math}/RealFFTf.h | 16 +++--- {src => libraries/lib-math}/SampleCount.cpp | 0 {src => libraries/lib-math}/SampleCount.h | 4 +- {src => libraries/lib-math}/SampleFormat.cpp | 1 + {src => libraries/lib-math}/SampleFormat.h | 54 +++++++++++-------- {src => libraries/lib-math}/Spectrum.cpp | 0 {src => libraries/lib-math}/Spectrum.h | 2 +- {src => libraries/lib-math}/float_cast.h | 2 - src/CMakeLists.txt | 21 +------- src/FFmpeg.h | 1 + src/FileFormats.h | 2 +- src/Mix.h | 1 + src/RingBuffer.cpp | 1 + src/SampleBlock.h | 2 +- src/commands/Demo.h | 2 +- src/effects/ChangePitch.cpp | 2 +- src/effects/Compressor.cpp | 2 +- src/effects/Effect.h | 3 +- src/effects/Equalization.cpp | 4 +- src/effects/Equalization.h | 2 +- src/effects/NoiseReduction.cpp | 2 +- src/effects/Paulstretch.cpp | 2 +- src/effects/Repair.cpp | 2 +- src/effects/VST/VSTEffect.cpp | 2 +- src/effects/VST/VSTEffect.h | 2 +- src/effects/audiounits/AudioUnitEffect.cpp | 2 +- src/effects/ladspa/LadspaEffect.h | 2 +- src/effects/lv2/LV2Effect.h | 2 +- src/export/Export.h | 2 +- src/export/ExportCL.cpp | 2 +- src/export/ExportFLAC.cpp | 2 +- src/export/ExportMP3.cpp | 2 +- src/export/ExportPCM.cpp | 1 + src/import/ImportPlugin.h | 1 + src/import/SpecPowerMeter.cpp | 2 +- src/import/SpecPowerMeter.h | 2 +- src/prefs/QualityPrefs.cpp | 2 +- src/prefs/QualitySettings.h | 1 + src/prefs/SpectrogramSettings.cpp | 2 +- src/prefs/SpectrogramSettings.h | 4 +- src/prefs/SpectrumPrefs.cpp | 2 +- .../playabletrack/wavetrack/ui/SampleHandle.h | 2 +- .../wavetrack/ui/WaveTrackView.h | 2 +- src/widgets/Meter.h | 2 +- src/widgets/NumericTextCtrl.cpp | 2 +- src/xml/XMLTagHandler.cpp | 1 + 58 files changed, 131 insertions(+), 133 deletions(-) create mode 100644 libraries/lib-math/CMakeLists.txt rename {src => libraries/lib-math}/Dither.cpp (100%) rename {src => libraries/lib-math}/Dither.h (91%) rename {src => libraries/lib-math}/FFT.cpp (99%) rename {src => libraries/lib-math}/FFT.h (95%) rename {src => libraries/lib-math}/InterpolateAudio.cpp (100%) rename {src => libraries/lib-math}/InterpolateAudio.h (95%) rename {src => libraries/lib-math}/Matrix.cpp (100%) rename {src => libraries/lib-math}/Matrix.h (100%) rename {src => libraries/lib-math}/RealFFTf.cpp (99%) rename {src => libraries/lib-math}/RealFFTf.h (50%) rename {src => libraries/lib-math}/SampleCount.cpp (100%) rename {src => libraries/lib-math}/SampleCount.h (98%) rename {src => libraries/lib-math}/SampleFormat.cpp (99%) rename {src => libraries/lib-math}/SampleFormat.h (73%) rename {src => libraries/lib-math}/Spectrum.cpp (100%) rename {src => libraries/lib-math}/Spectrum.h (97%) rename {src => libraries/lib-math}/float_cast.h (99%) diff --git a/include/audacity/Types.h b/include/audacity/Types.h index 3a814f6ab3..04bf36a5e4 100644 --- a/include/audacity/Types.h +++ b/include/audacity/Types.h @@ -58,33 +58,6 @@ // until proper public headers are created for the stuff in here. // ---------------------------------------------------------------------------- -// ---------------------------------------------------------------------------- -// Supported sample formats -// ---------------------------------------------------------------------------- -enum sampleFormat : unsigned -{ - //! The increasing sequence of these enum values must correspond to the increasing data type width - //! These values persist in saved project files, so must not be changed in later program versions - int16Sample = 0x00020001, - int24Sample = 0x00040001, - floatSample = 0x0004000F, - - //! Two synonyms for previous values that might change if more values were added - narrowestSampleFormat = int16Sample, - widestSampleFormat = floatSample, -}; - -// ---------------------------------------------------------------------------- -// Provide the number of bytes a specific sample will take -// ---------------------------------------------------------------------------- -#define SAMPLE_SIZE(SampleFormat) (SampleFormat >> 16) - -// ---------------------------------------------------------------------------- -// Generic pointer to sample data -// ---------------------------------------------------------------------------- -typedef char *samplePtr; -typedef const char *constSamplePtr; - // ---------------------------------------------------------------------------- // The type for plugin IDs // ---------------------------------------------------------------------------- diff --git a/libraries/CMakeLists.txt b/libraries/CMakeLists.txt index 891b4d805a..1b572a4db9 100644 --- a/libraries/CMakeLists.txt +++ b/libraries/CMakeLists.txt @@ -11,6 +11,7 @@ set( LIBRARIES lib-basic-ui lib-exceptions lib-preferences + lib-math ) if ( ${_OPT}has_networking ) diff --git a/libraries/lib-math/CMakeLists.txt b/libraries/lib-math/CMakeLists.txt new file mode 100644 index 0000000000..2b87133ab5 --- /dev/null +++ b/libraries/lib-math/CMakeLists.txt @@ -0,0 +1,31 @@ +#[[ +A library of mathematical utilities and manipulation of samples +]]# + +set( SOURCES + Dither.cpp + Dither.h + FFT.cpp + FFT.h + InterpolateAudio.cpp + InterpolateAudio.h + Matrix.cpp + Matrix.h + RealFFTf.cpp + RealFFTf.h + SampleCount.cpp + SampleCount.h + SampleFormat.cpp + SampleFormat.h + Spectrum.cpp + Spectrum.h + float_cast.h +) +set( LIBRARIES + lib-preferences-interface + PRIVATE + wxBase +) +audacity_library( lib-math "${SOURCES}" "${LIBRARIES}" + "" "" +) diff --git a/src/Dither.cpp b/libraries/lib-math/Dither.cpp similarity index 100% rename from src/Dither.cpp rename to libraries/lib-math/Dither.cpp diff --git a/src/Dither.h b/libraries/lib-math/Dither.h similarity index 91% rename from src/Dither.h rename to libraries/lib-math/Dither.h index e257243efd..369273b7f7 100644 --- a/src/Dither.h +++ b/libraries/lib-math/Dither.h @@ -10,7 +10,7 @@ #ifndef __AUDACITY_DITHER_H__ #define __AUDACITY_DITHER_H__ -#include "audacity/Types.h" // for samplePtr +#include "SampleFormat.h" template< typename Enum > class EnumSetting; @@ -19,13 +19,14 @@ template< typename Enum > class EnumSetting; enum DitherType : unsigned { none = 0, rectangle = 1, triangle = 2, shaped = 3 }; -class Dither +class MATH_API Dither { public: static DitherType FastDitherChoice(); static DitherType BestDitherChoice(); - static AUDACITY_DLL_API EnumSetting< DitherType > FastSetting, BestSetting; + static EnumSetting< DitherType > FastSetting; + static EnumSetting< DitherType > BestSetting; /// Default constructor Dither(); diff --git a/src/FFT.cpp b/libraries/lib-math/FFT.cpp similarity index 99% rename from src/FFT.cpp rename to libraries/lib-math/FFT.cpp index 158ba2f636..3a946ac883 100644 --- a/src/FFT.cpp +++ b/libraries/lib-math/FFT.cpp @@ -39,7 +39,6 @@ * 9: Gaussian(a=4.5) */ - #include "FFT.h" #include "Internat.h" diff --git a/src/FFT.h b/libraries/lib-math/FFT.h similarity index 95% rename from src/FFT.h rename to libraries/lib-math/FFT.h index 20fe262b13..9ac8f0e9c7 100644 --- a/src/FFT.h +++ b/libraries/lib-math/FFT.h @@ -63,6 +63,7 @@ class TranslatableString; * input array, and that NumSamples must be a power of two. */ +MATH_API void PowerSpectrum(size_t NumSamples, const float *In, float *Out); /* @@ -72,7 +73,7 @@ void PowerSpectrum(size_t NumSamples, const float *In, float *Out); * NumSamples must be a power of two. */ -AUDACITY_DLL_API +MATH_API void RealFFT(size_t NumSamples, const float *RealIn, float *RealOut, float *ImagOut); @@ -81,7 +82,7 @@ void RealFFT(size_t NumSamples, * so the output is purely real. NumSamples must be a power of * two. */ -AUDACITY_DLL_API +MATH_API void InverseRealFFT(size_t NumSamples, const float *RealIn, const float *ImagIn, float *RealOut); @@ -91,7 +92,7 @@ void InverseRealFFT(size_t NumSamples, * inverse transform as well. */ -AUDACITY_DLL_API +MATH_API void FFT(size_t NumSamples, bool InverseTransform, const float *RealIn, const float *ImagIn, float *RealOut, float *ImagOut); @@ -120,7 +121,7 @@ enum eWindowFunctions eWinFuncCount }; -AUDACITY_DLL_API +MATH_API void WindowFunc(int whichFunction, size_t NumSamples, float *data); /* @@ -129,7 +130,7 @@ void WindowFunc(int whichFunction, size_t NumSamples, float *data); * otherwise about (NumSamples - 1) / 2 * All functions have 0 in data[0] except Rectangular, Hamming and Gaussians */ -AUDACITY_DLL_API +MATH_API void NewWindowFunc(int whichFunction, size_t NumSamples, bool extraSample, float *data); /* @@ -139,21 +140,21 @@ void NewWindowFunc(int whichFunction, size_t NumSamples, bool extraSample, float * otherwise about (NumSamples - 1) / 2 * All functions have 0 in data[0] except Rectangular, Hamming and Gaussians */ -AUDACITY_DLL_API +MATH_API void DerivativeOfWindowFunc(int whichFunction, size_t NumSamples, bool extraSample, float *data); /* * Returns the name of the windowing function (for UI display) */ -AUDACITY_DLL_API const TranslatableString WindowFuncName(int whichFunction); +MATH_API const TranslatableString WindowFuncName(int whichFunction); /* * Returns the number of windowing functions supported */ -AUDACITY_DLL_API int NumWindowFuncs(); +MATH_API int NumWindowFuncs(); -void DeinitFFT(); +MATH_API void DeinitFFT(); #endif diff --git a/src/InterpolateAudio.cpp b/libraries/lib-math/InterpolateAudio.cpp similarity index 100% rename from src/InterpolateAudio.cpp rename to libraries/lib-math/InterpolateAudio.cpp diff --git a/src/InterpolateAudio.h b/libraries/lib-math/InterpolateAudio.h similarity index 95% rename from src/InterpolateAudio.h rename to libraries/lib-math/InterpolateAudio.h index d19c8d58e6..4f036dc6fb 100644 --- a/src/InterpolateAudio.h +++ b/libraries/lib-math/InterpolateAudio.h @@ -25,7 +25,6 @@ #ifndef __AUDACITY_INTERPOLATE_AUDIO__ #define __AUDACITY_INTERPOLATE_AUDIO__ - #include <cstddef> // See top of file for a description of the algorithm. Interpolates @@ -36,7 +35,7 @@ // side (6x the number of bad samples on either side is great). However, // it will work with less data, and with the bad samples on one end or // the other. -void AUDACITY_DLL_API InterpolateAudio(float *buffer, size_t len, +void MATH_API InterpolateAudio(float *buffer, size_t len, size_t firstBad, size_t numBad); #endif // __AUDACITY_INTERPOLATE_AUDIO__ diff --git a/src/Matrix.cpp b/libraries/lib-math/Matrix.cpp similarity index 100% rename from src/Matrix.cpp rename to libraries/lib-math/Matrix.cpp diff --git a/src/Matrix.h b/libraries/lib-math/Matrix.h similarity index 100% rename from src/Matrix.h rename to libraries/lib-math/Matrix.h diff --git a/src/RealFFTf.cpp b/libraries/lib-math/RealFFTf.cpp similarity index 99% rename from src/RealFFTf.cpp rename to libraries/lib-math/RealFFTf.cpp index ed443d1aed..f26c5df0dd 100644 --- a/src/RealFFTf.cpp +++ b/libraries/lib-math/RealFFTf.cpp @@ -36,11 +36,8 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - #include "RealFFTf.h" - - #include <vector> #include <stdlib.h> #include <stdio.h> diff --git a/src/RealFFTf.h b/libraries/lib-math/RealFFTf.h similarity index 50% rename from src/RealFFTf.h rename to libraries/lib-math/RealFFTf.h index 02a221aab6..a4fc294ad6 100644 --- a/src/RealFFTf.h +++ b/libraries/lib-math/RealFFTf.h @@ -1,10 +1,6 @@ #ifndef __realfftf_h #define __realfftf_h - - - - #include "MemoryX.h" using fft_type = float; @@ -17,7 +13,7 @@ struct FFTParam { #endif }; -struct AUDACITY_DLL_API FFTDeleter{ +struct MATH_API FFTDeleter{ void operator () (FFTParam *p) const; }; @@ -25,11 +21,11 @@ using HFFT = std::unique_ptr< FFTParam, FFTDeleter >; -AUDACITY_DLL_API HFFT GetFFT(size_t); -AUDACITY_DLL_API void RealFFTf(fft_type *, const FFTParam *); -AUDACITY_DLL_API void InverseRealFFTf(fft_type *, const FFTParam *); -AUDACITY_DLL_API void ReorderToTime(const FFTParam *hFFT, const fft_type *buffer, fft_type *TimeOut); -AUDACITY_DLL_API void ReorderToFreq(const FFTParam *hFFT, const fft_type *buffer, +MATH_API HFFT GetFFT(size_t); +MATH_API void RealFFTf(fft_type *, const FFTParam *); +MATH_API void InverseRealFFTf(fft_type *, const FFTParam *); +MATH_API void ReorderToTime(const FFTParam *hFFT, const fft_type *buffer, fft_type *TimeOut); +MATH_API void ReorderToFreq(const FFTParam *hFFT, const fft_type *buffer, fft_type *RealOut, fft_type *ImagOut); #endif diff --git a/src/SampleCount.cpp b/libraries/lib-math/SampleCount.cpp similarity index 100% rename from src/SampleCount.cpp rename to libraries/lib-math/SampleCount.cpp diff --git a/src/SampleCount.h b/libraries/lib-math/SampleCount.h similarity index 98% rename from src/SampleCount.h rename to libraries/lib-math/SampleCount.h index 8b8cebfbfb..19be036250 100644 --- a/src/SampleCount.h +++ b/libraries/lib-math/SampleCount.h @@ -14,7 +14,7 @@ //! Positions or offsets within audio files need a wide type /*! This type disallows implicit interconversions with narrower types */ -class AUDACITY_DLL_API sampleCount +class MATH_API sampleCount { public: using type = long long; @@ -128,7 +128,7 @@ inline sampleCount operator % (sampleCount a, sampleCount b) // hiding the casts // ---------------------------------------------------------------------------- -AUDACITY_DLL_API +MATH_API size_t limitSampleBufferSize( size_t bufferSize, sampleCount limit ); #endif diff --git a/src/SampleFormat.cpp b/libraries/lib-math/SampleFormat.cpp similarity index 99% rename from src/SampleFormat.cpp rename to libraries/lib-math/SampleFormat.cpp index 1d4e7baee7..25f38ba1d4 100644 --- a/src/SampleFormat.cpp +++ b/libraries/lib-math/SampleFormat.cpp @@ -35,6 +35,7 @@ *//*******************************************************************/ #include "SampleFormat.h" +#include "Dither.h" // CYCLE #include <wx/intl.h> #include <math.h> diff --git a/src/SampleFormat.h b/libraries/lib-math/SampleFormat.h similarity index 73% rename from src/SampleFormat.h rename to libraries/lib-math/SampleFormat.h index 90e88ed1f7..d2ca09069b 100644 --- a/src/SampleFormat.h +++ b/libraries/lib-math/SampleFormat.h @@ -11,32 +11,43 @@ #ifndef __AUDACITY_SAMPLE_FORMAT__ #define __AUDACITY_SAMPLE_FORMAT__ - - #include "MemoryX.h" -#include <wx/defs.h> - -#include "audacity/Types.h" -#include "Dither.h" +#include <cstdlib> // // Definitions / Meta-Information // +enum DitherType : unsigned; //! These global variables are assigned at application startup or after change of preferences. -extern AUDACITY_DLL_API DitherType gLowQualityDither, gHighQualityDither; +extern MATH_API DitherType gLowQualityDither, gHighQualityDither; -#if 0 -// Moved to audacity/types.h -typedef enum { +// ---------------------------------------------------------------------------- +// Supported sample formats +// ---------------------------------------------------------------------------- +enum sampleFormat : unsigned +{ + //! The increasing sequence of these enum values must correspond to the increasing data type width + //! These values persist in saved project files, so must not be changed in later program versions int16Sample = 0x00020001, int24Sample = 0x00040001, - floatSample = 0x0004000F -} sampleFormat; + floatSample = 0x0004000F, -/** \brief Return the size (in memory) of one sample (bytes) */ -#define SAMPLE_SIZE(SampleFormat) ( size_t{ (SampleFormat) >> 16 } ) -#endif + //! Two synonyms for previous values that might change if more values were added + narrowestSampleFormat = int16Sample, + widestSampleFormat = floatSample, +}; + +// ---------------------------------------------------------------------------- +// Provide the number of bytes a specific sample will take +// ---------------------------------------------------------------------------- +#define SAMPLE_SIZE(SampleFormat) (SampleFormat >> 16) + +// ---------------------------------------------------------------------------- +// Generic pointer to sample data +// ---------------------------------------------------------------------------- +using samplePtr = char *; +using constSamplePtr = const char *; // Used to determine how to fill in empty areas of audio. typedef enum { @@ -48,7 +59,8 @@ typedef enum { #define SAMPLE_SIZE_DISK(SampleFormat) (((SampleFormat) == int24Sample) ? \ size_t{ 3 } : SAMPLE_SIZE(SampleFormat) ) -AUDACITY_DLL_API TranslatableString GetSampleFormatStr(sampleFormat format); +class TranslatableString; +MATH_API TranslatableString GetSampleFormatStr(sampleFormat format); // // Allocating/Freeing Samples @@ -128,7 +140,7 @@ private: // Copying, Converting and Clearing Samples // -AUDACITY_DLL_API +MATH_API //! Copy samples from any format into the widest format, which is 32 bit float, with no dithering /*! @param src address of source samples @@ -141,7 +153,7 @@ AUDACITY_DLL_API void SamplesToFloats(constSamplePtr src, sampleFormat srcFormat, float *dst, size_t len, size_t srcStride = 1, size_t dstStride = 1); -AUDACITY_DLL_API +MATH_API //! Copy samples from any format to any other format; apply dithering only if narrowing the format /*! @copydetails SamplesToFloats() @@ -153,11 +165,11 @@ void CopySamples(constSamplePtr src, sampleFormat srcFormat, DitherType ditherType = gHighQualityDither, //!< default is loaded from a global variable unsigned int srcStride=1, unsigned int dstStride=1); -AUDACITY_DLL_API +MATH_API void ClearSamples(samplePtr buffer, sampleFormat format, size_t start, size_t len); -AUDACITY_DLL_API +MATH_API void ReverseSamples(samplePtr buffer, sampleFormat format, int start, int len); @@ -166,7 +178,7 @@ void ReverseSamples(samplePtr buffer, sampleFormat format, // are set in preferences. // -AUDACITY_DLL_API +MATH_API void InitDitherers(); // These are so commonly done for processing samples in floating point form in memory, diff --git a/src/Spectrum.cpp b/libraries/lib-math/Spectrum.cpp similarity index 100% rename from src/Spectrum.cpp rename to libraries/lib-math/Spectrum.cpp diff --git a/src/Spectrum.h b/libraries/lib-math/Spectrum.h similarity index 97% rename from src/Spectrum.h rename to libraries/lib-math/Spectrum.h index aaaae6356a..3ff362bf64 100644 --- a/src/Spectrum.h +++ b/libraries/lib-math/Spectrum.h @@ -21,7 +21,7 @@ calculates windowSize/2 frequency samples */ -AUDACITY_DLL_API +MATH_API bool ComputeSpectrum(const float * data, size_t width, size_t windowSize, double rate, float *out, bool autocorrelation, int windowFunc = eWinFuncHann); diff --git a/src/float_cast.h b/libraries/lib-math/float_cast.h similarity index 99% rename from src/float_cast.h rename to libraries/lib-math/float_cast.h index 6d3fc734a9..6886e3d93d 100644 --- a/src/float_cast.h +++ b/libraries/lib-math/float_cast.h @@ -35,8 +35,6 @@ ** long int lrint (double x) ; */ - - /* The presence of the required functions are detected during the configure ** process and the values HAVE_LRINT and HAVE_LRINTF are set accordingly in ** the config.h file. diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f43d2dfb9f..133f6b9836 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -129,14 +129,10 @@ list( APPEND SOURCES DeviceManager.h Diags.cpp Diags.h - Dither.cpp - Dither.h Envelope.cpp Envelope.h EnvelopeEditor.cpp EnvelopeEditor.h - FFT.cpp - FFT.h FFmpeg.cpp FFmpeg.h FileException.cpp @@ -157,8 +153,6 @@ list( APPEND SOURCES HitTestResult.h ImageManipulation.cpp ImageManipulation.h - InterpolateAudio.cpp - InterpolateAudio.h KeyboardCapture.cpp KeyboardCapture.h LabelDialog.cpp @@ -175,8 +169,6 @@ list( APPEND SOURCES LyricsWindow.cpp LyricsWindow.h MacroMagic.h - Matrix.cpp - Matrix.h Menus.cpp Menus.h Mix.cpp @@ -232,10 +224,6 @@ list( APPEND SOURCES ProjectWindow.h ProjectWindowBase.cpp ProjectWindowBase.h - RealFFTf.cpp - RealFFTf.h - RealFFTf48x.cpp - RealFFTf48x.h RefreshCode.h Registrar.h Registry.cpp @@ -246,10 +234,6 @@ list( APPEND SOURCES RingBuffer.h SampleBlock.cpp SampleBlock.h - SampleCount.cpp - SampleCount.h - SampleFormat.cpp - SampleFormat.h Screenshot.cpp Screenshot.h SelectUtilities.cpp @@ -272,8 +256,6 @@ list( APPEND SOURCES Snap.h SoundActivatedRecord.cpp SoundActivatedRecord.h - Spectrum.cpp - Spectrum.h SpectrumAnalyst.cpp SpectrumAnalyst.h SplashDialog.cpp @@ -334,7 +316,6 @@ list( APPEND SOURCES WrappedType.h ZoomInfo.cpp ZoomInfo.h - float_cast.h wxFileNameWrapper.h # Commands @@ -1354,8 +1335,8 @@ target_compile_definitions( ${TARGET} PRIVATE ${DEFINES} ) target_compile_options( ${TARGET} PRIVATE ${OPTIONS} ) target_include_directories( ${TARGET} PRIVATE ${INCLUDES} ) target_link_options( ${TARGET} PRIVATE ${LDFLAGS} ) -target_link_libraries( ${TARGET} ${LIBRARIES} ) target_link_libraries( ${TARGET} PUBLIC ${AUDACITY_LIBRARIES} ) +target_link_libraries( ${TARGET} ${LIBRARIES} ) if( CMAKE_VERSION VERSION_GREATER_EQUAL "3.16" AND NOT CCACHE_PROGRAM ) if( ${_OPT}use_pch ) diff --git a/src/FFmpeg.h b/src/FFmpeg.h index 1f2d1be177..53f55de343 100644 --- a/src/FFmpeg.h +++ b/src/FFmpeg.h @@ -153,6 +153,7 @@ extern "C" { #include "Prefs.h" #include "Identifier.h" +#include "SampleFormat.h" class wxDynamicLibrary; diff --git a/src/FileFormats.h b/src/FileFormats.h index 03619f180f..14394b9aa4 100644 --- a/src/FileFormats.h +++ b/src/FileFormats.h @@ -13,8 +13,8 @@ -#include "audacity/Types.h" #include "Identifier.h" +#include "SampleFormat.h" //#include <mutex> #include <memory> diff --git a/src/Mix.h b/src/Mix.h index 0cc58a115f..5eae40b883 100644 --- a/src/Mix.h +++ b/src/Mix.h @@ -20,6 +20,7 @@ #ifndef __AUDACITY_MIX__ #define __AUDACITY_MIX__ +#include "audacity/Types.h" #include "SampleFormat.h" #include <vector> diff --git a/src/RingBuffer.cpp b/src/RingBuffer.cpp index a5d54dac60..b62e8bb58b 100644 --- a/src/RingBuffer.cpp +++ b/src/RingBuffer.cpp @@ -26,6 +26,7 @@ #include "RingBuffer.h" +#include "Dither.h" RingBuffer::RingBuffer(sampleFormat format, size_t size) : mFormat{ format } diff --git a/src/SampleBlock.h b/src/SampleBlock.h index dbe5b119ba..8d80fa1959 100644 --- a/src/SampleBlock.h +++ b/src/SampleBlock.h @@ -9,7 +9,7 @@ SampleBlock.h #ifndef __AUDACITY_SAMPLE_BLOCK__ #define __AUDACITY_SAMPLE_BLOCK__ -#include "audacity/Types.h" +#include "SampleFormat.h" #include <functional> #include <memory> diff --git a/src/commands/Demo.h b/src/commands/Demo.h index cb76b0c84e..61f2ca970f 100644 --- a/src/commands/Demo.h +++ b/src/commands/Demo.h @@ -12,7 +12,7 @@ #define __AUDACITY_DEMO_COMMAND__ #include "AudacityCommand.h" -#include "../SampleFormat.h" +#include "SampleFormat.h" class ShuttleGui; diff --git a/src/effects/ChangePitch.cpp b/src/effects/ChangePitch.cpp index b9519b5252..1e11a44630 100644 --- a/src/effects/ChangePitch.cpp +++ b/src/effects/ChangePitch.cpp @@ -38,7 +38,7 @@ the pitch without changing the tempo. #include "../PitchName.h" #include "../Shuttle.h" #include "../ShuttleGui.h" -#include "../Spectrum.h" +#include "Spectrum.h" #include "../WaveTrack.h" #include "../widgets/valnum.h" #include "TimeWarper.h" diff --git a/src/effects/Compressor.cpp b/src/effects/Compressor.cpp index b7d73fc68f..ae03ece993 100644 --- a/src/effects/Compressor.cpp +++ b/src/effects/Compressor.cpp @@ -42,7 +42,7 @@ #include "../Shuttle.h" #include "../ShuttleGui.h" #include "../Theme.h" -#include "../float_cast.h" +#include "float_cast.h" #include "../widgets/Ruler.h" #include "../WaveTrack.h" diff --git a/src/effects/Effect.h b/src/effects/Effect.h index 10777b6565..225c3e4b19 100644 --- a/src/effects/Effect.h +++ b/src/effects/Effect.h @@ -27,8 +27,9 @@ class wxWindow; #include "ConfigInterface.h" #include "EffectInterface.h" +#include "PluginInterface.h" -#include "../SampleCount.h" +#include "SampleCount.h" #include "../SelectedRegion.h" #include "../Track.h" diff --git a/src/effects/Equalization.cpp b/src/effects/Equalization.cpp index d453eceff3..c5861666f9 100644 --- a/src/effects/Equalization.cpp +++ b/src/effects/Equalization.cpp @@ -94,7 +94,7 @@ #include "../FileNames.h" #include "../Envelope.h" #include "../EnvelopeEditor.h" -#include "../FFT.h" +#include "FFT.h" #include "Prefs.h" #include "../Project.h" #include "../Theme.h" @@ -106,7 +106,7 @@ #include "../widgets/AudacityTextEntryDialog.h" #include "../xml/XMLFileReader.h" #include "../AllThemeResources.h" -#include "../float_cast.h" +#include "float_cast.h" #if wxUSE_ACCESSIBILITY #include "../widgets/WindowAccessible.h" diff --git a/src/effects/Equalization.h b/src/effects/Equalization.h index b0a9084676..67c5a38ca6 100644 --- a/src/effects/Equalization.h +++ b/src/effects/Equalization.h @@ -18,7 +18,7 @@ #include <wx/setup.h> // for wxUSE_* macros #include "Effect.h" -#include "../RealFFTf.h" +#include "RealFFTf.h" // Flags to specialise the UI const int kEqOptionGraphic =1; diff --git a/src/effects/NoiseReduction.cpp b/src/effects/NoiseReduction.cpp index 8b05bee702..0cc6d12d6a 100644 --- a/src/effects/NoiseReduction.cpp +++ b/src/effects/NoiseReduction.cpp @@ -46,7 +46,7 @@ #include "../ShuttleGui.h" #include "../widgets/HelpSystem.h" #include "Prefs.h" -#include "../RealFFTf.h" +#include "RealFFTf.h" #include "../WaveTrack.h" #include "../widgets/AudacityMessageBox.h" diff --git a/src/effects/Paulstretch.cpp b/src/effects/Paulstretch.cpp index 7a275d1ba1..7c2823ea17 100644 --- a/src/effects/Paulstretch.cpp +++ b/src/effects/Paulstretch.cpp @@ -28,7 +28,7 @@ #include "../Shuttle.h" #include "../ShuttleGui.h" -#include "../FFT.h" +#include "FFT.h" #include "../widgets/valnum.h" #include "../widgets/AudacityMessageBox.h" #include "Prefs.h" diff --git a/src/effects/Repair.cpp b/src/effects/Repair.cpp index 57fff709f0..18ad678b10 100644 --- a/src/effects/Repair.cpp +++ b/src/effects/Repair.cpp @@ -28,7 +28,7 @@ the audio, rather than actually finding the clicks. #include <wx/intl.h> -#include "../InterpolateAudio.h" +#include "InterpolateAudio.h" #include "../WaveTrack.h" #include "../widgets/AudacityMessageBox.h" diff --git a/src/effects/VST/VSTEffect.cpp b/src/effects/VST/VSTEffect.cpp index e427def28a..3d2d59e68e 100644 --- a/src/effects/VST/VSTEffect.cpp +++ b/src/effects/VST/VSTEffect.cpp @@ -27,7 +27,7 @@ #include "VSTEffect.h" #include "../../ModuleManager.h" -#include "../../SampleCount.h" +#include "SampleCount.h" #include "../../widgets/ProgressDialog.h" diff --git a/src/effects/VST/VSTEffect.h b/src/effects/VST/VSTEffect.h index f3ef7404ac..ef306cffc4 100644 --- a/src/effects/VST/VSTEffect.h +++ b/src/effects/VST/VSTEffect.h @@ -16,7 +16,7 @@ #include "ModuleInterface.h" #include "PluginInterface.h" -#include "../../SampleFormat.h" +#include "SampleFormat.h" #include "../../xml/XMLTagHandler.h" class wxSizerItem; diff --git a/src/effects/audiounits/AudioUnitEffect.cpp b/src/effects/audiounits/AudioUnitEffect.cpp index 5c1f30c51c..108c5ca45c 100644 --- a/src/effects/audiounits/AudioUnitEffect.cpp +++ b/src/effects/audiounits/AudioUnitEffect.cpp @@ -19,7 +19,7 @@ #if USE_AUDIO_UNITS #include "AudioUnitEffect.h" #include "../../ModuleManager.h" -#include "../../SampleCount.h" +#include "SampleCount.h" #include <wx/defs.h> #include <wx/base64.h> diff --git a/src/effects/ladspa/LadspaEffect.h b/src/effects/ladspa/LadspaEffect.h index ebd001e702..8c1970e8b0 100644 --- a/src/effects/ladspa/LadspaEffect.h +++ b/src/effects/ladspa/LadspaEffect.h @@ -23,7 +23,7 @@ class NumericTextCtrl; #include "PluginInterface.h" #include "ladspa.h" -#include "../../SampleFormat.h" +#include "SampleFormat.h" #define LADSPAEFFECTS_VERSION wxT("1.0.0.0") /* i18n-hint: abbreviates "Linux Audio Developer's Simple Plugin API" diff --git a/src/effects/lv2/LV2Effect.h b/src/effects/lv2/LV2Effect.h index be249f1913..bb5b1d9821 100755 --- a/src/effects/lv2/LV2Effect.h +++ b/src/effects/lv2/LV2Effect.h @@ -38,7 +38,7 @@ class wxArrayString; #include <suil/suil.h> #include "../../ShuttleGui.h" -#include "../../SampleFormat.h" +#include "SampleFormat.h" #include "LoadLV2.h" #include "NativeWindow.h" diff --git a/src/export/Export.h b/src/export/Export.h index f972e3c027..7a88e93113 100644 --- a/src/export/Export.h +++ b/src/export/Export.h @@ -15,7 +15,7 @@ #include <vector> #include <wx/filename.h> // member variable #include "Identifier.h" -#include "../SampleFormat.h" +#include "SampleFormat.h" #include "../widgets/wxPanelWrapper.h" // to inherit #include "../FileNames.h" // for FileTypes diff --git a/src/export/ExportCL.cpp b/src/export/ExportCL.cpp index 236a1c98e1..096dfa2df0 100644 --- a/src/export/ExportCL.cpp +++ b/src/export/ExportCL.cpp @@ -35,7 +35,7 @@ #include "../ShuttleGui.h" #include "../Tags.h" #include "../Track.h" -#include "../float_cast.h" +#include "float_cast.h" #include "../widgets/FileHistory.h" #include "../widgets/AudacityMessageBox.h" #include "../widgets/ProgressDialog.h" diff --git a/src/export/ExportFLAC.cpp b/src/export/ExportFLAC.cpp index 98efdf030a..a4f1f3cc9b 100644 --- a/src/export/ExportFLAC.cpp +++ b/src/export/ExportFLAC.cpp @@ -29,7 +29,7 @@ and libvorbis examples, Monty <monty@xiph.org> #include "FLAC++/encoder.h" -#include "../float_cast.h" +#include "float_cast.h" #include "../ProjectSettings.h" #include "../Mix.h" #include "Prefs.h" diff --git a/src/export/ExportMP3.cpp b/src/export/ExportMP3.cpp index 4c998e0548..46fb1db3f6 100644 --- a/src/export/ExportMP3.cpp +++ b/src/export/ExportMP3.cpp @@ -80,7 +80,7 @@ #include <wx/window.h> #include "../FileNames.h" -#include "../float_cast.h" +#include "float_cast.h" #include "../Mix.h" #include "Prefs.h" #include "../ProjectSettings.h" diff --git a/src/export/ExportPCM.cpp b/src/export/ExportPCM.cpp index a7fffd2797..f2edfe9bee 100644 --- a/src/export/ExportPCM.cpp +++ b/src/export/ExportPCM.cpp @@ -24,6 +24,7 @@ #include "sndfile.h" +#include "Dither.h" #include "../FileFormats.h" #include "../Mix.h" #include "Prefs.h" diff --git a/src/import/ImportPlugin.h b/src/import/ImportPlugin.h index 78c9fb54d0..7a9d6f9589 100644 --- a/src/import/ImportPlugin.h +++ b/src/import/ImportPlugin.h @@ -51,6 +51,7 @@ but little else. #include "audacity/Types.h" #include "Identifier.h" #include "Internat.h" +#include "SampleFormat.h" #include "wxArrayStringEx.h" class AudacityProject; diff --git a/src/import/SpecPowerMeter.cpp b/src/import/SpecPowerMeter.cpp index a0b2a2c21c..45020d30ee 100644 --- a/src/import/SpecPowerMeter.cpp +++ b/src/import/SpecPowerMeter.cpp @@ -22,7 +22,7 @@ measurements in subbands or in the entire signal band. #include <cstdlib> #include <wx/defs.h> -#include "../FFT.h" +#include "FFT.h" SpecPowerCalculation::SpecPowerCalculation(size_t sigLen) : mSigLen(sigLen) diff --git a/src/import/SpecPowerMeter.h b/src/import/SpecPowerMeter.h index 5fba4fe71a..9df7dff49f 100644 --- a/src/import/SpecPowerMeter.h +++ b/src/import/SpecPowerMeter.h @@ -12,7 +12,7 @@ #define __AUDACITY_SPECPOWERMETER_H_ #include <cstddef> -#include "../SampleFormat.h" +#include "SampleFormat.h" class SpecPowerCalculation { diff --git a/src/prefs/QualityPrefs.cpp b/src/prefs/QualityPrefs.cpp index 1357c66111..f16fc20cfb 100644 --- a/src/prefs/QualityPrefs.cpp +++ b/src/prefs/QualityPrefs.cpp @@ -24,7 +24,7 @@ #include <wx/textctrl.h> #include "../AudioIOBase.h" -#include "../Dither.h" +#include "Dither.h" #include "Prefs.h" #include "../Resample.h" #include "../ShuttleGui.h" diff --git a/src/prefs/QualitySettings.h b/src/prefs/QualitySettings.h index fb5431160b..9bc0b430e6 100644 --- a/src/prefs/QualitySettings.h +++ b/src/prefs/QualitySettings.h @@ -13,6 +13,7 @@ #include <audacity/Types.h> #include "Prefs.h" // for EnumSetting +#include "SampleFormat.h" class IntSetting; diff --git a/src/prefs/SpectrogramSettings.cpp b/src/prefs/SpectrogramSettings.cpp index 66ecc675ef..c71b0e3bf0 100644 --- a/src/prefs/SpectrogramSettings.cpp +++ b/src/prefs/SpectrogramSettings.cpp @@ -21,7 +21,7 @@ Paul Licameli #include <algorithm> -#include "../FFT.h" +#include "FFT.h" #include "Prefs.h" #include <cmath> diff --git a/src/prefs/SpectrogramSettings.h b/src/prefs/SpectrogramSettings.h index b1d7e74956..fecab413e3 100644 --- a/src/prefs/SpectrogramSettings.h +++ b/src/prefs/SpectrogramSettings.h @@ -12,8 +12,8 @@ Paul Licameli #define __AUDACITY_SPECTROGRAM_SETTINGS__ #include "Prefs.h" -#include "../SampleFormat.h" -#include "../RealFFTf.h" +#include "SampleFormat.h" +#include "RealFFTf.h" #undef SPECTRAL_SELECTION_GLOBAL_SWITCH diff --git a/src/prefs/SpectrumPrefs.cpp b/src/prefs/SpectrumPrefs.cpp index 1dd719079c..e9feefb943 100644 --- a/src/prefs/SpectrumPrefs.cpp +++ b/src/prefs/SpectrumPrefs.cpp @@ -23,7 +23,7 @@ #include <wx/checkbox.h> #include <wx/textctrl.h> -#include "../FFT.h" +#include "FFT.h" #include "../Project.h" #include "../ShuttleGui.h" diff --git a/src/tracks/playabletrack/wavetrack/ui/SampleHandle.h b/src/tracks/playabletrack/wavetrack/ui/SampleHandle.h index 004e0f272d..5899fca23d 100644 --- a/src/tracks/playabletrack/wavetrack/ui/SampleHandle.h +++ b/src/tracks/playabletrack/wavetrack/ui/SampleHandle.h @@ -12,7 +12,7 @@ Paul Licameli #define __AUDACITY_SAMPLE_HANDLE__ #include "../../../../UIHandle.h" -#include "../../../../SampleCount.h" +#include "SampleCount.h" class wxMouseEvent; class wxMouseState; diff --git a/src/tracks/playabletrack/wavetrack/ui/WaveTrackView.h b/src/tracks/playabletrack/wavetrack/ui/WaveTrackView.h index 144e1de236..1c0554e18d 100644 --- a/src/tracks/playabletrack/wavetrack/ui/WaveTrackView.h +++ b/src/tracks/playabletrack/wavetrack/ui/WaveTrackView.h @@ -13,7 +13,7 @@ Paul Licameli split from class WaveTrack #include "../../../ui/CommonTrackView.h" #include "../../../../ClientData.h" -#include "../../../../SampleCount.h" +#include "SampleCount.h" namespace WaveTrackViewConstants{ enum Display : int; } struct WaveTrackSubViewType; diff --git a/src/widgets/Meter.h b/src/widgets/Meter.h index 2c22c30205..e6060e92f0 100644 --- a/src/widgets/Meter.h +++ b/src/widgets/Meter.h @@ -21,7 +21,7 @@ #include <wx/defs.h> #include <wx/timer.h> // member variable -#include "../SampleFormat.h" +#include "SampleFormat.h" #include "Prefs.h" #include "MeterPanelBase.h" // to inherit #include "Ruler.h" // member variable diff --git a/src/widgets/NumericTextCtrl.cpp b/src/widgets/NumericTextCtrl.cpp index edbe85d3b6..9a03407874 100644 --- a/src/widgets/NumericTextCtrl.cpp +++ b/src/widgets/NumericTextCtrl.cpp @@ -168,7 +168,7 @@ different formats. #include "NumericTextCtrl.h" -#include "../SampleCount.h" +#include "SampleCount.h" #include "../AllThemeResources.h" #include "../AColor.h" #include "../KeyboardCapture.h" diff --git a/src/xml/XMLTagHandler.cpp b/src/xml/XMLTagHandler.cpp index 8e32f17737..1dd6fa0327 100644 --- a/src/xml/XMLTagHandler.cpp +++ b/src/xml/XMLTagHandler.cpp @@ -35,6 +35,7 @@ #include <wx/filename.h> #include "FileNames.h" +#include "SampleFormat.h" // Length check. Is in part about not supplying malicious strings to file functions. bool XMLValueChecker::IsGoodString(const wxString & str) -- GitLab