long x_delta = (old_width<<16) / width;

-line loop
unsigned char* src_pixel = &src_line[(x>>16)*3];
x += x_delta;
-line loop end

フレームワークの中身みたらこんな計算しております
>>421は別人w