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

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

?? coder.c

?? h.263 c編碼源碼。目錄下有input。qcif原始未壓縮文件
?? C
?? 第 1 頁 / 共 3 頁
字號:
/************************************************* * libr263: fast H.263 encoder library * * Copyright (C) 1996, Roalt Aalmoes, Twente University * SPA multimedia group * * Based on Telenor TMN 1.6 encoder (Copyright (C) 1995, Telenor R&D) * created by Karl Lillevold  * * Author encoder: Roalt Aalmoes, <aalmoes@huygens.nl> *  * Date: 31-07-96 **************************************************/     /* Modyfied by Roalt Aalmoes with better algorithms and performance * objectives * * Warning: Although I tried to remove all advanced options code, * there might still be some artifacts in the code. Please do not * blame me for not removing all of it.  * Removing all advanced and alternating quantization code was done * for performance reasons. I'm sorry these options are not  * implemented here, but see the tmn1.7 code for a slow functioning * advanced H.263 compression algorithm.  *****************************************************************//* Notes for clear code: *//* var. j is used for row indexing of MB in frame *//* var. i is used for column indexing of MB in frame *//*  pic is declared global *//* MV is changed: it is now a real array of MV instead of array of pointers   to MV. Its range is also equal to MVs encoded, without border MVs    Advantages: No more mallocs and frees in the code, disadvantages: ?? *//* PictImage structure is replaced by int pointer. Drawback: not flexible for   other format. */#include"sim.h"/********************************************************************** * *	Name:		Clip *	Description:    clips recontructed data 0-255 *	 *	Input:	        pointer to recon. data structure *	Side effects:   data structure clipped * *	Date: 960715 	Author: Roalt Aalmoes * ***********************************************************************/ void Clip(MB_Structure *data) {  int n;  int *mb_ptr = (int *) data;  for (n = 0; n < 256 + 64 + 64; n++) {    *mb_ptr = mmin(255,mmax(0,*mb_ptr));    mb_ptr++;  }}/* 編碼I幀圖像 */void CodeIntraH263(CParam *params, Bits *bits){  unsigned int *new_recon;  MB_Structure *data = (MB_Structure *)malloc(sizeof(MB_Structure));  int *qcoeff;  int Mode = MODE_INTRA;  int CBP;  int i,j;  new_recon = params->recon;    ZeroBits(bits);    pic->QUANT = params->Q_intra;  pic->picture_coding_type = PCT_INTRA;  bits->header += CountBitsPicture(pic);   // 50   for ( j = 0; j < mbr; j++) {                                   // 列    /* insert sync in *every* slice if use_gobsync is chosen */
	  // use_gobsync 0 不需加入slice的頭    if (pic->use_gobsync && j != 0)      bits->header += CountBitsSlice(j,params->Q_intra);          for ( i = 0; i < mbc; i++) {                                 //行      pic->MB = i + j * mbc;      bits->no_intra++;      FillLumBlock(i*MB_SIZE, j*MB_SIZE, params->data, data); //MB_size 16      FillChromBlock(i*MB_SIZE, j*MB_SIZE, params->data, data);

	  //dct變換和量化,返回量化后系數的值qcoeff, 和CBP值(每個小宏塊是否全0)      qcoeff = MB_EncodeAndFindCBP(data, params->Q_intra, Mode, &CBP);       /* Do standard VLC encoding */ // 變長編碼      /* COD = 0 ,Every block is coded as Intra frame */ // COD=0 宏塊為幀內

	  //計算宏塊信息需要的bit數,編碼cod,  對宏塊的COD,CBPCM,CBPY 編碼      CountBitsMB(Mode,0,CBP,0,pic,bits);//intra中沒有skip宏塊

	  //宏塊, 對qcoeff編碼(16*16宏塊),寫入bit流,并將寫入bit數加入到 bits->Y,和 bits->U中      CountBitsCoeff(qcoeff, Mode, CBP,bits,64);     
	  //重建      MB_Decode(qcoeff, data, params->Q_intra, Mode);

	  //限定到0和255間      Clip(data);

	  //重建圖像,把data(16*16)的數據放回到new recon(width*height) 中      ReconImage(i,j,data,new_recon);
      free(qcoeff);    }  }  pic->QP_mean = params->Q_intra;  params->recon = new_recon;  AddBitsPicture(bits);  free(data);  return;}/********************************************************************** * *	Name:		MB_Encode *	Description:	DCT and quantization of Macroblocks * *	Input:		MB data struct, mquant (1-31, 0 = no quant), *			MB info struct *	Returns:	Pointer to quantized coefficients  *	Side effects:	 * *	Date: 930128	Author: Robert.Danielsen@nta.no * **********************************************************************//* If you compare original quant with FindCBP, you see they both act   on the same range of coefficients in the cases INTRA (1..63) or    INTER (0..63) */

