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

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

?? qualitylevelassigner.cpp

?? JMVM MPEG MVC/3DAV 測試平臺 國際通用標準
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
  {
    Int             iPos;
    Bool            bFinishChecking;
    BinData*        pcBinData;
    BinDataAccessor cBinDataAccessor;

    //----- analyse access unit -----
    RNOK( pcReadBitStream->getPosition( iPos ) );
    do
    {
      RNOK( xGetNextValidPacket( pcBinData, pcReadBitStream, uiTopLayer, uiLayer, uiFGSLayer, uiLevel, bIndependent, bEOS, auiFrameNumAnalysis ) );
      pcBinData->setMemAccessor( cBinDataAccessor );

      bFinishChecking = false;
      if( m_pcH264AVCDecoder->getNumOfNALInAU() == 0 )
      {
        m_pcH264AVCDecoder->setDependencyInitialized( false );
        m_pcH264AVCDecoder->initNumberOfFragment    ();
      }
      RNOK( m_pcH264AVCDecoder->checkSliceLayerDependency( &cBinDataAccessor, bFinishChecking ) );
      RNOK( pcReadBitStream->releasePacket( pcBinData ) );

    } while( !bFinishChecking );


#define MAX_FRAGMENTS 10 // see H264AVCDecoderTest::go()

    Bool            bFragmented       = false;
    Bool            bDiscardable      = false;
    Bool            bStart            = false;
    Bool            bFirst            = true;
    Bool            bConcatenated     = false;
    UInt            uiTotalLength     = 0;
    UInt            uiFragmentNumber  = 0;
    BinData*        apcBinDataTmp       [MAX_FRAGMENTS];
    BinDataAccessor acBinDataAccessorTmp[MAX_FRAGMENTS];
    UInt            auiStartPos         [MAX_FRAGMENTS];
    UInt            auiEndPos           [MAX_FRAGMENTS];

    for( pcBinData = 0, bEOS = false; !bStart && !bEOS; )
    {
      if( bFirst )
      {
        RNOK( pcReadBitStream->setPosition( iPos ) );
        bFirst = false;
      }
      RNOK( xGetNextValidPacket( apcBinDataTmp[uiFragmentNumber], pcReadBitStream, uiTopLayer, uiLayer, uiFGSLayer, uiLevel, bIndependent, bEOS, auiFrameNumDecoding ) );
      ::memcpy( auiFrameNumAnalysis, auiFrameNumDecoding, MAX_LAYERS*sizeof(UInt) );
      apcBinDataTmp[uiFragmentNumber]->setMemAccessor( acBinDataAccessorTmp[uiFragmentNumber] );

      RNOK( m_pcH264AVCDecoder->initPacket( &acBinDataAccessorTmp[uiFragmentNumber],
                                            uiNalUnitType, uiMbX, uiMbY, uiSize, 
											//uiNonRequiredPic,  //NonRequired JVT-Q066
											true, false, //FRAG_FIX_3
                                            bStart, auiStartPos[uiFragmentNumber], auiEndPos[uiFragmentNumber],
                                            bFragmented, bDiscardable ) );

//NonRequired JVT-Q066
	  /*
	  if( uiNonRequiredPic )
	  {
		  continue;
	  }
*/
//NonRequired JVT-Q066

      uiTotalLength += ( auiEndPos[uiFragmentNumber] - auiStartPos[uiFragmentNumber] );

      if( !bStart )
      {
        uiFragmentNumber++;
      }
      else
      {
        if( apcBinDataTmp[0]->size() != 0 )
        {
          pcBinData = new BinData();
          pcBinData->set( new UChar[uiTotalLength], uiTotalLength );
          UInt uiOffset = 0;
          for( UInt uiFragment = 0; uiFragment <= uiFragmentNumber; uiFragment++ )
          {
            ::memcpy  ( pcBinData->data()+uiOffset,
                        apcBinDataTmp[uiFragment]->data() + auiStartPos[uiFragment],
                        auiEndPos[uiFragment] - auiStartPos[uiFragment] );
            uiOffset += auiEndPos[uiFragment] - auiStartPos[uiFragment];

            RNOK( pcReadBitStream->releasePacket( apcBinDataTmp[uiFragment] ) );
            apcBinDataTmp[uiFragment] = 0;
            if(uiNalUnitType != 6) //JVT-T054
            m_pcH264AVCDecoder->decreaseNumOfNALInAU();

            if( uiFragment > 0 )
            {
              bConcatenated = true;
            }
          }

          pcBinData->setMemAccessor( cBinDataAccessor );
          bToDecode = false;
          if( ( uiTotalLength != 0 ) && ( !bDiscardable || bFragmented ) )
          {
            if( ( uiNalUnitType == 20 ) || ( uiNalUnitType == 21 ) || ( uiNalUnitType == 1 ) || ( uiNalUnitType == 5 ) )
            {

              RNOK( m_pcH264AVCDecoder->initPacket( &cBinDataAccessor, uiNalUnitType,
                                                    uiMbX, uiMbY, uiSize, 
													//uiNonRequiredPic, //NonRequired JVT-Q066
                                                    false, bConcatenated, bStart,
                                                    auiStartPos[uiFragmentNumber+1], auiEndPos[uiFragmentNumber+1],
                                                    bFragmented, bDiscardable ) );
            }
            else
            {
              RNOK( m_pcH264AVCDecoder->initPacket( &cBinDataAccessor ) );
            }
            bToDecode = true;
          }
        }
       //manu.mathew@samsung : memory leak fix
        else
        {
            RNOK( pcReadBitStream->releasePacket( apcBinDataTmp[0] ) );
          apcBinDataTmp[0] = NULL;
        }
       //--
      }
    }
//NonRequired JVT-Q066{
	if(m_pcH264AVCDecoder->isNonRequiredPic())
		continue;
//NonRequired JVT-Q066}

    if( bToDecode )
    {
      //----- get pic buffer -----
      pcPicBuffer = 0;
      if( uiNalUnitType == 1 || uiNalUnitType == 5 || uiNalUnitType == 20 || uiNalUnitType == 21 )
      {
        RNOK( xGetNewPicBuffer( pcPicBuffer, uiSize ) );
        if( !bYuvDimSet )
        {
          RNOK( xGetNewPicBuffer( pcPicBufferOrig, uiSize ) );
          UInt uiLumSize  = ((uiMbX<<3)+  YUV_X_MARGIN) * ((uiMbY<<3)    + YUV_Y_MARGIN ) * 4;
          uiLumOffset     = ((uiMbX<<4)+2*YUV_X_MARGIN) * YUV_Y_MARGIN   + YUV_X_MARGIN;
          uiCbOffset      = ((uiMbX<<3)+  YUV_X_MARGIN) * YUV_Y_MARGIN/2 + YUV_X_MARGIN/2 +   uiLumSize;
          uiCrOffset      = ((uiMbX<<3)+  YUV_X_MARGIN) * YUV_Y_MARGIN/2 + YUV_X_MARGIN/2 + 5*uiLumSize/4;
          bYuvDimSet      = true;
        }
      }

      //----- decode packet -----
      {
        //----- re-direct stdout -----
#if WIN32 // for linux, this have to be slightly re-formulated
        Int   orig_stdout     = _dup(1);
        FILE* stdout_copy     = freopen( tmp_file_name, "wt", stdout );
#endif
        //----- decode -----
        RNOK( m_pcH264AVCDecoder->process( pcPicBuffer,
                                           cPicBufferOutputList,
                                           cPicBufferUnusedList,
                                           cPicBufferReleaseList ) );
        //---- restore stdout -----
#if WIN32 // for linux, this have to be slightly re-formulated
        fclose( stdout );
        _dup2( orig_stdout, 1 );
        _iob[1] = *fdopen( 1, "wt" );
        fclose(  fdopen( orig_stdout, "w" ) );
#endif
      }

      //----- determine distortion (and output for debugging) -----
      while( ! cPicBufferOutputList.empty() )
      {
        PicBuffer* pcPicBufferTmp = cPicBufferOutputList.front();
        cPicBufferOutputList.pop_front();
        if( pcPicBufferTmp )
        {
          //----- output (for debugging) -----
          if( pcWriteYuv )
          {
            RNOK( pcWriteYuv->writeFrame( *pcPicBufferTmp + uiLumOffset,
                                          *pcPicBufferTmp + uiCbOffset,
                                          *pcPicBufferTmp + uiCrOffset,
                                           uiMbY << 4,
                                           uiMbX << 4,
                                          (uiMbX << 4) + YUV_X_MARGIN*2 ) );
          }

          //----- read in reference picture ------
          RNOK( pcReadYuv->readFrame    ( *pcPicBufferOrig + uiLumOffset,
                                          *pcPicBufferOrig + uiCbOffset,
                                          *pcPicBufferOrig + uiCrOffset,
                                           uiMbY << 4,
                                           uiMbX << 4,
                                          (uiMbX << 4) + YUV_X_MARGIN*2 ) );

          //----- get distortion -----
          RNOK( xGetDistortion          (  auiDistortion[uiFrame],
                                          *pcPicBufferTmp  + uiLumOffset,
                                          *pcPicBufferOrig + uiLumOffset,
                                           uiMbY << 4,
                                           uiMbX << 4,
                                          (uiMbX << 4) + YUV_X_MARGIN*2 ) );

          //----- increment output picture number -----
          uiFrame++;
          if( uiLevel == MSYS_UINT_MAX )
            printf( "\rdetermine distortion (layer %d - FGS %d - base layer  ) --> frame %d completed", uiLayer, uiFGSLayer,                                    uiFrame );
          else
            printf( "\rdetermine distortion (layer %d - FGS %d - lev%2d - %s ) --> frame %d completed", uiLayer, uiFGSLayer, uiLevel, bIndependent?"ind":"dep", uiFrame );
        }
      }
    } // if( bToDecode )

    //----- free buffers -----
    RNOK( xRemovePicBuffer( cPicBufferReleaseList ) );
    RNOK( xRemovePicBuffer( cPicBufferUnusedList  ) );

    //----- delete bin data -----
    if( pcBinData )
    {
      RNOK( pcReadBitStream->releasePacket( pcBinData ) );
      pcBinData = 0;
    }
  }
  //----- remove original pic buffer -----
  PicBufferList cPicBufferListOrig; cPicBufferListOrig.push_back( pcPicBufferOrig );
  RNOK( xRemovePicBuffer( cPicBufferListOrig ) );
