//Copyright+LGPL //----------------------------------------------------------------------------------------------------------------------------------------------- // Copyright 2000-2013 Makoto Mori, Nobuyuki Oba //----------------------------------------------------------------------------------------------------------------------------------------------- // This file is part of MMSSTV. // MMSSTV 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 3 of the License, or (at your option) any later version. // MMSSTV 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 MMTTY. If not, see // . //----------------------------------------------------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------- #ifndef FilterH #define FilterH //--------------------------------------------------------------------------- #include //JA7UDE 0428 #include "Wave.h" #include "fft.h" #include "sstv.h" //--------------------------------------------------------------------------- class CWaveFile { private: HMMIO m_Handle; int m_dis; BYTE m_Head[4]; public: long m_length; long m_pos; int m_mode; int m_pause; int m_autopause; AnsiString m_FileName; __fastcall CWaveFile(); __fastcall ~CWaveFile(); void __fastcall FileClose(void); void __fastcall Rec(LPCSTR pName); BOOL __fastcall Play(LPCSTR pName); void __fastcall Rewind(void); void __fastcall ReadWrite(double *s, int size); long __fastcall GetPos(void); void __fastcall Seek(int n); int __fastcall ChangeSampFreq(LPCSTR tName, LPCSTR pName, int sSamp); }; class TSound : public TThread { private: BOOL m_Stop; WAVEFORMATEX m_WFX; double Buff[8192]; void __fastcall ErrorMsg(void); double __fastcall GetScopeRange(double &low, double center, double shift); void __fastcall ReadWrite(double *s, int size); int __fastcall UpdateFifoSize(void); void __fastcall JobSuspend(void); BOOL __fastcall ReInitSound(int sw); public: CWave Wave; protected: void __fastcall Execute(); public: __fastcall TSound(bool CreateSuspended); __fastcall ~TSound(); void __fastcall SetDeviceID(void); void __fastcall Stop(void); void __fastcall ReqStop(void); void __fastcall WaitStop(void); void __fastcall TimingWait(void); void __fastcall InitSound(void); void __fastcall SetTXRX(int sw); void __fastcall TaskPriority(void); int m_lms; int m_lms_AN; CLMS lms; #if VARITEST CNoise ns; #endif int m_notch; CNotch notch; CSSTVDEM SSTVDEM; CSSTVMOD SSTVMOD; CWaveFile WaveFile; void __fastcall FileClose(void); void __fastcall Rec(LPCSTR pName); void __fastcall Play(LPCSTR pName); void __fastcall Rewind(void); void __fastcall InitWFX(void); //UINT m_IDDevice; //ja7ude 0525 //UINT m_IDTXDevice; int m_IDDevice; int m_IDTXDevice; int m_playmode; int m_susp; int m_suspack; int m_Tx; int m_ReqTx; int m_ReqSpeedTest; DWORD m_SpeedValue; void __fastcall JobSpeedTest(); CFFT fftIN; int m_Err; int m_BuffSize; int m_FifoSizeRX; int m_FifoSizeTX; int m_ReqFifoSize; inline int __fastcall GetOutCount(int sw){ return (sw ? Wave.GetOutBCC() : Wave.GetOutBC()) * m_BuffSize; } inline void __fastcall TrigBCC(void){ Wave.SetOutBCC(Wave.GetOutBC()); } inline int __fastcall GetBCC(void){ return Wave.GetOutBCC(); } int __fastcall IsBusy(void); }; //--------------------------------------------------------------------------- class CWaveStrage { private: HMMIO m_Handle; AnsiString m_FileName; public: long m_pos; long m_wpos; long m_rpos; short *pData; short *pSync; __fastcall CWaveStrage(); __fastcall ~CWaveStrage(){Close();}; void __fastcall Close(void); void __fastcall Open(void); void __fastcall RInit(void); void __fastcall WInit(void); int __fastcall IsOpen(void){return m_Handle != NULL ? TRUE : FALSE;}; void __fastcall Read(short *sp, int size); void __fastcall Write(short *sp, int size); void __fastcall Seek(int n); }; //--------------------------------------------------------------------------- #endif