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

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

?? ratectl.c

?? h264標準的VC實現(xiàn)
?? C
?? 第 1 頁 / 共 4 頁
字號:
        {
          T = (long) floor(Wp*R/(Np*Wp+Nb*Wb) + 0.5);
          T1 = (long) floor(bit_rate/frame_rate-GAMMAP*(CurrentBufferFullness-TargetBufferLevel)+0.5);
          T1 = MAX(0,T1);
          T = (long)(floor(BETAP*T+(1.0-BETAP)*T1+0.5));
        }
      }

      /* reserve some bits for smoothing */

      T=(long)((1.0-0.0*input->successive_Bframe)*T);
      /* HRD consideration */
      T = MAX(T, (long) LowerBound);
        T = MIN(T, (long) UpperBound2);

      if((topfield)||(fieldpic&&((input->PicInterlace==ADAPTIVE_CODING)\
        ||(input->MbInterlace))))
        T_field=T;
    }
  }

  if(fieldpic||topfield)
  {
    /* frame layer rate control */
    img->NumberofHeaderBits=0;
    img->NumberofTextureBits=0;

    /* basic unit layer rate control */
    if(img->BasicUnit<img->Frame_Total_Number_MB)
    {
      TotalFrameQP=0;
      img->NumberofBasicUnitHeaderBits=0;
      img->NumberofBasicUnitTextureBits=0;
      img->TotalMADBasicUnit=0;
      if(img->FieldControl==0)
        NumberofBasicUnit=TotalNumberofBasicUnit;
      else
        NumberofBasicUnit=TotalNumberofBasicUnit/2;
    }
  }
    
  if((img->type==P_SLICE)&&(img->BasicUnit<img->Frame_Total_Number_MB)\
    &&(img->FieldControl==1))
  {
  /* top filed at basic unit layer rate control */
    if(topfield)
    {
      bits_topfield=0;
      T=(long)(T_field*0.6);
    }
  /* bottom filed at basic unit layer rate control */
    else
    {
      T=T_field-bits_topfield;
      img->NumberofBasicUnitHeaderBits=0;
      img->NumberofBasicUnitTextureBits=0;
      img->TotalMADBasicUnit=0;
      NumberofBasicUnit=TotalNumberofBasicUnit/2;
    }
  }
}


/*! 
 *************************************************************************************
 * \brief
 *    calculate MAD for the current macroblock 
 *
 * \return
 *    calculated MAD
 *
 *************************************************************************************
*/
double calc_MAD()
{
  int k,l;
    int s = 0;
  double MAD;

  for (k = 0; k < 16; k++)
    for (l = 0; l < 16; l++)
      s+= abs(diffy[k][l]);
  
  MAD=s*1.0/256;
  return MAD;
}


/*! 
 *************************************************************************************
 * \brief
 *    update one picture after frame/field encoding
 *
 * \param nbits
 *    number of bits used for picture
 *
 *************************************************************************************
*/
void rc_update_pict(int nbits)
{
  R-= nbits; /* remaining # of bits in GOP */
  CurrentBufferFullness += nbits - bit_rate/frame_rate;

  /*update the lower bound and the upper bound for the target bits of each frame, HRD consideration*/
  LowerBound  +=(long)(bit_rate/frame_rate-nbits);
  UpperBound1 +=(long)(bit_rate/frame_rate-nbits);
  UpperBound2 = (long)(OMEGA*UpperBound1);
  
  return;
}


