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

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

?? b_picture.c

?? tmn3.2編解碼源程序 Linux C環境編寫 文件齊全 壓縮包完整 試用正常 歡迎試用
?? C
?? 第 1 頁 / 共 3 頁
字號:
/************************************************************************ * *  coder.c, main coding engine of tmn (TMN encoder) * *  Copyright (C) 1997  University of BC, Canada * *  Contacts:  *  Michael Gallant                   <mikeg@ee.ubc.ca> *  Guy Cote                          <guyc@ee.ubc.ca> *  Berna Erol                        <bernae@ee.ubc.ca> * *  UBC Image Processing Laboratory   http://www.ee.ubc.ca/image *  2356 Main Mall                    tel.: +1 604 822 4051 *  Vancouver BC Canada V6T1Z4        fax.: +1 604 822 5949 * ************************************************************************//* * Disclaimer of Warranty * * These software programs are available to the user without any * license fee or royalty on an "as is" basis. The University of * British Columbia disclaims any and all warranties, whether * express, implied, or statuary, including any implied warranties * or merchantability or of fitness for a particular purpose.  In no * event shall the copyright-holder be liable for any incidental, * punitive, or consequential damages of any kind whatsoever arising * from the use of these programs. * * This disclaimer of warranty extends to the user of these programs * and user's customers, employees, agents, transferees, successors, * and assigns. * * The University of British Columbia does not represent or warrant * that the programs furnished hereunder are free of infringement of * any third-party patents. * * Commercial implementations of H.263, including shareware, are * subject to royalty fees to patent holders.  Many of these patents * are general enough such that they are unavoidable regardless of * implementation design. **/#include"sim.h"/********************************************************************** * *	Name:         CodeOneTrueB *	Description:  code one true B image  *	 *	Input:        pointer to image, prev_image, prev_recon, Q *         *	Returns:      pointer to reconstructed image *	Side effects: memory is allocated to recon image * *	Date: 950930  Author: Michael Gallant <mikeg@ee.ubc.ca> * ***********************************************************************/void CodeOneTrueB(PictImage *curr, PictImage *B_image, PictImage *prev,           PictImage *pr, int QP, int frameskip, Bits *bits,          Pict *pic, PictImage *B_recon, PictImage *recon){  unsigned char *prev_ipol, *next_ipol, *pi, *ni;  PictImage *prev_recon=NULL, *next_recon=NULL, *pr_edge = NULL, *nr_edge = NULL;  MotionVector *MV[7][MBR+1][MBC+2];  MotionVector ZERO = {0,0,0,0,0};  MB_Structure *recon_data_true_B = NULL;  MB_Structure *diff;   int *rcoeff, *coeff;  int *qcoeff_true_B = NULL;  int Mode;  int CBP;  int newgob, advanced_temporarily_off = DEF_AIC_MODE;  int i,j,k;  int true_B_prediction_type;  /* buffer control vars */  float QP_cumulative = (float)0.0;  int abs_mb_num = 0, QuantChangePostponed = 0;  int QP_new, QP_prev, QP_xmitted=QP;  MB_Structure *pred = (MB_Structure *)malloc(sizeof(MB_Structure));  /* advanced intra coding variables */  int *store_rcoeff, *store_coeff, *pcoeff;   ZeroBits(bits);  /* Currently, the MV info is stored in 7 MV structs per MB. MV[0]   * stores the 16x16 MV. MV[1] through MV[4] store the 8x8 MVs. MV[6]   * stores the PB delta MV or the forward predicted B MV. MV[5]   * stores the backward predicted MV for true-B pictures. */   InitializeMV(MV);  /* Mark PMV's outside the frame. */  for (i = 1; i < (pels>>4)+1; i++)   {    for (j = 0; j < 7; j++)    {      MarkVec(MV[j][0][i]);      }    MV[0][0][i]->Mode = MODE_INTRA;  }  /* Zero out PMV's outside the frame */  for (i = 0; i < (lines>>4)+1; i++)   {    for (j = 0; j < 7; j++)     {      ZeroVec(MV[j][i][0]);      ZeroVec(MV[j][i][(pels>>4)+1]);    }    MV[0][i][0]->Mode = MODE_INTRA;    MV[0][i][(pels>>4)+1]->Mode = MODE_INTRA;  }  GenerateFrameAndInterpolatedImages(pr, pic, &prev_ipol, &prev_recon, &pi, &pr_edge);  GenerateFrameAndInterpolatedImages(recon, pic, &next_ipol, &next_recon, &ni, &nr_edge);  if (adv_pred)  {    /* Turn off advanced coding since there can be only 1      * motion vector for B frames of IPB. */    advanced_temporarily_off = YES;    overlapping_MC = OFF;    adv_pred = OFF;    use_4mv = OFF;  }  /* If coding a B-picture, need to pass pictures for forward AND   * backward prediction, as well as interpolated forward and backward   * pictures for half-pel prediction. */  MotionEstimatePicture( B_image->lum,prev_recon->lum, next_recon->lum,                                  prev_ipol, next_ipol, pic->seek_dist, MV,                         pic->use_gobsync, B_PICTURE_ESTIMATION);  QP_new = QP_xmitted = QP_prev = QP; /* Copy the passed value of QP */  for ( j = 0; j < lines/MB_SIZE; j++)   {    newgob = 0;    if (j == 0)     {      if (advanced_intra_coding)      {         /* store the coeff for the frame */         if ((store_coeff=(int *)calloc(384*(pels/MB_SIZE)*(lines/MB_SIZE), sizeof(int))) == 0)          {            fprintf(stderr,"coder(): Couldn't allocate store_coeff.\n");            exit(-1);         }         if ((store_rcoeff=(int *)calloc(384*(pels/MB_SIZE)*(lines/MB_SIZE), sizeof(int))) == 0)          {            fprintf(stderr,"coder(): Couldn't allocate store_rcoeff.\n");            exit(-1);         }      }      pic->QUANT = QP_new;      bits->header += CountBitsPicture(pic);      QP_xmitted = QP_prev = QP_new;    }    else if (pic->use_gobsync && j%pic->use_gobsync == 0)     {      bits->header += CountBitsGOB(j,QP_new,pic); /* insert gob sync */      QP_xmitted = QP_prev = QP_new;      newgob = 1;    }     for ( i = 0; i < pels/MB_SIZE; i++)     {      pic->MB = i + j * (pels/MB_SIZE);            /* store the QP for every macroblock */      quant_map[j+1][i+1] = QP_xmitted;      if ((rcoeff = (int *)malloc(sizeof(int)*384)) == NULL)       {        fprintf(stderr,"MB_Coder: Could not allocate space for rcoeff\n");        exit(-1);      }        /* Predict true B-MB */      diff = Predict_True_B( B_image, prev_recon, prev_ipol,next_recon,                              next_ipol, pred,i*MB_SIZE, j*MB_SIZE,                             MV, True_B_Direct_Mode_MV, pic->TRB,                              &true_B_prediction_type, &Mode, pic->RTYPE);      if (B_INTRA_PREDICTION == true_B_prediction_type)      {        FillLumBlock(i*MB_SIZE, j*MB_SIZE, B_image, diff);        FillChromBlock(i*MB_SIZE, j*MB_SIZE, B_image, diff);      }      if ((qcoeff_true_B=(int *)malloc(sizeof(int)*384)) == 0)       {        fprintf(stderr,"coder(): Couldn't allocate qcoeff_true_B.\n");        exit(-1);      }      coeff = MB_Encode(diff);      if (advanced_intra_coding)       {        if (!(Mode == MODE_INTRA || Mode == MODE_INTRA_Q))        	{          for (k=0;k<6;k++)           {           	     /* store default coeff if non-intra macroblock */       	     store_coeff[(i + j * pels/MB_SIZE) * 384 + k * 64] = 1024;             store_rcoeff[(i + j * pels/MB_SIZE) * 384 + k * 64] = 1024;          }          for (k=0;k<6;k++)            Quant_blk(coeff,qcoeff_true_B,QP_xmitted, Mode,k);          CBP = FindCBP(qcoeff_true_B, Mode, 64);          if (CBP == 0 && (Mode == MODE_INTER || Mode == MODE_INTER_Q))             ZeroMBlock(diff);          else          {              for (k=0;k<6;k++)            {              Quant_blk(coeff,qcoeff_true_B,QP_xmitted, Mode,k);              Dequant(qcoeff_true_B, rcoeff, QP_xmitted, Mode,k);            }            MB_Decode(rcoeff, diff);          }       	}       	else         {       	  if ((pcoeff=(int *)malloc(sizeof(int)*384)) == 0)           {	          fprintf(stderr,"coder(): Couldn't allocate pcoeff.\n");	          exit(-1);          }          /* store the quantized DCT coefficients */          memcpy( (void *) (store_coeff + (i + j*pels/MB_SIZE)*384), (void *) coeff, sizeof(int) * 384);          /* Do Intra mode prediction */          pic->Intra_Mode = Choose_Intra_Mode(pcoeff, store_coeff, i, j, newgob);          for (k=0;k<6;k++)           {             Intra_AC_DC_Encode(coeff, store_rcoeff, pic->Intra_Mode, i, j, newgob,k);            Quant_blk(coeff,pcoeff,QP_xmitted,Mode,k);            Dequant(pcoeff, rcoeff, QP_xmitted, Mode,k);            Intra_AC_DC_Decode(rcoeff, store_rcoeff, pic->Intra_Mode, i, j, newgob,k);          }          MB_Decode(rcoeff, diff);          CBP = FindCBP(pcoeff,Mode,64);	}          }      else      {          for (k=0;k<6;k++)          Quant_blk(coeff,qcoeff_true_B,QP_xmitted, Mode,k);        CBP = FindCBP(qcoeff_true_B, Mode, 64);        if (CBP == 0 && (Mode == MODE_INTER || Mode == MODE_INTER_Q))           ZeroMBlock(diff);        else        {          for (k=0;k<6;k++)              Dequant(qcoeff_true_B, rcoeff, QP_xmitted, Mode,k);           MB_Decode(rcoeff, diff);        }      }      recon_data_true_B = MB_Recon_True_B( prev_recon, prev_ipol, diff,                                            next_recon, next_ipol,                                            i*MB_SIZE,j*MB_SIZE,MV,                                           True_B_Direct_Mode_MV, pic->TRB,                                           true_B_prediction_type, pic->RTYPE);      Clip(recon_data_true_B);      free(diff);      free(coeff);      if ((CBP==0) && (B_DIRECT_PREDICTION == true_B_prediction_type) &&          (Mode == MODE_INTER) && (0 == pic->DQUANT) )       {        coded_map[j+1][i+1] = 0;        quant_map[j+1][i+1] = 0;        CountBitsScalMB(Mode, 1, CBP, 0, pic, bits, true_B_prediction_type, 0);      }      else       {        CountBitsScalMB(Mode,0,CBP,0,pic,bits,true_B_prediction_type, 0);        if (!CBP)            intra_refresh[j+1][i+1] += 1;        if (MODE_INTER == Mode || MODE_INTER_Q == Mode)        {	        coded_map[j+1][i+1] = 1;	        quant_map[j+1][i+1] = QP_xmitted;          bits->no_inter++;          CountBitsVectors( MV, bits, i, j, Mode, newgob, pic,                             true_B_prediction_type);        }        else         {          /* MODE_INTRA or MODE_INTRA_Q */          coded_map[j+1][i+1] = 2;          quant_map[j+1][i+1] = QP_xmitted;          intra_refresh[j+1][i+1] = 0;          bits->no_intra++;        }                 if ( (Mode == MODE_INTRA || Mode == MODE_INTRA_Q) && advanced_intra_coding )        {          Scan(pcoeff,pic->Intra_Mode);          CountBitsCoeff(pcoeff, Mode, CBP, bits, 64);        }        else if (CBP || Mode == MODE_INTRA || Mode == MODE_INTRA_Q)        {          Scan(qcoeff_true_B,0);          CountBitsCoeff(qcoeff_true_B, Mode, CBP, bits, 64);        }      }      QP_prev = QP_xmitted;          abs_mb_num++;      QP_cumulative += QP_xmitted;     #ifdef PRINTQ       /* most useful when quantizer changes within a picture */      if (QuantChangePostponed)        fprintf(stdout,"@%2d",QP_xmitted);      else        fprintf(stdout," %2d",QP_xmitted);#endif      ReconImage(i,j,recon_data_true_B,B_recon);       free(qcoeff_true_B);      free(recon_data_true_B);      if (advanced_intra_coding && (Mode == MODE_INTRA || Mode == MODE_INTRA_Q))          free(pcoeff);    }#ifdef PRINTQ    fprintf(stdout,"\n");#endif  }  pic->QP_mean = QP_cumulative/(float)abs_mb_num;  /* Free memory */  free(pred);  free(prev_recon);  free(next_recon);  FreeImage(pr_edge);  FreeImage(nr_edge);  free(pi);  free(ni);    for (j = 0; j < (lines>>4)+1; j++)    for (i = 0; i < (pels>>4)+2; i++)       for (k = 0; k < 7; k++)        free(MV[k][j][i]);  if (advanced_intra_coding)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
经典三级一区二区| 欧美日韩大陆在线| 国产91色综合久久免费分享| 成人av免费网站| 中文字幕高清不卡| 成人一区二区三区| 国产精品三级视频| 一本大道久久精品懂色aⅴ| 亚洲欧美日韩国产成人精品影院| av影院午夜一区| 亚洲成国产人片在线观看| 日韩视频免费观看高清在线视频| 视频在线观看一区二区三区| 日韩免费成人网| www.亚洲精品| 亚洲成人激情社区| 国产欧美日韩另类视频免费观看| 成人性生交大片| 日韩午夜精品视频| 国产精华液一区二区三区| 国产精品久久三| 欧美日韩一区二区三区高清 | 日韩免费成人网| 99麻豆久久久国产精品免费| 一级做a爱片久久| 国产亚洲欧美日韩日本| 91国在线观看| 国产二区国产一区在线观看| 午夜电影久久久| 中文字幕一区视频| 欧美伊人精品成人久久综合97| 国产一区欧美日韩| 午夜精品久久久久影视| 亚洲免费观看高清| 国产精品女主播在线观看| 日韩一区二区中文字幕| 91成人看片片| 欧洲一区在线观看| 99久久99精品久久久久久| 国产乱色国产精品免费视频| 紧缚捆绑精品一区二区| 视频一区二区不卡| 日本少妇一区二区| 日本va欧美va瓶| 久久电影网站中文字幕| 久久精品国产久精国产爱| 蜜臀va亚洲va欧美va天堂| 琪琪一区二区三区| 国产一区二区精品久久99| 国产剧情一区在线| 91网上在线视频| 欧美三级日韩在线| 日韩欧美一区电影| 国产日产欧美精品一区二区三区| 久久久午夜精品| 亚洲日本护士毛茸茸| 亚洲伊人伊色伊影伊综合网| 亚洲.国产.中文慕字在线| 青青草成人在线观看| 国产白丝精品91爽爽久久| 99精品国产热久久91蜜凸| 精品视频在线看| 久久精品人人做| 亚洲一区二区高清| 国产一区二区三区电影在线观看 | 成年人国产精品| 91精品国产综合久久精品app| 精品国产乱码久久久久久老虎 | 欧美日韩一区二区三区不卡| 欧美大片免费久久精品三p| 国产精品久久久久久久久动漫| 亚洲美女少妇撒尿| 国产一区二区日韩精品| 国产福利一区二区三区在线视频| 轻轻草成人在线| 国产麻豆精品在线观看| 欧美狂野另类xxxxoooo| 国产蜜臀av在线一区二区三区| 久久精品亚洲麻豆av一区二区| 亚洲国产精品久久不卡毛片| 国产乱码精品1区2区3区| 欧美日韩一区二区不卡| 国产精品久久久久久久午夜片| 欧美aa在线视频| 欧美一区二区视频在线观看2022 | 成人激情电影免费在线观看| 欧美一区三区二区| 五月婷婷另类国产| 欧美日韩在线一区二区| 一区二区三区av电影| 在线观看国产一区二区| 久久国产精品99久久人人澡| 色爱区综合激月婷婷| 亚洲人123区| 91蜜桃网址入口| 亚洲激情综合网| 欧洲精品在线观看| 亚洲国产精品久久久男人的天堂| 欧美在线视频全部完| 亚洲综合图片区| 91精品免费在线| 国产麻豆一精品一av一免费| 中文欧美字幕免费| 91蜜桃免费观看视频| 亚洲.国产.中文慕字在线| 日韩欧美专区在线| 日韩亚洲欧美高清| 欧美一区二区免费视频| 看片的网站亚洲| 国产精品午夜久久| 欧美日韩在线直播| 狠狠久久亚洲欧美| 亚洲欧美一区二区三区极速播放| 欧美日本一区二区| 成人午夜在线免费| 日本亚洲一区二区| 亚洲人成人一区二区在线观看 | 国产成人免费在线视频| 一区二区三区精品久久久| 欧美成人性战久久| 91国内精品野花午夜精品 | 亚洲福利视频一区| 2020国产精品自拍| 欧美日韩国产一二三| 成人性生交大合| 国产一区二区三区电影在线观看 | 91麻豆精东视频| 狠狠色丁香婷婷综合| 久久久99久久| 日韩手机在线导航| 欧美亚洲一区三区| av资源站一区| 成人免费视频一区| 高清日韩电视剧大全免费| 久久99九九99精品| 亚洲国产精品久久人人爱蜜臀 | av网站免费线看精品| 国产精品一区二区无线| 精品一区二区三区在线观看 | 91麻豆精品91久久久久久清纯 | 欧美自拍偷拍一区| 成人免费va视频| 免费在线看成人av| 亚洲综合无码一区二区| 国产精品人人做人人爽人人添| 精品久久久影院| 久久九九国产精品| 国产蜜臀av在线一区二区三区| 国产精品天美传媒| 国产亚洲欧美日韩在线一区| 欧美国产日韩a欧美在线观看 | 精品国产乱码久久久久久蜜臀| 日韩欧美激情一区| 久久久蜜桃精品| 国产精品久久久久精k8| 亚洲成人综合网站| 麻豆91在线看| 在线观看国产日韩| 欧美大胆人体bbbb| 亚洲蜜臀av乱码久久精品| 五月天精品一区二区三区| 九九**精品视频免费播放| 成+人+亚洲+综合天堂| 欧美精品粉嫩高潮一区二区| 国产网红主播福利一区二区| 亚洲欧洲综合另类| 国产精品一区二区果冻传媒| 97久久超碰精品国产| 日韩一区二区影院| 樱桃视频在线观看一区| 久久国产尿小便嘘嘘尿| 91免费版在线| 国产精品嫩草久久久久| 免费成人结看片| 欧美日韩高清一区二区不卡| 亚洲国产精品激情在线观看| 日本在线不卡视频一二三区| 色综合久久99| 亚洲视频综合在线| 国产黄色91视频| 久久综合久久久久88| 免费观看91视频大全| 精品视频123区在线观看| 一区二区三区在线高清| 日本道精品一区二区三区| 中文av一区特黄| 91捆绑美女网站| 亚洲免费在线视频| 日本电影欧美片| 五月天欧美精品| 日韩视频在线永久播放| 天天av天天翘天天综合网色鬼国产| 一区二区三区小说| 欧美日韩在线播放一区| 亚洲一区二区视频| 欧美成人一区二区三区| 久久精品国产精品亚洲红杏| 日韩免费视频一区二区| 国产91丝袜在线播放九色| 国产精品乱码人人做人人爱|