#pragma once #include #include #include #include #include #include #include using namespace std; using namespace cv; namespace fs = std::filesystem; using namespace Eigen; struct WAVHeader { char riff[4]; uint32_t fileSize; char wave[4]; char fmt[4]; uint32_t fmtSize; uint16_t audioFormat; uint16_t numChannels; uint32_t sampleRate; uint32_t byteRate; uint16_t blockAlign; uint16_t bitsPerSample; char data[4]; uint32_t dataSize; }; vector tto(std::vector>& I, int N); vector int_tto(std::vector>& I, int N); std::vector> ott(const std::vector& I, int N); std::vector> int_ott(const std::vector& I, int N); //void haarWavelet(vector &signal, int numLevels); // //void haarWaveletTransform(vector &signal); // //void inverseHaarWavelet(vector &signal, int numLevels); // //void inverseHaarWaveletTransform(vector &signal); void fft1d(vector>& data, bool invert); void fft2(Mat& input, Mat& output, bool invert, bool normalize); void zhishujufenjie62(MatrixXd Gp, int M, int Nmax, vector> &A_nm, vector> &zmlist); //void printMessage(vector &msg); vector floatToPCM16(std::vector& input, float scaleFactor); double getGlobalProgress(); void embedWatermark(); void save_audio_drwav(const wchar_t* outputFilename, vector& yo, int sampleRate, int channels); void save_audio_drmp3(const wchar_t* outputFilename, vector& yo, int sampleRate, int channels); vector mp3ToDoubleVector(const char* mp3File, int& channels, long& rate, int& wavelength); bool isMp3File(fs::path& path, string fpath); string toUTF8(const wstring& wstr); wstring toWideString(const std::string& str); void modifyAndCombinePath(const char* path, const char* save_path, char* output); string ConvertUTF16ToMBCS(const wchar_t* utf16Str); bool transResampleReadWAV(const char* inputPath, vector& buffer, int& sampleRate, int& channels); bool transResampleWriteWAV(const char* outputPath, const vector& buffer, double sampleRate, int channels); void resample(const float* inputBuffer, size_t inputSize, float* outputBuffer, size_t& outputSize, double inputRate, double outputRate, int channels); void convert_wav(vector& inputBuffer, int& inputRate, int channels, const wchar_t* outputPath); wstring AddSuffixToPath(const wchar_t* originalPath, const wstring& suffix); bool allEqual(const vector& vec1, const vector& vec2);