/*! 
 *************************************************************************************
 * \brief
 *    update after frame encoding
 *
 * \param nbits
 *    number of bits used for frame
 *
 *************************************************************************************
*/
void rc_update_pict_frame(int nbits)
{

  /* update the complexity weight of I, P, B frame */
  int Avem_Qc;
  int X=0;
    
  /* frame layer rate control */
  if(img->BasicUnit==img->Frame_Total_Number_MB)
    X = (int) floor(nbits*m_Qc+ 0.5);
  /* basic unit layer rate control */
  else
  {
    if(img->type==P_SLICE)
    {
      if(((img->IFLAG==0)&&(img->FieldControl==1))\
        ||(img->FieldControl==0))
      {
        Avem_Qc=TotalFrameQP/TotalNumberofBasicUnit;
        X=(int)floor(nbits*Avem_Qc+0.5);
      }
    }
    else if(img->type==B_SLICE)
      X = (int) floor(nbits*m_Qc+ 0.5);
  }


  switch (img->type)
  {
  case P_SLICE:
    /* field coding */
    if(((img->IFLAG==0)&&(img->FieldControl==1))\
      ||(img->FieldControl==0))
    {
      Xp = X;
      Np--;
      Wp=Xp;
      Pm_Hp=img->NumberofHeaderBits;
      img->NumberofCodedPFrame++;
      img->NumberofPPicture++;
    }
    else if((img->IFLAG!=0)&&(img->FieldControl==1))
      img->IFLAG=0;
    break;
  case B_SLICE:
    Xb = X;
    Nb--;
    Wb=Xb/THETA; 
    
    img->NumberofCodedBFrame++;
    NumberofBFrames++;
    
    break;
  }
}

/*! 
 *************************************************************************************
 * \brief
 *    coded bits for top field
 *
 * \param nbits
 *    number of bits used for top field
 *
 *************************************************************************************
*/
void setbitscount(int nbits)
{
  bits_topfield = nbits;
}


