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

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

?? putpic.c

?? jpeg and mpeg 編解碼技術源代碼
?? C
字號:
/* putpic.c, 塊和運動向量編碼函數*/#include <stdio.h>#include "config.h"#include "global.h"/* private prototypes */static void putmvs _ANSI_ARGS_((int MV[2][2][2], int PMV[2][2][2],  int mv_field_sel[2][2], int dmvector[2], int s, int motion_type,  int hor_f_code, int vert_f_code));/* quantization / variable length encoding of a complete picture */void putpict(frame)unsigned char *frame;{  int i, j, k, comp, cc;  int mb_type;  int PMV[2][2][2];  int prev_mquant;  int cbp, MBAinc;  rc_init_pict(frame); /* set up rate control */  /* picture header and picture coding extension */  putpicthdr();  if (!mpeg1)    putpictcodext();  prev_mquant = rc_start_mb(); /* initialize quantization parameter */  k = 0;  for (j=0; j<mb_height2; j++)  {    /* macroblock row loop */    for (i=0; i<mb_width; i++)    {      /* macroblock loop */      if (i==0)      {        /* slice header (6.2.4) */        alignbits();        if (mpeg1 || vertical_size<=2800)          putbits(SLICE_MIN_START+j,32); /* slice_start_code */        else        {          putbits(SLICE_MIN_START+(j&127),32); /* slice_start_code */          putbits(j>>7,3); /* slice_vertical_position_extension */        }          /* quantiser_scale_code */        putbits(q_scale_type ? map_non_linear_mquant[prev_mquant]                             : prev_mquant >> 1, 5);          putbits(0,1); /* extra_bit_slice */          /* reset predictors */        for (cc=0; cc<3; cc++)          dc_dct_pred[cc] = 0;        PMV[0][0][0]=PMV[0][0][1]=PMV[1][0][0]=PMV[1][0][1]=0;        PMV[0][1][0]=PMV[0][1][1]=PMV[1][1][0]=PMV[1][1][1]=0;          MBAinc = i + 1; /* first MBAinc denotes absolute position */      }      mb_type = mbinfo[k].mb_type;      /* determine mquant (rate control) */      mbinfo[k].mquant = rc_calc_mquant(k);      /* quantize macroblock */      if (mb_type & MB_INTRA)      {        for (comp=0; comp<block_count; comp++)          quant_intra(blocks[k*block_count+comp],blocks[k*block_count+comp],                      dc_prec,intra_q,mbinfo[k].mquant);        mbinfo[k].cbp = cbp = (1<<block_count) - 1;      }      else      {        cbp = 0;        for (comp=0;comp<block_count;comp++)          cbp = (cbp<<1) | quant_non_intra(blocks[k*block_count+comp],                                           blocks[k*block_count+comp],                                           inter_q,mbinfo[k].mquant);        mbinfo[k].cbp = cbp;        if (cbp)          mb_type|= MB_PATTERN;      }      /* output mquant if it has changed */      if (cbp && prev_mquant!=mbinfo[k].mquant)        mb_type|= MB_QUANT;      /* check if macroblock can be skipped */      if (i!=0 && i!=mb_width-1 && !cbp)      {        /* no DCT coefficients and neither first nor last macroblock of slice */        if (pict_type==P_TYPE && !(mb_type&MB_FORWARD))        {          /* P picture, no motion vectors -> skip */          /* reset predictors */          for (cc=0; cc<3; cc++)            dc_dct_pred[cc] = 0;          PMV[0][0][0]=PMV[0][0][1]=PMV[1][0][0]=PMV[1][0][1]=0;          PMV[0][1][0]=PMV[0][1][1]=PMV[1][1][0]=PMV[1][1][1]=0;          mbinfo[k].mb_type = mb_type;          mbinfo[k].skipped = 1;          MBAinc++;          k++;          continue;        }        if (pict_type==B_TYPE && pict_struct==FRAME_PICTURE            && mbinfo[k].motion_type==MC_FRAME            && ((mbinfo[k-1].mb_type^mb_type)&(MB_FORWARD|MB_BACKWARD))==0            && (!(mb_type&MB_FORWARD) ||                (PMV[0][0][0]==mbinfo[k].MV[0][0][0] &&                 PMV[0][0][1]==mbinfo[k].MV[0][0][1]))            && (!(mb_type&MB_BACKWARD) ||                (PMV[0][1][0]==mbinfo[k].MV[0][1][0] &&                 PMV[0][1][1]==mbinfo[k].MV[0][1][1])))        {          /* conditions for skipping in B frame pictures:           * - must be frame predicted           * - must be the same prediction type (forward/backward/interp.)           *   as previous macroblock           * - relevant vectors (forward/backward/both) have to be the same           *   as in previous macroblock           */          mbinfo[k].mb_type = mb_type;          mbinfo[k].skipped = 1;          MBAinc++;          k++;          continue;        }        if (pict_type==B_TYPE && pict_struct!=FRAME_PICTURE            && mbinfo[k].motion_type==MC_FIELD            && ((mbinfo[k-1].mb_type^mb_type)&(MB_FORWARD|MB_BACKWARD))==0            && (!(mb_type&MB_FORWARD) ||                (PMV[0][0][0]==mbinfo[k].MV[0][0][0] &&                 PMV[0][0][1]==mbinfo[k].MV[0][0][1] &&                 mbinfo[k].mv_field_sel[0][0]==(pict_struct==BOTTOM_FIELD)))            && (!(mb_type&MB_BACKWARD) ||                (PMV[0][1][0]==mbinfo[k].MV[0][1][0] &&                 PMV[0][1][1]==mbinfo[k].MV[0][1][1] &&                 mbinfo[k].mv_field_sel[0][1]==(pict_struct==BOTTOM_FIELD))))        {          /* conditions for skipping in B field pictures:           * - must be field predicted           * - must be the same prediction type (forward/backward/interp.)           *   as previous macroblock           * - relevant vectors (forward/backward/both) have to be the same           *   as in previous macroblock           * - relevant motion_vertical_field_selects have to be of same           *   parity as current field           */          mbinfo[k].mb_type = mb_type;          mbinfo[k].skipped = 1;          MBAinc++;          k++;          continue;        }      }      /* macroblock cannot be skipped */      mbinfo[k].skipped = 0;      /* there's no VLC for 'No MC, Not Coded':       * we have to transmit (0,0) motion vectors       */      if (pict_type==P_TYPE && !cbp && !(mb_type&MB_FORWARD))        mb_type|= MB_FORWARD;      putaddrinc(MBAinc); /* macroblock_address_increment */      MBAinc = 1;      putmbtype(pict_type,mb_type); /* macroblock type */      if (mb_type & (MB_FORWARD|MB_BACKWARD) && !frame_pred_dct)        putbits(mbinfo[k].motion_type,2);      if (pict_struct==FRAME_PICTURE && cbp && !frame_pred_dct)        putbits(mbinfo[k].dct_type,1);      if (mb_type & MB_QUANT)      {        putbits(q_scale_type ? map_non_linear_mquant[mbinfo[k].mquant]                             : mbinfo[k].mquant>>1,5);        prev_mquant = mbinfo[k].mquant;      }      if (mb_type & MB_FORWARD)      {        /* forward motion vectors, update predictors */        putmvs(mbinfo[k].MV,PMV,mbinfo[k].mv_field_sel,mbinfo[k].dmvector,0,          mbinfo[k].motion_type,forw_hor_f_code,forw_vert_f_code);      }      if (mb_type & MB_BACKWARD)      {        /* backward motion vectors, update predictors */        putmvs(mbinfo[k].MV,PMV,mbinfo[k].mv_field_sel,mbinfo[k].dmvector,1,          mbinfo[k].motion_type,back_hor_f_code,back_vert_f_code);      }      if (mb_type & MB_PATTERN)      {        putcbp((cbp >> (block_count-6)) & 63);        if (chroma_format!=CHROMA420)          putbits(cbp,block_count-6);      }      for (comp=0; comp<block_count; comp++)      {        /* block loop */        if (cbp & (1<<(block_count-1-comp)))        {          if (mb_type & MB_INTRA)          {            cc = (comp<4) ? 0 : (comp&1)+1;            putintrablk(blocks[k*block_count+comp],cc);          }          else            putnonintrablk(blocks[k*block_count+comp]);        }      }      /* reset predictors */      if (!(mb_type & MB_INTRA))        for (cc=0; cc<3; cc++)          dc_dct_pred[cc] = 0;      if (mb_type & MB_INTRA || (pict_type==P_TYPE && !(mb_type & MB_FORWARD)))      {        PMV[0][0][0]=PMV[0][0][1]=PMV[1][0][0]=PMV[1][0][1]=0;        PMV[0][1][0]=PMV[0][1][1]=PMV[1][1][0]=PMV[1][1][1]=0;      }      mbinfo[k].mb_type = mb_type;      k++;    }  }  rc_update_pict();  vbv_end_of_picture();}/* output motion vectors (6.2.5.2, 6.3.16.2) * * this routine also updates the predictions for motion vectors (PMV) */ static void putmvs(MV,PMV,mv_field_sel,dmvector,s,motion_type,  hor_f_code,vert_f_code)int MV[2][2][2],PMV[2][2][2];int mv_field_sel[2][2];int dmvector[2];int s,motion_type,hor_f_code,vert_f_code;{  if (pict_struct==FRAME_PICTURE)  {    if (motion_type==MC_FRAME)    {      /* frame prediction */      putmv(MV[0][s][0]-PMV[0][s][0],hor_f_code);      putmv(MV[0][s][1]-PMV[0][s][1],vert_f_code);      PMV[0][s][0]=PMV[1][s][0]=MV[0][s][0];      PMV[0][s][1]=PMV[1][s][1]=MV[0][s][1];    }    else if (motion_type==MC_FIELD)    {      /* field prediction */      putbits(mv_field_sel[0][s],1);      putmv(MV[0][s][0]-PMV[0][s][0],hor_f_code);      putmv((MV[0][s][1]>>1)-(PMV[0][s][1]>>1),vert_f_code);      putbits(mv_field_sel[1][s],1);      putmv(MV[1][s][0]-PMV[1][s][0],hor_f_code);      putmv((MV[1][s][1]>>1)-(PMV[1][s][1]>>1),vert_f_code);      PMV[0][s][0]=MV[0][s][0];      PMV[0][s][1]=MV[0][s][1];      PMV[1][s][0]=MV[1][s][0];      PMV[1][s][1]=MV[1][s][1];    }    else    {      /* dual prime prediction */      putmv(MV[0][s][0]-PMV[0][s][0],hor_f_code);      putdmv(dmvector[0]);      putmv((MV[0][s][1]>>1)-(PMV[0][s][1]>>1),vert_f_code);      putdmv(dmvector[1]);      PMV[0][s][0]=PMV[1][s][0]=MV[0][s][0];      PMV[0][s][1]=PMV[1][s][1]=MV[0][s][1];    }  }  else  {    /* field picture */    if (motion_type==MC_FIELD)    {      /* field prediction */      putbits(mv_field_sel[0][s],1);      putmv(MV[0][s][0]-PMV[0][s][0],hor_f_code);      putmv(MV[0][s][1]-PMV[0][s][1],vert_f_code);      PMV[0][s][0]=PMV[1][s][0]=MV[0][s][0];      PMV[0][s][1]=PMV[1][s][1]=MV[0][s][1];    }    else if (motion_type==MC_16X8)    {      /* 16x8 prediction */      putbits(mv_field_sel[0][s],1);      putmv(MV[0][s][0]-PMV[0][s][0],hor_f_code);      putmv(MV[0][s][1]-PMV[0][s][1],vert_f_code);      putbits(mv_field_sel[1][s],1);      putmv(MV[1][s][0]-PMV[1][s][0],hor_f_code);      putmv(MV[1][s][1]-PMV[1][s][1],vert_f_code);      PMV[0][s][0]=MV[0][s][0];      PMV[0][s][1]=MV[0][s][1];      PMV[1][s][0]=MV[1][s][0];      PMV[1][s][1]=MV[1][s][1];    }    else    {      /* dual prime prediction */      putmv(MV[0][s][0]-PMV[0][s][0],hor_f_code);      putdmv(dmvector[0]);      putmv(MV[0][s][1]-PMV[0][s][1],vert_f_code);      putdmv(dmvector[1]);      PMV[0][s][0]=PMV[1][s][0]=MV[0][s][0];      PMV[0][s][1]=PMV[1][s][1]=MV[0][s][1];    }  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲免费观看在线视频| 久久精品国产亚洲一区二区三区 | 成人一区二区三区视频| 亚洲婷婷在线视频| 在线观看亚洲a| 国产一区二区不卡老阿姨| 91黄色激情网站| 国产亚洲污的网站| 日韩黄色在线观看| av电影天堂一区二区在线观看| 欧美色老头old∨ideo| 国产精品视频免费看| 狠狠狠色丁香婷婷综合久久五月| 色噜噜久久综合| 国产精品萝li| 国产一区二区网址| 日韩欧美在线影院| 午夜精品视频在线观看| 91在线视频播放| 国产欧美一区二区精品久导航 | 国产无人区一区二区三区| 五月婷婷综合在线| 欧美亚洲动漫精品| 一区二区三区精品| jlzzjlzz亚洲日本少妇| 日韩免费观看高清完整版| 五月激情综合婷婷| 亚洲成人av电影在线| 精品电影一区二区三区| 久久精工是国产品牌吗| 日韩一区二区中文字幕| 亚洲成人一二三| 91黄色免费网站| 亚洲一区二三区| 色呦呦日韩精品| 亚洲精品中文在线| 在线免费亚洲电影| 国产精品国产精品国产专区不蜜| 国产精品一二一区| 欧美激情综合在线| 一本久久精品一区二区| 亚洲免费在线电影| 在线免费观看日本一区| 午夜视频在线观看一区二区| 欧美日韩久久不卡| 久久精品国产99国产精品| 久久夜色精品国产噜噜av| 精品国产乱码久久久久久久| 亚洲欧美日韩国产综合| 丁香婷婷综合激情五月色| 欧美国产乱子伦| 色婷婷久久久亚洲一区二区三区| 日韩欧美中文字幕制服| 国产亚洲欧美日韩日本| 日韩成人免费在线| 337p粉嫩大胆色噜噜噜噜亚洲| 激情五月婷婷综合网| 中文字幕 久热精品 视频在线| 99re热这里只有精品视频| 夜夜亚洲天天久久| 欧美刺激脚交jootjob| 国产成人精品一区二区三区网站观看| 成人欧美一区二区三区视频网页| 91成人免费网站| 美女视频网站久久| 国产精品女同一区二区三区| 欧美视频在线一区| 精品一区二区三区香蕉蜜桃| 精品国免费一区二区三区| 国产v综合v亚洲欧| 国产精品久久久久aaaa樱花| 日本一道高清亚洲日美韩| 91精品国产91久久久久久最新毛片 | 香蕉影视欧美成人| 日韩一二三区视频| 91视视频在线观看入口直接观看www | 日本在线不卡一区| 中文字幕av一区二区三区| 欧美日韩国产一级片| 国产精品 日产精品 欧美精品| 亚洲美女区一区| 精品国产免费人成在线观看| 色婷婷国产精品综合在线观看| 麻豆国产一区二区| 亚洲色图制服诱惑 | 日韩午夜精品电影| 91亚洲精品久久久蜜桃| 国内精品第一页| 亚洲综合色区另类av| 中文字幕av资源一区| 日韩免费成人网| 欧美亚洲动漫制服丝袜| 99久久婷婷国产综合精品| 国内精品免费在线观看| 秋霞午夜av一区二区三区| 一区二区久久久久| 亚洲三级电影网站| 国产一区在线观看视频| 欧美成人a∨高清免费观看| 亚洲欧美激情插| 一本大道久久a久久精二百| 国产精品一级在线| 韩日精品视频一区| 狠狠色2019综合网| 九一九一国产精品| 蜜桃av噜噜一区| 日本不卡视频一二三区| 日韩综合小视频| 日韩成人一区二区| 日韩成人精品在线| 免费成人美女在线观看.| 天天操天天干天天综合网| 亚洲综合男人的天堂| 亚洲精品欧美激情| 一区二区成人在线| 五月天一区二区| 日韩av一级电影| 蜜桃视频一区二区| 精品一区二区三区影院在线午夜| 老司机精品视频一区二区三区| 免费成人你懂的| 99国产精品一区| 国产精品久久久久久久久晋中| 日韩三级精品电影久久久| 欧美二区三区91| 337p亚洲精品色噜噜噜| 日韩精品一区二区三区在线观看| 日韩午夜三级在线| 国产精品三级电影| 亚洲欧美日韩电影| 五月天国产精品| 国产麻豆精品视频| 成人18视频在线播放| 欧洲一区在线电影| 日韩欧美一区二区三区在线| 久久在线观看免费| 国产精品色呦呦| 亚洲伊人伊色伊影伊综合网 | 91麻豆精品久久久久蜜臀| 日韩欧美的一区| 久久久99久久精品欧美| 综合激情成人伊人| 午夜精品久久久久久不卡8050| 久久精品国产第一区二区三区| 国产黄色精品网站| 在线欧美日韩国产| 久久亚洲春色中文字幕久久久| 亚洲人成网站影音先锋播放| 国产欧美精品国产国产专区| 日韩免费一区二区三区在线播放| 国产欧美日韩精品在线| 国产精品丝袜黑色高跟| 亚洲一区二区三区在线看| 久久精品国产亚洲aⅴ| 99热精品一区二区| 91精品国产综合久久久久久久久久 | 亚洲麻豆国产自偷在线| 日本怡春院一区二区| 99亚偷拍自图区亚洲| 欧美一区二区三区不卡| 亚洲欧美综合色| 琪琪一区二区三区| 91一区二区三区在线观看| 精品国产精品一区二区夜夜嗨| 亚洲区小说区图片区qvod| 九色|91porny| 欧美久久一二区| 亚洲同性同志一二三专区| 国模一区二区三区白浆| 欧美在线观看18| 91在线免费播放| 国产一区二区三区国产| 狠狠久久亚洲欧美| 欧美日韩一区视频| 国产精品嫩草影院av蜜臀| 经典三级视频一区| 91精品久久久久久久99蜜桃| 亚洲精品欧美在线| 91亚洲永久精品| 国产精品欧美久久久久一区二区| 精品一二三四在线| 欧美一级一级性生活免费录像| 一区二区三区在线免费| 99re热视频精品| 国产精品免费视频网站| 国产aⅴ精品一区二区三区色成熟| 制服丝袜激情欧洲亚洲| 亚洲18女电影在线观看| 欧美日韩国产片| 亚洲成a天堂v人片| 欧美午夜精品久久久久久超碰| 国产精品久久久久久久久免费桃花| 国产一区二区美女诱惑| www欧美成人18+| 国产一区二区日韩精品| 日韩精品一区二区三区在线观看| 欧美a级理论片| 日韩欧美国产wwwww| 麻豆精品一区二区| 欧美成va人片在线观看|