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

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

?? fgssubbanddecoder.cpp

?? JMVM MPEG MVC/3DAV 測試平臺 國際通用標準
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
/*
********************************************************************************

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 "H264AVCEncoderLib.h"
#include "FGSSubbandDecoder.h"
#include "CabacReader.h"
#include "UvlcReader.h"
#include "BitReadBuffer.h"
#include "MbParser.h"
#include "MbDecoder.h"

#include "H264AVCCommonLib/MbDataCtrl.h"
#include "H264AVCCommonLib/IntFrame.h"
#include "H264AVCCommonLib/IntYuvMbBuffer.h"
#include "H264AVCCommonLib/Transform.h"
#include "H264AVCCommonLib/TraceFile.h"


#include "H264AVCCommonLib/CFMO.h"



H264AVC_NAMESPACE_BEGIN




RQFGSDecoder::RQFGSDecoder()
: m_bPicChanged               ( false )
, m_bPicFinished              ( false )
, m_pcSymbolReader            ( 0 )
, m_pcUvlcReader              ( 0 )
, m_pcCabacReader             ( 0 )
, m_pcCurrSliceHeader         ( 0 )
, m_pcMbParser                ( 0 )
, m_pcMbDecoder               ( 0 )

, m_bFirstFGS				  ( true )
{
  ::memset( m_apaucLumaCoefMap,       0x00,   16*sizeof(UChar*) );
  ::memset( m_aapaucChromaDCCoefMap,  0x00, 2* 4*sizeof(UChar*) );
  ::memset( m_aapaucChromaACCoefMap,  0x00, 2*16*sizeof(UChar*) );
  ::memset( m_apaucChromaDCBlockMap,  0x00,    2*sizeof(UChar*) );
  ::memset( m_apaucChromaACBlockMap,  0x00,    2*sizeof(UChar*) );
  m_paucBlockMap        = 0;
  m_paucSubMbMap        = 0;
  m_pauiMacroblockMap   = 0;

	// ICU/ETRI FGS_MOT_USE
  for (int i = 0; i < 8; ++i) m_bFGSMotionUse[i] = false;
}


RQFGSDecoder::~RQFGSDecoder()
{
  AOT( m_bInit );
}


ErrVal
RQFGSDecoder::create( RQFGSDecoder*& rpcRQFGSDecoder )
{
  rpcRQFGSDecoder = new RQFGSDecoder;
  ROT( NULL == rpcRQFGSDecoder );
  return Err::m_nOK;
}
  

ErrVal
RQFGSDecoder::destroy()
{
  delete this;
  return Err::m_nOK;
}


ErrVal
RQFGSDecoder::init( YuvBufferCtrl** apcYuvFullPelBufferCtrl,
                    Transform*      pcTransform,
                    MbParser*       pcMbParser,
                    MbDecoder*      pcMbDecoder,
                    UvlcReader*     pcUvlcReader,
                    CabacReader*    pcCabacReader )
{
  ROT( m_bInit );
  ROF( apcYuvFullPelBufferCtrl );
  ROF( pcTransform );
  ROF( pcUvlcReader );
  ROF( pcCabacReader );
  ROF( pcMbParser );
  ROF( pcMbDecoder );

  m_pcCabacReader             = pcCabacReader;
  m_bInit                     = true;
  m_pcUvlcReader              = pcUvlcReader;
  m_pcMbParser                = pcMbParser;
  m_pcMbDecoder               = pcMbDecoder;

  m_pcCurrSliceHeader         = 0;
  m_bPicChanged               = false;
  m_bPicFinished              = false;

  xInit( apcYuvFullPelBufferCtrl, pcTransform );

  return Err::m_nOK;
}
  

ErrVal
RQFGSDecoder::uninit()
{
  ROT( m_bPicInit );
  ROF( m_bInit );
  
  xUninit();

  m_pcMbParser                = 0;
  m_pcMbDecoder               = 0;
  m_pcCabacReader             = 0;
  m_pcSymbolReader            = 0;
  m_pcUvlcReader              = 0;
  m_pcCurrSliceHeader         = 0;
  m_bPicChanged               = false;
  m_bPicFinished              = false;

  return Err::m_nOK;
}



ErrVal
RQFGSDecoder::initPicture( SliceHeader* pcSliceHeader,
                           MbDataCtrl*  pcCurrMbDataCtrl )
{
  ROT( m_bPicInit );
  ROF( m_bInit );
  ROF( pcSliceHeader );
  ROF( pcCurrMbDataCtrl );

  RNOK( xInitSPS( pcSliceHeader->getSPS() ) );

  m_uiWidthInMB       = pcSliceHeader->getSPS().getFrameWidthInMbs  ();
  m_uiHeightInMB      = pcSliceHeader->getSPS().getFrameHeightInMbs ();
  m_pcCurrSliceHeader = pcSliceHeader;
  m_pcCurrMbDataCtrl  = pcCurrMbDataCtrl;
  m_bPicInit          = true;
  m_bPicChanged       = false;
  m_bPicFinished      = false;

  Bool bCabac         = pcSliceHeader->getPPS().getEntropyCodingModeFlag();
  m_pcSymbolReader    = ( bCabac ) ? (MbSymbolReadIf*)m_pcCabacReader : (MbSymbolReadIf*)m_pcUvlcReader;

  RNOK( xInitBaseLayerSbb( m_pcCurrSliceHeader->getLayerId() ) );
  RNOK( xInitializeCodingPath(pcSliceHeader) );
  RNOK( xScaleBaseLayerCoeffs() );

  return Err::m_nOK;
}


ErrVal
RQFGSDecoder::finishPicture()
{
  ROF( m_bPicInit );

  m_bPicInit          = false;
  m_bPicChanged       = false;
  m_bPicFinished      = false;
  m_uiWidthInMB       = 0;
  m_uiHeightInMB      = 0;
  m_pcCurrSliceHeader = 0;
  m_pcCurrMbDataCtrl  = 0;

  m_bFirstFGS		  = true;

  return Err::m_nOK;
}



ErrVal
RQFGSDecoder::decodeNextLayer( SliceHeader* pcSliceHeader )
{
  ROF( m_bInit );
  ROF( m_bPicInit );
  
  //===== update slice header =====
  m_pcCurrSliceHeader->setSliceHeaderQp ( pcSliceHeader->getPicQp()          );
  m_pcCurrSliceHeader->setFirstMbInSlice( pcSliceHeader->getFirstMbInSlice() );
  m_pcCurrSliceHeader->setNumMbsInSlice ( pcSliceHeader->getNumMbsInSlice () );
  // JVT-S054 (2) (ADD)
  m_pcCurrSliceHeader->setLastMbInSlice ( pcSliceHeader->getLastMbInSlice () );
  m_pcCurrSliceHeader->setAdaptivePredictionFlag( pcSliceHeader->getAdaptivePredictionFlag() );
  m_bPicChanged = true;

  RNOK( xDecodingFGS(pcSliceHeader) );

  return Err::m_nOK;
}




ErrVal
RQFGSDecoder::reconstruct( IntFrame*  pcRecResidual )
{
  ROF( m_bInit );
  ROF( m_bPicInit );
  ROF( pcRecResidual );

  UInt            uiLayer         = m_pcCurrSliceHeader->getLayerId();
  YuvBufferCtrl*  pcYuvBufferCtrl = m_papcYuvFullPelBufferCtrl[uiLayer];
  IntYuvMbBuffer  cMbBuffer;

  RNOK( m_pcCurrMbDataCtrl->initSlice ( *m_pcCurrSliceHeader, PRE_PROCESS, true, NULL ) );

  for( UInt uiMbY = 0; uiMbY < m_uiHeightInMB; uiMbY++ )
  for( UInt uiMbX = 0; uiMbX < m_uiWidthInMB;  uiMbX++ )
  {
    MbDataAccess* pcMbDataAccess = 0;
    RNOK( m_pcCurrMbDataCtrl->initMb( pcMbDataAccess, uiMbY, uiMbX ) );
    RNOK( pcYuvBufferCtrl   ->initMb( uiMbY, uiMbX ) );
    RNOK( xReconstructMacroblock    ( *pcMbDataAccess, cMbBuffer    ) );
    RNOK( pcRecResidual->getFullPelYuvBuffer()->loadBuffer( &cMbBuffer ) );
  }

  return Err::m_nOK;
}




ErrVal
RQFGSDecoder::xScaleBaseLayerCoeffs()
{
  RNOK( m_pcCurrMbDataCtrl->initSlice( *m_pcCurrSliceHeader, PRE_PROCESS, true, NULL ) );

  for( UInt uiMbY = 0; uiMbY < m_uiHeightInMB; uiMbY++ )
  for( UInt uiMbX = 0; uiMbX < m_uiWidthInMB;  uiMbX++ )
  {
    MbDataAccess* pcMbDataAccess = 0;

    RNOK( m_pcCurrMbDataCtrl->initMb(  pcMbDataAccess, uiMbY, uiMbX ) );
    RNOK( xScaleTCoeffs             ( *pcMbDataAccess, true ) );
  }
  
  return Err::m_nOK;
}

UInt gauiB8x8Mapping[4] = { 0, 2, 3, 1 }; 

ErrVal
RQFGSDecoder::xDecodeLumaCbpVlc(UInt  uiCurrMbIdxX,
                                UInt  uiCurrMbIdxY)
{
  UInt uiLumaCbpBase, uiLumaCbp;
  MbDataAccess* pcMbDataAccessEL  = 0;
  MbDataAccess* pcMbDataAccessBL  = 0;

  RNOK( m_pcCurrMbDataCtrl ->initMb( pcMbDataAccessBL, uiCurrMbIdxY, uiCurrMbIdxX ) );
  RNOK( m_cMbDataCtrlEL     .initMb( pcMbDataAccessEL, uiCurrMbIdxY, uiCurrMbIdxX ) );

  uiLumaCbpBase = pcMbDataAccessBL->getMbData().getMbCbp() & 0x0F;
  uiLumaCbp     = uiLumaCbpBase;

  for( UInt uiB8x8 = 0; uiB8x8 < 4; uiB8x8 ++ )
  {
    UInt uiCbpFlagBase = (uiLumaCbpBase >> gauiB8x8Mapping[uiB8x8]) & 1;

    if( uiCbpFlagBase == 0 )
    {
      if( m_uiLumaCbpRun == 0 )
      {
        // read next run
        ((UvlcReader *) m_pcSymbolReader)->getUvlc(m_uiLumaCbpRun, "Luma_CBP_run");
        m_uiLumaCbpRun ++;
        m_bLastLumaCbpFlag = ! m_bLastLumaCbpFlag;
      }

      uiLumaCbp |= m_bLastLumaCbpFlag << gauiB8x8Mapping[uiB8x8];
      m_uiLumaCbpRun --;
    }
  }

  pcMbDataAccessEL->getMbData().setMbCbp(uiLumaCbp);

  return Err::m_nOK;
}

// uiLastChromaCbp, bTransitionFlag
UInt auiNextChromaCbp[3][2] = { { 1, 2 }, { 2, 0 }, { 0, 1 } };

ErrVal
RQFGSDecoder::xDecodeChromaCbpVlc(UInt  uiCurrMbIdxX,
                                  UInt  uiCurrMbIdxY)
{
  UInt uiMbCbp;
  Bool bTransitionFlag;
  MbDataAccess* pcMbDataAccessEL  = 0;

  RNOK( m_cMbDataCtrlEL     .initMb( pcMbDataAccessEL, uiCurrMbIdxY, uiCurrMbIdxX ) );

  if( m_uiChromaCbpRun == 0 )
  {
    // read the transition flag
    ((UvlcReader *) m_pcSymbolReader)->getFlag(bTransitionFlag, "Chroma_CBP_transition");
    m_uiLastChromaCbp = auiNextChromaCbp[m_uiLastChromaCbp][bTransitionFlag];

    ((UvlcReader *) m_pcSymbolReader)->getUvlc(m_uiChromaCbpRun, "Chroma_CBP_run");
    m_uiChromaCbpRun ++;
  }

  uiMbCbp = pcMbDataAccessEL->getMbData().getMbCbp();
  pcMbDataAccessEL->getMbData().setMbCbp( (uiMbCbp & 0x0F) | (m_uiLastChromaCbp << 4) );
  m_uiChromaCbpRun --;

  return Err::m_nOK;
}

ErrVal
RQFGSDecoder::xDecodingFGS()
{
  RNOK( m_cMbDataCtrlEL    .reset     () );
  RNOK( m_cMbDataCtrlEL    .clear     () );
  RNOK( m_cMbDataCtrlEL    .initSlice ( *m_pcCurrSliceHeader, PARSE_PROCESS, true, NULL ) );
  RNOK( m_pcCurrMbDataCtrl->initSlice ( *m_pcCurrSliceHeader, PRE_PROCESS, true, NULL ) );
  
  RNOK( xInitializeMacroblockQPs() );

  RNOK( m_cMbDataCtrlEL    .initSlice ( *m_pcCurrSliceHeader, PRE_PROCESS, true, NULL ) );

  Int iLastQP = m_pcCurrSliceHeader->getPicQp();

  UInt uiFirstMbInSlice = m_pcCurrSliceHeader->getFirstMbInSlice ();
  UInt uiNumMbsInSlice  = m_pcCurrSliceHeader->getNumMbsInSlice  ();
  m_bFgsComponentSep    = m_pcCurrSliceHeader->getFgsComponentSep();

  //positions vector for luma (and chromaAC) and chroma DC
  UInt ui;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲最色的网站| 久久久久久电影| 国产精品免费久久| 人人狠狠综合久久亚洲| 91蜜桃婷婷狠狠久久综合9色| 日韩久久免费av| 亚洲成a人v欧美综合天堂| 成人丝袜18视频在线观看| 日韩三级中文字幕| 亚洲福利视频一区| 91麻豆swag| 中文字幕一区日韩精品欧美| 韩国成人精品a∨在线观看| 337p亚洲精品色噜噜噜| 亚洲激情男女视频| 成人午夜免费电影| 久久亚洲综合色一区二区三区| 午夜电影网一区| 91国产成人在线| 国产精品短视频| 福利视频网站一区二区三区| 久久综合久久99| 免费成人美女在线观看| 欧美日韩一级二级| 丰满少妇久久久久久久| 精品国产区一区| 日一区二区三区| 欧美又粗又大又爽| 亚洲欧美偷拍另类a∨色屁股| 成人黄色一级视频| 国产亚洲1区2区3区| 国产精品一区一区三区| 久久久久成人黄色影片| 国产一区二区三区在线观看免费视频| 欧美一区二区三区在线视频| 天涯成人国产亚洲精品一区av| 在线观看亚洲精品| 亚洲欧美电影一区二区| 日本免费在线视频不卡一不卡二| 日韩小视频在线观看专区| 亚洲国产精品久久艾草纯爱| 成人污污视频在线观看| 日本一二三四高清不卡| 成人午夜在线视频| 亚洲欧洲一区二区在线播放| 成人性生交大片免费看中文网站| 中文字幕国产一区| 91亚洲精华国产精华精华液| 亚洲精品高清视频在线观看| 欧美性受xxxx| 五月激情六月综合| 欧美一级淫片007| 麻豆成人av在线| 久久亚洲一区二区三区明星换脸 | 欧美精品一级二级三级| 中文字幕不卡在线观看| 91蜜桃网址入口| 亚洲福利一二三区| 日韩欧美一级片| 国产福利电影一区二区三区| 国产精品理论片在线观看| 91久久线看在观草草青青| 亚洲成a人片在线不卡一二三区| 91麻豆精品久久久久蜜臀| 精品在线免费观看| 青青草国产成人av片免费| 中文字幕高清不卡| 91在线观看免费视频| 亚洲最大色网站| 日韩欧美第一区| 国产成人小视频| 亚洲乱码国产乱码精品精小说 | 91偷拍与自偷拍精品| 亚洲国产人成综合网站| 欧美大肚乱孕交hd孕妇| 成人午夜视频在线观看| 亚洲国产精品一区二区www在线| 日韩精品一区二区三区四区视频| 福利一区福利二区| 亚洲第一在线综合网站| 久久久不卡网国产精品一区| 色94色欧美sute亚洲线路二| 麻豆精品国产91久久久久久| 国产亚洲精品免费| 欧美制服丝袜第一页| 捆绑变态av一区二区三区| 国产精品美女www爽爽爽| 欧美日韩亚洲综合在线 | 欧美精品在欧美一区二区少妇| 亚洲在线成人精品| 欧美日韩国产一区二区三区地区| 韩国毛片一区二区三区| 亚洲精品欧美在线| 欧美不卡一区二区三区| 91久久香蕉国产日韩欧美9色| 麻豆国产精品官网| 亚洲精品日韩综合观看成人91| 日韩一级欧美一级| 色天天综合久久久久综合片| 九色|91porny| 一区二区在线观看免费| 26uuu欧美| 欧美三级视频在线观看| 成人永久免费视频| 蜜臀av一区二区在线观看| 亚洲欧美电影一区二区| 久久综合色天天久久综合图片| 欧美三级在线播放| 不卡视频在线看| 国模套图日韩精品一区二区| 亚洲精品日韩综合观看成人91| 2023国产精品| 欧美精品一二三| 色综合色综合色综合色综合色综合| 久久99精品久久久| 图片区小说区国产精品视频| 亚洲色图在线看| 国产日本欧洲亚洲| 欧美一级免费大片| 欧美唯美清纯偷拍| 91欧美一区二区| 成人h版在线观看| 国产精品一线二线三线精华| 毛片av一区二区| 日韩精品一级中文字幕精品视频免费观看| 中文字幕人成不卡一区| 欧美国产乱子伦| 精品99一区二区三区| 欧美一区二区黄色| 欧美日韩美女一区二区| 91免费视频网址| aaa欧美日韩| 成人av网址在线观看| 丁香婷婷综合激情五月色| 激情综合色综合久久| 热久久久久久久| 日韩精品电影在线观看| 亚洲国产精品久久不卡毛片 | 国产午夜精品福利| 精品国产乱码久久久久久图片| 51精品视频一区二区三区| 欧美日韩中文字幕一区二区| 一本到高清视频免费精品| 99免费精品在线| 白白色亚洲国产精品| 成人精品在线视频观看| 成人黄色在线网站| 成人av综合在线| 成人av网在线| 99久久精品国产麻豆演员表| 波多野结衣中文字幕一区| 成人av在线观| 97se亚洲国产综合在线| 99re这里只有精品首页| 91在线观看美女| 在线精品视频一区二区| 欧洲国产伦久久久久久久| 色哟哟在线观看一区二区三区| 91理论电影在线观看| 色综合久久综合中文综合网| 在线免费观看一区| 欧美日韩国产电影| 91精品啪在线观看国产60岁| 欧美一区日韩一区| 日韩欧美第一区| 国产午夜精品一区二区三区嫩草| 国产欧美日韩在线看| 欧美高清在线视频| **欧美大码日韩| 亚洲自拍另类综合| 日本91福利区| 国产精品一区二区久激情瑜伽 | 奇米精品一区二区三区在线观看| 日本欧美一区二区| 狠狠色丁香婷综合久久| 粉嫩av亚洲一区二区图片| 91麻豆免费观看| 欧美日韩国产大片| 日韩免费在线观看| 国产欧美一区二区精品性色| 亚洲摸摸操操av| 天天影视网天天综合色在线播放| 蓝色福利精品导航| 国产白丝网站精品污在线入口| 91麻豆国产在线观看| 91麻豆精品国产91| 久久日韩粉嫩一区二区三区| 亚洲欧洲无码一区二区三区| 亚洲超丰满肉感bbw| 国产在线播放一区三区四| 成人爱爱电影网址| 欧美精品乱码久久久久久 | 欧洲人成人精品| 日韩三级视频中文字幕| 国产欧美一区二区精品性色超碰| 一区二区三区欧美| 久久黄色级2电影| 91小视频免费观看| 欧美一卡二卡在线观看| 国产精品久久久久久久久久免费看|