Similar to pcm_resample_16(), implement pcm_resample_24(). The 24 bit implementation is very similar, but it uses src_int_to_float_array() instead of src_short_to_float_array() before sending data to libsamplerate.
Separate the resampling code from the rest of pcm_utils.c. Create two sub-libraries: pcm_resample_libsamplerate.c and pcm_resample_fallback.c.