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

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

?? qualitylevelassigner.cpp

?? JMVM MPEG MVC/3DAV 測(cè)試平臺(tái) 國(guó)際通用標(biāo)準(zhǔn)
?? CPP
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
/*
********************************************************************************

NOTE - One of the two copyright statements below may be chosen
       that applies for the software.

********************************************************************************

This software module was originally developed by

Heiko Schwarz    (Fraunhofer HHI),
Tobias Hinz      (Fraunhofer HHI),
Karsten Suehring (Fraunhofer HHI)

in the course of development of the ISO/IEC 14496-10:2005 Amd.1 (Scalable Video
Coding) for reference purposes and its performance may not have been optimized.
This software module is an implementation of one or more tools as specified by
the ISO/IEC 14496-10:2005 Amd.1 (Scalable Video Coding).

Those intending to use this software module in products are advised that its
use may infringe existing patents. ISO/IEC have no liability for use of this
software module or modifications thereof.

Assurance that the originally developed software module can be used
(1) in the ISO/IEC 14496-10:2005 Amd.1 (Scalable Video Coding) once the
ISO/IEC 14496-10:2005 Amd.1 (Scalable Video Coding) has been adopted; and
(2) to develop the ISO/IEC 14496-10:2005 Amd.1 (Scalable Video Coding): 

To the extent that Fraunhofer HHI owns patent rights that would be required to
make, use, or sell the originally developed software module or portions thereof
included in the ISO/IEC 14496-10:2005 Amd.1 (Scalable Video Coding) in a
conforming product, Fraunhofer HHI will assure the ISO/IEC that it is willing
to negotiate licenses under reasonable and non-discriminatory terms and
conditions with applicants throughout the world.

Fraunhofer HHI retains full right to modify and use the code for its own
purpose, assign or donate the code to a third party and to inhibit third
parties from using the code for products that do not conform to MPEG-related
ITU Recommendations and/or ISO/IEC International Standards. 

This copyright notice must be included in all copies or derivative works.
Copyright (c) ISO/IEC 2005. 

********************************************************************************

COPYRIGHT AND WARRANTY INFORMATION

Copyright 2005, International Telecommunications Union, Geneva

The Fraunhofer HHI hereby donate this source code to the ITU, with the following
understanding:
    1. Fraunhofer HHI retain the right to do whatever they wish with the
       contributed source code, without limit.
    2. Fraunhofer HHI retain full patent rights (if any exist) in the technical
       content of techniques and algorithms herein.
    3. The ITU shall make this code available to anyone, free of license or
       royalty fees.

DISCLAIMER OF WARRANTY

These software programs are available to the user without any license fee or
royalty on an "as is" basis. The ITU disclaims any and all warranties, whether
express, implied, or statutory, including any implied warranties of
merchantability or of fitness for a particular purpose. In no event shall the
contributor or the ITU be liable for any incidental, punitive, or consequential
damages of any kind whatsoever arising from the use of these programs.

This disclaimer of warranty extends to the user of these programs and user's
customers, employees, agents, transferees, successors, and assigns.

The ITU does not represent or warrant that the programs furnished hereunder are
free of infringement of any third-party patents. Commercial implementations of
ITU-T Recommendations, including shareware, may be subject to royalty fees to
patent holders. Information regarding the ITU-T patent policy is available from 
the ITU Web site at http://www.itu.int.

THIS IS NOT A GRANT OF PATENT RIGHTS - SEE THE ITU-T PATENT POLICY.

********************************************************************************
*/


#include "QualityLevelAssigner.h"

#include "ReadBitstreamFile.h"
#include "WriteBitstreamToFile.h"
#include "ReadYuvFile.h"
#include "WriteYuvToFile.h"
#include "QualityLevelParameter.h"
#include "H264AVCCommonLib.h"
#include "H264AVCCommonLib/CommonDefs.h"
#include <math.h>
#if WIN32
#include <io.h>
#include <windows.h>
#endif

using namespace h264;



