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

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

?? mbcoder.cpp

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

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 "MbCoder.h"
#include "H264AVCCommonLib/Tables.h"



H264AVC_NAMESPACE_BEGIN


MbCoder::MbCoder():
  m_pcMbSymbolWriteIf( NULL ),
  m_pcRateDistortionIf( NULL ),
  m_bInitDone( false ),
  m_bCabac( false ),
  m_bPrevIsSkipped( false )
{
}


MbCoder::~MbCoder()
{
}


ErrVal MbCoder::create( MbCoder*& rpcMbCoder )
{
  rpcMbCoder = new MbCoder;

  ROT( NULL == rpcMbCoder );

  return Err::m_nOK;
}

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

ErrVal MbCoder::initSlice(  const SliceHeader& rcSH,
                            MbSymbolWriteIf*   pcMbSymbolWriteIf,
                            RateDistortionIf*  pcRateDistortionIf )
{
  ROT( NULL == pcMbSymbolWriteIf );
  ROT( NULL == pcRateDistortionIf );

  m_pcMbSymbolWriteIf = pcMbSymbolWriteIf;
  m_pcRateDistortionIf = pcRateDistortionIf;

  m_bCabac          = rcSH.getPPS().getEntropyCodingModeFlag();
  m_bPrevIsSkipped  = false;

  m_bInitDone = true;

  return Err::m_nOK;
}


ErrVal MbCoder::uninit()
{
  m_pcMbSymbolWriteIf = NULL;
  m_pcRateDistortionIf = NULL;

  m_bInitDone = false;
  return Err::m_nOK;
}






