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

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

?? motion.c

?? mp3解碼程序vc++環(huán)境下運(yùn)行
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* motion.c, 運(yùn)動預(yù)測程序模塊                               */

#include <stdio.h>#include "global.h"/* 私有函數(shù)*/static void frame_ME(unsigned char *oldorg, unsigned char *neworg,  unsigned char *oldref, unsigned char *newref, unsigned char *cur,  int i, int j, int sxf, int syf, int sxb, int syb, struct mbinfo *mbi);static void field_ME(unsigned char *oldorg, unsigned char *neworg,  unsigned char *oldref, unsigned char *newref, unsigned char *cur,  unsigned char *curref, int i, int j, int sxf, int syf, int sxb, int syb,  struct mbinfo *mbi, int secondfield, int ipflag);static void frame_estimate(unsigned char *org,  unsigned char *ref, unsigned char *mb,  int i, int j,  int sx, int sy, int *iminp, int *jminp, int *imintp, int *jmintp,  int *iminbp, int *jminbp, int *dframep, int *dfieldp,  int *tselp, int *bselp, int imins[2][2], int jmins[2][2]);static void field_estimate(unsigned char *toporg,  unsigned char *topref, unsigned char *botorg, unsigned char *botref,  unsigned char *mb, int i, int j, int sx, int sy, int ipflag,  int *iminp, int *jminp, int *imin8up, int *jmin8up, int *imin8lp,  int *jmin8lp, int *dfieldp, int *d8p, int *selp, int *sel8up, int *sel8lp,  int *iminsp, int *jminsp, int *dsp);static void dpframe_estimate(unsigned char *ref,  unsigned char *mb, int i, int j, int iminf[2][2], int jminf[2][2],  int *iminp, int *jminp, int *imindmvp, int *jmindmvp,  int *dmcp, int *vmcp);static void dpfield_estimate(unsigned char *topref,  unsigned char *botref, unsigned char *mb,  int i, int j, int imins, int jmins, int *imindmvp, int *jmindmvp,  int *dmcp, int *vmcp);static int fullsearch(unsigned char *org, unsigned char *ref,  unsigned char *blk,  int lx, int i0, int j0, int sx, int sy, int h, int xmax, int ymax,  int *iminp, int *jminp);static int dist1(unsigned char *blk1, unsigned char *blk2,  int lx, int hx, int hy, int h, int distlim);static int dist2(unsigned char *blk1, unsigned char *blk2,  int lx, int hx, int hy, int h);static int bdist1(unsigned char *pf, unsigned char *pb,  unsigned char *p2, int lx, int hxf, int hyf, int hxb, int hyb, int h);static int bdist2(unsigned char *pf, unsigned char *pb,  unsigned char *p2, int lx, int hxf, int hyf, int hxb, int hyb, int h);
static int variance(unsigned char *p, int lx);
static int calcDist16(unsigned char *p1In, unsigned char *p2In);

/* 私有變量 */

static unsigned char tmpResult[16];

// 下面的常數(shù)將用在MMX部分
static short PACKED_0[4] = { 0, 0, 0, 0 };
static short PACKED_1[4] = { 1, 1, 1, 1 };
static short PACKED_2[4] = { 2, 2, 2, 2 };

