The problem of resampling is the same as the problem of interpolating between two points (given several other points an additional assumptions on bandwidth).
the resulting implementation is often a variable, weighted average of "nearby" samples. This is a "polyphase" filter, or a filter with time varying coefficients.
This is exactly how resample works. resample itself will generate a filter function for you (using a windowed FIR). "cosets" from this large filter determine how interpolation is done for each sample. (a coset is simple sets of every N points, but offset. eg 0, 4, 8, 12 is one "coset", and 1, 5, 9, 13 is the next "coset"). These cosets form "sub filters" or "filter phases" that can change dynamically for polyphase or arbitrary resamplers.
In the end, you are looking for a polyphase filter block with a large prototype filter.