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

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

?? qualitylevelassigner.cpp

?? JMVM MPEG MVC/3DAV 測試平臺 國際通用標準
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
      }
    }
 
    //----- delete auxiliary array -----
    delete [] puiPic2FNum;
  }
  printf("\n");

  
  //----- delete temporarily distortion arrays -----
  for( uiLayer  = 0;  uiLayer   <  m_uiNumLayers;              uiLayer  ++ )
  for( uiFGS    = 0;  uiFGS     <= m_auiNumFGSLayers[uiLayer]; uiFGS    ++ )
  for( uiTLevel = 0;  uiTLevel  <= m_auiNumTempLevel[uiLayer]; uiTLevel ++ )
  {
    delete [] aaaauiDistortionDep[uiLayer][uiFGS][uiTLevel];
    delete [] aaaauiDistortionInd[uiLayer][uiFGS][uiTLevel];
  }

  return Err::m_nOK;
}



ErrVal
QualityLevelAssigner::xInitRateValues()
{
  printf( "determine packet sizes ..." );

  Int64             i64StartPos   = 0;
  BinData*          pcBinData     = 0;
  SEI::SEIMessage*  pcScalableSEI = 0;
  PacketDescription cPacketDescription;
  UInt              auiFrameNum[MAX_LAYERS] = { MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX };

  //===== init =====
  RNOK( m_pcH264AVCPacketAnalyzer->init() );
  ReadBitstreamFile* pcReadBitStream = 0;
  RNOK( ReadBitstreamFile::create( pcReadBitStream ) );
  RNOK( pcReadBitStream->init( m_pcParameter->getInputBitStreamName() ) );


  //===== init values ======
  for( UInt uiLayer = 0; uiLayer <  m_uiNumLayers;               uiLayer ++ )
  for( UInt uiFGS   = 0; uiFGS   <= m_auiNumFGSLayers[uiLayer];  uiFGS   ++ )
  for( UInt uiFrame = 0; uiFrame <  m_auiNumFrames   [uiLayer];  uiFrame ++ )
  {
    m_aaauiPacketSize[uiLayer][uiFGS][uiFrame] = 0;
  }

  //===== loop over packets =====
  while( true )
  {
    //----- read packet -----
    Bool bEOS = false;
    RNOK( pcReadBitStream->extractPacket( pcBinData, bEOS ) );
    if( bEOS )
    {
      //manu.mathew@samsung : memory leak fix
      RNOK( pcReadBitStream->releasePacket( pcBinData ) );
      pcBinData = NULL;
      //--	  
      break;
    }

    //----- get packet description -----
    RNOK( m_pcH264AVCPacketAnalyzer->process( pcBinData, cPacketDescription, pcScalableSEI ) );
    delete pcScalableSEI; pcScalableSEI = 0;

    //----- get packet size -----
    Int64 i64EndPos     = pcReadBitStream->getFilePos();
    UInt  uiPacketSize  = (UInt)( i64EndPos - i64StartPos );
    i64StartPos         = i64EndPos;

    //----- analyse packets -----
    if( ! cPacketDescription.ParameterSet && cPacketDescription.NalUnitType != NAL_UNIT_SEI )
    {
      if( cPacketDescription.FGSLayer == 0 )
      {
        auiFrameNum[cPacketDescription.Layer]++;
      }
      m_aaauiPacketSize[cPacketDescription.Layer][cPacketDescription.FGSLayer][auiFrameNum[cPacketDescription.Layer]] += uiPacketSize;
    }

    //----- delete bin data -----
    RNOK( pcReadBitStream->releasePacket( pcBinData ) );
  }

  
  //===== uninit =====
  RNOK( m_pcH264AVCPacketAnalyzer->uninit() );
  RNOK( pcReadBitStream->uninit() );
  RNOK( pcReadBitStream->destroy() );

  printf("\n");
  return Err::m_nOK;
}



