亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? basic_prediction_mmx.c

?? MPEG4圖像編碼和解碼處理C源代碼(非常經典的算法)
?? C
?? 第 1 頁 / 共 2 頁
字號:
/**************************************************************************
 *                                                                        *
 * This code has been developed by Eugene Kuznetsov. This software is an  *
 * implementation of a part of one or more MPEG-4 Video tools as          *
 * specified in ISO/IEC 14496-2 standard.  Those intending to use this    *
 * software module in hardware or software products are advised that its  *
 * use may infringe existing patents or copyrights, and any such use      *
 * would be at such party's own risk.  The original developer of this     *
 * software module and his/her company, and subsequent editors and their  *
 * companies (including Project Mayo), will have no liability for use of  *
 * this software or modifications or derivatives thereof.                 *
 *                                                                        *
 * Project Mayo gives users of the Codec a license to this software       *
 * module or modifications thereof for use in hardware or software        *
 * products claiming conformance to the MPEG-4 Video Standard as          *
 * described in the Open DivX license.                                    *
 *                                                                        *
 * The complete Open DivX license can be found at                         *
 * http://www.projectmayo.com/opendivx/license.php                        *
 *                                                                        *
 **************************************************************************/
/**
*  Copyright (C) 2001 - Project Mayo
 *
 * Eugene Kuznetsov
 *
 * DivX Advanced Research Center <darc@projectmayo.com>
*
**/

#include "basic_prediction.h"

// Purpose: specialized basic motion compensation routines
void CopyBlock(unsigned char * Src, unsigned char * Dst, int Stride)
{
	int dy;

	long *lpSrc = (long *) Src;
	long *lpDst = (long *) Dst;
	int lpStride = Stride >> 2;

	for (dy = 0; dy < 8; dy++) {
		lpDst[0] = lpSrc[0];
		lpDst[1] = lpSrc[1];
		lpSrc += lpStride;
		lpDst += lpStride;
	}
}
#define CopyBlockHorLoop \
	"movb (%%esi), %%al\n" 	\
	"incl %%esi\n" 		\
	"movb (%%esi), %%cl\n" 	\
	"addl %%ecx, %%eax\n" 	\
	"incl %%eax\n" 		\
	"shrl $1, %%eax\n" 	\
	"movb %%al, (%%edi)\n" 	\
	"incl %%edi\n"

// input: esi
// output: edi
// modifies: eax, ebx, edx
#define CopyBlockHorLoopFast \
	"movl (%%esi), %%edx\n"	\
	"movl 1(%%esi), %%ebx\n"\
	"movl %%edx, %%eax\n"	\
	"xorl %%ebx, %%edx\n"	\
	"shrl $1, %%edx\n"	\
	"adcl %%ebx, %%eax\n"	\
	"rcrl $1, %%eax\n"	\
	"andl $0x808080, %%edx\n"\
	"addl %%edx, %%eax\n"	\
	"movl %%eax, (%%edi)\n"	\
	"addl $4, %%esi\n"	\
	"addl $4, %%edi\n"

#define CopyBlockVerLoopFast \
	"movl (%%esi), %%edx\n"	\
	"movl (%%esi,%%ecx), %%ebx\n"\
	"movl %%edx, %%eax\n"	\
	"xorl %%ebx, %%edx\n"	\
	"shrl $1, %%edx\n"	\
	"adcl %%ebx, %%eax\n"	\
	"rcrl $1, %%eax\n"	\
	"andl $0x808080, %%edx\n"\
	"addl %%edx, %%eax\n"	\
	"movl %%eax, (%%edi)\n"	\
	"addl $4, %%esi\n"	\
	"addl $4, %%edi\n"


#define CopyBlockHorLoopRound \
	"movb (%%esi), %%al\n" 	\
	"incl %%esi\n" 		\
	"movb (%%esi), %%cl\n" 	\
	"addl %%ecx, %%eax\n" 	\
	"shrl $1, %%eax\n" 	\
	"movb %%al, (%%edi)\n" 	\
	"incl %%edi\n"

#define CopyBlockVerLoop \
    "movb (%%esi), %%al\n" 	\
    "movb (%%esi,%%ebx), %%cl\n" \
    "addl %%ecx, %%eax\n" 	\
    "incl %%eax\n" 		\
    "shrl $1, %%eax\n" 		\
    "movb %%al, (%%edi)\n" 	\
    "incl %%esi\n" 		\
    "incl %%edi\n"

#define CopyBlockVerLoopRound \
    "movb (%%esi), %%al\n" 	\
    "movb (%%esi,%%ebx), %%cl\n" \
    "addl %%ecx, %%eax\n" 	\
    "shrl $1, %%eax\n" 		\
    "movb %%al, (%%edi)\n" 	\
    "incl %%esi\n" 		\
    "incl %%edi\n"

