/[svn]/linuxsampler/trunk/src/common/RTMath.h
ViewVC logotype

Diff of /linuxsampler/trunk/src/common/RTMath.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 319 by schoenebeck, Mon Dec 13 00:46:42 2004 UTC revision 361 by schoenebeck, Wed Feb 9 01:22:18 2005 UTC
# Line 24  Line 24 
24  #define __RT_MATH_H__  #define __RT_MATH_H__
25    
26  #include <math.h>  #include <math.h>
27    #include <stdint.h>
28  #include "global.h"  #include "global.h"
29    
30  /// Needed for calculating frequency ratio used to pitch a sample  /// Needed for calculating frequency ratio used to pitch a sample
# Line 37  enum implementation_t { Line 38  enum implementation_t {
38  class RTMathBase {  class RTMathBase {
39      public:      public:
40          /**          /**
41             * Highly accurate time stamp.
42             */
43            typedef uint32_t time_stamp_t;
44    
45            /**
46             * We read the processor's cycle count register as a reference
47             * for the real time. These are of course only abstract values
48             * with arbitrary time entity, but that's not a problem as long
49             * as we calculate relatively.
50             */
51            static time_stamp_t CreateTimeStamp();
52    
53            /**
54           * Calculates the frequency ratio for a pitch value given in cents           * Calculates the frequency ratio for a pitch value given in cents
55           * (assuming equal tempered scale of course, divided into 12           * (assuming equal tempered scale of course, divided into 12
56           * semitones per octave and 100 cents per semitone).           * semitones per octave and 100 cents per semitone).
# Line 75  class __RTMath : public RTMathBase { Line 89  class __RTMath : public RTMathBase {
89                  case CPP: {                  case CPP: {
90                      return (int) a;                      return (int) a;
91                  }                  }
92                    #if ARCH_X86
93                  case ASM_X86_MMX_SSE: {                  case ASM_X86_MMX_SSE: {
94                      int ret;                      int ret;
95                      asm (                      asm (
# Line 84  class __RTMath : public RTMathBase { Line 99  class __RTMath : public RTMathBase {
99                      );                      );
100                      return ret;                      return ret;
101                  }                  }
102                    #endif // ARCH_X86
103              }              }
104          }          }
105    
# Line 97  class __RTMath : public RTMathBase { Line 113  class __RTMath : public RTMathBase {
113                  case CPP: {                  case CPP: {
114                      return (float) a;                      return (float) a;
115                  }                  }
116                    #if ARCH_X86
117                  case ASM_X86_MMX_SSE: {                  case ASM_X86_MMX_SSE: {
118                      float ret;                      float ret;
119                      asm (                      asm (
# Line 107  class __RTMath : public RTMathBase { Line 124  class __RTMath : public RTMathBase {
124                      );                      );
125                      return ret;                      return ret;
126                  }                  }
127                    #endif // ARCH_X86
128              }              }
129          }          }
130    
# Line 122  class __RTMath : public RTMathBase { Line 140  class __RTMath : public RTMathBase {
140                  case CPP: {                  case CPP: {
141                      return (a + b);                      return (a + b);
142                  }                  }
143                    #if ARCH_X86
144                  case ASM_X86_MMX_SSE: {                  case ASM_X86_MMX_SSE: {
145                      float ret;                      float ret;
146                      asm (                      asm (
# Line 133  class __RTMath : public RTMathBase { Line 152  class __RTMath : public RTMathBase {
152                      );                      );
153                      return ret;                      return ret;
154                  }                  }
155                    #endif // ARCH_X86
156              }              }
157          }          }
158    
# Line 145  class __RTMath : public RTMathBase { Line 165  class __RTMath : public RTMathBase {
165                  case CPP: {                  case CPP: {
166                      return (a - b);                      return (a - b);
167                  }                  }
168                    #if ARCH_X86
169                  case ASM_X86_MMX_SSE: {                  case ASM_X86_MMX_SSE: {
170                      float ret;                      float ret;
171                      asm (                      asm (
# Line 156  class __RTMath : public RTMathBase { Line 177  class __RTMath : public RTMathBase {
177                      );                      );
178                      return ret;                      return ret;
179                  }                  }
180                    #endif // ARCH_X86
181              }              }
182          }          }
183    
# Line 168  class __RTMath : public RTMathBase { Line 190  class __RTMath : public RTMathBase {
190                  case CPP: {                  case CPP: {
191                      return (a * b);                      return (a * b);
192                  }                  }
193                    #if ARCH_X86
194                  case ASM_X86_MMX_SSE: {                  case ASM_X86_MMX_SSE: {
195                      float ret;                      float ret;
196                      asm (                      asm (
# Line 179  class __RTMath : public RTMathBase { Line 202  class __RTMath : public RTMathBase {
202                      );                      );
203                      return ret;                      return ret;
204                  }                  }
205                    #endif // ARCH_X86
206              }              }
207          }          }
208    
# Line 191  class __RTMath : public RTMathBase { Line 215  class __RTMath : public RTMathBase {
215                  case CPP: {                  case CPP: {
216                      return (a / b);                      return (a / b);
217                  }                  }
218                    #if ARCH_X86
219                  case ASM_X86_MMX_SSE: {                  case ASM_X86_MMX_SSE: {
220                      float ret;                      float ret;
221                      asm (                      asm (
# Line 202  class __RTMath : public RTMathBase { Line 227  class __RTMath : public RTMathBase {
227                      );                      );
228                      return ret;                      return ret;
229                  }                  }
230                    #endif // ARCH_X86
231              }              }
232          }          }
233    
# Line 214  class __RTMath : public RTMathBase { Line 240  class __RTMath : public RTMathBase {
240                  case CPP: {                  case CPP: {
241                      return (b < a) ? b : a;                      return (b < a) ? b : a;
242                  }                  }
243                    #if ARCH_X86
244                  case ASM_X86_MMX_SSE: {                  case ASM_X86_MMX_SSE: {
245                      float ret;                      float ret;
246                      asm (                      asm (
# Line 225  class __RTMath : public RTMathBase { Line 252  class __RTMath : public RTMathBase {
252                      );                      );
253                      return ret;                      return ret;
254                  }                  }
255                    #endif // ARCH_X86
256              }              }
257          }          }
258    
# Line 237  class __RTMath : public RTMathBase { Line 265  class __RTMath : public RTMathBase {
265                  case CPP: {                  case CPP: {
266                      return (b > a) ? b : a;                      return (b > a) ? b : a;
267                  }                  }
268                    #if ARCH_X86
269                  case ASM_X86_MMX_SSE: {                  case ASM_X86_MMX_SSE: {
270                      float ret;                      float ret;
271                      asm (                      asm (
# Line 248  class __RTMath : public RTMathBase { Line 277  class __RTMath : public RTMathBase {
277                      );                      );
278                      return ret;                      return ret;
279                  }                  }
280                    #endif // ARCH_X86
281              }              }
282          }          }
283    
# Line 260  class __RTMath : public RTMathBase { Line 290  class __RTMath : public RTMathBase {
290                  case CPP: {                  case CPP: {
291                      return fmodf(a, b);                      return fmodf(a, b);
292                  }                  }
293                    #if ARCH_X86
294                  case ASM_X86_MMX_SSE: {                  case ASM_X86_MMX_SSE: {
295                      float ret;                      float ret;
296                      asm (                      asm (
# Line 278  class __RTMath : public RTMathBase { Line 309  class __RTMath : public RTMathBase {
309                      );                      );
310                      return ret;                      return ret;
311                  }                  }
312                    #endif // ARCH_X86
313              }              }
314          }          }
315  };  };

Legend:
Removed from v.319  
changed lines
  Added in v.361

  ViewVC Help
Powered by ViewVC