#if WIN32
  remove( tmp_file_name );
#endif


  //===== uninit =====
  RNOK( m_pcH264AVCPacketAnalyzer ->uninit  () );
  RNOK( m_pcH264AVCDecoder        ->uninit  ( true ) );
  RNOK( pcReadBitStream           ->uninit  () );
  RNOK( pcReadYuv                 ->uninit  () );
  RNOK( pcReadBitStream           ->destroy () );
  RNOK( pcReadYuv                 ->destroy () );
  if( pcWriteYuv )
  {
    RNOK( pcWriteYuv->destroy() );
  }

  //---- re-create decoder (there's something wrong) -----
  RNOK( m_pcH264AVCDecoder->destroy() );
  RNOK( CreaterH264AVCDecoder::create( m_pcH264AVCDecoder ) );

  printf("\n");

  return Err::m_nOK;
}


ErrVal
QualityLevelAssigner::xWriteDataFile( const std::string&  cFileName )
{
  printf( "write data to file \"%s\" ...", cFileName.c_str() );

  FILE* pFile = fopen( cFileName.c_str(), "wt" );
  if( !pFile )
  {
    fprintf( stderr, "\nERROR: Cannot open file \"%s\" for writing!\n\n", cFileName.c_str() );
    return Err::m_nERR;
  }

  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 ++ )
  {
    fprintf( pFile,
             "%d  %d  %5d  %6d  %lf\n",
              uiLayer, uiFGS, uiFrame,
              m_aaauiPacketSize [uiLayer][uiFGS][uiFrame],
              m_aaadDeltaDist   [uiLayer][uiFGS][uiFrame] );

  }

  fclose( pFile );

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