#define CopyBlockHorVerLoop(STEP) \
    "movb " #STEP "(%%esi), %%al\n" 		\
    "movb " #STEP "+1(%%esi), %%cl\n" 		\
    "addl %%ecx, %%eax\n" 			\
    "movb " #STEP "(%%esi, %%ebx), %%cl\n" 	\
    "addl %%ecx, %%eax\n" 			\
    "movb " #STEP "+1(%%esi, %%ebx), %%cl\n" 	\
    "addl %%ecx, %%eax\n" 			\
    "addl $2, %%eax\n" 				\
    "shrl $2, %%eax\n" 				\
    "movb %%al, " #STEP "(%%edi)\n"

#define CopyBlockHorVerLoopRound(STEP) \
    "movb " #STEP "(%%esi), %%al\n" 		\
    "movb " #STEP "+1(%%esi), %%cl\n" 		\
    "addl %%ecx, %%eax\n" 			\
    "movb " #STEP "(%%esi, %%ebx), %%cl\n" 	\
    "addl %%ecx, %%eax\n" 			\
    "movb " #STEP "+1(%%esi, %%ebx), %%cl\n" 	\
    "addl %%ecx, %%eax\n" 			\
    "incl %%eax\n" 				\
    "shrl $2, %%eax\n" 				\
    "movb %%al, " #STEP "(%%edi)\n"

/**/

void CopyBlockHor(unsigned char * Src, unsigned char * Dst, int Stride)
{
	__asm__ (
	"movl %2, %%esi\n"
	"movl %3, %%edi\n"
	"pushl %%ebx\n"
	"1:\n"
	"pushl %%edx\n"

	CopyBlockHorLoopFast
	CopyBlockHorLoopFast

	"popl %%edx\n"
	"addl %%ecx, %%esi\n"
	"addl %%ecx, %%edi\n"
	"decl %%edx\n"
	"jnz 1b\n"
	"popl %%ebx\n"
	:
	: "c"(Stride-8), "d"(8), "g" (Src), "g"(Dst)
	: "esi", "edi"
	);
}
void CopyBlockVer(unsigned char * Src, unsigned char * Dst, int Stride)
{
	__asm__ (
	"movl %2, %%esi\n"
	"movl %3, %%edi\n"
	"pushl %%ebx\n"
	"1:\n"
	"pushl %%edx\n"

	CopyBlockVerLoopFast
	CopyBlockVerLoopFast

	"popl %%edx\n"
	"addl %%ecx, %%esi\n"
	"subl $8, %%esi\n"
	"addl %%ecx, %%edi\n"
	"subl $8, %%edi\n"
	"decl %%edx\n"
	"jnz 1b\n"
	"popl %%ebx\n"
	:
	: "c"(Stride), "d"(8), "g" (Src), "g"(Dst)
	: "esi", "edi"
	);
}
/*
void CopyBlockHor(unsigned char * Src, unsigned char * Dst, int Stride)
{
	__asm__ (
	"pushl %%ebx\n"
	"movl %1, %%ebx\n"
	"movl %4, %%esi\n"
	"movl %5, %%edi\n"
	"1:\n"

	CopyBlockHorLoop
	CopyBlockHorLoop
	CopyBlockHorLoop
	CopyBlockHorLoop

	CopyBlockHorLoop
	CopyBlockHorLoop
	CopyBlockHorLoop
	CopyBlockHorLoop

	"addl %%ebx, %%esi\n"
	"addl %%ebx, %%edi\n"
	"decl %%edx\n"
	"jnz 1b\n"
	"popl %%ebx\n"
	:
	: "a"(0), "g"(Stride-8), "c"(0), "d"(8), "g" (Src), "g"(Dst)
	);
}
*/
void CopyBlockHorRound(unsigned char * Src, unsigned char * Dst, int Stride)
{
	__asm__ (
	"movl %1, %%eax\n"
	"movl %4, %%esi\n"
	"movl %5, %%edi\n"
	"pushl %%ebx\n"
	"movl %%eax, %%ebx\n"
        "xorl %%eax, %%eax\n"
	"1:\n"

	CopyBlockHorLoopRound
	CopyBlockHorLoopRound
	CopyBlockHorLoopRound
	CopyBlockHorLoopRound

	CopyBlockHorLoopRound
	CopyBlockHorLoopRound
	CopyBlockHorLoopRound
	CopyBlockHorLoopRound

	"addl %%ebx, %%esi\n"
	"addl %%ebx, %%edi\n"
	"decl %%edx\n"
	"jnz 1b\n"
	"popl %%ebx\n"
	:
	: "a"(0), "g"(Stride-8), "c"(0), "d"(8), "g" (Src), "g"(Dst)
	: "esi", "edi"
	);
}