ErrVal MbCoder::encode( MbDataAccess& rcMbDataAccess,
                        MbDataAccess* pcMbDataAccessBase,
                        Int           iSpatialScalabilityType,
                        Bool          bTerminateSlice )
{
  ROF( m_bInitDone );

  //===== skip flag =====
  Bool  bIsCoded  = ! rcMbDataAccess.isSkippedMb();

  RNOK( m_pcMbSymbolWriteIf->skipFlag( rcMbDataAccess, false ) );

  if( bIsCoded )
  {
    //===== base layer mode flag and base layer refinement flag =====
    if( rcMbDataAccess.getSH().getBaseLayerId() != MSYS_UINT_MAX )
    {
      if ( pcMbDataAccessBase->getMbData().getInCropWindowFlag() == true )// TMM_ESS
      {
				if( rcMbDataAccess.getSH().getAdaptivePredictionFlag() )
				{
					RNOK  ( m_pcMbSymbolWriteIf->BLSkipFlag( rcMbDataAccess ) );
				}
				else
				{
					ROF( rcMbDataAccess.getMbData().getBLSkipFlag () );
				}
// TMM_ESS {
      }
      else  // of if ( rcMbDataAccess.getMbData().getInCropWindowFlag() == true )
      {
          ROT  ( rcMbDataAccess.getMbData().getBLSkipFlag () );
      }
// TMM_ESS }
    }
    else
    {
      ROT  ( rcMbDataAccess.getMbData().getBLSkipFlag () );
    }

#if JMVM_ONLY  // JVT-W081
    if ( !rcMbDataAccess.getSH().getAVCFlag() && rcMbDataAccess.getSH().getMotionSkip() )
    {
      if ( !rcMbDataAccess.getSH().getSPS().getSpsMVC()->getSingleLoopDecoding() ) // JVT-Y042
      {
          RNOK  ( m_pcMbSymbolWriteIf->MotionSkipFlag( rcMbDataAccess ) ); 
#if JMVM_ONLY //JVT-Z021
		  if(rcMbDataAccess.getMbData().getMotionSkipFlag())
			  RNOK(MbCoder::xWriteImsm(rcMbDataAccess));
#endif  //JVT-Z021
      }
      else
      {
          RNOK  ( m_pcMbSymbolWriteIf->MotionSkipFlag( rcMbDataAccess ) );
#if JMVM_ONLY //JVT-Z021
		  if(rcMbDataAccess.getMbData().getMotionSkipFlag())
			  RNOK(MbCoder::xWriteImsm(rcMbDataAccess));
#endif
      }
    }
#endif  // JVT-W081   

    //===== macroblock mode =====
    if( ! rcMbDataAccess.getMbData().getBLSkipFlag()
#if JMVM_ONLY  // JVT-W081
		&& ! rcMbDataAccess.getMbData().getMotionSkipFlag()
#endif  // JVT-W081	
		)
    {
      MbMode  eMbModeOrg = rcMbDataAccess.getMbData().getMbMode();
      MbMode  eMbModeSet = ( eMbModeOrg == INTRA_BL ? INTRA_4X4 : eMbModeOrg );
      rcMbDataAccess.getMbData().setMbMode( eMbModeSet );
      RNOK( m_pcMbSymbolWriteIf->mbMode( rcMbDataAccess ) );
      rcMbDataAccess.getMbData().setMbMode( eMbModeOrg );
    }

    //--- reset motion pred flags ---
    if( rcMbDataAccess.getMbData().getBLSkipFlag() 
#if JMVM_ONLY  // JVT-W081
		|| rcMbDataAccess.getMbData().getMotionSkipFlag()
#endif  // JVT-W081
		|| rcMbDataAccess.getMbData().isIntra() || rcMbDataAccess.getMbData().getMbMode() == MODE_SKIP )
    {
      rcMbDataAccess.getMbMotionData( LIST_0 ).setMotPredFlag( false );
      rcMbDataAccess.getMbMotionData( LIST_1 ).setMotPredFlag( false );
    }
    else if( rcMbDataAccess.getSH().isInterB() )
    {
      for( B8x8Idx c8x8Idx; c8x8Idx.isLegal(); c8x8Idx++ )
      {
        if( BLK_SKIP == rcMbDataAccess.getMbData().getBlkMode   ( c8x8Idx.b8x8Index() ) ||
            !rcMbDataAccess            .getMbData().isBlockFwdBwd( c8x8Idx.b8x8Index(), LIST_0 ) )
        {
          rcMbDataAccess.getMbMotionData( LIST_0 ).setMotPredFlag( false, c8x8Idx );
        }
        if( BLK_SKIP == rcMbDataAccess.getMbData().getBlkMode   ( c8x8Idx.b8x8Index() ) ||
            !rcMbDataAccess            .getMbData().isBlockFwdBwd( c8x8Idx.b8x8Index(), LIST_1 ) )
        {
          rcMbDataAccess.getMbMotionData( LIST_1 ).setMotPredFlag( false, c8x8Idx );
        }
      }
    }

    //===== prediction info =====
    if( ! rcMbDataAccess.getMbData().getBLSkipFlag()
#if JMVM_ONLY  // JVT-W081
		&& ! rcMbDataAccess.getMbData().getMotionSkipFlag()
#endif  // JVT-W081
		)
    {
      //===== BLOCK MODES =====
      if( rcMbDataAccess.getMbData().isInter8x8() )
      {
        RNOK( m_pcMbSymbolWriteIf->blockModes( rcMbDataAccess ) );
      }

      if( rcMbDataAccess.getMbData().isPCM() )
      {
        //===== PCM SAMPLES =====
        RNOK( m_pcMbSymbolWriteIf->samplesPCM( rcMbDataAccess ) );
      }
      else if( rcMbDataAccess.getMbData().isIntra() )
      {
        //===== INTRA PREDICTION MODES =====
        RNOK( xWriteIntraPredModes( rcMbDataAccess ) );
      }
      else
      {
        //===== MOTION INFORMATION =====
        MbMode eMbMode = rcMbDataAccess.getMbData().getMbMode();
        if( rcMbDataAccess.getSH().isInterB() )
        {
          RNOK( xWriteMotionPredFlags( rcMbDataAccess, eMbMode, LIST_0 ) );
          RNOK( xWriteMotionPredFlags( rcMbDataAccess, eMbMode, LIST_1 ) );
          RNOK( xWriteReferenceFrames( rcMbDataAccess, eMbMode, LIST_0 ) );
          RNOK( xWriteReferenceFrames( rcMbDataAccess, eMbMode, LIST_1 ) );
          RNOK( xWriteMotionVectors  ( rcMbDataAccess, eMbMode, LIST_0 ) );
          RNOK( xWriteMotionVectors  ( rcMbDataAccess, eMbMode, LIST_1 ) );
        }
        else
        {
          RNOK( xWriteMotionPredFlags( rcMbDataAccess, eMbMode, LIST_0 ) );
          RNOK( xWriteReferenceFrames( rcMbDataAccess, eMbMode, LIST_0 ) );
          RNOK( xWriteMotionVectors  ( rcMbDataAccess, eMbMode, LIST_0 ) );
        }

#if JMVM_ONLY  // JVT-U052
        if( rcMbDataAccess.getSH().getIcEnable() )
        {
          RNOK( xWriteIcp( rcMbDataAccess, eMbMode ) );
        }
#endif
      }
    }


    //===== TEXTURE =====
    if( ! rcMbDataAccess.getMbData().isPCM() )
    {
      Bool bTrafo8x8Flag = ( rcMbDataAccess.getSH().getPPS().getTransform8x8ModeFlag() &&
                           ( rcMbDataAccess.getMbData().getBLSkipFlag() ||
#if JMVM_ONLY  // JVT-W081
						     rcMbDataAccess.getMbData().getMotionSkipFlag() ||
#endif  // JVT-W081
						   ( rcMbDataAccess.getMbData().is8x8TrafoFlagPresent() &&
                              !rcMbDataAccess.getMbData().isIntra4x4() ) ) );
 			//-- JVT-R091
			RNOK( xWriteTextureInfo( rcMbDataAccess, pcMbDataAccessBase, rcMbDataAccess.getMbTCoeffs(), bTrafo8x8Flag ) );
			//--
    }
  }

#if JMVM_ONLY  // JVT-W081
  if ( rcMbDataAccess.getMbData().getMotionSkipFlag() )
  {
	  rcMbDataAccess.getMbData().setMbMode( MODE_SKIP );
	  if( rcMbDataAccess.getSH().isInterB() )
	  {
		  rcMbDataAccess.getMbData().setFwdBwd( 0x3333 );          
	  }
	  else
	  {
		  rcMbDataAccess.getMbData().setFwdBwd( 0x1111 );
	  }
  }
#endif  // JVT-W081

  //--- write terminating bit ---
  RNOK( m_pcMbSymbolWriteIf->terminatingBit ( bTerminateSlice ? 1:0 ) );

  if( bTerminateSlice )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性极品少妇| 国产精品福利一区| 国产在线播放一区三区四| 精品剧情v国产在线观看在线| 狠狠色伊人亚洲综合成人| 国产欧美一区二区精品忘忧草| 成人在线综合网站| 一区二区在线观看视频在线观看| 欧美日韩精品免费观看视频| 麻豆91精品91久久久的内涵| 久久久久9999亚洲精品| 色呦呦日韩精品| 首页亚洲欧美制服丝腿| 久久影院午夜论| 91在线视频免费观看| 亚洲网友自拍偷拍| 日韩免费在线观看| 成人a级免费电影| 一区二区视频免费在线观看| 91精品国产色综合久久不卡蜜臀 | 99视频一区二区三区| 亚洲自拍偷拍欧美| 欧美va亚洲va香蕉在线| 波多野结衣91| 五月天网站亚洲| 国产亚洲一区二区三区四区| 一本一道久久a久久精品综合蜜臀| 日韩国产精品久久久| 国产日韩精品一区二区三区在线| 在线观看视频一区| 精品系列免费在线观看| 亚洲欧美国产高清| 日韩免费看的电影| 91在线观看一区二区| 亚洲色图在线看| 日韩欧美资源站| 99精品一区二区| 美国欧美日韩国产在线播放| 亚洲欧洲精品成人久久奇米网| 欧美一区二区美女| 成人av网址在线| 日韩精品久久理论片| 国产精品国产三级国产aⅴ入口 | 亚洲男帅同性gay1069| 欧美精品在线观看一区二区| 高清不卡一二三区| 偷窥少妇高潮呻吟av久久免费| 国产偷国产偷精品高清尤物| 欧美午夜寂寞影院| 成人激情小说乱人伦| 日韩电影在线看| 亚洲伦理在线精品| 久久精品亚洲国产奇米99| 欧美日韩情趣电影| www.欧美色图| 国产在线精品一区二区不卡了 | 日韩欧美中文一区二区| 91色视频在线| 国产乱妇无码大片在线观看| 五月天一区二区| 亚洲欧美国产77777| 久久久久亚洲蜜桃| 欧美日韩一区二区三区四区五区 | 欧美精品黑人性xxxx| a亚洲天堂av| 国产成人亚洲精品青草天美| 美腿丝袜亚洲三区| 亚洲愉拍自拍另类高清精品| 国产精品国产三级国产aⅴ无密码| 精品久久久久av影院 | 欧美激情一区二区三区不卡| 欧美一区二区视频在线观看2022| 在线视频国内自拍亚洲视频| 成人av先锋影音| 国产一区二区伦理片| 蜜桃视频第一区免费观看| 一区二区高清在线| 亚洲人成精品久久久久| 国产精品乱码一区二区三区软件 | 日本精品裸体写真集在线观看| 国产精品亚洲第一| 热久久国产精品| 五月天婷婷综合| 亚洲成人免费视频| 亚洲丰满少妇videoshd| 综合激情成人伊人| 中文字幕国产一区| 国产嫩草影院久久久久| 精品蜜桃在线看| 日韩欧美国产一区二区三区| 在线播放/欧美激情| 欧美综合欧美视频| 色综合亚洲欧洲| av一区二区三区在线| 成人在线视频一区二区| 高潮精品一区videoshd| 精品一区二区三区影院在线午夜| 日本 国产 欧美色综合| 丝袜美腿亚洲一区二区图片| 性做久久久久久免费观看| 亚洲成人午夜电影| 亚洲成av人影院| 99r国产精品| 成人福利电影精品一区二区在线观看| 国产精品一区二区免费不卡| 国产一区二区三区日韩| 国产精品一区二区在线看| 国产剧情在线观看一区二区| 国产精品羞羞答答xxdd| 国产精品夜夜嗨| 成人午夜在线播放| www.色综合.com| 91看片淫黄大片一级在线观看| 91亚洲永久精品| 91久久精品一区二区| 欧美性感一类影片在线播放| 欧美亚洲综合色| 欧美精选一区二区| 欧美不卡123| 国产农村妇女毛片精品久久麻豆| 欧美国产精品劲爆| 国产精品三级视频| 亚洲色大成网站www久久九九| 亚洲日本一区二区| 亚洲v精品v日韩v欧美v专区| 蜜臀久久久久久久| 国模一区二区三区白浆| 国产xxx精品视频大全| 91女神在线视频| 欧美三区在线观看| 欧美一区二区精品久久911| 精品国产三级电影在线观看| 久久精品人人爽人人爽| 中文字幕色av一区二区三区| 一区二区高清视频在线观看| 日本aⅴ免费视频一区二区三区| 激情欧美一区二区三区在线观看| 国产91对白在线观看九色| 99热99精品| 欧美精品久久99久久在免费线| 日韩视频在线你懂得| 国产日韩精品一区二区三区| 中文字幕亚洲视频| 首页综合国产亚洲丝袜| 国产伦精品一区二区三区免费| 99精品国产视频| 欧美日韩1区2区| 精品国产乱码久久久久久影片| 国产精品不卡一区二区三区| 亚洲图片自拍偷拍| 久久国产婷婷国产香蕉| 成人免费高清在线| 欧美三级电影在线看| 日韩精品中文字幕一区二区三区 | 亚洲精品少妇30p| 免费av成人在线| av一区二区三区四区| 4438亚洲最大| 国产精品久久久久久久午夜片 | 五月激情丁香一区二区三区| 国产一区二区久久| 欧美色视频一区| 久久蜜臀精品av| 亚洲五码中文字幕| 国产成人免费视频| 欧美精品乱人伦久久久久久| 日本一区二区三区dvd视频在线| 亚洲综合另类小说| 国产精品1024| 91精品国产一区二区人妖| 国产精品久久久久久久久动漫| 日本 国产 欧美色综合| 91亚洲精华国产精华精华液| 日韩一级在线观看| 一区二区三区视频在线看| 国产乱子伦视频一区二区三区| 欧美日韩一区久久| 国产精品久久久久婷婷| 麻豆成人免费电影| 欧美午夜精品一区二区蜜桃| 欧美国产精品劲爆| 久久精品99国产精品日本| 一本高清dvd不卡在线观看 | 国产日韩亚洲欧美综合| 日韩国产欧美在线视频| 一本一道久久a久久精品综合蜜臀| 亚洲精品一区二区三区福利 | 国产成人精品网址| 欧美一级日韩免费不卡| 亚洲精品成人少妇| 国产.精品.日韩.另类.中文.在线.播放| 中文字幕亚洲一区二区av在线| 麻豆成人91精品二区三区| 91国产视频在线观看| 欧美国产日韩在线观看| 久久成人久久爱| 制服丝袜在线91| 亚洲综合在线观看视频| 成人av网站免费| 久久免费美女视频|