ErrVal
QualityLevelAssigner::xReadDataFile( const std::string&  cFileName )
{
  printf( "read data from file \"%s\" ...", cFileName.c_str() );

  FILE* pFile = fopen( cFileName.c_str(), "rt" );
  if( !pFile )
  {
    fprintf( stderr, "\nERROR: Cannot open file \"%s\" for reading!\n\n", cFileName.c_str() );
    return Err::m_nERR;
  }

  Bool    bEOS    = false;
  UInt    uiLayer, uiFGS, uiFrame, uiPacketSize, uiNumPackets;
  Double  dDeltaDist;
  for( uiNumPackets = 0; !bEOS; uiNumPackets++ )
  {
    Int iNumRead = fscanf( pFile,
                           " %d %d %d %d %lf",
                           &uiLayer, &uiFGS, &uiFrame, &uiPacketSize, &dDeltaDist );
    if( iNumRead == 5 )
    {
      ROF( uiLayer <  m_uiNumLayers );
      ROF( uiFGS   <= m_auiNumFGSLayers[uiLayer] );
      ROF( uiFrame <  m_auiNumFrames   [uiLayer] );
      m_aaauiPacketSize [uiLayer][uiFGS][uiFrame]  = uiPacketSize;
      m_aaadDeltaDist   [uiLayer][uiFGS][uiFrame]  = dDeltaDist;
    }
    else
    {
      bEOS = true;
      uiNumPackets--;
    }
  }

  //----- check number of elements -----
  UInt uiTargetPackets = 0;
  for( uiLayer = 0; uiLayer < m_uiNumLayers; uiLayer++ )
  {
    uiTargetPackets += ( 1 + m_auiNumFGSLayers[uiLayer] ) * m_auiNumFrames[uiLayer];
  }
  if( uiTargetPackets != uiNumPackets )
  {
    fprintf( stderr, "\nERROR: File \"%s\" contains incomplete data!\n\n", cFileName.c_str() );
    return Err::m_nERR;
  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产一区在线观看| 午夜欧美视频在线观看| 欧美精品在线观看一区二区| 国产精品911| 亚洲自拍另类综合| 久久―日本道色综合久久| 色综合咪咪久久| 国产剧情av麻豆香蕉精品| 亚洲综合在线免费观看| 久久精品综合网| 欧美日韩在线一区二区| 国产成人av电影在线播放| 日韩av电影免费观看高清完整版在线观看 | 亚洲高清视频在线| 中文字幕免费不卡| 欧美不卡一二三| 欧美日韩www| 色琪琪一区二区三区亚洲区| 国产成人午夜视频| 免费的国产精品| 天天av天天翘天天综合网| 亚洲色图欧美激情| 久久精品一区二区三区av| 日韩欧美www| 在线不卡免费av| 欧美日韩午夜在线| 91极品视觉盛宴| 91免费观看视频| www.欧美色图| 成人国产精品免费观看动漫| 国产一区二区三区国产| 免费成人小视频| 亚洲午夜免费视频| 亚洲激情av在线| 亚洲猫色日本管| 亚洲欧美韩国综合色| 专区另类欧美日韩| 亚洲婷婷国产精品电影人久久| 国产亚洲美州欧州综合国| 精品国一区二区三区| 日韩精品一区二区在线| 制服丝袜在线91| 91精品国产入口在线| 91精品视频网| 日韩欧美国产一区二区三区| 欧美一区二区三区影视| 日韩三级视频在线看| 日韩一区二区三区免费观看| 91精品福利在线一区二区三区 | 精品系列免费在线观看| 老司机午夜精品| 国产在线精品国自产拍免费| 国产综合色在线| 国产精品18久久久久久久久久久久| 国模无码大尺度一区二区三区| 精品在线视频一区| 国产精品一区二区黑丝| 成人av网站在线观看免费| 99久久精品国产观看| 色综合久久久久久久久久久| 色婷婷综合五月| 欧美日韩一区久久| 日韩一区二区电影| 国产亚洲欧美激情| 亚洲免费av观看| 日本vs亚洲vs韩国一区三区| 国产乱妇无码大片在线观看| av午夜一区麻豆| 欧美少妇xxx| 欧美电影免费观看高清完整版在线 | 欧美日韩1区2区| 精品国产乱码久久久久久久| 中文字幕一区视频| 香蕉久久夜色精品国产使用方法 | 欧美三级韩国三级日本三斤| 欧美一区二区不卡视频| 国产网站一区二区| 最新久久zyz资源站| 亚洲综合视频在线观看| 免费成人性网站| 波多野结衣中文字幕一区二区三区 | 精品日韩欧美一区二区| 国产色婷婷亚洲99精品小说| 亚洲精品久久久蜜桃| 日本成人在线网站| av中文字幕不卡| 中文字幕欧美日本乱码一线二线| 亚洲婷婷国产精品电影人久久| 日韩精品一级中文字幕精品视频免费观看| 日本网站在线观看一区二区三区| 国产91丝袜在线播放九色| 91豆麻精品91久久久久久| 精品久久一二三区| 性感美女极品91精品| 成人免费毛片app| 91麻豆精品国产| 最新成人av在线| 国产一区不卡视频| 欧美三级资源在线| 国产网站一区二区三区| 奇米影视一区二区三区| 99国内精品久久| 欧美va亚洲va香蕉在线| 亚洲午夜久久久久久久久电影院| 国产精品99久久久久久久vr | 国产精品乱码一区二区三区软件| 亚洲网友自拍偷拍| 99视频国产精品| 精品免费国产二区三区| 亚洲二区视频在线| 91蝌蚪porny成人天涯| 久久久久久久久久久久电影| 日韩激情视频在线观看| 色婷婷亚洲精品| 日本一区二区不卡视频| 久久国产尿小便嘘嘘尿| 欧美性做爰猛烈叫床潮| 亚洲人成在线观看一区二区| 国产精品69毛片高清亚洲| 日韩午夜在线观看| 亚洲午夜视频在线观看| 色成年激情久久综合| 中文字幕中文字幕中文字幕亚洲无线| 麻豆精品一区二区三区| 欧美精品vⅰdeose4hd| 一区二区三区鲁丝不卡| 91麻豆.com| 亚洲人成精品久久久久| 波多野结衣91| 国产精品美女久久久久高潮| 国产精品白丝jk白祙喷水网站 | 欧美精品一区二区三| 日日嗨av一区二区三区四区| 欧美性生活久久| 亚洲一区二区三区中文字幕在线| 91麻豆视频网站| 亚洲精品中文字幕在线观看| 色综合久久中文综合久久97| 一区二区在线免费观看| 91久久久免费一区二区| 亚洲精品国产第一综合99久久| 97久久超碰国产精品电影| 中文字幕一区二区不卡| 91视频com| 亚洲第一成年网| 欧美福利电影网| 久久国产视频网| 久久久午夜精品理论片中文字幕| 国产一区 二区| 国产精品亲子乱子伦xxxx裸| 不卡一区二区三区四区| 一区二区欧美视频| 欧美日韩一级二级| 久久69国产一区二区蜜臀| 久久综合九色综合97婷婷女人| 国产精品2024| 日韩美女精品在线| 91福利视频久久久久| 天堂va蜜桃一区二区三区漫画版| 日韩一级片网址| 国产高清精品在线| 亚洲欧美在线aaa| 欧美日韩精品一区视频| 久久超碰97中文字幕| 国产欧美va欧美不卡在线 | 久久综合九色综合久久久精品综合| 国产乱一区二区| 自拍偷拍国产亚洲| 欧美精品精品一区| 国产一区二区三区蝌蚪| 中文字幕一区二区三区色视频| 欧美亚洲日本一区| 韩日欧美一区二区三区| 中文字幕亚洲区| 欧美精品v国产精品v日韩精品| 国产在线麻豆精品观看| 亚洲免费观看高清完整版在线观看 | 国产精品嫩草99a| 欧美视频一二三区| 国产一区美女在线| 一区二区三区丝袜| 欧美精品一区二区三区一线天视频| 波波电影院一区二区三区| 视频一区二区三区在线| 国产欧美日韩麻豆91| 欧美系列一区二区| 国产91在线看| 午夜精品影院在线观看| 国产农村妇女毛片精品久久麻豆| 欧美日韩中文字幕一区| 夫妻av一区二区| 日本网站在线观看一区二区三区| 中文字幕日韩一区二区| 日韩一级片在线播放| 欧美专区亚洲专区| 国产成人午夜电影网| 日韩二区在线观看| 亚洲视频免费在线观看| 久久综合久久久久88| 欧美精品乱码久久久久久 |