⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subsample.c

📁 linux下将各类格式图片转换工具
💻 C
📖 第 1 页 / 共 2 页
字号:
    localDiff = macross[5]-currentBlock[10][5];     diff += ABS(localDiff);    localDiff = macross[7]-currentBlock[10][7];     diff += ABS(localDiff);    localDiff = macross[9]-currentBlock[10][9];     diff += ABS(localDiff);    localDiff = macross[11]-currentBlock[10][11];     diff += ABS(localDiff);    localDiff = macross[13]-currentBlock[10][13];     diff += ABS(localDiff);    localDiff = macross[15]-currentBlock[10][15];     diff += ABS(localDiff);    if ( diff > bestSoFar ) {	return diff;    }    macross = &(prev[fy+12][fx]);    localDiff = macross[1]-currentBlock[12][1];     diff += ABS(localDiff);    localDiff = macross[3]-currentBlock[12][3];     diff += ABS(localDiff);    localDiff = macross[5]-currentBlock[12][5];     diff += ABS(localDiff);    localDiff = macross[7]-currentBlock[12][7];     diff += ABS(localDiff);    localDiff = macross[9]-currentBlock[12][9];     diff += ABS(localDiff);    localDiff = macross[11]-currentBlock[12][11];     diff += ABS(localDiff);    localDiff = macross[13]-currentBlock[12][13];     diff += ABS(localDiff);    localDiff = macross[15]-currentBlock[12][15];     diff += ABS(localDiff);    if ( diff > bestSoFar ) {	return diff;    }    macross = &(prev[fy+14][fx]);    localDiff = macross[1]-currentBlock[14][1];     diff += ABS(localDiff);    localDiff = macross[3]-currentBlock[14][3];     diff += ABS(localDiff);    localDiff = macross[5]-currentBlock[14][5];     diff += ABS(localDiff);    localDiff = macross[7]-currentBlock[14][7];     diff += ABS(localDiff);    localDiff = macross[9]-currentBlock[14][9];     diff += ABS(localDiff);    localDiff = macross[11]-currentBlock[14][11];     diff += ABS(localDiff);    localDiff = macross[13]-currentBlock[14][13];     diff += ABS(localDiff);    localDiff = macross[15]-currentBlock[14][15];     diff += ABS(localDiff);    return diff;}/*===========================================================================* * * LumMotionErrorC * *	compute the motion error for the C subsampling pattern * * RETURNS:	the error, or some number greater if it is worse * * SIDE EFFECTS:    none * *===========================================================================*/int32LumMotionErrorC(currentBlock, prevFrame, by, bx, my, mx, bestSoFar)    LumBlock currentBlock;    MpegFrame *prevFrame;    int by;    int bx;    int my;    int mx;    int32 bestSoFar;{    register int32    diff = 0;	    /* max value of diff is 255*256 = 65280 */    register int32 localDiff;    register uint8 *macross;    register uint8 **prev;    register int    fy, fx;    boolean xHalf, yHalf;    xHalf = (ABS(mx) % 2 == 1);    yHalf = (ABS(my) % 2 == 1);    MOTION_TO_FRAME_COORD(by, bx, my/2, mx/2, fy, fx);    if ( xHalf ) {	if ( mx < 0 ) {	    fx--;	}	if ( yHalf ) {	    if ( my < 0 ) {		fy--;	    }	    	    prev = prevFrame->halfBoth;	} else {	    prev = prevFrame->halfX;	}    } else if ( yHalf ) {	if ( my < 0 ) {	    fy--;	}	prev = prevFrame->halfY;    } else {	prev = prevFrame->ref_y;    }    macross = &(prev[fy+1][fx]);    localDiff = macross[0]-currentBlock[1][0];     diff += ABS(localDiff);    localDiff = macross[2]-currentBlock[1][2];     diff += ABS(localDiff);    localDiff = macross[4]-currentBlock[1][4];     diff += ABS(localDiff);    localDiff = macross[6]-currentBlock[1][6];     diff += ABS(localDiff);    localDiff = macross[8]-currentBlock[1][8];     diff += ABS(localDiff);    localDiff = macross[10]-currentBlock[1][10];     diff += ABS(localDiff);    localDiff = macross[12]-currentBlock[1][12];     diff += ABS(localDiff);    localDiff = macross[14]-currentBlock[1][14];     diff += ABS(localDiff);    if ( diff > bestSoFar ) {	return diff;    }    macross = &(prev[fy+3][fx]);    localDiff = macross[0]-currentBlock[3][0];     diff += ABS(localDiff);    localDiff = macross[2]-currentBlock[3][2];     diff += ABS(localDiff);    localDiff = macross[4]-currentBlock[3][4];     diff += ABS(localDiff);    localDiff = macross[6]-currentBlock[3][6];     diff += ABS(localDiff);    localDiff = macross[8]-currentBlock[3][8];     diff += ABS(localDiff);    localDiff = macross[10]-currentBlock[3][10];     diff += ABS(localDiff);    localDiff = macross[12]-currentBlock[3][12];     diff += ABS(localDiff);    localDiff = macross[14]-currentBlock[3][14];     diff += ABS(localDiff);    if ( diff > bestSoFar ) {	return diff;    }    macross = &(prev[fy+5][fx]);    localDiff = macross[0]-currentBlock[5][0];     diff += ABS(localDiff);    localDiff = macross[2]-currentBlock[5][2];     diff += ABS(localDiff);    localDiff = macross[4]-currentBlock[5][4];     diff += ABS(localDiff);    localDiff = macross[6]-currentBlock[5][6];     diff += ABS(localDiff);    localDiff = macross[8]-currentBlock[5][8];     diff += ABS(localDiff);    localDiff = macross[10]-currentBlock[5][10];     diff += ABS(localDiff);    localDiff = macross[12]-currentBlock[5][12];     diff += ABS(localDiff);    localDiff = macross[14]-currentBlock[5][14];     diff += ABS(localDiff);    if ( diff > bestSoFar ) {	return diff;    }    macross = &(prev[fy+7][fx]);    localDiff = macross[0]-currentBlock[7][0];     diff += ABS(localDiff);    localDiff = macross[2]-currentBlock[7][2];     diff += ABS(localDiff);    localDiff = macross[4]-currentBlock[7][4];     diff += ABS(localDiff);    localDiff = macross[6]-currentBlock[7][6];     diff += ABS(localDiff);    localDiff = macross[8]-currentBlock[7][8];     diff += ABS(localDiff);    localDiff = macross[10]-currentBlock[7][10];     diff += ABS(localDiff);    localDiff = macross[12]-currentBlock[7][12];     diff += ABS(localDiff);    localDiff = macross[14]-currentBlock[7][14];     diff += ABS(localDiff);    if ( diff > bestSoFar ) {	return diff;    }    macross = &(prev[fy+9][fx]);    localDiff = macross[0]-currentBlock[9][0];     diff += ABS(localDiff);    localDiff = macross[2]-currentBlock[9][2];     diff += ABS(localDiff);    localDiff = macross[4]-currentBlock[9][4];     diff += ABS(localDiff);    localDiff = macross[6]-currentBlock[9][6];     diff += ABS(localDiff);    localDiff = macross[8]-currentBlock[9][8];     diff += ABS(localDiff);    localDiff = macross[10]-currentBlock[9][10];     diff += ABS(localDiff);    localDiff = macross[12]-currentBlock[9][12];     diff += ABS(localDiff);    localDiff = macross[14]-currentBlock[9][14];     diff += ABS(localDiff);    if ( diff > bestSoFar ) {	return diff;    }    macross = &(prev[fy+11][fx]);    localDiff = macross[0]-currentBlock[11][0];     diff += ABS(localDiff);    localDiff = macross[2]-currentBlock[11][2];     diff += ABS(localDiff);    localDiff = macross[4]-currentBlock[11][4];     diff += ABS(localDiff);    localDiff = macross[6]-currentBlock[11][6];     diff += ABS(localDiff);    localDiff = macross[8]-currentBlock[11][8];     diff += ABS(localDiff);    localDiff = macross[10]-currentBlock[11][10];     diff += ABS(localDiff);    localDiff = macross[12]-currentBlock[11][12];     diff += ABS(localDiff);    localDiff = macross[14]-currentBlock[11][14];     diff += ABS(localDiff);    if ( diff > bestSoFar ) {	return diff;    }    macross = &(prev[fy+13][fx]);    localDiff = macross[0]-currentBlock[13][0];     diff += ABS(localDiff);    localDiff = macross[2]-currentBlock[13][2];     diff += ABS(localDiff);    localDiff = macross[4]-currentBlock[13][4];     diff += ABS(localDiff);    localDiff = macross[6]-currentBlock[13][6];     diff += ABS(localDiff);    localDiff = macross[8]-currentBlock[13][8];     diff += ABS(localDiff);    localDiff = macross[10]-currentBlock[13][10];     diff += ABS(localDiff);    localDiff = macross[12]-currentBlock[13][12];     diff += ABS(localDiff);    localDiff = macross[14]-currentBlock[13][14];     diff += ABS(localDiff);    if ( diff > bestSoFar ) {	return diff;    }    macross = &(prev[fy+15][fx]);    localDiff = macross[0]-currentBlock[15][0];     diff += ABS(localDiff);    localDiff = macross[2]-currentBlock[15][2];     diff += ABS(localDiff);    localDiff = macross[4]-currentBlock[15][4];     diff += ABS(localDiff);    localDiff = macross[6]-currentBlock[15][6];     diff += ABS(localDiff);    localDiff = macross[8]-currentBlock[15][8];     diff += ABS(localDiff);    localDiff = macross[10]-currentBlock[15][10];     diff += ABS(localDiff);    localDiff = macross[12]-currentBlock[15][12];     diff += ABS(localDiff);    localDiff = macross[14]-currentBlock[15][14];     diff += ABS(localDiff);    return diff;}/*===========================================================================* * * LumMotionErrorD * *	compute the motion error for the D subsampling pattern * * RETURNS:	the error, or some number greater if it is worse * * SIDE EFFECTS:    none * *===========================================================================*/int32LumMotionErrorD(currentBlock, prevFrame, by, bx, my, mx, bestSoFar)    LumBlock currentBlock;    MpegFrame *prevFrame;    int by;    int bx;    int my;    int mx;    int32 bestSoFar;{    register int32    diff = 0;	    /* max value of diff is 255*256 = 65280 */    register int32 localDiff;    register uint8 *macross;    register uint8 **prev;    register int    fy, fx;    boolean xHalf, yHalf;    xHalf = (ABS(mx) % 2 == 1);    yHalf = (ABS(my) % 2 == 1);    MOTION_TO_FRAME_COORD(by, bx, my/2, mx/2, fy, fx);    if ( xHalf ) {	if ( mx < 0 ) {	    fx--;	}	if ( yHalf ) {	    if ( my < 0 ) {	   		fy--;	    }	    prev = prevFrame->halfBoth;	} else {	    prev = prevFrame->halfX;	}    } else if ( yHalf ) {	if ( my < 0 ) {	    fy--;	}	prev = prevFrame->halfY;    } else {	prev = prevFrame->ref_y;    }    macross = &(prev[fy+1][fx]);    localDiff = macross[1]-currentBlock[1][1];     diff += ABS(localDiff);    localDiff = macross[3]-currentBlock[1][3];     diff += ABS(localDiff);    localDiff = macross[5]-currentBlock[1][5];     diff += ABS(localDiff);    localDiff = macross[7]-currentBlock[1][7];     diff += ABS(localDiff);    localDiff = macross[9]-currentBlock[1][9];     diff += ABS(localDiff);    localDiff = macross[11]-currentBlock[1][11];     diff += ABS(localDiff);    localDiff = macross[13]-currentBlock[1][13];     diff += ABS(localDiff);    localDiff = macross[15]-currentBlock[1][15];     diff += ABS(localDiff);    if ( diff > bestSoFar ) {	return diff;    }    macross = &(prev[fy+3][fx]);    localDiff = macross[1]-currentBlock[3][1];     diff += ABS(localDiff);    localDiff = macross[3]-currentBlock[3][3];     diff += ABS(localDiff);    localDiff = macross[5]-currentBlock[3][5];     diff += ABS(localDiff);    localDiff = macross[7]-currentBlock[3][7];     diff += ABS(localDiff);    localDiff = macross[9]-currentBlock[3][9];     diff += ABS(localDiff);    localDiff = macross[11]-currentBlock[3][11];     diff += ABS(localDiff);    localDiff = macross[13]-currentBlock[3][13];     diff += ABS(localDiff);    localDiff = macross[15]-currentBlock[3][15];     diff += ABS(localDiff);    if ( diff > bestSoFar ) {	return diff;    }    macross = &(prev[fy+5][fx]);    localDiff = macross[1]-currentBlock[5][1];     diff += ABS(localDiff);    localDiff = macross[3]-currentBlock[5][3];     diff += ABS(localDiff);    localDiff = macross[5]-currentBlock[5][5];     diff += ABS(localDiff);    localDiff = macross[7]-currentBlock[5][7];     diff += ABS(localDiff);    localDiff = macross[9]-currentBlock[5][9];     diff += ABS(localDiff);    localDiff = macross[11]-currentBlock[5][11];     diff += ABS(localDiff);    localDiff = macross[13]-currentBlock[5][13];     diff += ABS(localDiff);    localDiff = macross[15]-currentBlock[5][15];     diff += ABS(localDiff);    if ( diff > bestSoFar ) {	return diff;    }    macross = &(prev[fy+7][fx]);    localDiff = macross[1]-currentBlock[7][1];     diff += ABS(localDiff);    localDiff = macross[3]-currentBlock[7][3];     diff += ABS(localDiff);    localDiff = macross[5]-currentBlock[7][5];     diff += ABS(localDiff);    localDiff = macross[7]-currentBlock[7][7];     diff += ABS(localDiff);    localDiff = macross[9]-currentBlock[7][9];     diff += ABS(localDiff);    localDiff = macross[11]-currentBlock[7][11];     diff += ABS(localDiff);    localDiff = macross[13]-currentBlock[7][13];     diff += ABS(localDiff);    localDiff = macross[15]-currentBlock[7][15];     diff += ABS(localDiff);    if ( diff > bestSoFar ) {	return diff;    }    macross = &(prev[fy+9][fx]);    localDiff = macross[1]-currentBlock[9][1];     diff += ABS(localDiff);    localDiff = macross[3]-currentBlock[9][3];     diff += ABS(localDiff);    localDiff = macross[5]-currentBlock[9][5];     diff += ABS(localDiff);    localDiff = macross[7]-currentBlock[9][7];     diff += ABS(localDiff);    localDiff = macross[9]-currentBlock[9][9];     diff += ABS(localDiff);    localDiff = macross[11]-currentBlock[9][11];     diff += ABS(localDiff);    localDiff = macross[13]-currentBlock[9][13];     diff += ABS(localDiff);    localDiff = macross[15]-currentBlock[9][15];     diff += ABS(localDiff);    if ( diff > bestSoFar ) {	return diff;    }    macross = &(prev[fy+11][fx]);    localDiff = macross[1]-currentBlock[11][1];     diff += ABS(localDiff);    localDiff = macross[3]-currentBlock[11][3];     diff += ABS(localDiff);    localDiff = macross[5]-currentBlock[11][5];     diff += ABS(localDiff);    localDiff = macross[7]-currentBlock[11][7];     diff += ABS(localDiff);    localDiff = macross[9]-currentBlock[11][9];     diff += ABS(localDiff);    localDiff = macross[11]-currentBlock[11][11];     diff += ABS(localDiff);    localDiff = macross[13]-currentBlock[11][13];     diff += ABS(localDiff);    localDiff = macross[15]-currentBlock[11][15];     diff += ABS(localDiff);    if ( diff > bestSoFar ) {	return diff;    }    macross = &(prev[fy+13][fx]);    localDiff = macross[1]-currentBlock[13][1];     diff += ABS(localDiff);    localDiff = macross[3]-currentBlock[13][3];     diff += ABS(localDiff);    localDiff = macross[5]-currentBlock[13][5];     diff += ABS(localDiff);    localDiff = macross[7]-currentBlock[13][7];     diff += ABS(localDiff);    localDiff = macross[9]-currentBlock[13][9];     diff += ABS(localDiff);    localDiff = macross[11]-currentBlock[13][11];     diff += ABS(localDiff);    localDiff = macross[13]-currentBlock[13][13];     diff += ABS(localDiff);    localDiff = macross[15]-currentBlock[13][15];     diff += ABS(localDiff);    if ( diff > bestSoFar ) {	return diff;    }    macross = &(prev[fy+15][fx]);    localDiff = macross[1]-currentBlock[15][1];     diff += ABS(localDiff);    localDiff = macross[3]-currentBlock[15][3];     diff += ABS(localDiff);    localDiff = macross[5]-currentBlock[15][5];     diff += ABS(localDiff);    localDiff = macross[7]-currentBlock[15][7];     diff += ABS(localDiff);    localDiff = macross[9]-currentBlock[15][9];     diff += ABS(localDiff);    localDiff = macross[11]-currentBlock[15][11];     diff += ABS(localDiff);    localDiff = macross[13]-currentBlock[15][13];     diff += ABS(localDiff);    localDiff = macross[15]-currentBlock[15][15];     diff += ABS(localDiff);    return diff;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -