I suggest you take a look at the resampler.[ch] I use in modplay library, which implements multiple resampling methods for PCM samples which play at configurable sample rates.
It includes zero-order-hold, which is basically no interpolation whatsoever; Band-limited step synthesis, which is like...