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

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

?? ratectl.c

?? 視頻音頻編碼程序 視頻音頻編碼程序 視頻音頻編碼程序
?? C
字號(hào):
/* ratectl.c, 比特流控制程序*/#include <stdio.h>#include <math.h>#include "config.h"#include "global.h"/* private prototypes */static void calc_actj _ANSI_ARGS_((unsigned char *frame));static double var_sblk _ANSI_ARGS_((unsigned char *p, int lx));/* rate control variables */int Xi, Xp, Xb, r, d0i, d0p, d0b;double avg_act;static int R, T, d;static double actsum;static int Np, Nb, S, Q;static int prev_mquant;void rc_init_seq(){  /* reaction parameter (constant) */  if (r==0)  r = (int)floor(2.0*bit_rate/frame_rate + 0.5);  /* average activity */  if (avg_act==0.0)  avg_act = 400.0;  /* remaining # of bits in GOP */  R = 0;  /* global complexity measure */  if (Xi==0) Xi = (int)floor(160.0*bit_rate/115.0 + 0.5);  if (Xp==0) Xp = (int)floor( 60.0*bit_rate/115.0 + 0.5);  if (Xb==0) Xb = (int)floor( 42.0*bit_rate/115.0 + 0.5);  /* virtual buffer fullness */  if (d0i==0) d0i = (int)floor(10.0*r/31.0 + 0.5);  if (d0p==0) d0p = (int)floor(10.0*r/31.0 + 0.5);  if (d0b==0) d0b = (int)floor(1.4*10.0*r/31.0 + 0.5);/*  if (d0i==0) d0i = (int)floor(10.0*r/(qscale_tab[0] ? 56.0 : 31.0) + 0.5);  if (d0p==0) d0p = (int)floor(10.0*r/(qscale_tab[1] ? 56.0 : 31.0) + 0.5);  if (d0b==0) d0b = (int)floor(1.4*10.0*r/(qscale_tab[2] ? 56.0 : 31.0) + 0.5);*/  fprintf(statfile,"\nrate control: sequence initialization\n");  fprintf(statfile,    " initial global complexity measures (I,P,B): Xi=%d, Xp=%d, Xb=%d\n",    Xi, Xp, Xb);  fprintf(statfile," reaction parameter: r=%d\n", r);  fprintf(statfile,    " initial virtual buffer fullness (I,P,B): d0i=%d, d0p=%d, d0b=%d\n",    d0i, d0p, d0b);  fprintf(statfile," initial average activity: avg_act=%.1f\n", avg_act);}void rc_init_GOP(np,nb)int np,nb;{  R += (int) floor((1 + np + nb) * bit_rate / frame_rate + 0.5);  Np = fieldpic ? 2*np+1 : np;  Nb = fieldpic ? 2*nb : nb;  fprintf(statfile,"\nrate control: new group of pictures (GOP)\n");  fprintf(statfile," target number of bits for GOP: R=%d\n",R);  fprintf(statfile," number of P pictures in GOP: Np=%d\n",Np);  fprintf(statfile," number of B pictures in GOP: Nb=%d\n",Nb);}/* Note: we need to substitute K for the 1.4 and 1.0 constants -- this can   be modified to fit image content *//* Step 1: compute target bits for current picture being coded */void rc_init_pict(frame)unsigned char *frame;{  double Tmin;  switch (pict_type)  {  case I_TYPE:    T = (int) floor(R/(1.0+Np*Xp/(Xi*1.0)+Nb*Xb/(Xi*1.4)) + 0.5);    d = d0i;    break;  case P_TYPE:    T = (int) floor(R/(Np+Nb*1.0*Xb/(1.4*Xp)) + 0.5);    d = d0p;    break;  case B_TYPE:    T = (int) floor(R/(Nb+Np*1.4*Xp/(1.0*Xb)) + 0.5);    d = d0b;    break;  }  Tmin = (int) floor(bit_rate/(8.0*frame_rate) + 0.5);  if (T<Tmin)    T = Tmin;  S = bitcount();  Q = 0;  calc_actj(frame);  actsum = 0.0;  fprintf(statfile,"\nrate control: start of picture\n");  fprintf(statfile," target number of bits: T=%d\n",T);}static void calc_actj(frame)unsigned char *frame;{  int i,j,k;  unsigned char *p;  double actj,var;  k = 0;  for (j=0; j<height2; j+=16)    for (i=0; i<width; i+=16)    {      p = frame + ((pict_struct==BOTTOM_FIELD)?width:0) + i + width2*j;      /* take minimum spatial activity measure of luminance blocks */      actj = var_sblk(p,width2);      var = var_sblk(p+8,width2);      if (var<actj) actj = var;      var = var_sblk(p+8*width2,width2);      if (var<actj) actj = var;      var = var_sblk(p+8*width2+8,width2);      if (var<actj) actj = var;      if (!fieldpic && !prog_seq)      {        /* field */        var = var_sblk(p,width<<1);        if (var<actj) actj = var;        var = var_sblk(p+8,width<<1);        if (var<actj) actj = var;        var = var_sblk(p+width,width<<1);        if (var<actj) actj = var;        var = var_sblk(p+width+8,width<<1);        if (var<actj) actj = var;      }      actj+= 1.0;      mbinfo[k++].act = actj;    }}void rc_update_pict(){  double X;  S = bitcount() - S; /* total # of bits in picture */  R-= S; /* remaining # of bits in GOP */  X = (int) floor(S*((0.5*(double)Q)/(mb_width*mb_height2)) + 0.5);  d+= S - T;  avg_act = actsum/(mb_width*mb_height2);  switch (pict_type)  {  case I_TYPE:    Xi = X;    d0i = d;    break;  case P_TYPE:    Xp = X;    d0p = d;    Np--;    break;  case B_TYPE:    Xb = X;    d0b = d;    Nb--;    break;  }  fprintf(statfile,"\nrate control: end of picture\n");  fprintf(statfile," actual number of bits: S=%d\n",S);  fprintf(statfile," average quantization parameter Q=%.1f\n",    (double)Q/(mb_width*mb_height2));  fprintf(statfile," remaining number of bits in GOP: R=%d\n",R);  fprintf(statfile,    " global complexity measures (I,P,B): Xi=%d, Xp=%d, Xb=%d\n",    Xi, Xp, Xb);  fprintf(statfile,    " virtual buffer fullness (I,P,B): d0i=%d, d0p=%d, d0b=%d\n",    d0i, d0p, d0b);  fprintf(statfile," remaining number of P pictures in GOP: Np=%d\n",Np);  fprintf(statfile," remaining number of B pictures in GOP: Nb=%d\n",Nb);  fprintf(statfile," average activity: avg_act=%.1f\n", avg_act);}/* compute initial quantization stepsize (at the beginning of picture) */int rc_start_mb(){  int mquant;  if (q_scale_type)  {    mquant = (int) floor(2.0*d*31.0/r + 0.5);    /* clip mquant to legal (linear) range */    if (mquant<1)      mquant = 1;    if (mquant>112)      mquant = 112;    /* map to legal quantization level */    mquant = non_linear_mquant_table[map_non_linear_mquant[mquant]];  }  else  {    mquant = (int) floor(d*31.0/r + 0.5);    mquant <<= 1;    /* clip mquant to legal (linear) range */    if (mquant<2)      mquant = 2;    if (mquant>62)      mquant = 62;    prev_mquant = mquant;  }/*  fprintf(statfile,"rc_start_mb:\n");  fprintf(statfile,"mquant=%d\n",mquant);*/  return mquant;}/* Step 2: measure virtual buffer - estimated buffer discrepancy */int rc_calc_mquant(j)int j;{  int mquant;  double dj, Qj, actj, N_actj;  /* measure virtual buffer discrepancy from uniform distribution model */  dj = d + (bitcount()-S) - j*(T/(mb_width*mb_height2));  /* scale against dynamic range of mquant and the bits/picture count */  Qj = dj*31.0/r;/*Qj = dj*(q_scale_type ? 56.0 : 31.0)/r;  */  actj = mbinfo[j].act;  actsum+= actj;  /* compute normalized activity */  N_actj = (2.0*actj+avg_act)/(actj+2.0*avg_act);  if (q_scale_type)  {    /* modulate mquant with combined buffer and local activity measures */    mquant = (int) floor(2.0*Qj*N_actj + 0.5);    /* clip mquant to legal (linear) range */    if (mquant<1)      mquant = 1;    if (mquant>112)      mquant = 112;    /* map to legal quantization level */    mquant = non_linear_mquant_table[map_non_linear_mquant[mquant]];  }  else  {    /* modulate mquant with combined buffer and local activity measures */    mquant = (int) floor(Qj*N_actj + 0.5);    mquant <<= 1;    /* clip mquant to legal (linear) range */    if (mquant<2)      mquant = 2;    if (mquant>62)      mquant = 62;    /* ignore small changes in mquant */    if (mquant>=8 && (mquant-prev_mquant)>=-4 && (mquant-prev_mquant)<=4)      mquant = prev_mquant;    prev_mquant = mquant;  }  Q+= mquant; /* for calculation of average mquant *//*  fprintf(statfile,"rc_calc_mquant(%d): ",j);  fprintf(statfile,"bitcount=%d, dj=%f, Qj=%f, actj=%f, N_actj=%f, mquant=%d\n",    bitcount(),dj,Qj,actj,N_actj,mquant);*/  return mquant;}/* compute variance of 8x8 block */static double var_sblk(p,lx)unsigned char *p;int lx;{  int i, j;  unsigned int v, s, s2;  s = s2 = 0;  for (j=0; j<8; j++)  {    for (i=0; i<8; i++)    {      v = *p++;      s+= v;      s2+= v*v;    }    p+= lx - 8;  }  return s2/64.0 - (s/64.0)*(s/64.0);}/* VBV calculations * * generates warnings if underflow or overflow occurs *//* vbv_end_of_picture * * - has to be called directly after writing picture_data() * - needed for accurate VBV buffer overflow calculation * - assumes there is no byte stuffing prior to the next start code */static int bitcnt_EOP;void vbv_end_of_picture(){  bitcnt_EOP = bitcount();  bitcnt_EOP = (bitcnt_EOP + 7) & ~7; /* account for bit stuffing */}/* calc_vbv_delay * * has to be called directly after writing the picture start code, the * reference point for vbv_delay */void calc_vbv_delay(){  double picture_delay;  static double next_ip_delay; /* due to frame reordering delay */  static double decoding_time;  /* number of 1/90000 s ticks until next picture is to be decoded */  if (pict_type == B_TYPE)  {    if (prog_seq)    {      if (!repeatfirst)        picture_delay = 90000.0/frame_rate; /* 1 frame */      else      {        if (!topfirst)          picture_delay = 90000.0*2.0/frame_rate; /* 2 frames */        else          picture_delay = 90000.0*3.0/frame_rate; /* 3 frames */      }    }    else    {      /* interlaced */      if (fieldpic)        picture_delay = 90000.0/(2.0*frame_rate); /* 1 field */      else      {        if (!repeatfirst)          picture_delay = 90000.0*2.0/(2.0*frame_rate); /* 2 flds */        else          picture_delay = 90000.0*3.0/(2.0*frame_rate); /* 3 flds */      }    }  }  else  {    /* I or P picture */    if (fieldpic)    {      if(topfirst==(pict_struct==TOP_FIELD))      {        /* first field */        picture_delay = 90000.0/(2.0*frame_rate);      }      else      {        /* second field */        /* take frame reordering delay into account */        picture_delay = next_ip_delay - 90000.0/(2.0*frame_rate);      }    }    else    {      /* frame picture */      /* take frame reordering delay into account*/      picture_delay = next_ip_delay;    }    if (!fieldpic || topfirst!=(pict_struct==TOP_FIELD))    {      /* frame picture or second field */      if (prog_seq)      {        if (!repeatfirst)          next_ip_delay = 90000.0/frame_rate;        else        {          if (!topfirst)            next_ip_delay = 90000.0*2.0/frame_rate;          else            next_ip_delay = 90000.0*3.0/frame_rate;        }      }      else      {        if (fieldpic)          next_ip_delay = 90000.0/(2.0*frame_rate);        else        {          if (!repeatfirst)            next_ip_delay = 90000.0*2.0/(2.0*frame_rate);          else            next_ip_delay = 90000.0*3.0/(2.0*frame_rate);        }      }    }  }  if (decoding_time==0.0)  {    /* first call of calc_vbv_delay */    /* we start with a 7/8 filled VBV buffer (12.5% back-off) */    picture_delay = ((vbv_buffer_size*16384*7)/8)*90000.0/bit_rate;    if (fieldpic)      next_ip_delay = (int)(90000.0/frame_rate+0.5);  }  /* VBV checks */  /* check for underflow (previous picture) */  if (!low_delay && (decoding_time < bitcnt_EOP*90000.0/bit_rate))  {    /* picture not completely in buffer at intended decoding time */    if (!quiet)      fprintf(stderr,"vbv_delay underflow! (decoding_time=%.1f, t_EOP=%.1f\n)",        decoding_time, bitcnt_EOP*90000.0/bit_rate);  }  /* when to decode current frame */  decoding_time += picture_delay;  /* warning: bitcount() may overflow (e.g. after 9 min. at 8 Mbit/s */  vbv_delay = (int)(decoding_time - bitcount()*90000.0/bit_rate);  /* check for overflow (current picture) */  if ((decoding_time - bitcnt_EOP*90000.0/bit_rate)      > (vbv_buffer_size*16384)*90000.0/bit_rate)  {    if (!quiet)      fprintf(stderr,"vbv_delay overflow!\n");  }  fprintf(statfile,    "\nvbv_delay=%d (bitcount=%d, decoding_time=%.2f, bitcnt_EOP=%d)\n",    vbv_delay,bitcount(),decoding_time,bitcnt_EOP);  if (vbv_delay<0)  {    if (!quiet)      fprintf(stderr,"vbv_delay underflow: %d\n",vbv_delay);    vbv_delay = 0;  }  if (vbv_delay>65535)  {    if (!quiet)      fprintf(stderr,"vbv_delay overflow: %d\n",vbv_delay);    vbv_delay = 65535;  }}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
26uuu成人网一区二区三区| 欧美三级资源在线| 26uuu久久综合| 黄色日韩三级电影| 欧美电影免费观看完整版| 麻豆视频一区二区| 久久综合999| 成人开心网精品视频| 中文字幕一区二区三区四区不卡| 成人国产免费视频| 中文久久乱码一区二区| 捆绑变态av一区二区三区| 成人免费av网站| 亚洲精品久久嫩草网站秘色| 在线观看一区不卡| 夜夜精品视频一区二区| 欧美私模裸体表演在线观看| 日本伊人精品一区二区三区观看方式| 欧美日韩大陆一区二区| 久久精品国产澳门| 国产女主播在线一区二区| 91丨九色丨蝌蚪富婆spa| 亚洲精品国产高清久久伦理二区| 欧美日韩小视频| 激情综合色综合久久综合| 欧美国产成人在线| 欧洲生活片亚洲生活在线观看| 日韩av午夜在线观看| 久久久高清一区二区三区| 91在线精品一区二区| 日韩av一区二区三区四区| 国产色综合一区| 在线观看日韩毛片| 国产原创一区二区| 国产欧美日本一区二区三区| 欧美三级中文字幕在线观看| 高清视频一区二区| 亚洲国产精品久久不卡毛片| 久久综合狠狠综合久久综合88| 色先锋资源久久综合| 精品一区二区综合| 一区二区成人在线视频| 久久综合狠狠综合久久激情| 欧美午夜精品一区二区三区| 懂色av一区二区三区蜜臀| 亚洲地区一二三色| 中文字幕电影一区| 日韩三级视频在线观看| 色欧美片视频在线观看在线视频| 久久综合综合久久综合| 夜色激情一区二区| 国产婷婷一区二区| 制服.丝袜.亚洲.中文.综合| yourporn久久国产精品| 九九久久精品视频 | 91精品啪在线观看国产60岁| 成人av在线一区二区| 精品亚洲国产成人av制服丝袜| 亚洲国产日韩精品| 国产精品不卡一区二区三区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产91富婆露脸刺激对白| 丝袜脚交一区二区| 亚洲精品一卡二卡| 国产精品免费视频观看| wwww国产精品欧美| 91精品蜜臀在线一区尤物| 色婷婷亚洲婷婷| 2020国产成人综合网| 99精品国产热久久91蜜凸| 成人网页在线观看| 亚洲国产精品一区二区久久恐怖片 | 中文字幕中文在线不卡住| 欧美成人video| 欧美日韩亚洲综合在线| 一本久久综合亚洲鲁鲁五月天 | 久久国产视频网| 日韩成人伦理电影在线观看| 亚洲图片有声小说| 亚洲一卡二卡三卡四卡无卡久久 | 一个色综合av| 一区二区三区色| 亚洲一二三专区| 亚洲大片在线观看| 三级一区在线视频先锋| 亚洲mv大片欧洲mv大片精品| 亚洲不卡一区二区三区| 天天av天天翘天天综合网| 图片区小说区区亚洲影院| 五月天精品一区二区三区| 午夜一区二区三区在线观看| 亚洲成人午夜影院| 免费黄网站欧美| 老司机免费视频一区二区三区| 国产一区二区三区久久久 | 成人免费观看av| av在线一区二区三区| 91浏览器入口在线观看| 欧美日韩mp4| 日韩欧美在线观看一区二区三区| 26uuu亚洲婷婷狠狠天堂| 国产精品乱人伦中文| 亚洲影视在线播放| 美女一区二区三区| 成人久久久精品乱码一区二区三区| 色综合久久综合网| 在线播放一区二区三区| 国产午夜精品在线观看| 一区二区三区在线视频播放 | 亚洲欧美成人一区二区三区| 亚洲成人免费在线| 久久99九九99精品| 成人黄色一级视频| 91黄色免费看| 日韩精品最新网址| 中文字幕制服丝袜一区二区三区 | 久久精品亚洲精品国产欧美 | 亚洲欧洲在线观看av| 一区二区三区免费观看| 天天综合天天综合色| 精品一区二区日韩| 91丝袜美腿高跟国产极品老师 | 91久久精品午夜一区二区| 欧美男人的天堂一二区| 国产色综合一区| 日韩1区2区日韩1区2区| 岛国精品一区二区| 欧美体内she精高潮| 91精品国产色综合久久ai换脸| 久久夜色精品国产欧美乱极品| 亚洲欧美日韩国产中文在线| 久久国产精品99久久久久久老狼| 99精品视频一区二区| 欧美大片顶级少妇| 亚洲国产美女搞黄色| 国产成人日日夜夜| 欧美精品乱人伦久久久久久| 国产精品久久久久四虎| 欧美96一区二区免费视频| 国产v日产∨综合v精品视频| 欧美精品一二三| 中文字幕一区二区在线播放| 韩国精品免费视频| 欧美日韩国产一区| 亚洲欧洲一区二区在线播放| 国产一区欧美日韩| 91精品国模一区二区三区| 亚洲另类春色校园小说| 国产精品一区二区在线播放 | 欧美日韩免费不卡视频一区二区三区 | 日韩精品在线网站| 国产欧美一区二区三区网站| 久久99热99| 5月丁香婷婷综合| 亚洲精品国产无天堂网2021| 国产69精品久久99不卡| 久久久综合精品| 久久99精品久久久久婷婷| 欧美一级二级在线观看| 午夜成人免费电影| 欧美日韩亚洲国产综合| 亚洲线精品一区二区三区| 91久久国产综合久久| 亚洲乱码一区二区三区在线观看| av中文字幕一区| 亚洲三级久久久| 日本韩国精品一区二区在线观看| 国产精品久久久久婷婷二区次| 99久久综合色| 亚洲品质自拍视频| 色婷婷国产精品久久包臀| 日韩理论片一区二区| 91在线码无精品| 夜夜精品视频一区二区| 欧美日韩高清一区| 亚洲成av人片| 91精品免费在线观看| 日本不卡一区二区| 日韩一区二区三区视频| 日本欧美在线观看| 欧美日韩中文另类| 午夜欧美在线一二页| 7777精品伊人久久久大香线蕉完整版| 婷婷中文字幕综合| 欧美精品v国产精品v日韩精品| 国产一区日韩二区欧美三区| 国产情人综合久久777777| 春色校园综合激情亚洲| 最近日韩中文字幕| 在线视频欧美精品| 五月激情六月综合| 日韩欧美激情一区| 国产一区久久久| 综合中文字幕亚洲| 在线观看成人小视频| 久久精品99国产精品| 国产欧美一区视频| 欧美体内she精高潮| 久久国产尿小便嘘嘘| 国产精品国产自产拍高清av |