QualityLevelAssigner::QualityLevelAssigner()
: m_pcParameter             ( 0 )
, m_pcH264AVCPacketAnalyzer ( 0 )
, m_pcH264AVCDecoder        ( 0 )
, m_pcBitCounter            ( 0 )
, m_pcBitWriteBuffer        ( 0 )
, m_pcUvlcWriter            ( 0 )
, m_pcUvlcTester            ( 0 )
, m_pcNalUnitEncoder        ( 0 )
, m_uiNumLayers             ( 0 )
, m_bOutputReconstructions  ( false ) // for debugging
{
  ::memset( m_auiNumFGSLayers, 0x00, MAX_LAYERS                   *sizeof(UInt) );
  ::memset( m_auiNumFrames,    0x00, MAX_LAYERS                   *sizeof(UInt) );
  ::memset( m_auiGOPSize,      0x00, MAX_LAYERS                   *sizeof(UInt) );
  ::memset( m_auiNumTempLevel, 0x00, MAX_LAYERS                   *sizeof(UInt) );
  ::memset( m_auiFrameWidth,   0x00, MAX_LAYERS                   *sizeof(UInt) );
  ::memset( m_auiFrameHeight,  0x00, MAX_LAYERS                   *sizeof(UInt) );
  ::memset( m_auiSPSRequired,  0x00, 32                           *sizeof(UInt) );
  ::memset( m_auiPPSRequired,  0x00, 256                          *sizeof(UInt) );
  ::memset( m_aaadDeltaDist,   0x00, MAX_LAYERS*MAX_QUALITY_LEVELS*sizeof(Void*));
  ::memset( m_aaauiPacketSize, 0x00, MAX_LAYERS*MAX_QUALITY_LEVELS*sizeof(Void*));
  ::memset( m_aaauiQualityID,  0x00, MAX_LAYERS*MAX_QUALITY_LEVELS*sizeof(Void*));
}


QualityLevelAssigner::~QualityLevelAssigner()
{
}


ErrVal
QualityLevelAssigner::create( QualityLevelAssigner*& rpcQualityLevelAssigner )
{
  rpcQualityLevelAssigner = new QualityLevelAssigner;
  ROF( rpcQualityLevelAssigner );
  return Err::m_nOK;
}


ErrVal
QualityLevelAssigner::init( QualityLevelParameter* pcParameter )
{
  ROF( pcParameter );
  m_pcParameter = pcParameter;

  //--- create objects ---
  RNOK( H264AVCPacketAnalyzer::create( m_pcH264AVCPacketAnalyzer ) );
  RNOK( CreaterH264AVCDecoder::create( m_pcH264AVCDecoder ) );
  RNOK( BitCounter           ::create( m_pcBitCounter ) );
  RNOK( BitWriteBuffer       ::create( m_pcBitWriteBuffer ) );
  RNOK( UvlcWriter           ::create( m_pcUvlcWriter ) );
  RNOK( UvlcWriter           ::create( m_pcUvlcTester ) );
  RNOK( NalUnitEncoder       ::create( m_pcNalUnitEncoder ) );

  //--- initialize encoder objects ---
  RNOK( m_pcBitWriteBuffer  ->init() );
  RNOK( m_pcBitCounter      ->init() );
  RNOK( m_pcUvlcWriter      ->init( m_pcBitWriteBuffer ) );
  RNOK( m_pcUvlcTester      ->init( m_pcBitCounter ) );
  RNOK( m_pcNalUnitEncoder  ->init( m_pcBitWriteBuffer, m_pcUvlcWriter, m_pcUvlcTester ) );

  //--- get basic stream parameters ---
  RNOK( xInitStreamParameters() );

  //--- create arrays ---
  for( UInt uiLayer = 0; uiLayer <  m_uiNumLayers;              uiLayer++ )
  for( UInt uiFGS   = 0; uiFGS   <= m_auiNumFGSLayers[uiLayer]; uiFGS  ++ )
  {
    ROF( m_auiNumFrames[uiLayer] );
    ROFS( ( m_aaadDeltaDist  [uiLayer][uiFGS] = new Double[m_auiNumFrames[uiLayer]] ) );
    ROFS( ( m_aaauiPacketSize[uiLayer][uiFGS] = new UInt  [m_auiNumFrames[uiLayer]] ) );
    ROFS( ( m_aaauiQualityID [uiLayer][uiFGS] = new UInt  [m_auiNumFrames[uiLayer]] ) );
  }

  //--- init start code ----
  m_aucStartCodeBuffer[0] = 0;
  m_aucStartCodeBuffer[1] = 0;
  m_aucStartCodeBuffer[2] = 0;
  m_aucStartCodeBuffer[3] = 1;
  m_cBinDataStartCode.reset();
  m_cBinDataStartCode.set( m_aucStartCodeBuffer, 4 );

  return Err::m_nOK;
}