/*! 
 *************************************************************************************
 * \brief
 *    compute a  quantization parameter for each frame
 *
 *************************************************************************************
*/
int updateQuantizationParameter(int topfield)
{
  double dtmp;
  int m_Bits;
  int BFrameNumber;
  int StepSize;
  int PAverageQP;
  int SumofBasicUnit;
  int i;
  
  /* frame layer rate control */
  if(img->BasicUnit==img->Frame_Total_Number_MB)
  {
    /* fixed quantization parameter is used to coded I frame, the first P frame and the first B frame
       the quantization parameter is adjusted according the available channel bandwidth and 
       the type of vide */  
    /*top field*/
    if((topfield)||(img->FieldControl==0))
    {
      if(img->type==I_SLICE)
      {
        m_Qc=MyInitialQp;
        return m_Qc;
      }
      else if(img->type==B_SLICE)
      {
        if(input->successive_Bframe==1)
        {
          BFrameNumber=(NumberofBFrames+1)%input->successive_Bframe;
          if(BFrameNumber==0)
            BFrameNumber=input->successive_Bframe;
          /*adaptive field/frame coding*/
          else if(BFrameNumber==1)
          {
            if((input->PicInterlace==ADAPTIVE_CODING)\
              ||(input->MbInterlace))
            {
              if(img->FieldControl==0)
              {                   
                /*previous choice is frame coding*/
                if(img->FieldFrame==1)
                {
                  PreviousQp1=PreviousQp2;
                  PreviousQp2=FrameQPBuffer;
                }           
                /*previous choice is field coding*/
                else
                {
                  PreviousQp1=PreviousQp2;
                  PreviousQp2=FieldQPBuffer;
                }
              }
            }
          }
          if(PreviousQp1==PreviousQp2)
            m_Qc=PreviousQp1+2;
          else
            m_Qc=(PreviousQp1+PreviousQp2)/2+1;
          m_Qc = MIN(m_Qc, RC_MAX_QUANT); // clipping
          m_Qc = MAX(RC_MIN_QUANT, m_Qc);//clipping
        }
        else
        {
          BFrameNumber=(NumberofBFrames+1)%input->successive_Bframe;
          if(BFrameNumber==0)
            BFrameNumber=input->successive_Bframe;
          /*adaptive field/frame coding*/
          else if(BFrameNumber==1)
          {
            if((input->PicInterlace==ADAPTIVE_CODING)\
              ||(input->MbInterlace))
            {
              if(img->FieldControl==0)
              {
                /*previous choice is frame coding*/
                if(img->FieldFrame==1)
                {
                  PreviousQp1=PreviousQp2;
                  PreviousQp2=FrameQPBuffer;
                }
                /*previous choice is field coding*/
                else
                {
                  PreviousQp1=PreviousQp2;
                  PreviousQp2=FieldQPBuffer;
                }
              }
            }
          }

          if((PreviousQp2-PreviousQp1)<=(-2*input->successive_Bframe-3))
            StepSize=-3;
          else  if((PreviousQp2-PreviousQp1)==(-2*input->successive_Bframe-2))
            StepSize=-2;
          else if((PreviousQp2-PreviousQp1)==(-2*input->successive_Bframe-1))
            StepSize=-1;
          else if((PreviousQp2-PreviousQp1)==(-2*input->successive_Bframe))
            StepSize=0;
          else if((PreviousQp2-PreviousQp1)==(-2*input->successive_Bframe+1))
            StepSize=1;
          else
            StepSize=2;
          
          m_Qc=PreviousQp1+StepSize;
          m_Qc +=MIN(2*(BFrameNumber-1),MAX(-2*(BFrameNumber-1), \
            (BFrameNumber-1)*(PreviousQp2-PreviousQp1)/(input->successive_Bframe-1)));
          m_Qc = MIN(m_Qc, RC_MAX_QUANT); // clipping
          m_Qc = MAX(RC_MIN_QUANT, m_Qc);//clipping
        }
        return m_Qc;
      }
      else if((img->type==P_SLICE)&&(img->NumberofPPicture==0))
      {
        m_Qc=MyInitialQp;
        
        if(img->FieldControl==0)
        {
          if(active_sps->frame_mbs_only_flag)
          {
            img->TotalQpforPPicture +=m_Qc;
            PreviousQp1=PreviousQp2;
            PreviousQp2=m_Qc;
            Pm_Qp=m_Qc;
          }
          /*adaptive field/frame coding*/
          else
            FrameQPBuffer=m_Qc;
        }
        
        return m_Qc;  
      }
      else
      {
        /*adaptive field/frame coding*/
        if(((input->PicInterlace==ADAPTIVE_CODING)\
          ||(input->MbInterlace))\
          &&(img->FieldControl==0))
        {
          /*previous choice is frame coding*/
          if(img->FieldFrame==1)
          {
            img->TotalQpforPPicture +=FrameQPBuffer;
            Pm_Qp=FrameQPBuffer;
          }
          /*previous choice is field coding*/
          else
          {
            img->TotalQpforPPicture +=FieldQPBuffer;
            Pm_Qp=FieldQPBuffer;
          }
        }

        m_X1=Pm_X1;
        m_X2=Pm_X2;
        m_Hp=PPreHeader;
        m_Qp=Pm_Qp;
        DuantQp=PDuantQp;
        MADPictureC1=PMADPictureC1;
        MADPictureC2=PMADPictureC2;
        PreviousPictureMAD=PPictureMAD[0];
        
        /* predict the MAD of current picture*/
        CurrentFrameMAD=MADPictureC1*PreviousPictureMAD+MADPictureC2;
        
        /*compute the number of bits for the texture*/      
        
        if(T<0)
        {
          m_Qc=m_Qp+DuantQp;
          m_Qc = MIN(m_Qc, RC_MAX_QUANT); // clipping
        }
        else
        {
          m_Bits =T-m_Hp;
          m_Bits = MAX(m_Bits, (int)(bit_rate/(MINVALUE*frame_rate)));
          dtmp = CurrentFrameMAD * m_X1 * CurrentFrameMAD * m_X1 \
            + 4 * m_X2 * CurrentFrameMAD * m_Bits;
          if ((m_X2 == 0.0) || (dtmp < 0) || ((sqrt (dtmp) - m_X1 * CurrentFrameMAD) <= 0.0)) // fall back 1st order mode
            m_Qstep = (float) (m_X1 * CurrentFrameMAD / (double) m_Bits);
          else // 2nd order mode
            m_Qstep = (float) ((2 * m_X2 * CurrentFrameMAD) / (sqrt (dtmp) - m_X1 * CurrentFrameMAD));
          
          m_Qc=Qstep2QP(m_Qstep);
          
          m_Qc = MIN(m_Qp+DuantQp,  m_Qc);  // control variation
          m_Qc = MIN(m_Qc, RC_MAX_QUANT); // clipping
          m_Qc = MAX(m_Qp-DuantQp, m_Qc); // control variation
          m_Qc = MAX(RC_MIN_QUANT, m_Qc);
        }
        
        if(img->FieldControl==0)
        {
          /*frame coding*/
          if(active_sps->frame_mbs_only_flag)
          {
            img->TotalQpforPPicture +=m_Qc;
            PreviousQp1=PreviousQp2;
            PreviousQp2=m_Qc;
            Pm_Qp=m_Qc;
          }
          /*adaptive field/frame coding*/
          else
            FrameQPBuffer=m_Qc;
        }
        
        return m_Qc;
      }
   }
   /*bottom field*/
   else
   {
     if((img->type==P_SLICE)&&(img->IFLAG==0))
     {
       /*field coding*/
       if(input->PicInterlace==FIELD_CODING)
       {
         img->TotalQpforPPicture +=m_Qc;
         PreviousQp1=PreviousQp2+1; 
         PreviousQp2=m_Qc;//+0 Recent change 13/1/2003
         Pm_Qp=m_Qc;
       }
       /*adaptive field/frame coding*/
       else
         FieldQPBuffer=m_Qc;     
     }
     return m_Qc;
   }
  }
  /*basic unit layer rate control*/
  else
  {
    /*top filed of I frame*/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国毛片一区二区三区| 国产免费成人在线视频| 国产欧美日韩另类视频免费观看| 亚洲成人自拍一区| 91福利国产精品| 依依成人综合视频| 国产成人综合在线播放| 日韩视频在线你懂得| 美日韩黄色大片| 精品少妇一区二区三区视频免付费 | 国产精品沙发午睡系列990531| 日韩成人伦理电影在线观看| 欧美日本国产视频| 精品制服美女久久| 久久久久99精品国产片| 国产成人鲁色资源国产91色综| 久久综合精品国产一区二区三区| 日韩精品一二三四| 久久一区二区视频| 日本aⅴ精品一区二区三区| 欧美一卡二卡在线| 国产综合一区二区| 国产色产综合产在线视频| 91视频精品在这里| 一区二区三区精品在线| 欧美精品视频www在线观看| 日韩中文字幕区一区有砖一区 | 风流少妇一区二区| 中文字幕视频一区| 欧美私模裸体表演在线观看| 婷婷综合在线观看| 久久这里只有精品视频网| 大桥未久av一区二区三区中文| 久久久久国产精品麻豆| 91成人在线精品| 麻豆国产一区二区| 国产精品久久久99| 欧美在线视频日韩| 男男gaygay亚洲| 精品日韩一区二区三区| 成人免费高清在线| 伊人开心综合网| 久久九九久精品国产免费直播| 99视频热这里只有精品免费| 日韩精品一卡二卡三卡四卡无卡| 国产日韩欧美激情| 欧美剧在线免费观看网站| 国产精品一区专区| 亚洲激情六月丁香| 久久午夜免费电影| 在线国产电影不卡| 国产精品一区免费在线观看| 亚洲啪啪综合av一区二区三区| 日韩一区二区影院| 日本国产一区二区| 国产成人在线免费观看| 亚洲一区二区三区精品在线| 欧美一区二区三区在线视频| 成人性生交大片| 久久成人久久爱| 亚洲成a天堂v人片| 国产精品毛片a∨一区二区三区| 欧美日免费三级在线| 岛国av在线一区| 激情五月激情综合网| 亚洲成人自拍一区| 亚洲精品乱码久久久久久黑人 | 成人av在线播放网站| 久久狠狠亚洲综合| 一个色妞综合视频在线观看| 欧美激情在线观看视频免费| 欧美一区二区不卡视频| 精品视频在线免费| 色综合久久精品| 成人一级片网址| 成人激情小说乱人伦| 欧美bbbbb| 亚洲黄色在线视频| 亚洲靠逼com| 亚洲欧美一区二区久久| 中日韩av电影| 国产亚洲欧美在线| 精品嫩草影院久久| 欧美一级在线免费| 欧美一区二区三区在| 538在线一区二区精品国产| 欧美三级在线看| 欧美亚洲一区三区| 色噜噜夜夜夜综合网| 国产福利91精品一区二区三区| 亚洲欧美日韩中文字幕一区二区三区 | 成人av在线资源网站| 粉嫩av一区二区三区在线播放 | 激情欧美一区二区| 精品一区二区三区在线播放| 免费在线看一区| 韩国v欧美v日本v亚洲v| 久久成人综合网| 国内外成人在线视频| 韩国女主播成人在线观看| 国产一级精品在线| 国产成人精品亚洲777人妖| 国产福利不卡视频| 成人av网址在线观看| 91啪亚洲精品| 丁香天五香天堂综合| 九色综合狠狠综合久久| 国产一区二区毛片| 国产福利一区二区| 91在线观看地址| 欧美日韩电影在线| 欧美电影免费观看高清完整版在线观看 | 亚洲欧美另类久久久精品| 亚洲国产一区二区三区| 天天色天天爱天天射综合| 日本色综合中文字幕| 日韩和欧美一区二区三区| 另类成人小视频在线| 九色|91porny| 国产91精品一区二区麻豆网站| 波多野结衣一区二区三区| 在线免费观看一区| 欧美一区二区免费视频| 久久久久国产精品麻豆ai换脸| 亚洲欧洲av一区二区三区久久| 亚洲一区在线免费观看| 麻豆一区二区在线| 成人精品视频网站| 欧美日韩免费一区二区三区视频 | 偷拍与自拍一区| 夫妻av一区二区| 欧美卡1卡2卡| 日本一区二区三级电影在线观看 | 麻豆精品一区二区| 成人ar影院免费观看视频| 在线观看av不卡| 久久亚洲私人国产精品va媚药| 最好看的中文字幕久久| 免费黄网站欧美| 99re亚洲国产精品| 日韩一区二区三区视频在线观看| 国产精品人成在线观看免费| 亚洲一区二区在线免费观看视频 | 亚洲欧洲另类国产综合| 亚洲男人都懂的| 日韩电影一区二区三区| 91丨国产丨九色丨pron| 日韩精品影音先锋| 一区二区在线观看视频在线观看| 国内精品伊人久久久久av一坑| 色av一区二区| 国产精品视频一二三区| 日韩av电影天堂| 欧美日韩第一区日日骚| 亚洲一区二区黄色| 欧美亚洲禁片免费| 亚洲精品va在线观看| 99久久综合色| 亚洲品质自拍视频| 91免费看视频| 亚洲精品五月天| 色婷婷久久久亚洲一区二区三区| 自拍偷拍国产精品| 91蝌蚪porny| 一区二区三区四区高清精品免费观看| 成人免费毛片嘿嘿连载视频| 国产三级久久久| 成人国产电影网| 中文字幕一区av| 色视频一区二区| 亚洲福利视频一区| 91精品国产91久久综合桃花 | 精品一区二区精品| 久久人人爽人人爽| 粉嫩aⅴ一区二区三区四区| 国产精品亲子伦对白| thepron国产精品| 亚洲一区二区三区视频在线| 欧美挠脚心视频网站| 91麻豆视频网站| 亚洲gay无套男同| 日韩欧美精品在线| 风间由美一区二区av101| 亚洲视频一区在线观看| 欧美四级电影在线观看| 玖玖九九国产精品| 国产欧美一区二区在线| 91亚洲精品久久久蜜桃| 一区二区三区 在线观看视频| 欧美美女黄视频| 国精产品一区一区三区mba桃花| 国产精品狼人久久影院观看方式| 色视频欧美一区二区三区| 日本特黄久久久高潮| 欧美国产一区在线| 欧美午夜精品久久久久久超碰| 蜜桃在线一区二区三区| 国产精品网站一区| 欧美日韩久久久久久| 国产一区二区在线看|