Hello, the patch series aims to resubmit a patch to reorder the resampling pipeline; it former patch was dropped due to issues with leftover data handling; patch 11 has more details the resampling pipeline is conv -> remap -> resample -> conv patch 11 introduces the following, alternative pipeline conv -> resample -> remap -> conv when the number of input channels is less than the number of output channels the resample stage may not consume all data passed; hence the leftover data has to be stored; the data is presented again to the resample stage together with the next input data the strategy for the fix is to allow reinserting leftover data not only in the remap stage, but also in the conv(to work format) stage; i.e. the stage run before the resampler in case of the alternative pipeline patches 1 and 2 introduce helper variables work_channels and w_fz representing the number of channels and the byte per frame, respectively, in the resample stage patch 3 makes the impl_resample() function return the number of leftover frames (to make leftover handling more visible in the code) patch 4 move leftover handling from impl_resample() to resample() patch 5 and 6 is cleanup and introduces a helper function fit_buf() for buffer allocation patch 7 introduces a pointer to the output buffer of the stage run before the resamplers patch 8 is cleanup patch 9 extends fit_buf() so that it can copy leftover data when allocating a new buffer patch 10 adds leftover data handling to the convert_to_work_format() function patch 11 finally enables the two different pipelines; the patch is important e.g. when a mono channel is remapped and resampled to quad-channel -- it saves resampling 75% of the data! I also considered moving the leftover handling into impl_resample(), but this leads to more code duplication and buffer copying; new API to find the amount of leftover data store in the resamplers might be needed as well thanks to the cleanups preceding patch 11, the complexity of the more flexible pipeline keeps managable regards, p.