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

Diff of /linuxsampler/trunk/src/engines/common/Resampler.h

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

revision 2376 by senoner, Thu Nov 15 23:35:45 2007 UTC revision 2377 by schoenebeck, Thu Oct 4 18:16:26 2012 UTC
# Line 3  Line 3 
3   *   LinuxSampler - modular, streaming capable sampler                     *   *   LinuxSampler - modular, streaming capable sampler                     *
4   *                                                                         *   *                                                                         *
5   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *
6   *   Copyright (C) 2005 - 2007 Christian Schoenebeck                       *   *   Copyright (C) 2005 - 2012 Christian Schoenebeck                       *
7   *                                                                         *   *                                                                         *
8   *   This program is free software; you can redistribute it and/or modify  *   *   This program is free software; you can redistribute it and/or modify  *
9   *   it under the terms of the GNU General Public License as published by  *   *   it under the terms of the GNU General Public License as published by  *
# Line 55  namespace LinuxSampler { Line 55  namespace LinuxSampler {
55      template<bool INTERPOLATE,bool BITDEPTH24>      template<bool INTERPOLATE,bool BITDEPTH24>
56      class Resampler {      class Resampler {
57          public:          public:
58              inline static float GetNextSampleMonoCPP(sample_t* pSrc, double* Pos, float& Pitch) {              inline static float GetNextSampleMonoCPP(sample_t* __restrict pSrc, double* __restrict Pos, float& Pitch) {
59                  if (INTERPOLATE) return Interpolate1StepMonoCPP(pSrc, Pos, Pitch);                  if (INTERPOLATE) return Interpolate1StepMonoCPP(pSrc, Pos, Pitch);
60                  else { // no pitch, so no interpolation necessary                  else { // no pitch, so no interpolation necessary
61                      int pos_int = (int) *Pos;                      int pos_int = (int) *Pos;
# Line 64  namespace LinuxSampler { Line 64  namespace LinuxSampler {
64                  }                  }
65              }              }
66    
67              inline static stereo_sample_t GetNextSampleStereoCPP(sample_t* pSrc, double* Pos, float& Pitch) {              inline static stereo_sample_t GetNextSampleStereoCPP(sample_t* __restrict pSrc, double* __restrict Pos, float& Pitch) {
68                  if (INTERPOLATE) return Interpolate1StepStereoCPP(pSrc, Pos, Pitch);                  if (INTERPOLATE) return Interpolate1StepStereoCPP(pSrc, Pos, Pitch);
69                  else { // no pitch, so no interpolation necessary                  else { // no pitch, so no interpolation necessary
70                      int pos_int = (int) *Pos;                      int pos_int = (int) *Pos;
# Line 149  namespace LinuxSampler { Line 149  namespace LinuxSampler {
149    
150          protected:          protected:
151    
152              inline static int32_t getSample(sample_t* src, int pos) {              inline static int32_t getSample(sample_t* __restrict src, int pos) {
153                  if (BITDEPTH24) {                  if (BITDEPTH24) {
154                      pos *= 3;                      pos *= 3;
155                      #if WORDS_BIGENDIAN                      #if WORDS_BIGENDIAN
# Line 165  namespace LinuxSampler { Line 165  namespace LinuxSampler {
165                  }                  }
166              }              }
167    
168              inline static float Interpolate1StepMonoCPP(sample_t* pSrc, double* Pos, float& Pitch) {              inline static float Interpolate1StepMonoCPP(sample_t* __restrict pSrc, double* __restrict Pos, float& Pitch) {
169                  int   pos_int   = (int) *Pos;     // integer position                  int   pos_int   = (int) *Pos;     // integer position
170                  float pos_fract = *Pos - pos_int; // fractional part of position                  float pos_fract = *Pos - pos_int; // fractional part of position
171    
# Line 188  namespace LinuxSampler { Line 188  namespace LinuxSampler {
188                  return samplePoint;                  return samplePoint;
189              }              }
190    
191              inline static stereo_sample_t Interpolate1StepStereoCPP(sample_t* pSrc, double* Pos, float& Pitch) {              inline static stereo_sample_t Interpolate1StepStereoCPP(sample_t* __restrict pSrc, double* __restrict Pos, float& Pitch) {
192                  int   pos_int   = (int) *Pos;  // integer position                  int   pos_int   = (int) *Pos;  // integer position
193                  float pos_fract = *Pos - pos_int;     // fractional part of position                  float pos_fract = *Pos - pos_int;     // fractional part of position
194                  pos_int <<= 1;                  pos_int <<= 1;

Legend:
Removed from v.2376  
changed lines
  Added in v.2377

  ViewVC Help
Powered by ViewVC