/* * 前向和交織幀的運(yùn)動估計 * *oldorg:前向預(yù)測的原始參考圖(供P圖像和B圖像使用)
 *neworg:后向預(yù)測的原始參考圖(僅供B圖像使用)
 *oldref:前向預(yù)測的重建圖像(P圖像和B圖像)
 *newref:后向預(yù)測的重建圖像(B圖像)
 *cur:當(dāng)前原始圖像幀(由預(yù)測圖像產(chǎn)生的)
 *curref:當(dāng)前的重建圖像幀(用來根據(jù)第一個場預(yù)測第二個場)
 *sxf,syf:前向搜索窗口
 *sxb,syb:后向搜索窗口
 *mbi:指向宏塊信息結(jié)構(gòu)體的指針
 *輸出結(jié)果mbi->
 *mb_type: 0, MB_INTRA, MB_FORWARD, MB_BACKWARD, MB_FORWARD|MB_BACKWARD
 *MV[][][]: 運(yùn)動向量 (場格式)
 *mv_field_sel: 頂部/底部場
 *motion_type: MC_FIELD, MC_16X8 */void motion_estimation(oldorg,neworg,oldref,newref,cur,curref,  sxf,syf,sxb,syb,mbi,secondfield,ipflag)unsigned char *oldorg,*neworg,*oldref,*newref,*cur,*curref;int sxf,syf,sxb,syb;struct mbinfo *mbi;int secondfield,ipflag;{  int i, j;  for (j=0; j<height2; j+=16)  {    for (i=0; i<width; i+=16)    {      if (pict_struct==FRAME_PICTURE)        frame_ME(oldorg,neworg,oldref,newref,cur,i,j,sxf,syf,sxb,syb,mbi);      else        field_ME(oldorg,neworg,oldref,newref,cur,curref,i,j,sxf,syf,sxb,syb,          mbi,secondfield,ipflag);      mbi++;    }    if (!quiet)    {      putc('.',stderr);      fflush(stderr);    }  }  if (!quiet)    putc('\r',stderr);}static void frame_ME(oldorg,neworg,oldref,newref,cur,i,j,sxf,syf,sxb,syb,mbi)unsigned char *oldorg,*neworg,*oldref,*newref,*cur;int i,j,sxf,syf,sxb,syb;struct mbinfo *mbi;{  int imin,jmin,iminf,jminf,iminr,jminr;  int imint,jmint,iminb,jminb;  int imintf,jmintf,iminbf,jminbf;  int imintr,jmintr,iminbr,jminbr;  int var,v0;  int dmc,dmcf,dmcr,dmci,vmc,vmcf,vmcr,vmci;  int dmcfield,dmcfieldf,dmcfieldr,dmcfieldi;  int tsel,bsel,tself,bself,tselr,bselr;  unsigned char *mb;  int imins[2][2],jmins[2][2];  int imindp,jmindp,imindmv,jmindmv,dmc_dp,vmc_dp;  mb = cur + i + width*j;  var = variance(mb,width);  if (pict_type==I_TYPE)    mbi->mb_type = MB_INTRA;  else if (pict_type==P_TYPE)  {    if (frame_pred_dct)    {      dmc = fullsearch(oldorg,oldref,mb,                       width,i,j,sxf,syf,16,width,height,&imin,&jmin);      vmc = dist2(oldref+(imin>>1)+width*(jmin>>1),mb,                  width,imin&1,jmin&1,16);      mbi->motion_type = MC_FRAME;    }    else    {      frame_estimate(oldorg,oldref,mb,i,j,sxf,syf,        &imin,&jmin,&imint,&jmint,&iminb,&jminb,        &dmc,&dmcfield,&tsel,&bsel,imins,jmins);      if (M==1)        dpframe_estimate(oldref,mb,i,j>>1,imins,jmins,          &imindp,&jmindp,&imindmv,&jmindmv,&dmc_dp,&vmc_dp);      if (M==1 && dmc_dp<dmc && dmc_dp<dmcfield)      {        mbi->motion_type = MC_DMV;        dmc = dmc_dp;        vmc = vmc_dp;      }      else if (dmc<=dmcfield)      {        mbi->motion_type = MC_FRAME;        vmc = dist2(oldref+(imin>>1)+width*(jmin>>1),mb,                    width,imin&1,jmin&1,16);      }      else      {        mbi->motion_type = MC_FIELD;        dmc = dmcfield;        vmc = dist2(oldref+(tsel?width:0)+(imint>>1)+(width<<1)*(jmint>>1),                    mb,width<<1,imint&1,jmint&1,8);        vmc+= dist2(oldref+(bsel?width:0)+(iminb>>1)+(width<<1)*(jminb>>1),                    mb+width,width<<1,iminb&1,jminb&1,8);      }    }     if (vmc>var && vmc>=9*256)      mbi->mb_type = MB_INTRA;    else    {            v0 = dist2(oldref+i+width*j,mb,width,0,0,16);      if (4*v0>5*vmc && v0>=9*256)      {        /* use MC */        var = vmc;        mbi->mb_type = MB_FORWARD;        if (mbi->motion_type==MC_FRAME)        {          mbi->MV[0][0][0] = imin - (i<<1);          mbi->MV[0][0][1] = jmin - (j<<1);        }        else if (mbi->motion_type==MC_DMV)        {                    /* same parity vector */          mbi->MV[0][0][0] = imindp - (i<<1);          mbi->MV[0][0][1] = (jmindp<<1) - (j<<1);          /* opposite parity vector */          mbi->dmvector[0] = imindmv;          mbi->dmvector[1] = jmindmv;        }        else        {                   mbi->MV[0][0][0] = imint - (i<<1);          mbi->MV[0][0][1] = (jmint<<1) - (j<<1);          mbi->MV[1][0][0] = iminb - (i<<1);          mbi->MV[1][0][1] = (jminb<<1) - (j<<1);          mbi->mv_field_sel[0][0] = tsel;          mbi->mv_field_sel[1][0] = bsel;        }      }      else      {        /* No-MC */        var = v0;        mbi->mb_type = 0;        mbi->motion_type = MC_FRAME;        mbi->MV[0][0][0] = 0;        mbi->MV[0][0][1] = 0;      }    }  }  else /* B幀圖像*/  {    if (frame_pred_dct)    {      /* 前向 */      dmcf = fullsearch(oldorg,oldref,mb,                        width,i,j,sxf,syf,16,width,height,&iminf,&jminf);      vmcf = dist2(oldref+(iminf>>1)+width*(jminf>>1),mb,                   width,iminf&1,jminf&1,16);      /* 后向 */      dmcr = fullsearch(neworg,newref,mb,                        width,i,j,sxb,syb,16,width,height,&iminr,&jminr);      vmcr = dist2(newref+(iminr>>1)+width*(jminr>>1),mb,                   width,iminr&1,jminr&1,16);      /* 雙向幀 */      vmci = bdist2(oldref+(iminf>>1)+width*(jminf>>1),                    newref+(iminr>>1)+width*(jminr>>1),                    mb,width,iminf&1,jminf&1,iminr&1,jminr&1,16);            if (vmcf<=vmcr && vmcf<=vmci)      {        vmc = vmcf;        mbi->mb_type = MB_FORWARD;      }      else if (vmcr<=vmci)      {        vmc = vmcr;        mbi->mb_type = MB_BACKWARD;      }      else      {        vmc = vmci;        mbi->mb_type = MB_FORWARD|MB_BACKWARD;      }      mbi->motion_type = MC_FRAME;    }    else    {      /* 前向預(yù)測 */      frame_estimate(oldorg,oldref,mb,i,j,sxf,syf,        &iminf,&jminf,&imintf,&jmintf,&iminbf,&jminbf,        &dmcf,&dmcfieldf,&tself,&bself,imins,jmins);      /* 后向預(yù)測 */      frame_estimate(neworg,newref,mb,i,j,sxb,syb,        &iminr,&jminr,&imintr,&jmintr,&iminbr,&jminbr,        &dmcr,&dmcfieldr,&tselr,&bselr,imins,jmins);      /* 計算交織距離 */      /* 幀 */      dmci = bdist1(oldref+(iminf>>1)+width*(jminf>>1),                    newref+(iminr>>1)+width*(jminr>>1),                    mb,width,iminf&1,jminf&1,iminr&1,jminr&1,16);      /* 上半部分場 */      dmcfieldi = bdist1(                    oldref+(imintf>>1)+(tself?width:0)+(width<<1)*(jmintf>>1),                    newref+(imintr>>1)+(tselr?width:0)+(width<<1)*(jmintr>>1),                    mb,width<<1,imintf&1,jmintf&1,imintr&1,jmintr&1,8);      /* 下半部分場 */      dmcfieldi+= bdist1(                    oldref+(iminbf>>1)+(bself?width:0)+(width<<1)*(jminbf>>1),                    newref+(iminbr>>1)+(bselr?width:0)+(width<<1)*(jminbr>>1),                    mb+width,width<<1,iminbf&1,jminbf&1,iminbr&1,jminbr&1,8);            if (dmci<dmcfieldi && dmci<dmcf && dmci<dmcfieldf          && dmci<dmcr && dmci<dmcfieldr)      {        /* 交織幀 */        mbi->mb_type = MB_FORWARD|MB_BACKWARD;        mbi->motion_type = MC_FRAME;        vmc = bdist2(oldref+(iminf>>1)+width*(jminf>>1),                     newref+(iminr>>1)+width*(jminr>>1),                     mb,width,iminf&1,jminf&1,iminr&1,jminr&1,16);      }      else if (dmcfieldi<dmcf && dmcfieldi<dmcfieldf               && dmcfieldi<dmcr && dmcfieldi<dmcfieldr)      {        /* 交織場*/        mbi->mb_type = MB_FORWARD|MB_BACKWARD;        mbi->motion_type = MC_FIELD;        vmc = bdist2(oldref+(imintf>>1)+(tself?width:0)+(width<<1)*(jmintf>>1),                     newref+(imintr>>1)+(tselr?width:0)+(width<<1)*(jmintr>>1),                     mb,width<<1,imintf&1,jmintf&1,imintr&1,jmintr&1,8);        vmc+= bdist2(oldref+(iminbf>>1)+(bself?width:0)+(width<<1)*(jminbf>>1),                     newref+(iminbr>>1)+(bselr?width:0)+(width<<1)*(jminbr>>1),                     mb+width,width<<1,iminbf&1,jminbf&1,iminbr&1,jminbr&1,8);      }      else if (dmcf<dmcfieldf && dmcf<dmcr && dmcf<dmcfieldr)      {        /* 前向幀 */        mbi->mb_type = MB_FORWARD;        mbi->motion_type = MC_FRAME;        vmc = dist2(oldref+(iminf>>1)+width*(jminf>>1),mb,                    width,iminf&1,jminf&1,16);      }      else if (dmcfieldf<dmcr && dmcfieldf<dmcfieldr)      {        /* 前向場 */        mbi->mb_type = MB_FORWARD;        mbi->motion_type = MC_FIELD;        vmc = dist2(oldref+(tself?width:0)+(imintf>>1)+(width<<1)*(jmintf>>1),                    mb,width<<1,imintf&1,jmintf&1,8);        vmc+= dist2(oldref+(bself?width:0)+(iminbf>>1)+(width<<1)*(jminbf>>1),                    mb+width,width<<1,iminbf&1,jminbf&1,8);      }      else if (dmcr<dmcfieldr)      {        /* 后向幀 */        mbi->mb_type = MB_BACKWARD;        mbi->motion_type = MC_FRAME;        vmc = dist2(newref+(iminr>>1)+width*(jminr>>1),mb,                    width,iminr&1,jminr&1,16);      }      else      {        /* 后向場 */        mbi->mb_type = MB_BACKWARD;        mbi->motion_type = MC_FIELD;        vmc = dist2(newref+(tselr?width:0)+(imintr>>1)+(width<<1)*(jmintr>>1),                    mb,width<<1,imintr&1,jmintr&1,8);        vmc+= dist2(newref+(bselr?width:0)+(iminbr>>1)+(width<<1)*(jminbr>>1),                    mb+width,width<<1,iminbr&1,jminbr&1,8);      }    }    /* 選擇幀內(nèi)編碼或者非幀內(nèi)編碼     *     * 選擇是基于幀內(nèi)塊方差和預(yù)測誤差的方差     *          */    if (vmc>var && vmc>=9*256)      mbi->mb_type = MB_INTRA;    else    {      var = vmc;      if (mbi->motion_type==MC_FRAME)      {        /* 前向*/        mbi->MV[0][0][0] = iminf - (i<<1);        mbi->MV[0][0][1] = jminf - (j<<1);        /* 后向*/        mbi->MV[0][1][0] = iminr - (i<<1);        mbi->MV[0][1][1] = jminr - (j<<1);      }      else      {                /* 前向 */        mbi->MV[0][0][0] = imintf - (i<<1);        mbi->MV[0][0][1] = (jmintf<<1) - (j<<1);        mbi->MV[1][0][0] = iminbf - (i<<1);        mbi->MV[1][0][1] = (jminbf<<1) - (j<<1);        mbi->mv_field_sel[0][0] = tself;        mbi->mv_field_sel[1][0] = bself;        /* 后向*/        mbi->MV[0][1][0] = imintr - (i<<1);        mbi->MV[0][1][1] = (jmintr<<1) - (j<<1);        mbi->MV[1][1][0] = iminbr - (i<<1);        mbi->MV[1][1][1] = (jminbr<<1) - (j<<1);        mbi->mv_field_sel[0][1] = tselr;        mbi->mv_field_sel[1][1] = bselr;      }    }  }  mbi->var = var;}/* * 場圖像的運(yùn)動估計 * *oldorg:前向預(yù)測的原始參考圖(供P圖像和B圖像使用)
 *neworg:后向預(yù)測的原始參考圖(僅供B圖像使用)
 *oldref:前向預(yù)測的重建圖像(P圖像和B圖像)
 *newref:后向預(yù)測的重建圖像(B圖像)
 *cur:當(dāng)前原始圖像幀(由預(yù)測圖像產(chǎn)生的)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91亚洲精华国产精华精华液| 激情五月激情综合网| 99国产一区二区三精品乱码| 国产精品电影一区二区| 91在线视频在线| 亚洲成年人网站在线观看| 日韩欧美中文字幕制服| 国产精品一区二区久激情瑜伽 | 欧美一区二区成人| 久久99这里只有精品| 国产欧美中文在线| 欧美亚洲国产bt| 毛片基地黄久久久久久天堂| 日本一区二区在线不卡| 欧洲色大大久久| 久久丁香综合五月国产三级网站| 国产欧美一区二区精品忘忧草| 99精品1区2区| 青青草国产成人99久久| 国产精品美女久久久久aⅴ| 欧美日韩一卡二卡三卡| 国产在线精品不卡| 亚洲在线视频网站| 2017欧美狠狠色| 欧美性生交片4| 国产麻豆欧美日韩一区| 一区二区高清在线| 久久综合九色综合久久久精品综合| 99视频精品免费视频| 人人精品人人爱| 亚洲女同一区二区| 久久久综合激的五月天| 欧美午夜一区二区三区| 大陆成人av片| 捆绑调教美女网站视频一区| 亚洲美女免费在线| 久久久欧美精品sm网站| 欧美日精品一区视频| 成人app在线观看| 久久av资源站| 亚洲一区二区视频| 综合电影一区二区三区| 久久久www免费人成精品| 欧美一区午夜视频在线观看| 色94色欧美sute亚洲线路一ni | 最新成人av在线| 久久综合九色综合欧美就去吻| 欧美日韩高清一区二区三区| 成人免费高清视频| 国产精品伊人色| 精品一区二区三区影院在线午夜| 亚洲国产sm捆绑调教视频| 亚洲欧洲av另类| 日本一区二区三区国色天香| 精品福利一区二区三区免费视频| 欧美人成免费网站| 欧美三级视频在线观看| 91免费版在线看| caoporn国产精品| 国产激情偷乱视频一区二区三区| 美女爽到高潮91| 日韩电影在线观看电影| 五月综合激情网| 亚洲一区二区在线观看视频| 一区二区视频在线| 一区二区三区四区五区视频在线观看| 国产午夜精品久久久久久久| 久久久久国产精品麻豆ai换脸| 精品日韩av一区二区| 日韩免费观看高清完整版| 欧美久久久影院| 欧美精品tushy高清| 欧美日韩成人综合| 在线成人高清不卡| 欧美精品v国产精品v日韩精品 | 免费的成人av| 裸体在线国模精品偷拍| 韩国v欧美v日本v亚洲v| 国产一区91精品张津瑜| 国产91在线看| av电影在线观看一区| 91在线视频播放地址| 色老头久久综合| 欧美日韩国产大片| 日韩欧美国产精品一区| wwwwxxxxx欧美| 国产精品丝袜一区| 亚洲九九爱视频| 日韩av中文字幕一区二区三区 | 韩国av一区二区三区在线观看| 狠狠狠色丁香婷婷综合激情| 国产精品一区二区三区乱码| 成人黄色av电影| 欧美三级日韩三级| 精品国产一区二区三区av性色| 久久嫩草精品久久久精品| 国产精品久久久久久久午夜片 | 欧美一区二区三区人| 欧美精品一区二区三区很污很色的 | 99r精品视频| 欧美亚洲动漫精品| 精品美女一区二区三区| 国产精品乱人伦| 亚洲国产精品嫩草影院| 久久国产婷婷国产香蕉| 99视频精品全部免费在线| 91.成人天堂一区| 国产亚洲1区2区3区| 亚洲一级二级三级| 国产在线看一区| 91黄色激情网站| 欧美精品一区二区三区蜜臀| 一区二区在线电影| 经典三级一区二区| 欧美在线观看一二区| 精品国产伦一区二区三区观看体验 | 爽好多水快深点欧美视频| 国产盗摄女厕一区二区三区| 欧美三级视频在线| 欧美高清在线视频| 麻豆成人免费电影| 色欧美88888久久久久久影院| 精品人在线二区三区| 一区二区三区久久| 国产成a人亚洲| 欧美一区二区三区免费大片| 日韩一区欧美一区| 国产资源在线一区| 欧美一区永久视频免费观看| 亚洲青青青在线视频| 国产麻豆精品久久一二三| 欧美精品精品一区| 亚洲色图制服诱惑| 国产成人一区二区精品非洲| 日韩视频免费观看高清在线视频| 亚洲色大成网站www久久九九| 黑人精品欧美一区二区蜜桃| 欧美日韩国产精品自在自线| 亚洲乱码中文字幕综合| 国产成人啪免费观看软件| 日韩美女视频一区二区在线观看| 一区二区高清视频在线观看| 高清成人在线观看| 久久嫩草精品久久久精品一| 秋霞午夜鲁丝一区二区老狼| 欧美日韩午夜在线| 亚洲在线成人精品| 色综合久久久久久久久| 国产精品久久久久久久久久免费看 | 欧美主播一区二区三区美女| 亚洲欧洲日韩一区二区三区| 国产一区二区三区观看| 日韩欧美一级二级三级久久久| 亚洲综合一二区| 91传媒视频在线播放| 亚洲乱码国产乱码精品精可以看| 成人av电影在线观看| 亚洲国产经典视频| 成人免费看黄yyy456| 亚洲国产精品成人综合| 国产不卡一区视频| 久久免费视频一区| 国产麻豆精品95视频| 国产婷婷精品av在线| 高清成人在线观看| 国产精品免费视频网站| 99热99精品| 亚洲精品福利视频网站| 欧美三片在线视频观看| 香蕉加勒比综合久久| 欧美一区二区三区系列电影| 毛片av一区二区三区| 欧美精品一区二区不卡| 福利电影一区二区三区| 中文字幕亚洲区| 欧美伊人精品成人久久综合97| 一区二区成人在线| 69堂国产成人免费视频| 麻豆国产精品一区二区三区| 久久亚洲精品国产精品紫薇| 国产一区二区三区香蕉| 国产精品国产成人国产三级| 日本伦理一区二区| 午夜精品在线视频一区| 日韩精品专区在线影院重磅| 国产福利一区二区三区在线视频| 中文字幕一区二区三区在线观看| 日本乱码高清不卡字幕| 免费在线观看日韩欧美| 久久久国产午夜精品| 色综合一个色综合亚洲| 午夜成人免费视频| 久久精品这里都是精品| 色噜噜狠狠成人网p站| 麻豆精品新av中文字幕| 国产精品欧美综合在线| 在线电影院国产精品| 国产91富婆露脸刺激对白| 亚洲图片有声小说| 久久蜜桃香蕉精品一区二区三区|