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

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

?? basic_prediction_mmx.c

?? MP4編解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一区二区三区免费野_久草精品视频
欧美色男人天堂| 99视频有精品| 国产福利视频一区二区三区| 93久久精品日日躁夜夜躁欧美| 欧美体内she精视频| 欧美激情自拍偷拍| 青草av.久久免费一区| 99麻豆久久久国产精品免费| 日韩欧美一卡二卡| 亚洲一卡二卡三卡四卡无卡久久| 国产精品亚洲专一区二区三区| 欧美日韩国产小视频在线观看| 国产精品福利av| 在线免费观看日本欧美| 欧美怡红院视频| 精品欧美久久久| 亚洲一区电影777| 成人av电影免费在线播放| 精品美女在线播放| 视频一区二区不卡| 欧美色精品在线视频| 国产精品久久久久久久蜜臀| 国产在线一区二区综合免费视频| 欧美日韩一级黄| 亚洲一级二级在线| 色琪琪一区二区三区亚洲区| 中文字幕av一区二区三区高| 国产在线麻豆精品观看| 日韩欧美一卡二卡| 麻豆成人av在线| 欧美电影免费观看高清完整版在 | 秋霞成人午夜伦在线观看| 91在线视频在线| 中文字幕+乱码+中文字幕一区| 精品一区二区在线看| 日韩精品一区二区三区老鸭窝 | 激情综合五月天| 日韩视频免费观看高清完整版 | 日韩一区二区在线看片| 婷婷国产在线综合| 91精品在线免费| 日本va欧美va精品| 精品精品欲导航| 国产一区二区三区| 国产欧美精品区一区二区三区| 国产精品一区久久久久| 国产亚洲一区二区在线观看| 国产成人啪午夜精品网站男同| 国产欧美精品一区二区三区四区| 久久精品综合网| 欧美久久久久久蜜桃| 亚洲成人av在线电影| 在线不卡中文字幕| 久久99精品一区二区三区| 精品国产成人在线影院| 国产福利一区二区| 亚洲欧洲一区二区三区| 欧美色综合影院| 久久精品99国产精品日本| 久久久三级国产网站| 91亚洲国产成人精品一区二区三| 亚洲在线视频网站| 精品久久久久久久久久久久久久久 | 亚洲一区二区欧美日韩| 91麻豆精品国产| 成人一区在线观看| 性久久久久久久久久久久| 欧美精品久久天天躁| 国产乱一区二区| 亚洲精品免费播放| 日韩一卡二卡三卡四卡| av影院午夜一区| 免费成人美女在线观看.| 国产精品久久久久国产精品日日| 欧美午夜理伦三级在线观看| 国产一区二区三区在线观看免费视频 | 欧美日韩亚洲综合一区| 久久精品噜噜噜成人88aⅴ| 一区在线播放视频| 日韩欧美电影在线| 在线欧美小视频| 国产精品18久久久久久久久| 玉米视频成人免费看| 久久女同性恋中文字幕| 欧美日韩国产色站一区二区三区| 成人h动漫精品一区二| 免播放器亚洲一区| 亚洲主播在线播放| 亚洲视频免费观看| 精品999久久久| 精品国产乱码久久| 欧美中文字幕一区二区三区 | 91.麻豆视频| 国产成人无遮挡在线视频| 天堂蜜桃一区二区三区| 中文字幕中文在线不卡住| 久久夜色精品国产欧美乱极品| 欧美日精品一区视频| 99久久99久久免费精品蜜臀| 国产自产2019最新不卡| 免费观看一级特黄欧美大片| 亚洲激情综合网| 日韩一区日韩二区| 国产婷婷色一区二区三区在线| 日韩一区二区三区av| 欧美日韩免费在线视频| 在线视频你懂得一区二区三区| 成人av网站免费观看| 国产成人综合视频| 国产又粗又猛又爽又黄91精品| 日本va欧美va精品| 日本不卡一二三| 美女网站色91| 日韩中文字幕麻豆| 日本午夜精品视频在线观看| 五月婷婷综合网| 天堂成人免费av电影一区| 午夜视频在线观看一区二区| 亚洲成a人片在线不卡一二三区| 亚洲精品国产成人久久av盗摄| 欧美aaaaa成人免费观看视频| 日本高清不卡aⅴ免费网站| 成人av电影在线观看| 成人av网址在线| 99vv1com这只有精品| 色狠狠av一区二区三区| 欧美中文字幕一区二区三区| 欧美日韩在线观看一区二区| 欧美精三区欧美精三区| 日韩一区二区三区电影| 久久久久一区二区三区四区| 国产午夜久久久久| 国产精品久久午夜夜伦鲁鲁| 亚洲蜜桃精久久久久久久| 亚洲国产一区二区a毛片| 五月天亚洲婷婷| 久久国产视频网| 成人a级免费电影| 在线观看亚洲专区| 日韩一区二区三区av| 久久久精品影视| 亚洲精品老司机| 麻豆精品视频在线观看| 国产91精品精华液一区二区三区| 91在线一区二区三区| 91精品久久久久久久91蜜桃 | 欧美va亚洲va| 欧美精品一区二| 国产精品久久久久久久久搜平片| 亚洲欧洲性图库| 床上的激情91.| 色欧美日韩亚洲| 欧美一区午夜视频在线观看| 久久综合色婷婷| 亚洲综合在线视频| 精品亚洲成av人在线观看| 91丨porny丨国产入口| 欧美一区二区三区免费视频| 国产精品久久免费看| 亚洲成av人片| 成人av资源下载| 91精品免费在线观看| 亚洲欧洲另类国产综合| 青椒成人免费视频| 色94色欧美sute亚洲线路一久| 欧美一级理论片| 亚洲视频在线观看一区| 久久99精品一区二区三区| 在线视频一区二区三| 久久精品在这里| 日日夜夜一区二区| 99久久久精品| av一区二区三区四区| 91蜜桃婷婷狠狠久久综合9色| 欧美精品乱码久久久久久| 国产亚洲欧洲一区高清在线观看| 亚洲激情图片小说视频| 国产精品一区二区在线看| 4438x亚洲最大成人网| 亚洲免费观看高清完整版在线观看| 激情六月婷婷久久| 欧美美女直播网站| 一区二区三区中文字幕在线观看| 高清国产一区二区三区| 欧美成人午夜电影| 日本vs亚洲vs韩国一区三区二区 | 91免费国产在线| 国产日产精品一区| 久久99精品久久只有精品| 欧美精品少妇一区二区三区| 亚洲免费观看高清在线观看| 色88888久久久久久影院按摩 | 天堂资源在线中文精品| 国精产品一区一区三区mba桃花| 在线观看日产精品| 亚洲精品国产成人久久av盗摄 | 激情丁香综合五月| 日韩一级免费观看| 日韩精品每日更新| 欧美一区二区三级|