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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? text_code_mb.c

?? 這是個MPEG-4編碼技術(shù)
?? C
字號:
#include "text_code.h"
#include "text_dct.h"
#define BLOCK_SIZE 8
Void  	BlockPredict (SInt *curr, 
	Int x_pos, Int y_pos, UInt width, Int fblock[][8]);
Void  	BlockRebuild (SInt *rec_curr, SInt *comp, Int pred_type, Int max,
	Int x_pos, Int y_pos, UInt width, UInt edge, Int fblock[][8]);
Void  	BlockQuantH263 (Int *coeff, Int QP, Int mode, Int type,
	Int *qcoeff, Int maxDC, Int image_type);
Void  	BlockDequantH263 (Int *qcoeff, Int QP, Int mode, Int type,
	Int *rcoeff, Int image_type, Int short_video_header, Int bits_per_pixel);
Void CodeMB(Vop *curr, Vop *rec_curr, Vop *comp, Int x_pos, Int y_pos, UInt width,
Int QP, Int Mode, Int *qcoeff)
{
	Int k;
	Int fblock[6][8][8];
	Int coeff[384];
	Int *coeff_ind;
	Int *qcoeff_ind;
	Int* rcoeff_ind;
	Int x, y;
	SInt *current, *recon, *compensated = NULL;
	UInt xwidth;
	Int iblock[6][8][8];
	Int rcoeff[6*64];
	Int i, j;
	Int type;									  
	SInt tmp[64];
	Int s;
	int operation = curr->prediction_type;
	
	Int max = GetVopBrightWhite(curr);
	
	coeff_ind = coeff;
	qcoeff_ind = qcoeff;
	rcoeff_ind = rcoeff;
	for (k = 0; k < 6; k++)
	{
		switch (k)
		{
			case 0:
				x = x_pos;
				y = y_pos;
				xwidth = width;
				current = (SInt *) GetImageData (GetVopY (curr));
				break;
			case 1:
				x = x_pos + 8;
				y = y_pos;
				xwidth = width;
				current = (SInt *) GetImageData (GetVopY (curr));
				break;
			case 2:
				x = x_pos;
				y = y_pos + 8;
				xwidth = width;
				current = (SInt *) GetImageData (GetVopY (curr));
				break;
			case 3:
				x = x_pos + 8;
				y = y_pos + 8;
				xwidth = width;
				current = (SInt *) GetImageData (GetVopY (curr));
				break;
			case 4:
				x = x_pos / 2;
				y = y_pos / 2;
				xwidth = width / 2;
				current = (SInt *) GetImageData (GetVopU (curr));
				break;
			case 5:
				x = x_pos / 2;
				y = y_pos / 2;
				xwidth = width / 2;
				current = (SInt *) GetImageData (GetVopV (curr));
				break;
			default:
				break;
		}
		BlockPredict (current, x, y, xwidth, fblock[k]);
	}
	for (k = 0; k < 6; k++)
	{
		s = 0;
		for (i = 0; i < 8; i++)
			for (j = 0; j < 8; j++)
				tmp[s++] = (SInt) fblock[k][i][j];
#ifndef _MMX_
		fdct_enc(tmp);
#else
		fdct_mm32(tmp);
#endif
		for (s = 0; s < 64; s++)
			coeff_ind[s] = (Int) tmp[s];
		if (k < 4) type = 1;
		else type = 2;
		
		BlockQuantH263(coeff_ind,QP,Mode,type,qcoeff_ind,
			GetVopBrightWhite(curr),1);
		BlockDequantH263(qcoeff_ind,QP,Mode,type,rcoeff_ind,1, 0, GetVopBitsPerPixel(curr));
		for (s = 0; s < 64; s++)
			tmp[s] = (SInt) rcoeff_ind[s];
#ifndef _MMX_
		idct_enc(tmp);
#else
		Fast_IDCT(tmp);
#endif
		s = 0;
		for (i = 0; i < 8; i++)
			for (j = 0; j < 8; j++)
				iblock[k][i][j] = (Int)tmp[s++];
		coeff_ind += 64;
		qcoeff_ind += 64;
		rcoeff_ind += 64;
		if (Mode == MODE_INTRA||Mode==MODE_INTRA_Q)
			for (i = 0; i < 8; i++)
				for (j = 0; j < 8; j ++)
					iblock[k][i][j] = MIN (GetVopBrightWhite(curr), MAX (0, iblock[k][i][j]));
		switch (k)
		{
			case 0:
			case 1:
			case 2:
				continue;
			case 3:
				recon = (SInt *) GetImageData (GetVopY (rec_curr));
				if (operation == P_VOP) compensated = (SInt *) GetImageData (GetVopY (comp));
				BlockRebuild (recon, compensated, operation, max, x_pos,     y_pos,     width, 16, iblock[0]);
				BlockRebuild (recon, compensated, operation, max, x_pos + 8, y_pos,     width, 16, iblock[1]);
				BlockRebuild (recon, compensated, operation, max, x_pos,     y_pos + 8, width, 16, iblock[2]);
				BlockRebuild (recon, compensated, operation, max, x_pos + 8, y_pos + 8, width, 16, iblock[3]);
				continue;
			case 4:
				recon = (SInt *) GetImageData (GetVopU (rec_curr));
				if (operation == P_VOP) compensated = (SInt *) GetImageData (GetVopU (comp));
				BlockRebuild (recon, compensated, operation, max,
					x_pos/2, y_pos/2, width/2, 8, iblock[4]);
				continue;
			case 5:
				recon = (SInt *) GetImageData (GetVopV (rec_curr));
				if (operation == P_VOP) compensated = (SInt *) GetImageData (GetVopV (comp));
				BlockRebuild (recon, compensated, operation, max,
					x_pos/2, y_pos/2, width/2, 8, iblock[5]);
				continue;
		}
	}
	return;
}
Void
BlockPredict (SInt *curr,  Int x_pos, Int y_pos,
UInt width, Int fblock[][8])
{
	Int i, j;
	for (i = 0; i < 8; i++)
	{
		for (j = 0; j < 8; j++)
		{
			fblock[i][j] = curr[(y_pos+i)*width + x_pos+j];
		}
	}
}
Void
BlockRebuild (SInt *rec_curr, SInt *comp, Int pred_type, Int max,
Int x_pos, Int y_pos, UInt width, UInt edge, Int fblock[][8])
{
	
	Int i, j;
	SInt *rec;
	Int padded_width;
	
	padded_width = width + 2 * edge;
	rec = rec_curr + edge * padded_width + edge;
	if (pred_type == I_VOP)
	{
		SInt *p;
		p  = rec + y_pos * padded_width + x_pos;
		for (i = 0; i < 8; i++) 
		{
			for (j = 0; j < 8; j++)
			{
				SInt temp = fblock[i][j];
				*(p++) = CLIP(temp, 0, max);
			}
			p += padded_width - 8;
		}
	}
	else if (pred_type == P_VOP)
	{
		SInt *p, *pc; 
		p  = rec + y_pos * padded_width + x_pos;
		pc = comp     + y_pos * width + x_pos;
		for (i = 0; i < 8; i++)
		{
			for (j = 0; j < 8; j++)
			{
				SInt temp = *(pc++) + fblock[i][j];
				*(p++) = CLIP(temp, 0, max);
			}
			p += padded_width - 8;
			pc += width - 8;
		}
	}
}
Void
BlockQuantH263 (Int *coeff, Int QP, Int mode, Int type, Int *qcoeff, Int maxDC, Int image_type)
{
	Int i;
	Int level, result;
	Int step, offset;
	Int dc_scaler;
	if (!(QP > 0 && (QP < 32*image_type))) return;
	if (!(type == 1 || type == 2)) return;
	if (mode == MODE_INTRA || mode == MODE_INTRA_Q)
	{										  
		dc_scaler = cal_dc_scaler(QP,type);
		qcoeff[0] = MAX(1,MIN(maxDC-1, (coeff[0] + dc_scaler/2)/dc_scaler));
		step = 2 * QP;
		for (i = 1; i < 64; i++)
		{
			level = (abs(coeff[i]))  / step;
			result = (coeff[i] >= 0) ? level : -level;
			qcoeff[i] =  MIN(2047, MAX(-2048, result));
		}
	}
	else
	{										  
		step = 2 * QP;
		offset = QP / 2;
		for (i = 0; i < 64; i++)
		{
			level = (abs(coeff[i]) - offset)  / step;
			result = (coeff[i] >= 0) ? level : -level;
			qcoeff[i] =  MIN(2047, MAX(-2048, result));
		}
	}
	return;
}
Void
BlockDequantH263 (Int *qcoeff, Int QP, Int mode, Int type, Int *rcoeff,
Int image_type, Int short_video_header, Int bits_per_pixel)
{
	Int i;
	Int dc_scaler;
	Int lim;
	lim = (1 << (bits_per_pixel + 3));
	if (QP)
	{
		for (i = 0; i < 64; i++)
		{
			if (qcoeff[i])
			{
				
				qcoeff[i] =  MIN(2047, MAX(-2048, qcoeff[i] ));
				if ((QP % 2) == 1)
					rcoeff[i] = QP * (2*ABS(qcoeff[i]) + 1);
				else
					rcoeff[i] = QP * (2*ABS(qcoeff[i]) + 1) - 1;
				rcoeff[i] = SIGN(qcoeff[i]) * rcoeff[i];
			}
			else
				rcoeff[i] = 0;
		}
		if (mode == MODE_INTRA || mode == MODE_INTRA_Q)
		{										  
			MOMCHECK(QP > 0 && (QP < 32*image_type));
			MOMCHECK(type == 1 || type == 2);
			if (short_video_header)
				dc_scaler = 8;
			else
				dc_scaler = cal_dc_scaler(QP,type);
			rcoeff[0] = qcoeff[0] * dc_scaler;
		}
	}
	else
	{
		
		for (i = 0; i < 64; i++)
		{
			rcoeff[i] = qcoeff[i];
		}
		if (mode == MODE_INTRA || mode == MODE_INTRA_Q)
		{										  
			rcoeff[0] = qcoeff[0]*8;
		}
	}
	for (i=0;i<64;i++)
		if (rcoeff[i]>(lim-1)) rcoeff[i]=(lim-1);
		else if (rcoeff[i]<(-lim)) rcoeff[i]=(-lim);
	return;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区在线观看| 国产iv一区二区三区| 欧美在线免费观看亚洲| 亚洲视频综合在线| 在线亚洲一区观看| 免费在线观看视频一区| 精品久久一二三区| 国产一区二区伦理片| 中文字幕va一区二区三区| 色婷婷香蕉在线一区二区| 亚洲伊人色欲综合网| 91精品国产综合久久久久久漫画| 日韩影视精彩在线| 久久久国产精品不卡| 94色蜜桃网一区二区三区| 偷拍一区二区三区| 久久色.com| 在线视频亚洲一区| 久草这里只有精品视频| 国产精品久久久久久亚洲伦 | 久久国产精品72免费观看| 亚洲精品一区二区三区精华液| 成人自拍视频在线| 亚洲成人高清在线| 久久久久久久久一| 欧美日韩在线播放三区| 国内不卡的二区三区中文字幕| 亚洲女厕所小便bbb| 欧美成人a在线| 91美女在线看| 欧美日本一道本在线视频| 日韩影院精彩在线| 国产精品美女一区二区三区| 欧美精品 国产精品| 国产成人av网站| 亚洲bdsm女犯bdsm网站| 欧美激情艳妇裸体舞| 欧美日韩中文另类| 成人福利视频在线看| 日本不卡一区二区| 亚洲欧美日韩在线| 亚洲精品一区二区三区影院| 欧美视频一区在线| 成人精品鲁一区一区二区| 免费观看91视频大全| 一区二区三区在线免费观看| 国产亚洲成av人在线观看导航| 欧美亚洲国产一区二区三区| 成人午夜激情在线| 黄一区二区三区| 日韩成人免费电影| 夜夜嗨av一区二区三区中文字幕 | 乱中年女人伦av一区二区| 中文字幕视频一区二区三区久| 精品三级在线看| 91精品欧美一区二区三区综合在| 欧美做爰猛烈大尺度电影无法无天| 成人午夜av影视| 国产精品一区久久久久| 看片的网站亚洲| 色美美综合视频| 国产91精品在线观看| 国产美女久久久久| 激情综合一区二区三区| 奇米影视在线99精品| 午夜一区二区三区在线观看| 一区二区不卡在线视频 午夜欧美不卡在 | 最新热久久免费视频| 国产色产综合产在线视频| 精品电影一区二区三区| 日韩视频不卡中文| 91精品久久久久久蜜臀| 欧美精品一级二级| 欧美一区二区三区性视频| 欧美一区二区日韩| 欧美一级搡bbbb搡bbbb| 欧美一级爆毛片| 精品久久久久久久久久久久久久久 | 免费日韩伦理电影| 美女视频黄a大片欧美| 捆绑变态av一区二区三区| 黑人精品欧美一区二区蜜桃| 国产精品影视在线观看| 成人午夜私人影院| 91一区二区三区在线观看| 色悠久久久久综合欧美99| 欧美在线综合视频| 欧美一区二区高清| 久久久久99精品国产片| 国产欧美一区二区精品性色超碰| 欧美经典三级视频一区二区三区| 国产精品白丝在线| 亚洲精品国产无套在线观| 亚洲一区二区三区四区五区中文| 亚洲综合一区二区精品导航| 婷婷综合另类小说色区| 麻豆一区二区三区| 成人一级黄色片| 在线一区二区三区四区五区| 717成人午夜免费福利电影| 日韩亚洲欧美中文三级| 久久精品人人爽人人爽| 亚洲同性同志一二三专区| 午夜婷婷国产麻豆精品| 精品一二三四区| 99久久99久久免费精品蜜臀| 欧美色中文字幕| 日韩免费成人网| 国产欧美一区二区精品婷婷| 亚洲人成网站在线| 蜜臀91精品一区二区三区| 成人综合婷婷国产精品久久蜜臀 | 国产精品资源在线| 色婷婷亚洲婷婷| 精品欧美一区二区在线观看| 麻豆91精品视频| 国产成人av网站| 欧美日韩国产综合一区二区三区| 久久久美女艺术照精彩视频福利播放| 国产精品国产三级国产三级人妇 | 免费不卡在线观看| 99国产欧美另类久久久精品 | 精品嫩草影院久久| 尤物在线观看一区| 国产精品911| 欧美精品1区2区3区| 国产精品久久久久久久浪潮网站| 视频一区免费在线观看| 成人深夜福利app| 欧美一级日韩不卡播放免费| 亚洲欧美日本韩国| 国产99精品国产| 日韩午夜激情av| 亚洲成a人v欧美综合天堂| 成人综合婷婷国产精品久久免费| 日韩一级欧美一级| 亚洲综合丁香婷婷六月香| 丁香激情综合国产| 日韩视频一区二区三区在线播放| 亚洲精品久久久蜜桃| 成人性生交大片| 久久久久久久精| 日本不卡视频一二三区| 欧美日韩一级片网站| 一区免费观看视频| 国产xxx精品视频大全| 欧美xxxx老人做受| 五月婷婷激情综合| 欧美无砖砖区免费| 一区二区三区中文免费| 成人综合激情网| 国产欧美一二三区| 国产精品一区二区久久精品爱涩| 日韩午夜在线影院| 人人爽香蕉精品| 欧美放荡的少妇| 日韩精品欧美成人高清一区二区| 亚洲国产经典视频| 国产裸体歌舞团一区二区| 欧美大片一区二区三区| 日本亚洲欧美天堂免费| 欧美日韩国产a| 亚洲sss视频在线视频| 欧美精品三级日韩久久| 日日噜噜夜夜狠狠视频欧美人| 777奇米四色成人影色区| 亚洲成人先锋电影| 欧美精品久久99久久在免费线 | 18欧美亚洲精品| 成人精品国产免费网站| 中文字幕中文字幕在线一区| jlzzjlzz亚洲日本少妇| 国产精品二三区| 91视频xxxx| 亚洲午夜免费福利视频| 欧美日韩国产精品自在自线| 日韩精品亚洲专区| 精品99一区二区| 成人黄色免费短视频| 一区二区三区蜜桃网| 欧美日韩成人一区二区| 麻豆一区二区在线| 国产亚洲女人久久久久毛片| 成人av网站免费| 亚洲国产综合人成综合网站| 欧美一区三区四区| 国产一区二区三区最好精华液| 国产欧美精品一区二区三区四区| 成人国产精品免费观看视频| 亚洲乱码中文字幕| 91精品国产欧美日韩| 国产精品中文欧美| 亚洲精品国产高清久久伦理二区| 这里只有精品视频在线观看| 经典三级在线一区| 1区2区3区欧美| 日韩精品中午字幕| aaa亚洲精品| 日韩**一区毛片| 亚洲国产精品精华液ab|