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

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

?? sequence.c

?? This document aims to provide instructions on how to configure the H.264/AVC encoder and decoder usi
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*COPYRIGHT, LICENSE AND WARRANTY INFORMATIONThis software module has been originally developed by Nokia Corporation. Provided that a person, entity or a company willing to use the Software (hereinafter Licensee) comply with all the terms and conditions of this Statement and subject to the limitations set forth in this Statement Nokia grants to such Licensee a non-exclusive, sub-licensable, worldwide, limited license under copyrights owned by Nokia to use the Software for the sole purpose of creating, manufacturing, selling, marketing, or  distributing (including the right to make modifications to the Software) a fully compliant decoder implementation (hereinafter "Decoder") of ITU-T Recommendation H.264 / ISO/IEC International Standard 14496-10 and an encoder implementation producing output that is decodable with the Decoder.Nokia retains the ownership of copyrights to the Software. There is no patent nor other intellectual property right of Nokia licensed under this Statement (except the copyright license above). Licensee hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if patent licenses  are required, it is their responsibility to acquire the license before utilizing the Software.The license by Nokia is subject to that the Licensee grants to Nokia the non-exclusive, worldwide, royalty-free, perpetual and irrevocable covenant that the Licensee(s) shall not bring a suit before any court or administrative agency or otherwise assert a claim for infringement under the Licensee intellectual property rights that, but for a license, would be infringed by the Software against     (a)  Nokia or Nokia's Affiliate; or     (b)  other recipient of a license and covenant not to sue with respect         to the Software from Nokia; or    (c)  contractor, customer or distributor of a party listed above in a         or b,  which suit or claim is related to the Software or use thereof.The Licensee(s) further agrees to grant a reciprocal license to Nokia (as granted by Nokia to the Licensee(s) on the modifications made by Licensee(s) to the Software. THE SOFTWARE IS PROVIDED "AS IS" AND THE ORIGINAL DEVELOPER DISCLAIMS ANY AND ALL WARRANTIES WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. THOSE INTENDING TO USE THE SOFTWARE ARE EXPRESSLY ADVISED THAT ITS USE MAY INFRINGE EXISTING PATENTS AND BE SUBJECT TO ROYALTY PAYMENTS TO PATENT OWNERS. ANYONE USING THE SOFTWARE ON THE BASIS OF THIS LICENSE AGREES TO OBTAIN THE NECESSARY PERMISSIONS FROM ANY AND ALL APPLICABLE PATENT OWNERS FOR SUCH USE.IN NO EVENT SHALL THE ORIGINAL DEVELOPER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.This copyright, license and warranty information notice must be retained in all copies and derivative works of the Software or substantial portions thereof.*/#include <math.h>#include <string.h>#include "globals.h"#include "debug.h"#include "nccglob.h"#include "vlcutility.h"#include "frame.h"#include "sequence.h"#include "avcencoder.h"#include "parameterset.h"#include "dpb.h"/* * Definitions of SEI types*/#define SEI_TYPE_SCENE_INFO       9#define MIN_CHROMA_QP_INDEX     -12#define MAX_CHROMA_QP_INDEX     12#define MIN_ALPHA_BETA_OFFSET   -6#define MAX_ALPHA_BETA_OFFSET   6#if  PRINT_DETAILED_SEQ_STATISTICSstatic void printIntraStat(statSlice_s *intraStat, FILE *fp);static void printInterStat(statSlice_s *interStat, FILE *fp);#endifstatic void getStat(avceStatistics_s *retStat, statSlice_s *stat);void calculateBufOffs(int bufWidth);/** seqLoad** Parameters:*      seq                   Sequence parameters** Function:*      Initializes sequence constants*      * Returns:*      -*/void avceLoad(){  frmLoad();}/** seqOpen** Parameters:*      param                 Parameters for sequence** Function:*      Initializes sequence by opening files and allocating memory for*      framebuffers and other buffers*      * Returns:*      Pointer to encoder instance or NULL if error.*/avceEncoder_t *avceOpen(avceOpenParams_s *param,void **nalBuffer, int *nalBufSize){  sequence_s  *seq;  encParams_s *pEncPar;  int bitBufInitialSize;  int numMbsPerFrame;  int maxCPBSize=10000000/8;  int counter;  int i;    param->entropyEncoder = ENTROPY_CAVLC;    if ((seq = nccMalloc(sizeof(sequence_s))) == NULL)    return NULL;      /*    * Initialize sequence variables  */    seq->lastIdrTr    = 0;  seq->nextIdrPicId = 0;    seq->encPar = *param;    // initialize the encoding parameter structure  pEncPar = & seq->encPar;    numMbsPerFrame = (pEncPar->picWidth/16) * (pEncPar->picHeight/16);    /* If level is 3.1 or higher, we can't use 4x4 motion blocks because */  /* we might exceed level limit (max. number of motion vector for two */  /* consecutive macroblocks is 16 for level 3.1 and higher).          */  if (pEncPar->level >= 31)    pEncPar->modeFlags = pEncPar->modeFlags & 0x3f;    pEncPar->filterMode  = clip(0, 2, pEncPar->filterMode);    pEncPar->chromaQpIdx =     clip(MIN_CHROMA_QP_INDEX, MAX_CHROMA_QP_INDEX, pEncPar->chromaQpIdx);    pEncPar->alphaOffset = 2 *    clip(MIN_ALPHA_BETA_OFFSET, MAX_ALPHA_BETA_OFFSET, pEncPar->alphaOffset);    pEncPar->betaOffset  = 2 *    clip(MIN_ALPHA_BETA_OFFSET, MAX_ALPHA_BETA_OFFSET, pEncPar->betaOffset);    pEncPar->maxNumRefFrms = clip(0, FRM_MAX_REF_FRAMES, pEncPar->maxNumRefFrms);    pEncPar->numReorderFrames = min(pEncPar->numReorderFrames, pEncPar->maxNumRefFrms);    pEncPar->range = clip(4, 64, pEncPar->range);    pEncPar->log2_max_frame_num_minus4 =     clip(0, 12, pEncPar->log2_max_frame_num_minus4);    pEncPar->nRandomIntraRefresh =    clip(0, numMbsPerFrame, pEncPar->nRandomIntraRefresh);    pEncPar->numNonref = param->numNonref;  // Forced Intra Refresh  seq->forcedIRNo = FORCE_INTRA_FREQUENCY;  seq->forcedIR = (int*) nccMalloc(sizeof(int)*numMbsPerFrame);  counter = seq->forcedIRNo;  for (i = 0; i < numMbsPerFrame; i++) {    seq->forcedIR[i] = counter--;    if (counter < 0)      counter = seq->forcedIRNo;  }  ///// LOW_COMPLEX_PROF3    if (pEncPar->profile == PROF_CODING_LC3) {    pEncPar->profile = PROF_CODING_SPEED;    pEncPar->low_complex_prof3 = 1;    pEncPar->spec_search_pos = ( pEncPar->range == LC3_RANGE ) ;  }    /////    /*  * Initialize frame buffer and reference frame buffers  */    frmOpen(& seq->recoFrm, pEncPar->picWidth, pEncPar->picHeight, pEncPar->plr);  frmEncBufOpen(& seq->mbData, pEncPar->picWidth, pEncPar->picHeight);    seq->sliceGroupCycle = 0;  seq->sps.level_idc   = pEncPar->level;  switch(pEncPar->level){  case 10:    if(numMbsPerFrame>99)    {      if(numMbsPerFrame>792)      {        seq->sps.level_idc = 30;        maxCPBSize = 10000000/8;      }      else if(numMbsPerFrame>396)      {        seq->sps.level_idc = 21;        maxCPBSize = 4000000/8;      }      else      {        seq->sps.level_idc = 20;        maxCPBSize = 1000000/8;      }    }    else       maxCPBSize = 175000/8;        break;  case 11:    if(numMbsPerFrame>396)    {      if(numMbsPerFrame>792)      {        seq->sps.level_idc = 30;        maxCPBSize = 10000000/8;      }      else      {        seq->sps.level_idc = 20;        maxCPBSize = 1000000/8;      }    }    else      maxCPBSize = 500000/8;    break;  case 12:    if(numMbsPerFrame>396)    {      if(numMbsPerFrame>792)      {        seq->sps.level_idc = 30;        maxCPBSize = 10000000/8;      }      else      {        seq->sps.level_idc = 20;        maxCPBSize = 1000000/8;      }    }    else      maxCPBSize = 1000000/8;    break;  case 13:    if(numMbsPerFrame>396)    {      if(numMbsPerFrame>792)      {        seq->sps.level_idc = 30;        maxCPBSize = 10000000/8;      }      else      {        seq->sps.level_idc = 20;        maxCPBSize = 1000000/8;      }    }    else      maxCPBSize = 2000000/8;    break;  case 20:    if(numMbsPerFrame>396)    {      if(numMbsPerFrame>792)      {        seq->sps.level_idc = 30;        maxCPBSize = 10000000/8;      }      else      {        seq->sps.level_idc = 20;        maxCPBSize = 1000000/8;      }    }    else      maxCPBSize = 2000000/8;    break;  case 21:    if(numMbsPerFrame>792)    {        seq->sps.level_idc = 30;      maxCPBSize = 10000000/8;    }    else      maxCPBSize = 4000000/8;    break;  case 22:    maxCPBSize = 4000000/8;    break;  case 30:    maxCPBSize = 10000000/8;    break;  }    if(seq->encPar.brcBufSize == 0)    seq->encPar.brcBufSize = maxCPBSize;  else  {    if(seq->encPar.brcBufSize > maxCPBSize)    {      fprintf(stdout,"Buffer Size is larger than MaxCPB defined in the specified level..!!\n");      seq->encPar.brcBufSize = maxCPBSize;    }     if(seq->encPar.brcBufSize*8.0/seq->encPar.brcBitRate < 0.2 && seq->encPar.brcBitRate > 0 )    {        fprintf(stdout,"Buffer Size is too low. Increasing to 0.2 seconds..!\n");      seq->encPar.brcBufSize = (int)(seq->encPar.brcBitRate*0.2/8);    }  }  rc_init_seq(&seq->bRC, & seq->encPar);    if(seq->encPar.brcBitRate!= 0)  {        if(seq->encPar.useSEIMessages)    {      fillHRDParameters(&seq->bRC, &seq->sps.vui_parameters.vcl_hrd_parameters);      fillBufferingPeriodSEI(&seq->bRC);    }  }    // initialize dpb buffer  dpbInitialize(& seq->dpbBuf, pEncPar);    /*  * Open bitbuffer. Decide bitbuffer initial size  */    /* Initial bit buffer size is frame_width*frame_heigth/4 rounded up to nearest kilobyte */  bitBufInitialSize = 3*(pEncPar->picWidth * pEncPar->picHeight/8);    bibOpen(& seq->bitbuf, bitBufInitialSize);    /*  * Clear statistics  */  staClear(& seq->intraStat);  staClear(& seq->interStat);  staNonSliceClear(&seq->nonSliceStat);    /*  * Initialize the Parameter Set.   */    // do additional check on parameters for slice definition  psValidateSliceParams(pEncPar);    psFillParameterSetStructures(& seq->sps, & seq->pps, pEncPar);    /* If this is baseline/extended profile and level is <= 3.0, */  /* we must enable sub-macroblock rect size checking         */  if ((seq->sps.profile_idc == PS_BASELINE_PROFILE_IDC ||    seq->sps.profile_idc != PS_EXTENDED_PROFILE_IDC) &&    seq->sps.level_idc <= 30)    seq->slice.meProfile.subMbRectSizeFlag = 1;  else    seq->slice.meProfile.subMbRectSizeFlag = 0;    /* Set maximum vertical motion vector range according to level limitation */  if (seq->sps.level_idc <= 10)    seq->slice.meProfile.maxVerticalMvRange = 64;  else if (seq->sps.level_idc <= 20)    seq->slice.meProfile.maxVerticalMvRange = 128;  else if (seq->sps.level_idc <= 30)    seq->slice.meProfile.maxVerticalMvRange = 256;  else    seq->slice.meProfile.maxVerticalMvRange = 512;    // send the picture parameter set to the bitbuffer  seq->nonSliceStat.bitsSPS += psSendSeqParameterSet    (& seq->bitbuf, & seq->sps, & seq->nonSliceStat.bitsNAL);    seq->nonSliceStat.bitsPPS += psSendPicParameterSet    (& seq->bitbuf, & seq->pps, & seq->nonSliceStat.bitsNAL);      if(param->useSEIMessages)    seq->nonSliceStat.bitsSEI += sendBufferingPeriodSEIMessage(&seq->bitbuf,&seq->bRC.bufperiodSEI,&seq->sps.vui_parameters.vcl_hrd_parameters, &seq->nonSliceStat.bitsNAL);        seq->slice.mbksPerLine  = (int16) (seq->encPar.picWidth/MBK_SIZE);  seq->slice.mbksPerCol   = (int16) (seq->encPar.picHeight/MBK_SIZE);  seq->slice.picSizeInMbs = (int16) (seq->slice.mbksPerLine * seq->slice.mbksPerCol);  seq->slice.mbStateArr   = seq->mbData.mbStateArr;  seq->slice.bitbuf       = & seq->bitbuf;  seq->slice.recoBuf      = & seq->recoFrm;    mbkInit(& seq->slice.mb, seq->encPar.plr);    if (pEncPar->maxNumRefFrms > 0)  {    int yBufWidth;        // width of the reference frame, bufferfor luma component    yBufWidth = seq->dpbBuf.refFrmArr[0].yBufWidth;        calculateBufOffs(yBufWidth);      }  *nalBufSize = bibGetBuffer(&seq->bitbuf, nalBuffer);    /* Reset bit buffer to empty state. This does not delete contents of bit buffer */  bibInit(&seq->bitbuf);    return seq;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产欧美一区二区| 亚洲摸摸操操av| 国产精品人妖ts系列视频| 亚洲国产精品人人做人人爽| 狠狠色丁香九九婷婷综合五月| 成人av资源网站| 精品剧情在线观看| 天天色 色综合| 91美女在线看| 中文av一区特黄| 日韩专区一卡二卡| 欧美亚洲国产一区在线观看网站| 国产三级久久久| 国模娜娜一区二区三区| 7777精品伊人久久久大香线蕉超级流畅| 久久精品一区蜜桃臀影院| 日韩av中文字幕一区二区| 欧美网站一区二区| 亚洲精品日日夜夜| gogo大胆日本视频一区| 日本一区二区三区四区在线视频| 久久国产精品一区二区| 日韩一区二区三免费高清| 亚洲一区二区三区视频在线| 99久久伊人网影院| 中文字幕免费在线观看视频一区| 国产乱码精品1区2区3区| 欧美一区二区在线免费观看| 丝瓜av网站精品一区二区 | 日本一区二区三级电影在线观看 | 国产xxx精品视频大全| 日韩欧美美女一区二区三区| 三级久久三级久久久| 欧美日韩国产片| av高清不卡在线| 亚洲国产激情av| 高清免费成人av| 国产精品午夜春色av| 成人app网站| 综合自拍亚洲综合图不卡区| 91亚洲精品久久久蜜桃| 亚洲视频资源在线| 91在线一区二区三区| 亚洲欧美日韩久久精品| 色狠狠色噜噜噜综合网| 亚洲电影一区二区| 欧美一区二区三区系列电影| 激情综合五月婷婷| 国产丝袜在线精品| 色综合久久综合网| 亚洲欧美一区二区三区久本道91 | 国产真实乱偷精品视频免| 久久看人人爽人人| 97aⅴ精品视频一二三区| 亚洲一区二区三区美女| 91精品国产综合久久福利| 激情六月婷婷久久| 国产精品免费丝袜| 欧美性做爰猛烈叫床潮| 天堂久久一区二区三区| 久久亚洲免费视频| 色噜噜狠狠色综合中国| 另类欧美日韩国产在线| 国产精品麻豆99久久久久久| 欧美日韩性生活| 国产成人精品一区二区三区四区| 亚洲精品国产视频| 日韩一区二区三区av| 不卡的av在线播放| 日韩高清一区在线| 亚洲欧洲美洲综合色网| 日韩欧美亚洲一区二区| 99麻豆久久久国产精品免费 | 欧美一区二区三区免费| 国产福利精品导航| 亚洲123区在线观看| 国产精品欧美久久久久无广告 | 精品国产乱码久久久久久图片| 精品日本一线二线三线不卡| av电影在线观看不卡| 日韩经典中文字幕一区| 中文字幕一区二区5566日韩| 日韩一区二区在线看| 色噜噜狠狠成人网p站| 国产99久久精品| 麻豆精品国产91久久久久久| 亚洲老妇xxxxxx| 久久久久久久久久电影| 欧美一区二区在线免费播放| 欧洲一区在线电影| 成人黄色小视频在线观看| 免费高清在线一区| 亚洲成人www| 亚洲日本va午夜在线影院| 久久伊人蜜桃av一区二区| 91精品免费在线| 欧美中文一区二区三区| av在线不卡免费看| 国产精品一区二区在线观看网站 | 欧美高清视频一二三区| 色婷婷亚洲精品| 成人高清伦理免费影院在线观看| 久久精品国产精品青草| 天天做天天摸天天爽国产一区 | 97精品视频在线观看自产线路二| 激情综合网激情| 蜜桃视频在线观看一区| 男人的j进女人的j一区| 亚洲成人综合网站| 一区二区三区蜜桃网| 亚洲免费av高清| 日韩美女精品在线| 中文字幕在线播放不卡一区| 国产女人aaa级久久久级| 国产亚洲制服色| 国产精品青草综合久久久久99| 国产婷婷色一区二区三区四区| 国产调教视频一区| 国产精品国产自产拍高清av| 国产精品国产成人国产三级| 1024成人网| 一区二区理论电影在线观看| 亚洲午夜国产一区99re久久| 亚洲成人手机在线| 三级亚洲高清视频| 国产一区二区三区免费播放| 国产黄色成人av| 99久精品国产| 欧美系列日韩一区| 制服.丝袜.亚洲.中文.综合| 91精品国产乱码| 久久综合久久鬼色中文字| 中文一区二区完整视频在线观看| 国产精品家庭影院| 亚洲一区二区在线免费看| 午夜视频一区在线观看| 久久99国产精品麻豆| 粉嫩欧美一区二区三区高清影视| 91美女在线视频| 宅男在线国产精品| 国产欧美一区二区三区鸳鸯浴| 亚洲丝袜美腿综合| 日本va欧美va精品发布| 国产久卡久卡久卡久卡视频精品| caoporn国产一区二区| 欧美性xxxxxx少妇| 日韩女优电影在线观看| 国产精品久久久一本精品| 亚洲国产cao| 国产精品99久久久久久有的能看| 97久久精品人人澡人人爽| 欧美喷水一区二区| 久久精品亚洲麻豆av一区二区| 亚洲欧美激情小说另类| 日本午夜一本久久久综合| 成人av影视在线观看| 日韩一区二区三区av| 国产精品三级久久久久三级| 日韩综合一区二区| 91日韩在线专区| 精品日韩成人av| 亚洲一二三区视频在线观看| 国产一区二区成人久久免费影院 | 99久久久精品免费观看国产蜜| 欧美综合亚洲图片综合区| 精品乱码亚洲一区二区不卡| 亚洲国产视频直播| 成人的网站免费观看| 欧美一区二区三区四区久久| 亚洲丝袜制服诱惑| 国产精品18久久久久久久久| 91精品国产麻豆国产自产在线 | 欧美电影一区二区三区| 中文字幕乱码日本亚洲一区二区| 视频一区二区中文字幕| 91美女片黄在线观看91美女| 日本一区二区不卡视频| 日本中文在线一区| 欧美天天综合网| 亚洲欧美在线视频| 国产高清久久久| 日韩精品中文字幕一区| 亚洲h在线观看| 一本大道久久a久久精二百| 国产蜜臀av在线一区二区三区| 九九精品视频在线看| 欧美一区二区三区思思人 | 一区二区三区在线观看欧美| 成人h动漫精品一区二| 久久日韩粉嫩一区二区三区 | 精品久久久久久久久久久久包黑料| 亚洲一区日韩精品中文字幕| 99r国产精品| 国产精品激情偷乱一区二区∴| 国产精品综合一区二区三区| 日韩欧美国产成人一区二区| 免费成人结看片| 精品免费99久久| 精品制服美女丁香| www国产成人免费观看视频 深夜成人网|