/**/
/*
void CopyBlockVer(unsigned char * Src, unsigned char * Dst, int Stride)
{
	__asm__ (
	"pushl %%ebx\n"
	"movl %1, %%ebx\n"
	"movl %4, %%esi\n"
	"movl %5, %%edi\n"
	"1:\n"
	CopyBlockVerLoop
	CopyBlockVerLoop
	CopyBlockVerLoop
	CopyBlockVerLoop

	CopyBlockVerLoop
	CopyBlockVerLoop
	CopyBlockVerLoop
	CopyBlockVerLoop

	"addl %%ebx, %%esi\n"
	"subl $8, %%esi\n"
	"addl %%ebx, %%edi\n"
	"subl $8, %%edi\n"
	"decl %%edx\n"
	"jnz 1b\n"
	"popl %%ebx\n"
	:
	: "a"(0), "g"(Stride), "c"(0), "d"(8), "g" (Src), "g"(Dst)
	);
}
*/
/**/
void CopyBlockVerRound(unsigned char * Src, unsigned char * Dst, int Stride)
{
	__asm__ (
	"movl %1, %%eax\n"
	"movl %4, %%esi\n"
	"movl %5, %%edi\n"
	"pushl %%ebx\n"
	"movl %%eax, %%ebx\n"
        "xorl %%eax, %%eax\n"
	"1:\n"
	CopyBlockVerLoopRound
	CopyBlockVerLoopRound
	CopyBlockVerLoopRound
	CopyBlockVerLoopRound

	CopyBlockVerLoopRound
	CopyBlockVerLoopRound
	CopyBlockVerLoopRound
	CopyBlockVerLoopRound

	"addl %%ebx, %%esi\n"
	"subl $8, %%esi\n"
	"addl %%ebx, %%edi\n"
	"subl $8, %%edi\n"
	"decl %%edx\n"
	"jnz 1b\n"
	"popl %%ebx\n"
	:
	: "a"(0), "g"(Stride), "c"(0), "d"(8), "g" (Src), "g"(Dst)
	: "esi", "edi"
	);
}/**/
void CopyBlockHorVer(unsigned char * Src, unsigned char * Dst, int Stride)
{
	int dy, dx;

	for (dy = 0; dy < 8; dy++) {
		for (dx = 0; dx < 8; dx++) {
			Dst[dx] = (Src[dx] + Src[dx+1] + 
			Src[dx+Stride] + Src[dx+Stride+1] +2) >> 2; // horver interpolation with rounding
		}
		Src += Stride;
		Dst += Stride;
	}
}
/**/
void CopyBlockHorVerRound(unsigned char * Src, unsigned char * Dst, int Stride)
{
	int dy, dx;

	for (dy = 0; dy < 8; dy++) {
		for (dx = 0; dx < 8; dx++) {
			Dst[dx] = (Src[dx] + Src[dx+1] + 
								Src[dx+Stride] + Src[dx+Stride+1] +1) >> 2; // horver interpolation with rounding

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一二三级电影| 亚洲视频资源在线| 欧美在线不卡视频| 波多野结衣中文字幕一区| 国产精品456露脸| 国产精品1024| 成人涩涩免费视频| 91视频com| 欧美三级日韩在线| 自拍偷自拍亚洲精品播放| 国产精品久久久久久久久免费桃花| 国产精品女主播在线观看| 国产精品毛片久久久久久久| 亚洲视频在线观看三级| 一区二区三区av电影| 午夜久久久久久电影| 麻豆免费精品视频| 国产激情一区二区三区桃花岛亚洲| 懂色av一区二区在线播放| 色综合夜色一区| 91精品欧美一区二区三区综合在| 精品剧情v国产在线观看在线| 久久久久久一级片| 亚洲激情校园春色| 久久精品国产99国产| 国产91露脸合集magnet| 欧美伊人久久久久久久久影院| 欧美精品三级在线观看| 欧美国产日产图区| 亚洲成人自拍一区| 国产成人av电影免费在线观看| 91在线一区二区三区| 欧美剧在线免费观看网站 | 国内精品视频一区二区三区八戒| 国精产品一区一区三区mba视频| 成人ar影院免费观看视频| 在线观看免费成人| 国产无人区一区二区三区| 一区二区三区不卡视频| 国产精品99久久久久久有的能看 | 日韩欧美国产系列| 中文字幕在线不卡一区| 麻豆成人久久精品二区三区小说| 91免费看视频| 国产色91在线| 日本午夜精品一区二区三区电影 | 精品在线一区二区三区| 一本大道久久a久久精品综合| 日韩久久精品一区| 亚洲一区二区三区四区在线观看| 国产精品一品视频| 欧美不卡123| 五月婷婷久久综合| 日本福利一区二区| 中文字幕永久在线不卡| 国产激情视频一区二区三区欧美 | 99riav久久精品riav| 欧美一区二区三区在线| 亚洲一区二区欧美| 成人免费视频一区| 国产欧美日韩精品在线| 美女网站色91| 日韩一级视频免费观看在线| 亚洲第一精品在线| 欧美视频在线一区| 依依成人综合视频| 91黄视频在线观看| 亚洲激情校园春色| 欧美无乱码久久久免费午夜一区 | 亚洲国产aⅴ天堂久久| 91最新地址在线播放| 最新国产成人在线观看| 99久久精品国产网站| 国产精品丝袜久久久久久app| 国产suv一区二区三区88区| 久久久亚洲高清| 国产.欧美.日韩| 欧美激情资源网| 成人午夜电影久久影院| 国产精品国产精品国产专区不片| 国产成人精品综合在线观看 | 91蝌蚪porny成人天涯| 亚洲欧洲国产日韩| 日本韩国精品一区二区在线观看| 亚洲激情图片一区| 欧美精品精品一区| 久久99久久久久久久久久久| 久久免费的精品国产v∧| 成人国产亚洲欧美成人综合网| 国产精品污网站| 色综合咪咪久久| 偷拍亚洲欧洲综合| 久久青草欧美一区二区三区| 成人午夜精品一区二区三区| 一区二区三区丝袜| 日韩欧美一区二区在线视频| 国产福利视频一区二区三区| 成人欧美一区二区三区| 欧美伊人久久久久久午夜久久久久| 日日夜夜精品视频天天综合网| 欧美mv日韩mv| 色丁香久综合在线久综合在线观看| 亚洲第一精品在线| 国产欧美一区二区精品性色超碰| 91影院在线观看| 另类调教123区| 中文字幕一区二区日韩精品绯色| 666欧美在线视频| 99视频热这里只有精品免费| 午夜精品久久久久久久| 久久精品视频在线免费观看| 在线免费一区三区| 韩国精品免费视频| 亚洲国产综合在线| 亚洲国产激情av| 欧美一区二区大片| 91日韩在线专区| 久久99热99| 婷婷国产v国产偷v亚洲高清| 国产精品久久久久久久久搜平片| 91精品国产乱| 欧美午夜精品久久久久久孕妇| 国产福利91精品| 麻豆久久一区二区| 亚洲一区二区三区爽爽爽爽爽 | 欧美三区在线视频| 成人网页在线观看| 国内精品嫩模私拍在线| 亚洲国产aⅴ成人精品无吗| 中文字幕一区二区三区蜜月| 精品捆绑美女sm三区| 欧美日本在线视频| av综合在线播放| 国产白丝精品91爽爽久久| 美女视频免费一区| 日本强好片久久久久久aaa| 亚洲卡通动漫在线| 亚洲三级在线观看| 中文av一区二区| 久久九九国产精品| 精品国产欧美一区二区| 中文字幕二三区不卡| www精品美女久久久tv| 91精品国产综合久久小美女 | 麻豆成人91精品二区三区| 亚洲一区二区偷拍精品| 亚洲人成亚洲人成在线观看图片| 久久精品人人做人人综合 | 欧美va亚洲va| 欧美成人官网二区| 欧美一区二区视频观看视频| 91精品国产欧美一区二区成人| 欧美乱熟臀69xxxxxx| 欧美性大战xxxxx久久久| 一本高清dvd不卡在线观看| 91美女片黄在线观看91美女| 99在线精品观看| 99re热这里只有精品免费视频| 波多野结衣91| 在线看日本不卡| 在线成人免费视频| 精品国产乱码久久久久久免费 | 26uuu久久综合| 2020国产成人综合网| 日韩一区二区三区观看| 精品美女被调教视频大全网站| 久久一二三国产| 国产精品麻豆99久久久久久| 日韩理论片中文av| 亚洲高清在线视频| 国内精品免费**视频| 日韩黄色免费网站| 中文字幕欧美国产| 亚洲美女屁股眼交3| 性久久久久久久久| 国内成人免费视频| 99久久精品费精品国产一区二区| 亚洲精品videosex极品| 国产精品一区二区无线| 国产一二三精品| 99久久99精品久久久久久| 偷拍日韩校园综合在线| 国产综合成人久久大片91| 成人av在线影院| 欧美精品在线一区二区| 久久这里只有精品视频网| 成人免费视频在线观看| 日韩一区精品字幕| www..com久久爱| 91精品国产入口| 中文字幕日韩欧美一区二区三区| 石原莉奈在线亚洲三区| 成人久久视频在线观看| 欧美区在线观看| 国产精品久久久久一区二区三区| 亚洲成人自拍一区| 99麻豆久久久国产精品免费优播| 欧美一卡二卡在线观看| 日韩美女视频一区二区| 久久精品99国产精品日本|