diff --git a/cmake-proxies/CMakeLists.txt b/cmake-proxies/CMakeLists.txt index 5de68d0c6..17e0c8f09 100644 --- a/cmake-proxies/CMakeLists.txt +++ b/cmake-proxies/CMakeLists.txt @@ -160,7 +160,6 @@ set_conan_vars_to_parent() # # directory option symbol req chk version addlib( libsndfile sndfile SNDFILE YES YES "sndfile >= 1.0.28" ) -addlib( libsoxr soxr SOXR YES YES "soxr >= 0.1.1" ) addlib( portaudio-v19 portaudio PORTAUDIO YES YES "" ) addlib( sqlite sqlite SQLITE YES YES "sqlite3 >= 3.32.0" ) diff --git a/cmake-proxies/libsoxr/CMakeLists.txt b/cmake-proxies/libsoxr/CMakeLists.txt index 00afba57f..3cb20ebad 100644 --- a/cmake-proxies/libsoxr/CMakeLists.txt +++ b/cmake-proxies/libsoxr/CMakeLists.txt @@ -95,3 +95,6 @@ target_compile_definitions( ${TARGET} PRIVATE ${DEFINES} ) target_compile_options( ${TARGET} PRIVATE ${OPTIONS} ) target_include_directories( ${TARGET} PRIVATE ${INCLUDES} ) +if( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" ) + target_compile_options( ${TARGET} PRIVATE -fPIC ) +endif() diff --git a/include/audacity/Types.h b/include/audacity/Types.h index be6694fb2..04bf36a5e 100644 --- a/include/audacity/Types.h +++ b/include/audacity/Types.h @@ -58,162 +58,6 @@ // until proper public headers are created for the stuff in here. // ---------------------------------------------------------------------------- -// ---------------------------------------------------------------------------- -// A native 64-bit integer...used when referring to any number of samples -// ---------------------------------------------------------------------------- - -class sampleCount -{ -public: - using type = long long; - static_assert(sizeof(type) == 8, "Wrong width of sampleCount"); - - sampleCount () : value { 0 } {} - - // Allow implicit conversion from integral types - sampleCount ( type v ) : value { v } {} - sampleCount ( unsigned long long v ) : value ( v ) {} - sampleCount ( int v ) : value { v } {} - sampleCount ( unsigned v ) : value { v } {} - sampleCount ( long v ) : value { v } {} - - // unsigned long is 64 bit on some platforms. Let it narrow. - sampleCount ( unsigned long v ) : value ( v ) {} - - // Beware implicit conversions from floating point values! - // Otherwise the meaning of binary operators with sampleCount change - // their meaning when sampleCount is not an alias! - explicit sampleCount ( float f ) : value ( f ) {} - explicit sampleCount ( double d ) : value ( d ) {} - - sampleCount ( const sampleCount& ) = default; - sampleCount &operator= ( const sampleCount& ) = default; - - float as_float() const { return value; } - double as_double() const { return value; } - - long long as_long_long() const { return value; } - - size_t as_size_t() const { - wxASSERT(value >= 0); - wxASSERT(static_cast::type>(value) <= std::numeric_limits::max()); - return value; - } - - sampleCount &operator += (sampleCount b) { value += b.value; return *this; } - sampleCount &operator -= (sampleCount b) { value -= b.value; return *this; } - sampleCount &operator *= (sampleCount b) { value *= b.value; return *this; } - sampleCount &operator /= (sampleCount b) { value /= b.value; return *this; } - sampleCount &operator %= (sampleCount b) { value %= b.value; return *this; } - - sampleCount operator - () const { return -value; } - - sampleCount &operator ++ () { ++value; return *this; } - sampleCount operator ++ (int) - { sampleCount result{ *this }; ++value; return result; } - - sampleCount &operator -- () { --value; return *this; } - sampleCount operator -- (int) - { sampleCount result{ *this }; --value; return result; } - -private: - type value; -}; - -inline bool operator == (sampleCount a, sampleCount b) -{ - return a.as_long_long() == b.as_long_long(); -} - -inline bool operator != (sampleCount a, sampleCount b) -{ - return !(a == b); -} - -inline bool operator < (sampleCount a, sampleCount b) -{ - return a.as_long_long() < b.as_long_long(); -} - -inline bool operator >= (sampleCount a, sampleCount b) -{ - return !(a < b); -} - -inline bool operator > (sampleCount a, sampleCount b) -{ - return b < a; -} - -inline bool operator <= (sampleCount a, sampleCount b) -{ - return !(b < a); -} - -inline sampleCount operator + (sampleCount a, sampleCount b) -{ - return sampleCount{ a } += b; -} - -inline sampleCount operator - (sampleCount a, sampleCount b) -{ - return sampleCount{ a } -= b; -} - -inline sampleCount operator * (sampleCount a, sampleCount b) -{ - return sampleCount{ a } *= b; -} - -inline sampleCount operator / (sampleCount a, sampleCount b) -{ - return sampleCount{ a } /= b; -} - -inline sampleCount operator % (sampleCount a, sampleCount b) -{ - return sampleCount{ a } %= b; -} - -// ---------------------------------------------------------------------------- -// Function returning the minimum of a sampleCount and a size_t, -// hiding the casts -// ---------------------------------------------------------------------------- - -inline size_t limitSampleBufferSize( size_t bufferSize, sampleCount limit ) -{ - return - std::min( sampleCount( bufferSize ), std::max( sampleCount(0), limit ) ) - .as_size_t(); -} - -// ---------------------------------------------------------------------------- -// 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 891b4d805..1b572a4db 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 000000000..9a5693522 --- /dev/null +++ b/libraries/lib-math/CMakeLists.txt @@ -0,0 +1,36 @@ +#[[ +A library of mathematical utilities and manipulation of samples +]]# + +addlib( libsoxr soxr SOXR YES YES "soxr >= 0.1.1" ) + +set( SOURCES + Dither.cpp + Dither.h + FFT.cpp + FFT.h + InterpolateAudio.cpp + InterpolateAudio.h + Matrix.cpp + Matrix.h + RealFFTf.cpp + RealFFTf.h + Resample.cpp + Resample.h + SampleCount.cpp + SampleCount.h + SampleFormat.cpp + SampleFormat.h + Spectrum.cpp + Spectrum.h + float_cast.h +) +set( LIBRARIES + libsoxr + 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 e257243ef..369273b7f 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 158ba2f63..3a946ac88 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 20fe262b1..9ac8f0e9c 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 d19c8d58e..4f036dc6f 100644 --- a/src/InterpolateAudio.h +++ b/libraries/lib-math/InterpolateAudio.h @@ -25,7 +25,6 @@ #ifndef __AUDACITY_INTERPOLATE_AUDIO__ #define __AUDACITY_INTERPOLATE_AUDIO__ - #include // 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 ed443d1ae..f26c5df0d 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 #include #include 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 02a221aab..a4fc294ad 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/Resample.cpp b/libraries/lib-math/Resample.cpp similarity index 100% rename from src/Resample.cpp rename to libraries/lib-math/Resample.cpp diff --git a/src/Resample.h b/libraries/lib-math/Resample.h similarity index 98% rename from src/Resample.h rename to libraries/lib-math/Resample.h index dee207715..d15ee8fe4 100644 --- a/src/Resample.h +++ b/libraries/lib-math/Resample.h @@ -12,8 +12,6 @@ #ifndef __AUDACITY_RESAMPLE_H__ #define __AUDACITY_RESAMPLE_H__ - - #include "SampleFormat.h" template< typename Enum > class EnumSetting; @@ -25,7 +23,7 @@ struct soxr_deleter { }; using soxrHandle = std::unique_ptr; -class AUDACITY_DLL_API Resample final +class MATH_API Resample final { public: /// Resamplers may have more than one method, offering a diff --git a/libraries/lib-math/SampleCount.cpp b/libraries/lib-math/SampleCount.cpp new file mode 100644 index 000000000..f0258ba91 --- /dev/null +++ b/libraries/lib-math/SampleCount.cpp @@ -0,0 +1,26 @@ +/********************************************************************** + + Audacity: A Digital Audio Editor + + @file SampleCount.cpp + + Paul Licameli split from audacity/Types.h + +**********************************************************************/ +#include "SampleCount.h" + +#include +#include + +size_t sampleCount::as_size_t() const { + wxASSERT(value >= 0); + wxASSERT(static_cast::type>(value) <= std::numeric_limits::max()); + return value; +} + +size_t limitSampleBufferSize( size_t bufferSize, sampleCount limit ) +{ + return + std::min( sampleCount( bufferSize ), std::max( sampleCount(0), limit ) ) + .as_size_t(); +} diff --git a/libraries/lib-math/SampleCount.h b/libraries/lib-math/SampleCount.h new file mode 100644 index 000000000..19be03625 --- /dev/null +++ b/libraries/lib-math/SampleCount.h @@ -0,0 +1,134 @@ +/********************************************************************** + + Audacity: A Digital Audio Editor + + @file SampleCount.h + + Paul Licameli split from audacity/Types.h + +**********************************************************************/ +#ifndef __AUDACITY_SAMPLE_COUNT__ +#define __AUDACITY_SAMPLE_COUNT__ + +#include + +//! Positions or offsets within audio files need a wide type +/*! This type disallows implicit interconversions with narrower types */ +class MATH_API sampleCount +{ +public: + using type = long long; + static_assert(sizeof(type) == 8, "Wrong width of sampleCount"); + + sampleCount () : value { 0 } {} + + // Allow implicit conversion from integral types + sampleCount ( type v ) : value { v } {} + sampleCount ( unsigned long long v ) : value ( v ) {} + sampleCount ( int v ) : value { v } {} + sampleCount ( unsigned v ) : value { v } {} + sampleCount ( long v ) : value { v } {} + + // unsigned long is 64 bit on some platforms. Let it narrow. + sampleCount ( unsigned long v ) : value ( v ) {} + + // Beware implicit conversions from floating point values! + // Otherwise the meaning of binary operators with sampleCount change + // their meaning when sampleCount is not an alias! + explicit sampleCount ( float f ) : value ( f ) {} + explicit sampleCount ( double d ) : value ( d ) {} + + sampleCount ( const sampleCount& ) = default; + sampleCount &operator= ( const sampleCount& ) = default; + + float as_float() const { return value; } + double as_double() const { return value; } + + long long as_long_long() const { return value; } + + size_t as_size_t() const; + + sampleCount &operator += (sampleCount b) { value += b.value; return *this; } + sampleCount &operator -= (sampleCount b) { value -= b.value; return *this; } + sampleCount &operator *= (sampleCount b) { value *= b.value; return *this; } + sampleCount &operator /= (sampleCount b) { value /= b.value; return *this; } + sampleCount &operator %= (sampleCount b) { value %= b.value; return *this; } + + sampleCount operator - () const { return -value; } + + sampleCount &operator ++ () { ++value; return *this; } + sampleCount operator ++ (int) + { sampleCount result{ *this }; ++value; return result; } + + sampleCount &operator -- () { --value; return *this; } + sampleCount operator -- (int) + { sampleCount result{ *this }; --value; return result; } + +private: + type value; +}; + +inline bool operator == (sampleCount a, sampleCount b) +{ + return a.as_long_long() == b.as_long_long(); +} + +inline bool operator != (sampleCount a, sampleCount b) +{ + return !(a == b); +} + +inline bool operator < (sampleCount a, sampleCount b) +{ + return a.as_long_long() < b.as_long_long(); +} + +inline bool operator >= (sampleCount a, sampleCount b) +{ + return !(a < b); +} + +inline bool operator > (sampleCount a, sampleCount b) +{ + return b < a; +} + +inline bool operator <= (sampleCount a, sampleCount b) +{ + return !(b < a); +} + +inline sampleCount operator + (sampleCount a, sampleCount b) +{ + return sampleCount{ a } += b; +} + +inline sampleCount operator - (sampleCount a, sampleCount b) +{ + return sampleCount{ a } -= b; +} + +inline sampleCount operator * (sampleCount a, sampleCount b) +{ + return sampleCount{ a } *= b; +} + +inline sampleCount operator / (sampleCount a, sampleCount b) +{ + return sampleCount{ a } /= b; +} + +inline sampleCount operator % (sampleCount a, sampleCount b) +{ + return sampleCount{ a } %= b; +} + +// ---------------------------------------------------------------------------- +// Function returning the minimum of a sampleCount and a size_t, +// hiding the casts +// ---------------------------------------------------------------------------- + +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 1d4e7baee..25f38ba1d 100644 --- a/src/SampleFormat.cpp +++ b/libraries/lib-math/SampleFormat.cpp @@ -35,6 +35,7 @@ *//*******************************************************************/ #include "SampleFormat.h" +#include "Dither.h" // CYCLE #include #include 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 90e88ed1f..d2ca09069 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 - -#include "audacity/Types.h" -#include "Dither.h" +#include // // 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 aaaae6356..3ff362bf6 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 6d3fc734a..6886e3d93 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/AudioIO.h b/src/AudioIO.h index a2108b31c..5f6d52c9a 100644 --- a/src/AudioIO.h +++ b/src/AudioIO.h @@ -40,6 +40,7 @@ using NoteTrackConstArray = std::vector < std::shared_ptr< const NoteTrack > >; #include // to declare custom event types +#include "SampleCount.h" #include "SampleFormat.h" class wxArrayString; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9877f076f..353d85ce9 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,22 +224,14 @@ list( APPEND SOURCES ProjectWindow.h ProjectWindowBase.cpp ProjectWindowBase.h - RealFFTf.cpp - RealFFTf.h - RealFFTf48x.cpp - RealFFTf48x.h RefreshCode.h Registrar.h Registry.cpp Registry.h - Resample.cpp - Resample.h RingBuffer.cpp RingBuffer.h SampleBlock.cpp SampleBlock.h - SampleFormat.cpp - SampleFormat.h Screenshot.cpp Screenshot.h SelectUtilities.cpp @@ -270,8 +254,6 @@ list( APPEND SOURCES Snap.h SoundActivatedRecord.cpp SoundActivatedRecord.h - Spectrum.cpp - Spectrum.h SpectrumAnalyst.cpp SpectrumAnalyst.h SplashDialog.cpp @@ -332,7 +314,6 @@ list( APPEND SOURCES WrappedType.h ZoomInfo.cpp ZoomInfo.h - float_cast.h wxFileNameWrapper.h # Commands @@ -1091,7 +1072,6 @@ list( APPEND LIBRARIES expat::expat libmp3lame::libmp3lame libsndfile - libsoxr portaudio-v19 sqlite $<$:crashreports> @@ -1352,8 +1332,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 1f2d1be17..53f55de34 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 03619f180..14394b9aa 100644 --- a/src/FileFormats.h +++ b/src/FileFormats.h @@ -13,8 +13,8 @@ -#include "audacity/Types.h" #include "Identifier.h" +#include "SampleFormat.h" //#include #include diff --git a/src/Mix.h b/src/Mix.h index 2d678da8e..5eae40b88 100644 --- a/src/Mix.h +++ b/src/Mix.h @@ -20,9 +20,11 @@ #ifndef __AUDACITY_MIX__ #define __AUDACITY_MIX__ +#include "audacity/Types.h" #include "SampleFormat.h" #include +class sampleCount; class Resample; class BoundedEnvelope; class WaveTrackFactory; diff --git a/src/RingBuffer.cpp b/src/RingBuffer.cpp index a5d54dac6..b62e8bb58 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 dbe5b119b..8d80fa195 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 #include diff --git a/src/Sequence.h b/src/Sequence.h index 4b5c791f4..e5f2ba56d 100644 --- a/src/Sequence.h +++ b/src/Sequence.h @@ -18,7 +18,7 @@ #include "SampleFormat.h" #include "xml/XMLTagHandler.h" -#include "Identifier.h" +#include "SampleCount.h" class SampleBlock; class SampleBlockFactory; diff --git a/src/VoiceKey.h b/src/VoiceKey.h index 52e7f41c2..409e8266a 100644 --- a/src/VoiceKey.h +++ b/src/VoiceKey.h @@ -16,7 +16,7 @@ #define M_PI 3.14159265358979323846 /* pi */ #endif -#include "audacity/Types.h" +#include "SampleCount.h" class WaveTrack; diff --git a/src/WaveClip.h b/src/WaveClip.h index ca109aa62..fe5407374 100644 --- a/src/WaveClip.h +++ b/src/WaveClip.h @@ -25,6 +25,7 @@ class BlockArray; class Envelope; class ProgressDialog; +class sampleCount; class SampleBlock; class SampleBlockFactory; using SampleBlockFactoryPtr = std::shared_ptr; diff --git a/src/WaveTrack.h b/src/WaveTrack.h index a8324453d..67eb7ef15 100644 --- a/src/WaveTrack.h +++ b/src/WaveTrack.h @@ -12,6 +12,7 @@ #define __AUDACITY_WAVETRACK__ #include "Track.h" +#include "SampleCount.h" #include #include diff --git a/src/commands/Demo.h b/src/commands/Demo.h index cb76b0c84..61f2ca970 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 b9519b525..1e11a4463 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/ChangeSpeed.cpp b/src/effects/ChangeSpeed.cpp index a13b3717d..f6049657f 100644 --- a/src/effects/ChangeSpeed.cpp +++ b/src/effects/ChangeSpeed.cpp @@ -25,7 +25,7 @@ #include "../LabelTrack.h" #include "Prefs.h" -#include "../Resample.h" +#include "Resample.h" #include "../Shuttle.h" #include "../ShuttleGui.h" #include "../widgets/NumericTextCtrl.h" diff --git a/src/effects/Compressor.cpp b/src/effects/Compressor.cpp index b7d73fc68..ae03ece99 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/EBUR128.cpp b/src/effects/EBUR128.cpp index 7978380c8..dd7e94b12 100644 --- a/src/effects/EBUR128.cpp +++ b/src/effects/EBUR128.cpp @@ -9,6 +9,7 @@ Max Maisel ***********************************************************************/ #include "EBUR128.h" +#include EBUR128::EBUR128(double rate, size_t channels) : mChannelCount(channels) diff --git a/src/effects/Effect.h b/src/effects/Effect.h index f368f7330..225c3e4b1 100644 --- a/src/effects/Effect.h +++ b/src/effects/Effect.h @@ -27,7 +27,9 @@ class wxWindow; #include "ConfigInterface.h" #include "EffectInterface.h" +#include "PluginInterface.h" +#include "SampleCount.h" #include "../SelectedRegion.h" #include "../Track.h" diff --git a/src/effects/Equalization.cpp b/src/effects/Equalization.cpp index d453eceff..c5861666f 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 b0a908467..67c5a38ca 100644 --- a/src/effects/Equalization.h +++ b/src/effects/Equalization.h @@ -18,7 +18,7 @@ #include // 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 8b05bee70..0cc6d12d6 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 7a275d1ba..7c2823ea1 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 57fff709f..18ad678b1 100644 --- a/src/effects/Repair.cpp +++ b/src/effects/Repair.cpp @@ -28,7 +28,7 @@ the audio, rather than actually finding the clicks. #include -#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 1f90145a8..3d2d59e68 100644 --- a/src/effects/VST/VSTEffect.cpp +++ b/src/effects/VST/VSTEffect.cpp @@ -27,6 +27,7 @@ #include "VSTEffect.h" #include "../../ModuleManager.h" +#include "SampleCount.h" #include "../../widgets/ProgressDialog.h" diff --git a/src/effects/VST/VSTEffect.h b/src/effects/VST/VSTEffect.h index f3ef7404a..ef306cffc 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 e3053239c..108c5ca45 100644 --- a/src/effects/audiounits/AudioUnitEffect.cpp +++ b/src/effects/audiounits/AudioUnitEffect.cpp @@ -19,6 +19,7 @@ #if USE_AUDIO_UNITS #include "AudioUnitEffect.h" #include "../../ModuleManager.h" +#include "SampleCount.h" #include #include diff --git a/src/effects/ladspa/LadspaEffect.cpp b/src/effects/ladspa/LadspaEffect.cpp index 363aa1a39..f7c5798f3 100644 --- a/src/effects/ladspa/LadspaEffect.cpp +++ b/src/effects/ladspa/LadspaEffect.cpp @@ -24,6 +24,7 @@ effects from this one class. #include "LadspaEffect.h" // This class's header file +#include "SampleCount.h" #include diff --git a/src/effects/ladspa/LadspaEffect.h b/src/effects/ladspa/LadspaEffect.h index ebd001e70..8c1970e8b 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.cpp b/src/effects/lv2/LV2Effect.cpp index da2909bc4..424223f47 100755 --- a/src/effects/lv2/LV2Effect.cpp +++ b/src/effects/lv2/LV2Effect.cpp @@ -22,6 +22,7 @@ #endif #include "LV2Effect.h" +#include "SampleCount.h" #include diff --git a/src/effects/lv2/LV2Effect.h b/src/effects/lv2/LV2Effect.h index be249f191..bb5b1d982 100755 --- a/src/effects/lv2/LV2Effect.h +++ b/src/effects/lv2/LV2Effect.h @@ -38,7 +38,7 @@ class wxArrayString; #include #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 f972e3c02..7a88e9311 100644 --- a/src/export/Export.h +++ b/src/export/Export.h @@ -15,7 +15,7 @@ #include #include // 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 236a1c98e..096dfa2df 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 98efdf030..a4f1f3cc9 100644 --- a/src/export/ExportFLAC.cpp +++ b/src/export/ExportFLAC.cpp @@ -29,7 +29,7 @@ and libvorbis examples, Monty #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 4c998e054..46fb1db3f 100644 --- a/src/export/ExportMP3.cpp +++ b/src/export/ExportMP3.cpp @@ -80,7 +80,7 @@ #include #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 a7fffd279..f2edfe9be 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 78c9fb54d..7a9d6f958 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 a0b2a2c21..45020d30e 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 #include -#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 5fba4fe71..9df7dff49 100644 --- a/src/import/SpecPowerMeter.h +++ b/src/import/SpecPowerMeter.h @@ -12,7 +12,7 @@ #define __AUDACITY_SPECPOWERMETER_H_ #include -#include "../SampleFormat.h" +#include "SampleFormat.h" class SpecPowerCalculation { diff --git a/src/prefs/QualityPrefs.cpp b/src/prefs/QualityPrefs.cpp index 1357c6611..42f77dd6a 100644 --- a/src/prefs/QualityPrefs.cpp +++ b/src/prefs/QualityPrefs.cpp @@ -24,9 +24,9 @@ #include #include "../AudioIOBase.h" -#include "../Dither.h" +#include "Dither.h" #include "Prefs.h" -#include "../Resample.h" +#include "Resample.h" #include "../ShuttleGui.h" #define ID_SAMPLE_RATE_CHOICE 7001 diff --git a/src/prefs/QualitySettings.h b/src/prefs/QualitySettings.h index fb5431160..9bc0b430e 100644 --- a/src/prefs/QualitySettings.h +++ b/src/prefs/QualitySettings.h @@ -13,6 +13,7 @@ #include #include "Prefs.h" // for EnumSetting +#include "SampleFormat.h" class IntSetting; diff --git a/src/prefs/SpectrogramSettings.cpp b/src/prefs/SpectrogramSettings.cpp index 66ecc675e..c71b0e3bf 100644 --- a/src/prefs/SpectrogramSettings.cpp +++ b/src/prefs/SpectrogramSettings.cpp @@ -21,7 +21,7 @@ Paul Licameli #include -#include "../FFT.h" +#include "FFT.h" #include "Prefs.h" #include diff --git a/src/prefs/SpectrogramSettings.h b/src/prefs/SpectrogramSettings.h index b1d7e7495..fecab413e 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 1dd719079..e9feefb94 100644 --- a/src/prefs/SpectrumPrefs.cpp +++ b/src/prefs/SpectrumPrefs.cpp @@ -23,7 +23,7 @@ #include #include -#include "../FFT.h" +#include "FFT.h" #include "../Project.h" #include "../ShuttleGui.h" diff --git a/src/toolbars/TranscriptionToolBar.h b/src/toolbars/TranscriptionToolBar.h index 6d10226df..ef0779fb0 100644 --- a/src/toolbars/TranscriptionToolBar.h +++ b/src/toolbars/TranscriptionToolBar.h @@ -17,8 +17,6 @@ #include // member variable -#include "audacity/Types.h" - class wxChoice; class wxCommandEvent; class wxImage; @@ -28,6 +26,7 @@ class AButton; class ASlider; class AudacityProject; class BoundedEnvelope; +class sampleCount; class WaveTrack; #ifdef EXPERIMENTAL_VOICE_DETECTION diff --git a/src/tracks/playabletrack/wavetrack/ui/SampleHandle.h b/src/tracks/playabletrack/wavetrack/ui/SampleHandle.h index 875082883..5899fca23 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 "audacity/Types.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 b880e85e3..1c0554e18 100644 --- a/src/tracks/playabletrack/wavetrack/ui/WaveTrackView.h +++ b/src/tracks/playabletrack/wavetrack/ui/WaveTrackView.h @@ -13,8 +13,8 @@ Paul Licameli split from class WaveTrack #include "../../../ui/CommonTrackView.h" #include "../../../../ClientData.h" +#include "SampleCount.h" namespace WaveTrackViewConstants{ enum Display : int; } -#include "audacity/Types.h" struct WaveTrackSubViewType; class CutlineHandle; diff --git a/src/widgets/Meter.h b/src/widgets/Meter.h index 2c22c3020..e6060e92f 100644 --- a/src/widgets/Meter.h +++ b/src/widgets/Meter.h @@ -21,7 +21,7 @@ #include #include // 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 4c8937a0b..9a0340787 100644 --- a/src/widgets/NumericTextCtrl.cpp +++ b/src/widgets/NumericTextCtrl.cpp @@ -168,7 +168,7 @@ different formats. #include "NumericTextCtrl.h" -#include "audacity/Types.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 8e32f1773..1dd6fa032 100644 --- a/src/xml/XMLTagHandler.cpp +++ b/src/xml/XMLTagHandler.cpp @@ -35,6 +35,7 @@ #include #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)