ErrVal
QualityLevelAssigner::destroy()
{
  m_cBinDataStartCode.reset();

  if( m_pcH264AVCPacketAnalyzer )
  {
    RNOK( m_pcH264AVCPacketAnalyzer->destroy() );
  }
  if( m_pcH264AVCDecoder )
  {
    RNOK( m_pcH264AVCDecoder->destroy() );
  }
  if( m_pcBitCounter )
  {
    RNOK( m_pcBitCounter->uninit  () );
    RNOK( m_pcBitCounter->destroy () );
  }
  if( m_pcBitWriteBuffer )
  {
    RNOK( m_pcBitWriteBuffer->uninit  () );
    RNOK( m_pcBitWriteBuffer->destroy () );
  }
  if( m_pcUvlcTester )
  {
    RNOK( m_pcUvlcTester->uninit  () );
    RNOK( m_pcUvlcTester->destroy () );
  }
  if( m_pcUvlcWriter )
  {
    RNOK( m_pcUvlcWriter->uninit  () );
    RNOK( m_pcUvlcWriter->destroy () );
  }
  if( m_pcNalUnitEncoder )
  {
    RNOK( m_pcNalUnitEncoder->uninit  () );
    RNOK( m_pcNalUnitEncoder->destroy () )
  }


  for( UInt uiLayer = 0; uiLayer < MAX_LAYERS;          uiLayer++ )
  for( UInt uiFGS   = 0; uiFGS   < MAX_QUALITY_LEVELS;  uiFGS  ++ )
  {
    delete [] m_aaadDeltaDist   [uiLayer][uiFGS];
    delete [] m_aaauiPacketSize [uiLayer][uiFGS];
    delete [] m_aaauiQualityID  [uiLayer][uiFGS];
  }
  
  //===== delete picture buffers =====
  RNOK( xClearPicBufferLists() );

  delete this;
  return Err::m_nOK;
}


