2) better, process just 0-3 extra samples: long sse_offset = (buffer_offset>>2)<<2; // align offset sampleFrames += buffer_offset - sse_offset; // add extra samples long samplesLeft = sampleFrames & 3; sampleFrames >>= 2; Then process as usual (process SSE loop, process remaining 0-3 samples) This is OK for non-recursive stuff. 3) For recursive stuff, unfortunately, first 0-3 samples are needed to be processed separately: long sse_offset = (buffer_offset + 3 >> 2) << 2; // align offset long nonSSEframes = sse_offset - buffer_offset; // how many samples before sampleFrames -= nonSSEframes; // these are processed separately