Resampler.java :  » Game » aetheria » micromod » resamplers » Java Open Source

Java Open Source » Game » aetheria 
aetheria » micromod » resamplers » Resampler.java

package micromod.resamplers;

/**
  The Resampler interface specifies a pure resampling algorithm.
  The algorithm need not maintain any state between invocations,
  making implementations of resamplers far more straight-forward.
  As an added advantage, the resampling loop (where most of the
  cpu time is spent) can be made tighter. Since an implementation
  need not have to maintain a state, a single instance of a Resampler
  can be used for all channels, and this may be switched on the fly.
*/
public interface Resampler {
  public static final int FIXED_POINT_SHIFT=16;
  public static final int FIXED_POINT_ONE=1<<FIXED_POINT_SHIFT;
  public static final int FIXED_POINT_BITMASK=FIXED_POINT_ONE-1;

  /**
    Resample the audio in inputBuf to outputBuf.
    The resampler should be able to deal correctly with a length of at least 1.

    @param samplePos The index of the sample in inputBuf
    @param subSamplePos The fractional part of the index, in 16 bit fixed point.
    @param step The integer part of the number of input samples per output sample.
    @param subStep The fractional part of the number of input samples per output sample.
      The value is in 16 bit fixed point.
    @param position The index of the output buffer to start writing to.
    @param length The number of samples of output to produce.
  */
  public void resample( short[] inputBuf, int samplePos, int subSamplePos, int step, int subStep,
                        short[] outputBuf, int position, int length );
  /**
    Return minimum number of samples required by the resampler before and after the audio
    to be processed. A cubic resampler might return 3, for example.
  */
  public int getCushionSize();
}


java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.