ErrVal
QualityLevelAssigner::go()
{
  //===== get rate and distortion values =====
  if( m_pcParameter->readDataFile() )
  {
    RNOK( xReadDataFile( m_pcParameter->getDataFileName() ) );
  }
  else
  {
    //JVT-S043
    Bool bMultiLayer = (m_pcParameter->getQLAssignerMode()==QLASSIGNERMODE_MLQL? true : false);
    
    RNOK( xInitRateAndDistortion(bMultiLayer) );
    
    if( m_pcParameter->writeDataFile() )
    {
      RNOK( xWriteDataFile( m_pcParameter->getDataFileName() ) );
    }
  }
  
  if( ! m_pcParameter->getOutputBitStreamName().empty() )
  {
    //===== determine quality levels =====
    if( m_pcParameter->getQLAssignerMode()==QLASSIGNERMODE_QL )
    {
        RNOK( xDetermineQualityIDs() );
    }
    //JVT-S043
    else if( m_pcParameter->getQLAssignerMode()==QLASSIGNERMODE_MLQL )
    {
       RNOK( xDetermineMultiLayerQualityIDs() );
    }
    
    
    //===== write output stream with quality levels =====
    if( m_pcParameter->writeQualityLayerSEI() )
    {
      RNOK( xWriteQualityLayerStreamSEI() );
    }
    else
    {
      RNOK( xWriteQualityLayerStreamPID() );
    }
  }

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


ErrVal
QualityLevelAssigner::xGetNewPicBuffer( PicBuffer*& rpcPicBuffer,
                                        UInt        uiSize )
{
  if( m_cUnusedPicBufferList.empty() )
  {
    rpcPicBuffer = new PicBuffer( new UChar[ uiSize ] );
  }
  else
  {
    rpcPicBuffer = m_cUnusedPicBufferList.popFront();
  }

  m_cActivePicBufferList.push_back( rpcPicBuffer );
  return Err::m_nOK;
}


ErrVal
QualityLevelAssigner::xRemovePicBuffer( PicBufferList& rcPicBufferUnusedList )
{
  while( ! rcPicBufferUnusedList.empty() )
  {
    PicBuffer* pcBuffer = rcPicBufferUnusedList.popFront();

    if( NULL != pcBuffer )
    {
      PicBufferList::iterator  begin = m_cActivePicBufferList.begin();
      PicBufferList::iterator  end   = m_cActivePicBufferList.end  ();
      PicBufferList::iterator  iter  = std::find( begin, end, pcBuffer );

      ROT( iter == end ); // there is something wrong if the address is not in the active list

      AOT( pcBuffer->isUsed() )
      m_cUnusedPicBufferList.push_back( pcBuffer );
      m_cActivePicBufferList.erase    (  iter );
    }
  }
  return Err::m_nOK;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91美女片黄在线| 99久久精品费精品国产一区二区| 国产精品无圣光一区二区| 欧美日韩国产小视频在线观看| 国产精品综合av一区二区国产馆| 亚洲最新视频在线观看| 亚洲国产精品99久久久久久久久 | 国产精品99久| 青青青爽久久午夜综合久久午夜 | 国产精品视频免费看| 欧美一级国产精品| 欧美日韩国产免费一区二区| av一区二区三区四区| 国产精品一卡二| 狠狠狠色丁香婷婷综合激情| 午夜影院久久久| 一区二区高清免费观看影视大全| 久久久久久亚洲综合| 欧美电影免费观看高清完整版在线| 日本精品一级二级| 99视频在线观看一区三区| 国产精品123| 国产乱码精品一区二区三区忘忧草 | 精品99999| 欧美一级午夜免费电影| 欧美日韩小视频| 欧美日韩精品一区二区三区 | 久久久夜色精品亚洲| 日韩免费观看2025年上映的电影| 欧美二区在线观看| 欧美精品v日韩精品v韩国精品v| 色乱码一区二区三区88 | 久久免费看少妇高潮| 日韩欧美一区中文| 欧美电影免费观看高清完整版在线 | 亚洲黄色小说网站| 亚洲精品久久久蜜桃| 中文字幕一区av| 亚洲码国产岛国毛片在线| 中文字幕永久在线不卡| 亚洲天堂久久久久久久| 亚洲精品国久久99热| 亚洲精品写真福利| 亚洲v中文字幕| 琪琪久久久久日韩精品| 麻豆精品一二三| 国产精品亚洲第一区在线暖暖韩国| 国产在线精品一区二区| 国产成人精品一区二| 成人午夜在线播放| 色婷婷av一区二区| 欧美日韩色一区| 日韩一区二区三区高清免费看看| 日韩午夜在线影院| 26uuu成人网一区二区三区| 国产午夜精品美女毛片视频| 国产精品每日更新| 日韩美女视频一区二区| 亚洲一区影音先锋| 日韩精品1区2区3区| 久久精品久久99精品久久| 国产精品一区二区久激情瑜伽| 国产1区2区3区精品美女| 91麻豆国产福利在线观看| 欧美日韩一区视频| 亚洲精品一区二区在线观看| 国产精品视频免费| 亚洲国产sm捆绑调教视频| 加勒比av一区二区| 成人aa视频在线观看| 欧美三级电影网站| 精品毛片乱码1区2区3区| 国产精品国产精品国产专区不蜜 | 欧美日韩在线综合| 欧美www视频| |精品福利一区二区三区| 日韩成人精品在线观看| 国产jizzjizz一区二区| 色综合一个色综合| 欧美一区二区精品久久911| 国产日韩欧美电影| 午夜精品在线视频一区| 国内精品写真在线观看| 日本精品裸体写真集在线观看| 日韩一级黄色片| 中文字幕在线视频一区| 美女精品自拍一二三四| 91色porny在线视频| 日韩一级片在线播放| 一区二区三区四区视频精品免费| 日韩成人伦理电影在线观看| 91日韩精品一区| 2023国产精华国产精品| 亚洲午夜在线观看视频在线| 粉嫩绯色av一区二区在线观看| 91精品国产入口在线| 中文字幕一区二区三区不卡在线 | 久久99热国产| 一道本成人在线| 国产三级三级三级精品8ⅰ区| 亚洲成av人片一区二区三区| 成人天堂资源www在线| 日韩美女视频一区二区在线观看| 亚洲免费毛片网站| 国产成人自拍网| 日韩一本二本av| 亚洲第一电影网| 91豆麻精品91久久久久久| 中文字幕欧美区| 国产精品69久久久久水密桃| 欧美一区二区三区小说| 伊人开心综合网| 99久久精品国产网站| 日韩色在线观看| 日韩中文字幕91| 99久久精品国产精品久久| 欧美国产一区在线| 国产精品中文字幕一区二区三区| 欧美一区二区在线免费观看| 亚洲精品视频免费观看| eeuss鲁一区二区三区| 久久综合99re88久久爱| 久久精品国产精品青草| 日韩美女一区二区三区四区| 午夜av一区二区三区| 欧美日韩视频一区二区| 亚洲成人激情综合网| 在线免费观看一区| 樱花草国产18久久久久| 99精品国产99久久久久久白柏| 国产三级精品视频| 国产麻豆9l精品三级站| 欧美xfplay| 国产伦精品一区二区三区免费迷| 精品久久人人做人人爱| 玖玖九九国产精品| 欧美videos大乳护士334| 日韩和的一区二区| 欧美视频在线观看一区| 午夜精品久久久久久久久 | 国产欧美日韩在线| 粉嫩13p一区二区三区| 国产欧美综合在线| av一区二区三区四区| 亚洲色图视频网站| 欧美午夜精品一区二区三区| 亚洲在线免费播放| 日韩一级完整毛片| 国产伦精品一区二区三区在线观看| 久久麻豆一区二区| 成人av在线看| 亚洲午夜视频在线| 欧美一级视频精品观看| 国产尤物一区二区在线| 国产欧美日韩久久| 7777精品伊人久久久大香线蕉 | 极品瑜伽女神91| 国产欧美日韩在线观看| 91麻豆自制传媒国产之光| 亚洲欧美日韩久久| 欧美男生操女生| 美国一区二区三区在线播放| 中文av一区二区| 欧美三级资源在线| 极品少妇xxxx精品少妇| 国产精品乱码一区二三区小蝌蚪| 日本高清成人免费播放| 久久成人久久鬼色| 国产精品乱码一区二三区小蝌蚪| 欧美性感一类影片在线播放| 久久97超碰色| 亚洲精品ww久久久久久p站 | 亚洲人精品一区| 欧美一级日韩免费不卡| 成人看片黄a免费看在线| 亚洲国产精品人人做人人爽| 久久婷婷色综合| 91黄色免费版| 国产精品亚洲视频| 亚洲成人激情社区| 国产午夜精品一区二区| 欧美日韩一区二区欧美激情| 国产精品影视天天线| 亚洲国产一区二区三区青草影视| 久久这里只精品最新地址| 日本韩国精品在线| 国产成人精品影院| 三级亚洲高清视频| 亚洲欧美激情小说另类| 欧美mv日韩mv亚洲| 欧美在线免费视屏| 国产不卡视频在线播放| 亚洲成a人片在线不卡一二三区 | 92国产精品观看| 狠狠色综合日日| 五月天婷婷综合| 亚洲桃色在线一区| 国产丝袜欧美中文另类| 91麻豆精品国产自产在线观看一区 | 久久精品视频免费观看|