ErrVal
QualityLevelAssigner::xGetNextValidPacket( BinData*&          rpcBinData,
                                           ReadBitstreamFile* pcReadBitStream,
                                           UInt               uiTopLayer,
                                           UInt               uiLayer,
                                           UInt               uiFGSLayer,
                                           UInt               uiLevel,
                                           Bool               bIndependent,
                                           Bool&              rbEOS,
                                           UInt*              auiFrameNum )
{
  Bool              bValid        = false;
  SEI::SEIMessage*  pcScalableSEI = 0;
  PacketDescription cPacketDescription;

  while( !bValid )
  {
    //===== get next packet =====
    RNOK( pcReadBitStream->extractPacket( rpcBinData, rbEOS ) );
    if( rbEOS )
    {
      break;
    }

    //===== analyze packet =====
    RNOK( m_pcH264AVCPacketAnalyzer->process( rpcBinData, cPacketDescription, pcScalableSEI ) );
    delete pcScalableSEI; pcScalableSEI = 0;


    //===== check whether packet is required =====
    if( cPacketDescription.NalUnitType == NAL_UNIT_SEI )
    {
      bValid      = true;
    }
    else if( cPacketDescription.NalUnitType == NAL_UNIT_SPS )
    {
      bValid      = false;
      for( UInt ui = 0; ui <= uiTopLayer; ui++ )
      {
        if( m_auiSPSRequired[cPacketDescription.SPSid] & (1<<ui) )
        {
          bValid  = true;
          break;
        }
      }
    }
    else if( cPacketDescription.NalUnitType == NAL_UNIT_PPS )
    {
      bValid      = false;
      for( UInt ui = 0; ui <= uiTopLayer; ui++ )
      {
        if( m_auiPPSRequired[cPacketDescription.PPSid] & (1<<ui) )
        {
          bValid  = true;
          break;
        }
      }
    }
    else // slice data
    {
      //===== update frame num =====
      if( ! cPacketDescription.FGSLayer )
      {
        auiFrameNum[cPacketDescription.Layer]++;
      }

      //===== check temporal level =====
      {
        UInt uiTL                 = 0;
        UInt uiFN                 = auiFrameNum[cPacketDescription.Layer];
        UInt uiNumFramesComplete  = ( ( m_auiNumFrames[cPacketDescription.Layer] - 1 ) / m_auiGOPSize[cPacketDescription.Layer] ) * m_auiGOPSize[cPacketDescription.Layer] + 1;
        UInt uiRemainingFrames    = m_auiNumFrames[cPacketDescription.Layer] - uiNumFramesComplete;
        UInt uiFNMod              = ( uiFN - 1 ) % m_auiGOPSize[cPacketDescription.Layer];
        if( uiFN )
        {
          if( uiFN < uiNumFramesComplete )
          {
            for( ; uiFNMod > 0; uiFNMod >>= 1, uiTL++ );
          }
          else
          {
            UInt auiTLevel[128];
            UInt uiEntry = 0;
            ::memset( auiTLevel, 0xFF, 128*sizeof(UInt) );
            for( UInt   uiTempLevel = 0;      uiTempLevel <= m_auiNumTempLevel[cPacketDescription.Layer]; uiTempLevel++ )
            {
              UInt      uiStep      = ( 1 << ( m_auiNumTempLevel[cPacketDescription.Layer] - uiTempLevel ) );
              for( UInt uiPos       = uiStep; uiPos      <= m_auiGOPSize[cPacketDescription.Layer];      uiPos += (uiStep<<1) )
              {
                if( uiPos - 1 < uiRemainingFrames )
                {
                  auiTLevel[uiEntry++] = uiTempLevel;
                }
              }
            }
            uiTL = auiTLevel[uiFNMod];
            ROT( uiTL == MSYS_UINT_MAX );
          }
        }
        ROT( cPacketDescription.Scalable && cPacketDescription.Level != uiTL );
        cPacketDescription.Level = uiTL;
      }

      //===== get valid status =====
      //JVT-S043
      //For cPacketDescription.Layer > uiLayer,  only Base Quality Level(Discrete layer) is selected!
      //For cPacketDescription.Layer <= uiLayer, the algorithm selects the required FGS layers and Temporal Levels.  
      //--
      if( bIndependent )
      {
        bValid      = ( cPacketDescription.Layer    <= uiLayer
                      //JVT-S043
                      || ( cPacketDescription.Layer  <= uiTopLayer && cPacketDescription.FGSLayer == 0 )
                      );
        if( cPacketDescription.Layer == uiLayer )
        {
          bValid    = ( cPacketDescription.Level    == uiLevel &&
                        cPacketDescription.FGSLayer <= uiFGSLayer ) || ( cPacketDescription.FGSLayer == 0 );
        }
      }
      else
      {
        bValid      = ( cPacketDescription.Layer <= uiLayer 
                      //JVT-S043
                      || ( cPacketDescription.Layer  <= uiTopLayer && cPacketDescription.FGSLayer == 0 )          
                      );
        if( cPacketDescription.Layer == uiLayer )
        {
          bValid    = ( cPacketDescription.FGSLayer <= uiFGSLayer );
          if( cPacketDescription.FGSLayer == uiFGSLayer )
          {
            bValid  = ( cPacketDescription.Level <= uiLevel );
          }
        }
      }

    }

    if( !bValid )
    {
      RNOK( pcReadBitStream->releasePacket( rpcBinData ) );
    }
  }

  return Err::m_nOK;
}

