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

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

?? me.c

?? h261協(xié)議的h261編碼碼,lib_261.h里面提供了詳細(xì)的接口和說明.
?? C
字號(hào):
/*************************************************************
Copyright (C) 1990, 1991, 1993 Andy C. Hung, all rights reserved.
PUBLIC DOMAIN LICENSE: Stanford University Portable Video Research
Group. If you use this software, you agree to the following: This
program package is purely experimental, and is licensed "as is".
Permission is granted to use, modify, and distribute this program
without charge for any purpose, provided this license/ disclaimer
notice appears in the copies.  No warranty or maintenance is given,
either expressed or implied.  In no event shall the author(s) be
liable to you or a third party for any special, incidental,
consequential, or other damages, arising out of the use or inability
to use the program for any purpose (or the loss of data), even if we
have been advised of such possibilities.  Any public reference or
advertisement of this source code should refer to it as the Portable
Video Research Group (PVRG) code, and not by any author(s) (or
Stanford University) name.
*************************************************************/
/*
************************************************************
me.c

This file does much of the motion estimation and compensation.

************************************************************
*/

/*LABEL me.c */

#include "globals.h"

/*PUBLIC*/

extern void initmc_en();
extern void FastBME_en();
extern void BruteMotionEstimation_en();
//extern void BMC();
//extern MEM *MotionCompensation();

#define FREEBLOCK(p) FREE(p)

/*PRIVATE*/

static int VAR;
static int VAROR;
static int MWOR;

int MeVAR[1024];
int MeVAROR[1024];
int MeMWOR[1024];
int MX;
int MY;
int MV;
int OMV;
int MeX[1024];
int MeY[1024];
int MeVal[1024];
int MeOVal[1024];
int MeN=0;

int SearchLimit = 15;
BLOCK nb,rb;

#define COMPARISON >=  /* This is to compare for short-circuit exit */

/*START*/

/*BFUNC

initmc_en() initializes the block structures used for copying areas
of memory.

EFUNC*/

void initmc_en()
{
  BEGIN("initmc_en");

  FREEBLOCK(nb);
  nb = MakeBlock_en();
  FREEBLOCK(rb);
  rb = MakeBlock_en();
}

/*BFUNC

FastBME_en() does a fast brute-force motion estimation with two indexes
into two memory structures. The motion estimation has a short-circuit
abort to speed up calculation.

EFUNC*/

//void FastBME_en(rx,ry,rm,cx,cy,cm)
//     int rx;
//     int ry;
//     MEM *rm;
//     int cx;
//     int cy;
//     MEM *cm;
void FastBME_en(int rx,int ry,MEM *rm,int cx,int cy, MEM *cm)
{
  BEGIN("FastBME_en");
  int px,py,dx,dy,incr,xdir,ydir;
  //register int i,j,data,val;
  int i,j,data,val;
  //register unsigned char *bptr,*cptr;
  unsigned char *bptr,*cptr;
  unsigned char *baseptr;

  MX=MY=MV=0;
  bptr=rm->data + rx + (ry * rm->width);
  baseptr=cm->data + cx + (cy * cm->width);
  cptr=baseptr;
  for(i=0;i<16;i++)
    {
      for(j=0;j<16;j++)
	{
	  data=(*(bptr++)-*(cptr++));
	  if (data<0) {MV-=data;} else {MV+=data;}
	}
      bptr += (rm->width - 16);
      cptr += (cm->width - 16);
    }
  OMV=MV; /*  printf("[00]MX %d MY %d MV %d\n",MX,MY,MV);*/
  px=rx;
  py=ry;
  xdir=1;
  ydir=1;
  for(incr=1;incr<SearchLimit;incr++)
    {
      for(dx=0;dx<incr;dx++)
	{
	  if (xdir) {px++;} else {px--;}
	  if (((px >= 0) && (px < rm->width-16)) &&
	      ((py >= 0) && (py < rm->height-16)))
	    {
	      val=0;
	      bptr = rm->data + px + (py * rm->width);
	      cptr = baseptr;
	      for(i=0;i<16;i++)
		{
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  if (val COMPARISON MV) break;
		  bptr += (rm->width - 16);
		  cptr += (cm->width - 16);
		}
	      if (val < MV)
		{
		  MV = val; 
		  MX = px - rx;
		  MY = py - ry;
		}
	    }
	}
      xdir = 1-xdir;
      for(dy=0;dy<incr;dy++)
	{
	  if (ydir) {py++;} else {py--;}
	  if (((px >= 0) && (px <= rm->width-16)) &&
	      ((py >= 0) && (py <= rm->height-16)))
	    {
	      bptr = rm->data + px + (py * rm->width);
	      cptr = baseptr;
	      for(val=0,i=0;i<16;i++)
		{
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  data=(*(bptr++)-*(cptr++));
		  if (data<0) {val-=data;} else	{val+=data;}
		  if (val COMPARISON MV) break;
		  bptr += (rm->width - 16);
		  cptr += (cm->width - 16);
		}
	      if (val < MV)
		{
		  MV = val; 
		  MX = px - rx;
		  MY = py - ry;
		}
	    }
	}
      ydir = 1-ydir;
    }
  bptr = rm->data + (MX+rx) + ((MY+ry) * rm->width);
  cptr = baseptr;
  for(VAR=0,VAROR=0,MWOR=0,i=0;i<16;i++)
    {
      for(j=0;j<16;j++)
	{
	  data = *(bptr) - *(cptr);
	  VAR += data*data;
	  VAROR += *(bptr)*(*(bptr));
	  MWOR += *(bptr);
	  bptr++;
	  cptr++;
	}
      bptr += (rm->width - 16);
      cptr += (cm->width - 16);
    }
  VAR = VAR/256;
  VAROR = (VAROR/256)-(MWOR/256)*(MWOR/256);
}

