1 
/* 

2 
* Copyright (C) 20052007 by Pieter Palmers 

3 
* 

4 
* This file is part of FFADO 

5 
* FFADO = Free Firewire (pro)audio drivers for linux 

6 
* 

7 
* FFADO is based upon FreeBoB. 

8 
* 

9 
* This library is free software; you can redistribute it and/or 

10 
* modify it under the terms of the GNU Lesser General Public 

11 
* License version 2.1, as published by the Free Software Foundation; 

12 
* 

13 
* This library is distributed in the hope that it will be useful, 

14 
* but WITHOUT ANY WARRANTY; without even the implied warranty of 

15 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 

16 
* Lesser General Public License for more details. 

17 
* 

18 
* You should have received a copy of the GNU Lesser General Public 

19 
* License along with this library; if not, write to the Free Software 

20 
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 

21 
* MA 021101301 USA 

22 
*/ 

23 


24 
#ifndef __FFADO_DELAYLOCKEDLOOP__ 

25 
#define __FFADO_DELAYLOCKEDLOOP__ 

26 


27 
namespace Util { 

28 


29 
class DelayLockedLoop { 

30 


31 
public: 

32 


33 
DelayLockedLoop(unsigned int order, float *coeffs); 

34 
DelayLockedLoop(unsigned int order); 

35 
DelayLockedLoop(); 

36 


37 
virtual ~DelayLockedLoop(); 

38 


39 
float getCoefficient(unsigned int i); 

40 
void setCoefficient(unsigned int i, float c); 

41 


42 
void setIntegrator(unsigned int i, float c); 

43 


44 
void reset(); 

45 


46 
unsigned int getOrder(); 

47 
void setOrder(unsigned int i); 

48 
void setOrder(unsigned int order, float* coeffs); 

49 


50 
void put(float v); 

51 
float get(); 

52 
float getError(); 

53 


54 
protected: 

55 


56 
unsigned int m_order; 

57 


58 
float *m_coeffs; 

59 
float *m_nodes; 

60 
float m_error; 

61 
}; 

62 


63 
} // end of namespace FFADOUtil 

64 


65 
#endif /* __FFADO_DELAYLOCKEDLOOP__ */ 

66 


67 