ErrVal
QualityLevelAssigner::xGetDistortion( UInt&         ruiDistortion,
                                      const UChar*  pucReconstruction,
                                      const UChar*  pucReference,
                                      UInt          uiHeight,
                                      UInt          uiWidth,
                                      UInt          uiStride )
{
  ruiDistortion = 0;
  for( UInt y = 0; y < uiHeight; y++ )
  {
    for( UInt x = 0; x < uiWidth; x++ )
    {
      Int iDiff      = ( pucReconstruction[x] - pucReference[x] );
      ruiDistortion += (UInt)( iDiff * iDiff );
    }
    pucReconstruction += uiStride;
    pucReference      += uiStride;
  }
  return Err::m_nOK;
}





ErrVal
QualityLevelAssigner::xInitDistortion( UInt*  auiDistortion,
                                       UInt   uiTopLayer, 
                                       UInt   uiLayer,
                                       UInt   uiFGSLayer,
                                       UInt   uiLevel,
                                       Bool   bIndependent )
{
  ROT( m_pcParameter->getOriginalFileName( uiTopLayer ).empty() );

  if( uiLevel == MSYS_UINT_MAX )
    printf( "determine distortion (layer %d - FGS %d - base layer  ) ...", uiLayer, uiFGSLayer );
  else
    printf( "determine distortion (layer %d - FGS %d - lev%2d - %s ) ...", uiLayer, uiFGSLayer, uiLevel, bIndependent?"ind":"dep" );

#if WIN32
  Char              tmp_file_name[]   = "decout.tmp";
#endif
  Bool              bEOS              = false;
  Bool              bToDecode         = false;
  UInt              uiFrame           = 0;
  UInt              uiNalUnitType     = 0;
  UInt              uiMbX             = 0;
  UInt              uiMbY             = 0;
  UInt              uiSize            = 0;

//  UInt              uiNonRequiredPic  = 0;  //NonRequired JVT-Q066

  UInt              uiLumOffset       = 0;
  UInt              uiCbOffset        = 0;
  UInt              uiCrOffset        = 0;
  Bool              bYuvDimSet        = false;
  PicBuffer*        pcPicBuffer       = 0;
  PicBuffer*        pcPicBufferOrig   = 0;
  WriteYuvIf*       pcWriteYuv        = 0;
  PicBufferList     cPicBufferOutputList;
  PicBufferList     cPicBufferUnusedList;
  PicBufferList     cPicBufferReleaseList;
  UInt              auiFrameNumAnalysis[MAX_LAYERS] = { MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX };
  UInt              auiFrameNumDecoding[MAX_LAYERS] = { MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX, MSYS_UINT_MAX };

  //===== init =====
  RNOK( m_pcH264AVCPacketAnalyzer->init() );
  RNOK( m_pcH264AVCDecoder       ->init(true,NULL) );

  ReadBitstreamFile*  pcReadBitStream = 0;
  ReadYuvFile*        pcReadYuv       = 0;
  RNOK( ReadBitstreamFile ::create( pcReadBitStream ) );
  RNOK( ReadYuvFile       ::create( pcReadYuv       ) );
  RNOK( pcReadBitStream ->init( m_pcParameter->getInputBitStreamName() ) );
  RNOK( pcReadYuv       ->init( m_pcParameter->getOriginalFileName  ( uiTopLayer ), m_auiFrameHeight[uiTopLayer], m_auiFrameWidth[uiTopLayer] ) );

  if( m_bOutputReconstructions )
  {
    Char  acName[1024];
    sprintf( acName, "rec_Layer%d_FGS%d_Level%d_Mode%d", uiLayer, uiFGSLayer, uiLevel, (bIndependent?0:1) );
    RNOK( WriteYuvToFile::create( pcWriteYuv, std::string( acName ) ) );
  }


  //===== loop over packets =====
  while( ! bEOS )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费一区二区三区在线观看 | 性做久久久久久免费观看欧美| 久久色.com| 日韩精品一区二区在线| 日韩一区二区三区视频在线| 欧美日韩国产一级二级| 欧美裸体一区二区三区| 欧美日韩在线电影| 欧美日韩美女一区二区| 欧美精品久久天天躁| 欧美日韩精品一区视频| 欧美日韩国产在线观看| 91精品国产91热久久久做人人| 欧美精品成人一区二区三区四区| 欧美亚洲综合在线| 91精品国产综合久久福利| 欧美一卡在线观看| 久久这里只有精品视频网| 国产日韩欧美综合在线| 国产精品久久精品日日| 尤物在线观看一区| 亚洲第一狼人社区| 麻豆91精品91久久久的内涵| 久久精品国产77777蜜臀| 国产乱码精品1区2区3区| 成人一级视频在线观看| 色成年激情久久综合| 欧美人与性动xxxx| 精品国产sm最大网站免费看| 欧美激情一区二区三区不卡| 最新热久久免费视频| 亚洲国产乱码最新视频| 六月丁香婷婷色狠狠久久| 国产精品亚洲第一区在线暖暖韩国| 国产传媒一区在线| 一本色道**综合亚洲精品蜜桃冫| 欧美午夜精品久久久| 欧美草草影院在线视频| 亚洲国产精品二十页| 亚洲一级电影视频| 另类小说图片综合网| 粉嫩aⅴ一区二区三区四区五区 | 91精选在线观看| 国产午夜精品福利| 亚洲成人7777| 国产凹凸在线观看一区二区| 欧洲另类一二三四区| 久久综合久久鬼色| 一区二区三区久久| 国产一区二区主播在线| 一本久久精品一区二区| 精品毛片乱码1区2区3区| 亚洲欧洲国产日本综合| 美女久久久精品| 日本乱人伦aⅴ精品| 久久无码av三级| 一区二区欧美国产| 国产.精品.日韩.另类.中文.在线.播放| 色天使色偷偷av一区二区 | 麻豆成人久久精品二区三区小说| 99久久99久久综合| 精品剧情v国产在线观看在线| 1000精品久久久久久久久| 精品在线免费观看| 欧美日韩高清一区二区不卡 | 国产一区久久久| 欧美日韩国产精品自在自线| 国产精品天美传媒沈樵| 麻豆精品久久久| 欧美亚洲动漫精品| 国产精品午夜春色av| 麻豆国产91在线播放| 欧美日韩aaaaa| 亚洲欧美激情视频在线观看一区二区三区| 麻豆成人免费电影| 在线播放欧美女士性生活| 亚洲裸体在线观看| 成人免费的视频| 精品国产91久久久久久久妲己| 亚洲第一av色| 国产精品网站一区| 日本精品一区二区三区四区的功能| 国产精品午夜电影| 老司机精品视频导航| 欧美日韩国产首页| 一区二区三区在线播| av在线播放一区二区三区| 26uuu亚洲综合色| 五月天久久比比资源色| 日本韩国一区二区三区视频| 久久婷婷国产综合国色天香| 秋霞电影一区二区| 欧美片在线播放| 亚洲一区视频在线| 91蜜桃在线免费视频| 中文字幕永久在线不卡| 不卡高清视频专区| 国产精品久久久久久亚洲伦| 波多野结衣91| 国产精品久久久久久久蜜臀| 成人午夜在线免费| 国产精品青草综合久久久久99| 高清日韩电视剧大全免费| 国产色婷婷亚洲99精品小说| 国产成人aaa| 国产精品美女久久久久久久久久久 | 国产亚洲成av人在线观看导航| 美洲天堂一区二卡三卡四卡视频 | 久久精品亚洲国产奇米99| 韩国v欧美v日本v亚洲v| 久久久久青草大香线综合精品| 国产美女娇喘av呻吟久久| 国产日韩欧美在线一区| 国产99精品国产| 国产精品福利一区二区三区| 99v久久综合狠狠综合久久| 《视频一区视频二区| 欧洲av在线精品| 青娱乐精品视频在线| 3d动漫精品啪啪一区二区竹菊| 男女视频一区二区| 欧美精品一区二区三区一线天视频| 国产又黄又大久久| 国产精品久久一卡二卡| 在线免费观看一区| 日日欢夜夜爽一区| 2020国产精品久久精品美国| 大陆成人av片| 亚洲黄色在线视频| 91精品国产一区二区三区蜜臀| 精品影院一区二区久久久| 国产蜜臀97一区二区三区| 色婷婷综合视频在线观看| 亚洲电影在线播放| 精品捆绑美女sm三区| gogo大胆日本视频一区| 亚洲一区二区欧美激情| 精品少妇一区二区三区在线视频| 处破女av一区二区| 亚洲一二三区在线观看| 日韩欧美中文一区二区| 成人综合在线观看| 婷婷综合五月天| 国产日韩欧美麻豆| 在线观看精品一区| 精品一区二区三区免费| 专区另类欧美日韩| 欧美一二三在线| av中文字幕一区| 麻豆一区二区三| 久久99热这里只有精品| 波波电影院一区二区三区| 久久综合久色欧美综合狠狠| 欧美日韩成人高清| 久久综合网色—综合色88| 99这里只有久久精品视频| 亚洲国产精品尤物yw在线观看| 日韩欧美中文一区二区| 成人精品在线视频观看| 亚洲狠狠爱一区二区三区| www久久久久| 欧美三级视频在线| 国产激情一区二区三区桃花岛亚洲| 洋洋av久久久久久久一区| 国产亚洲欧美日韩日本| 欧美一区二区三区在线电影| 成人免费视频app| 一区精品在线播放| 日韩精品一区二区三区蜜臀 | 欧洲视频一区二区| 国产成a人亚洲| 免费观看一级欧美片| 亚洲视频一区二区免费在线观看| 日韩视频永久免费| 日本大香伊一区二区三区| 国产成人综合在线| 日本成人在线视频网站| 亚洲精品国产精华液| 久久久久青草大香线综合精品| 欧美日韩黄色一区二区| av高清久久久| 日韩欧美一区电影| 热久久久久久久| 亚洲欧美综合另类在线卡通| 欧美日韩一区视频| av一区二区三区在线| 国产乱人伦精品一区二区在线观看 | 亚洲h动漫在线| 成人免费一区二区三区视频 | 亚洲国产经典视频| 日韩欧美aaaaaa| 欧美丰满高潮xxxx喷水动漫| 色乱码一区二区三区88| 成人av网在线| 高清免费成人av| 国产精品1区2区3区在线观看| 日韩精品乱码av一区二区| 亚洲国产中文字幕| 亚洲在线一区二区三区| 一区二区视频在线|