/*BFUNC

BruteMotionEstimation_en() does a brute-force motion estimation on all
aligned 16x16 blocks in two memory structures.

EFUNC*/

//void BruteMotionEstimation_en(pmem,fmem)
//     MEM *pmem;
//     MEM *fmem;
void BruteMotionEstimation_en(MEM *pmem,MEM *fmem)
{
  BEGIN("BruteMotionEstimation_en");
  int x,y;

  for(MeN=0,y=0;y<fmem->height;y+=16)
    {
      for(x=0;x<fmem->width;x+=16)
	{
	  FastBME_en(x,y,pmem,x,y,fmem);
	  MeVAR[MeN] = VAR;
	  MeVAROR[MeN] = VAROR;
	  MeMWOR[MeN] = MWOR;
	  MeX[MeN] = MX;
	  MeY[MeN] = MY;
	  MeVal[MeN] = MV;
	  MeOVal[MeN] = OMV;
	  MeN++;
	}
    }
}

/*BFUNC

BMC() does a motion compensated copy from one memory structure to
another memory structure with appropriate indexes.

EFUNC*/

//void BMC(rx,ry,rm,cx,cy,cm)
//     int rx;
//     int ry;
//     MEM *rm;
//     int cx;
//     int cy;
//     MEM *cm;
//void BMC(int rx,int ry,MEM *rm,int cx,int cy,MEM *cm)
//{
//  BEGIN("BMC");
//
//  SetPointerBlock(rx,ry,cm,nb);
//  SetPointerBlock(cx+MX,cy+MY,rm,rb);
//  CopyBlock(rb,nb);
//}

/*BFUNC

MotionCompensation() does a full motion compensation of all the blocks
based on the motion vectors created by BruteMotionEstimation_en. Not
actually used in the program. If (omem) is null, it creates a new
memory structure.

EFUNC*/

//MEM *MotionCompensation(mem,omem)
//     MEM *mem;
//     MEM *omem;
//MEM *MotionCompensation(MEM *mem,MEM *omem)
//{
//  BEGIN("MotionCompensation");
//  int x,y;
//  int count;
//  MEM *temp;
//
//  if (omem) {temp=omem;}
//  else {temp = MakeMem_en(mem->width,mem->height);}
//  for(count=0,y=0;y<mem->height;y+=16)
//    {
//      for(x=0;x<mem->width;x+=16)
//	{
//	  SetPointerBlock(x,y,temp,nb);
//	  SetPointerBlock(x+MeX[count],y+MeY[count],mem,rb);
//	  count++;
//	  CopyBlock(rb,nb);
//	}
//    }
//  return(temp);
//}
//