// dct變換后,系數量化,得到量化系數.返回地址.// mb_orig 原圖像yuv數值, QP 量化參數值, I 幀內或幀間模式, CBP值

//CBP從32+16+8+4+2+1,共6個8*8塊的情況,qcoeff系數中有非零值,則加上相對應的值
//對mb_orig中數值,dct變換,并量化得到量化系數
//inter狀態下,為圖像宏塊和預測宏塊的差值int *MB_EncodeAndFindCBP(MB_Structure *mb_orig, int QP, int I, int *CBP){				  int		i, j, k, l, row, col;  int		fblock[64];                        //暫存8*8小塊的值  int		coeff[384];                        // 16*16的宏塊yuv值dct變換后系數共384個  int		*coeff_ind;  int 	        *qcoeff;  int		*qcoeff_ind;  int CBP_Mask = 32;  *CBP = 0;			/* CBP gives bit pattern of lowest 6 bits				   that specify which coordinates are not 				   zero. Bits 6 (32) to 2 (4) repr. four				   8x8 Y parts of macroblock, while bits				   1 (2) and 0 (1) repr. resp. the U and				   V component */  if ((qcoeff=(int *)malloc(sizeof(int)*384)) == 0) {        fprintf(stderr,"mb_encode(): Couldn't allocate qcoeff.\n");    exit(0);  }  coeff_ind = coeff;  qcoeff_ind = qcoeff;

  //Y值  for (k=0;k<16;k+=8) {    for (l=0;l<16;l+=8) {      for (i=k,row=0;row<64;i++,row+=8) 
	  {		#if LONGISDOUBLEINT			for (j=l,col=0;col<8;j += 2,col +=2 ) {			  *(long *) (fblock+row+col) = * (long *) &(mb_orig->lum[i][j]);			}		#else			for (j=l,col=0;col<8;j++ , col++ ) {			  *(int *) (fblock+row+col) = * (int *) &(mb_orig->lum[i][j]);                 // 8*8的塊			} 		#endif      }
	  //dct變換得到系數,在coeff_ind地址處, coeff_ind 值為DC值       Dct(fblock,coeff_ind);
	  //量化放入qcoeff_ind,并找到CBP值(63個AC系數 qcoeff是否全0)      *CBP |= QuantAndFindCBP(coeff_ind,qcoeff_ind,QP,I,CBP_Mask);//CBP_Mask 32,16,8,4,2,1分別對應6個8*8小塊      coeff_ind += 64;      qcoeff_ind += 64;      CBP_Mask = CBP_Mask>>1;   // 除以2       } /* end l */  } /* End k */


  //U值  for (i=0;i<8;i++) {#ifdef LONGISDOUBLEINT    for (j=0;j<8;j += 2) {      *(long *) (fblock+i*8+j) = *(long *) &(mb_orig->Cb[i][j]);    }#else    for (j=0;j<8;j++) {      *(int *) (fblock+i*8+j) = *(int *) &(mb_orig->Cb[i][j]);    }    #endif  }  Dct(fblock,coeff_ind);  *CBP |= QuantAndFindCBP(coeff_ind,qcoeff_ind,QP,I,CBP_Mask /* i == 4 */);   coeff_ind += 64;  qcoeff_ind += 64;  CBP_Mask = CBP_Mask>>1;


  //V值  for (i=0;i<8;i++) {#ifdef LONGISDOUBLEINT    for (j=0;j<8;j += 2) {      * (long *) (fblock+i*8+j) = *(long *) &(mb_orig->Cr[i][j]);    }#else    for (j=0;j<8;j ++) {      * (int *) (fblock+i*8+j) = *(int *) &(mb_orig->Cr[i][j]);    }#endif  }  Dct(fblock,coeff_ind);  *CBP |= QuantAndFindCBP(coeff_ind,qcoeff_ind,QP,I, CBP_Mask /* i == 5 */);   
  return qcoeff;}/********************************************************************** * *	Name:		MB_Decode *	Description:	Reconstruction of quantized DCT-coded Macroblocks * *	Input:		Quantized coefficients, MB data *			QP (1-31, 0 = no quant), MB info block *	Returns:	int (just 0) *	Side effects:	 * *	Date: 930128	Author: Robert.Danielsen@nta.no * **********************************************************************/     int MB_Decode(int *qcoeff, MB_Structure *mb_recon, int QP, int I){  int	i, j, k, l, row, col;  int	*iblock;  int	*qcoeff_ind;  int	*rcoeff, *rcoeff_ind;  if ((iblock = (int *)malloc(sizeof(int)*64)) == NULL) {    fprintf(stderr,"MB_Coder: Could not allocate space for iblock\n");    exit(-1);  }  if ((rcoeff = (int *)malloc(sizeof(int)*384)) == NULL) {    fprintf(stderr,"MB_Coder: Could not allocate space for rcoeff\n");    exit(-1);  }    /* For control purposes */  /* Zero data */  for (i = 0; i < 16; i++)#ifdef LONGISDOUBLEINT    for (j = 0; j < 8; j+=2)      *(long *) &(mb_recon->lum[i][j]) = 0L;#else    for (j = 0; j < 8; j++)      *(int *) &(mb_recon->lum[i][j]) = 0;#endif  for (i = 0; i < 8; i++) #ifdef LONGISDOUBLEINT    for (j = 0; j < 8; j += 2) {      *(long *) &(mb_recon->Cb[i][j]) = 0L;      *(long *) &(mb_recon->Cr[i][j]) = 0L;    }#else    for (j = 0; j < 8; j ++) {      *(int *) &(mb_recon->Cb[i][j]) = 0;      *(int *) &(mb_recon->Cr[i][j]) = 0;    }#endif  qcoeff_ind = qcoeff;  rcoeff_ind = rcoeff;  for (k=0;k<16;k+=8) {    for (l=0;l<16;l+=8) {      Dequant(qcoeff_ind,rcoeff_ind,QP,I);#ifdef STANDARDIDCT  idctref(rcoeff_ind,iblock); #else  idct(rcoeff_ind,iblock); #endif      qcoeff_ind += 64;      rcoeff_ind += 64;      for (i=k,row=0;row<64;i++,row+=8) {#ifdef LONGISDOUBLEINT	for (j=l,col=0;col<8;j += 2,col += 2) {	  *(long *) &(mb_recon->lum[i][j]) = * (long *) (iblock+row+col);       	}#else	for (j=l,col=0;col<8; j++, col++) {	  *(int *) &(mb_recon->lum[i][j]) = * (int *) (iblock+row+col);       	}#endif      }    }  }  Dequant(qcoeff_ind,rcoeff_ind,QP,I);#ifdef STANDARDIDCT  idctref(rcoeff_ind,iblock); #else  idct(rcoeff_ind,iblock); #endif  qcoeff_ind += 64;  rcoeff_ind += 64;  for (i=0;i<8;i++) {#ifdef LONGISDOUBLEINT    for (j=0;j<8;j +=2 ) {      *(long *) &(mb_recon->Cb[i][j]) = *(long *) (iblock+i*8+j);    }#else    for (j=0;j<8;j++ ) {      *(int *) &(mb_recon->Cb[i][j]) = *(int *) (iblock+i*8+j);    }#endif  }  Dequant(qcoeff_ind,rcoeff_ind,QP,I);
#ifdef STANDARDIDCT  idctref(rcoeff_ind,iblock); #else  idct(rcoeff_ind,iblock); #endif  for (i=0;i<8;i++) {#ifdef LONGISDOUBLEINT    for (j=0;j<8;j += 2) {      *(long *) &(mb_recon->Cr[i][j]) = *(long *) (iblock+i*8+j);    }#else    for (j=0;j<8;j++) {      *(int *) &(mb_recon->Cr[i][j]) = *(int *) (iblock+i*8+j);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区三区四区| 国产一区二区导航在线播放| 精品国产麻豆免费人成网站| 在线一区二区三区四区| 成人午夜精品在线| 国产精品一区二区x88av| 精品亚洲国内自在自线福利| 六月丁香婷婷色狠狠久久| 日韩av一区二| 三级一区在线视频先锋| 午夜一区二区三区在线观看| 亚洲在线中文字幕| 狠狠v欧美v日韩v亚洲ⅴ| 国产不卡一区视频| 亚洲乱码国产乱码精品精98午夜| 欧美韩国一区二区| 国产精品免费视频一区| 中文字幕欧美激情一区| 国产精品传媒入口麻豆| 亚洲精品伦理在线| 亚洲v中文字幕| 久久99国产精品久久| 国产尤物一区二区在线| 成人av高清在线| 在线精品视频一区二区三四| 欧美日韩免费一区二区三区视频| 欧美一区三区二区| 日本一区二区视频在线| 亚洲色图欧洲色图婷婷| 视频一区在线播放| 国产成人av自拍| 欧美午夜在线观看| 精品国产乱码久久久久久浪潮| 国产精品免费视频观看| 日韩高清在线观看| 国产成a人亚洲精品| 色偷偷久久人人79超碰人人澡| 欧美丰满一区二区免费视频| 久久综合色一综合色88| 一区二区三区在线视频免费观看 | 免费xxxx性欧美18vr| 国产精品一区二区久久不卡| 99re视频这里只有精品| 欧美一区二区三区日韩| 中文字幕中文字幕中文字幕亚洲无线| 亚洲成人免费视| 成人avav在线| 精品国产露脸精彩对白| 亚洲最大成人网4388xx| 国产经典欧美精品| 91麻豆精品国产91久久久更新时间 | 亚洲免费资源在线播放| 中文字幕制服丝袜一区二区三区 | 国产精品伊人色| 欧美在线制服丝袜| a亚洲天堂av| 日韩三级高清在线| 一区二区三区 在线观看视频| 精品一区二区三区视频在线观看| 91在线免费看| 日本一区二区视频在线观看| 轻轻草成人在线| 欧美性高清videossexo| 国产精品久久久久aaaa樱花| 国产一区二区精品在线观看| 日韩天堂在线观看| 亚洲国产日韩综合久久精品| 91日韩精品一区| 91免费国产在线观看| 日本不卡不码高清免费观看| 欧美精品久久99久久在免费线| 久久久久青草大香线综合精品| 日本亚洲天堂网| 91在线观看地址| 中文字幕在线观看不卡视频| 国产一区91精品张津瑜| 日韩视频免费观看高清完整版 | 日日欢夜夜爽一区| 欧美丝袜丝交足nylons| 一区二区三区在线观看国产 | 亚洲成人动漫精品| 91久久一区二区| 亚洲曰韩产成在线| 中文字幕综合网| 亚洲电影第三页| 色久优优欧美色久优优| 中文一区二区在线观看| 国产成人精品www牛牛影视| 国产日韩欧美制服另类| 处破女av一区二区| 最近中文字幕一区二区三区| 99视频精品全部免费在线| 亚洲人午夜精品天堂一二香蕉| 不卡视频在线观看| 一区二区三区在线视频观看58| 日本精品一级二级| 视频一区二区中文字幕| 精品卡一卡二卡三卡四在线| 国产精品资源在线观看| 亚洲国产精品精华液2区45| av影院午夜一区| 亚洲香肠在线观看| 欧美大胆一级视频| 99久久综合国产精品| 香蕉成人伊视频在线观看| 精品久久人人做人人爰| gogo大胆日本视频一区| 午夜电影一区二区三区| 欧美精品一区二区三区很污很色的 | 国产大片一区二区| 成人欧美一区二区三区视频网页| 欧美日韩一级大片网址| 激情六月婷婷久久| 亚洲欧美一区二区在线观看| 欧美喷潮久久久xxxxx| 久久99精品国产| 亚洲激情一二三区| 欧美电影免费观看高清完整版| 99综合影院在线| 日韩成人午夜精品| 日韩美女视频19| 精品久久免费看| 欧美日韩精品欧美日韩精品| 国产精品主播直播| 麻豆久久一区二区| 亚洲视频中文字幕| 久久久天堂av| 欧美日韩成人激情| 97久久精品人人澡人人爽| 久久 天天综合| 亚洲成a人v欧美综合天堂下载| 亚洲精品ww久久久久久p站| 色婷婷亚洲精品| 精品欧美一区二区三区精品久久| 欧美日韩卡一卡二| 奇米影视一区二区三区| 亚洲国产精品精华液ab| 99精品视频在线观看| 99视频超级精品| 日韩福利视频网| 亚洲综合免费观看高清在线观看| 国产欧美一区二区精品忘忧草| 91麻豆精品国产| 在线观看av不卡| 色av综合在线| 91蝌蚪国产九色| 9l国产精品久久久久麻豆| 成人午夜av影视| 懂色av中文字幕一区二区三区| 麻豆精品一区二区av白丝在线| 亚洲国产精品久久人人爱蜜臀| 中文字幕一区二区三区不卡在线 | 欧美三级一区二区| 99re成人精品视频| 99re这里只有精品首页| 国产999精品久久久久久| 国产精品资源在线看| 国产精品中文字幕日韩精品| 欧美日韩五月天| 欧美精品三级日韩久久| 色av综合在线| 欧美中文字幕一二三区视频| 日本二三区不卡| 色婷婷综合激情| 在线电影院国产精品| 欧美精品vⅰdeose4hd| 欧美一区二区三区不卡| 欧美不卡在线视频| 国产丝袜美腿一区二区三区| 国产视频在线观看一区二区三区| 中文字幕一区二区三区色视频| 亚洲欧美精品午睡沙发| 五月激情综合网| 久久99精品一区二区三区三区| 国模大尺度一区二区三区| 成人一区二区三区在线观看| 97成人超碰视| 777久久久精品| 久久久久国产精品麻豆| 久久久www成人免费无遮挡大片| 2023国产精品视频| 欧美日韩精品综合在线| 1区2区3区精品视频| 成人在线综合网站| 日韩欧美高清dvd碟片| 2024国产精品| 一级日本不卡的影视| 首页国产欧美久久| 国产91露脸合集magnet | 日韩一级视频免费观看在线| 精品国产髙清在线看国产毛片| 国产三区在线成人av| 一区二区高清在线| 激情深爱一区二区| 色婷婷亚洲精品| 国产视频一区在线观看 | 精品一区二区三区免费毛片爱| 成人av集中营| 精品伦理精品一区| 亚洲高清免费观看高清完整版在线观看 |