24                                ptrdiff_t buf_linesize,
 
   25                                ptrdiff_t src_linesize,
 
   26                                int block_w, 
int block_h,
 
   27                                int src_x, 
int src_y, 
int w, 
int h)
 
   30     int start_y, start_x, end_y, end_x;
 
   38         src -= src_y * src_linesize;
 
   39         src += (
h - 1) * src_linesize;
 
   41     } 
else if (src_y <= -block_h) {
 
   42         src -= src_y * src_linesize;
 
   43         src += (1 - block_h) * src_linesize;
 
   50     } 
else if (src_x <= -block_w) {
 
   51         src  += (1 - block_w - src_x) * 
sizeof(
pixel);
 
   55     start_y = 
FFMAX(0, -src_y);
 
   56     start_x = 
FFMAX(0, -src_x);
 
   57     end_y = 
FFMIN(block_h, 
h-src_y);
 
   58     end_x = 
FFMIN(block_w, 
w-src_x);
 
   63     src += start_y * src_linesize + start_x * 
sizeof(
pixel);
 
   64     buf += start_x * 
sizeof(
pixel);
 
   67     for (y = 0; y < start_y; y++) {
 
   73     for (; y < end_y; y++) {
 
   81     for (; y < block_h; y++) {
 
   86     buf -= block_h * buf_linesize + start_x * 
sizeof(
pixel);
 
   91         for(x = 0; x < start_x; x++) {
 
   92             bufp[x] = bufp[start_x];
 
   96         for (x = end_x; x < block_w; x++) {
 
   97             bufp[x] = bufp[end_x - 1];