void freeBLOCK_en()
{
	FREEBLOCK(nb);
	FREEBLOCK(rb);
}
/*END*/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美大片在线观看| 在线观看91精品国产麻豆| 日韩国产在线一| 一区二区三区在线看| 亚洲色图.com| 亚洲美女在线一区| 亚洲高清免费观看| 午夜欧美2019年伦理| 日韩黄色小视频| 奇米亚洲午夜久久精品| 黄色小说综合网站| 国产999精品久久| 不卡的电视剧免费网站有什么| 国产91丝袜在线播放| 99国产精品久久| 欧美色区777第一页| 欧美日韩国产一级二级| 欧美国产精品一区| 国产精品视频观看| 亚洲一区在线观看视频| 天堂va蜜桃一区二区三区漫画版| 青青青爽久久午夜综合久久午夜| 六月婷婷色综合| www.av精品| 7777女厕盗摄久久久| 欧美精品一区二区三区蜜桃| 国产精品美女一区二区三区 | 欧美一区二区三区白人| 欧美一级精品大片| 国产精品成人免费精品自在线观看| 亚洲欧美日韩国产一区二区三区| 亚洲小说春色综合另类电影| 日韩1区2区3区| av综合在线播放| 欧美一区二区三区色| 一区在线中文字幕| 毛片基地黄久久久久久天堂| 99久久久免费精品国产一区二区| 欧美日本在线看| 中文字幕欧美激情一区| 日本亚洲天堂网| 色综合久久综合中文综合网| 精品日韩av一区二区| 成人免费小视频| 国模娜娜一区二区三区| 欧美日韩另类一区| 亚洲欧美在线aaa| 国产在线视频精品一区| 在线播放欧美女士性生活| 中文字幕国产一区| 精品无人码麻豆乱码1区2区| 91成人国产精品| 中文字幕在线不卡一区二区三区| 精品综合久久久久久8888| 欧美日韩一区精品| 日韩高清在线一区| 91丨porny丨最新| 久久精品免视看| 免费成人在线影院| 欧美午夜精品一区二区三区| 日韩美女视频一区二区| 国产精品小仙女| 久久欧美一区二区| 精品亚洲porn| 精品国免费一区二区三区| 日韩国产欧美在线观看| 欧美午夜一区二区三区| 亚洲一本大道在线| 欧美区视频在线观看| 亚洲高清在线精品| 欧美美女一区二区在线观看| 亚洲午夜国产一区99re久久| 日本精品免费观看高清观看| 成人免费一区二区三区视频 | 亚洲欧美日韩电影| av电影天堂一区二区在线| 国产精品青草久久| 99视频精品在线| 一区二区在线看| 欧美三区在线观看| 午夜精品久久久久久| 欧美区一区二区三区| 奇米精品一区二区三区四区| 337p亚洲精品色噜噜狠狠| 亚洲国产欧美一区二区三区丁香婷| 欧亚一区二区三区| 五月激情丁香一区二区三区| 9191成人精品久久| 激情五月激情综合网| 国产三级三级三级精品8ⅰ区| 国产精品911| 综合在线观看色| 欧美综合在线视频| 免费在线看一区| 国产三区在线成人av| 92国产精品观看| 午夜精品久久久久久| 精品99一区二区三区| 成人黄色电影在线| 亚洲成人动漫精品| 久久蜜臀精品av| 91福利在线观看| 黑人精品欧美一区二区蜜桃| 国产日韩欧美精品一区| 色噜噜狠狠色综合欧洲selulu| 日本亚洲三级在线| 中文字幕欧美日韩一区| 精品视频123区在线观看| 狠狠色综合色综合网络| 一区二区高清免费观看影视大全| 91精品黄色片免费大全| 成人午夜电影小说| 日韩av一二三| 亚洲视频综合在线| 日韩手机在线导航| 一本久久a久久精品亚洲| 精品一区二区国语对白| 亚洲福利视频一区| 国产精品欧美一区喷水| 日韩欧美一二区| 91日韩一区二区三区| 国内精品久久久久影院色| 亚洲国产一区二区视频| 国产精品嫩草影院av蜜臀| 91麻豆精品国产自产在线| 99精品视频在线播放观看| 激情国产一区二区| 午夜成人在线视频| 亚洲精选在线视频| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 正在播放亚洲一区| 97久久人人超碰| 福利一区在线观看| 国内成+人亚洲+欧美+综合在线| 亚洲超丰满肉感bbw| 亚洲丝袜精品丝袜在线| 国产精品久久夜| 国产三区在线成人av| 久久久久9999亚洲精品| 日韩一区二区精品在线观看| 欧美三级韩国三级日本一级| fc2成人免费人成在线观看播放| 国内精品伊人久久久久av影院| 午夜精品久久久久久久99水蜜桃| 亚洲蜜桃精久久久久久久| 国产精品成人一区二区艾草| 国产亲近乱来精品视频| 久久久久9999亚洲精品| 国产午夜久久久久| 国产婷婷色一区二区三区| 欧美精品一区二区三区在线播放 | 韩国成人在线视频| 毛片不卡一区二区| 久久国产夜色精品鲁鲁99| 免费观看91视频大全| 另类成人小视频在线| 韩国精品一区二区| 国产精品一区二区在线观看不卡 | 欧美国产97人人爽人人喊| 一区二区三区四区亚洲| 综合色天天鬼久久鬼色| 综合久久国产九一剧情麻豆| 国产精品的网站| 亚洲美女免费视频| 亚洲成人一二三| 六月丁香婷婷色狠狠久久| 国内久久精品视频| 成人av手机在线观看| 91福利小视频| 日韩一区二区电影| 国产网站一区二区| 亚洲精品午夜久久久| 日韩精品一级中文字幕精品视频免费观看 | 亚洲午夜久久久久中文字幕久| 亚洲福利电影网| 激情综合色播激情啊| 成人高清视频免费观看| 欧美系列亚洲系列| 久久久亚洲综合| 亚洲精品成人少妇| 麻豆91在线播放| 色综合一区二区| 欧美大片在线观看一区二区| 国产午夜精品久久久久久久| 亚洲黄色免费电影| 久久国产精品72免费观看| 99精品国产99久久久久久白柏| 欧美日韩在线精品一区二区三区激情 | 丁香啪啪综合成人亚洲小说| 91免费在线视频观看| 欧美一级片免费看| 综合激情成人伊人| 国内一区二区视频| 欧美日韩一二三区| 亚洲国产精品精华液2区45| 亚洲成av人片在www色猫咪| 国产精品18久久久| 欧美一区二区三级| 一区二区三区四区在线播放 | 国产精品日韩成人|