⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mbdecoder.cpp

📁 JMVM MPEG MVC/3DAV 测试平台 国际通用标准
💻 CPP
📖 第 1 页 / 共 4 页
字号:

  //===== chroma =====
  Int iScaleU  = g_aaiDequantCoef[cCQp.rem()][0] << cCQp.per();
  Int iScaleV  = g_aaiDequantCoef[cCQp.rem()][0] << cCQp.per();
  /* HS: old scaling modified:
     (I did not work for scaling matrices, when QpPer became less than 5 in an FGS enhancement) */
  for( CIdx cIdx; cIdx.isLegal(); cIdx++ )
  {
    RNOK( xScale4x4Block( rcTCoeffs.get( cIdx ), ( cIdx.plane() ? pucScaleV : pucScaleU ), 1, cCQp ) );
  }
  UInt    uiDCIdx;
  TCoeff* piCoeff = rcTCoeffs.get( CIdx(0) );
  for( uiDCIdx = 0; uiDCIdx < 4; uiDCIdx++ )
  {
    piCoeff[16*uiDCIdx] *= iScaleU;
  }
  piCoeff = rcTCoeffs.get( CIdx(4) );
  for( uiDCIdx = 0; uiDCIdx < 4; uiDCIdx++ )
  {
    piCoeff[16*uiDCIdx] *= iScaleV;
  }


  return Err::m_nOK;
}

#if JMVM_ONLY  // JVT-W081
ErrVal MbDecoder::xCopyNeighborMotion( MbDataAccess& rcMbDataAccess,
									   GDV* disparityL0,
									   GDV* disparityL1 )
{
  class MBMotion *pcFoundNeighborMotion;   
  Int ac;
  const Frame* pcVRefPicL0[4];
  const Frame* pcVRefPicL1[4];
  class MBMotion cMbMotionTmp; //JVT-Z021


  if (rcMbDataAccess.getSH().getSPS().getSpsMVC()->getSingleLoopDecoding() ) // JVT-Y042
  {
    //JVT-Z021

	  GDV accGdvL0, accGdvL1;

	  Mv  centerL0, centerL1;

	  Mv  adjOffsetL0, adjOffsetL1; 

	  class MBMotion FMb_new[4];



	  if(rcMbDataAccess.getMbData().m_pcMbImsm->m_iListXFlag == LIST_0)

	  {

		  rcMbDataAccess.GDVtoOrg(disparityL0[0], centerL0);

		  adjOffsetL0.set(rcMbDataAccess.getMbData().m_pcMbImsm->m_cOffset.getHor()-centerL0.getHor(),

			  rcMbDataAccess.getMbData().m_pcMbImsm->m_cOffset.getVer()-centerL0.getVer());

		  accGdvL0.setHor(disparityL0[0].getHor() + adjOffsetL0.getHor());

		  accGdvL0.setVer(disparityL0[0].getVer() + adjOffsetL0.getVer());



		  Int iRefId = (Int)rcMbDataAccess.getSH().getSPS().SpsMVC->m_non_anchor_ref_list0[rcMbDataAccess.getSH().getViewId()][0];

		  Int iMbInFrame = Int(rcMbDataAccess.getSH().getSPS().getMbInFrame());

		  Int iFrameWidthInMbs = rcMbDataAccess.getSH().getSPS().getFrameWidthInMbs();

		  Int iMode = (abs(accGdvL0.getVer()) % 2) * 2 + (abs(accGdvL0.getHor()) % 2);

		  switch(iMode)

		  {

		  case 0:   //aligned

			  {

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId * iMbInFrame + iFrameWidthInMbs * (accGdvL0.getVer()/2) + (accGdvL0.getHor()/2)], FMb_new[0]);

				  rcMbDataAccess.getCombinedMotionInfo(0,FMb_new,cMbMotionTmp);



			  }

			  break;

		  case 1:  //LR

			  {

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL0.getVer()/2)+(accGdvL0.getHor()/2)], FMb_new[0]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL0.getVer()/2)+(accGdvL0.getHor()/2 + 1)], FMb_new[1]);

				  rcMbDataAccess.getCombinedMotionInfo(1,FMb_new,cMbMotionTmp);

			  }

			  break;

		  case 2:  //UpperDown

			  {

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL0.getVer()/2)+(accGdvL0.getHor()/2)], FMb_new[0]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL0.getVer()/2+1)+(accGdvL0.getHor()/2)], FMb_new[1]);

				  rcMbDataAccess.getCombinedMotionInfo(2,FMb_new,cMbMotionTmp);

			  }

			  break;

		  case 3:  //4combined

			  {

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL0.getVer()/2)+(accGdvL0.getHor()/2)], FMb_new[0]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL0.getVer()/2)+(accGdvL0.getHor()/2+1)], FMb_new[1]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL0.getVer()/2+1)+(accGdvL0.getHor()/2)], FMb_new[2]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL0.getVer()/2+1)+(accGdvL0.getHor()/2+1)], FMb_new[3]);

				  rcMbDataAccess.getCombinedMotionInfo(3,FMb_new,cMbMotionTmp);        

			  }

			  break;

		  default:

			  return Err::m_nERR;



		  } //switch  





	  }

	  else

	  {

		  rcMbDataAccess.GDVtoOrg(disparityL1[0], centerL1);

		  adjOffsetL1.set(rcMbDataAccess.getMbData().m_pcMbImsm->m_cOffset.getHor()-centerL1.getHor(),

			  rcMbDataAccess.getMbData().m_pcMbImsm->m_cOffset.getVer()-centerL1.getVer());

		  accGdvL1.setHor(disparityL1[0].getHor() + adjOffsetL1.getHor());

		  accGdvL1.setVer(disparityL1[0].getVer() + adjOffsetL1.getVer());



		  Int iRefId = (Int)rcMbDataAccess.getSH().getSPS().SpsMVC->m_non_anchor_ref_list1[rcMbDataAccess.getSH().getViewId()][0];

		  Int iMbInFrame = Int(rcMbDataAccess.getSH().getSPS().getMbInFrame());

		  Int iFrameWidthInMbs = rcMbDataAccess.getSH().getSPS().getFrameWidthInMbs();

		  Int iMode = (abs(accGdvL1.getVer()) % 2) * 2 + (abs(accGdvL1.getHor()) % 2);

		  switch(iMode)

		  {

		  case 0:   //aligned

			  {

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId * iMbInFrame + iFrameWidthInMbs * (accGdvL1.getVer()/2) + (accGdvL1.getHor()/2)], FMb_new[0]);

				  rcMbDataAccess.getCombinedMotionInfo(0,FMb_new,cMbMotionTmp);



			  }

			  break;

		  case 1:  //LR

			  {

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL1.getVer()/2)+(accGdvL1.getHor()/2)], FMb_new[0]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL1.getVer()/2)+(accGdvL1.getHor()/2 + 1)], FMb_new[1]);

				  rcMbDataAccess.getCombinedMotionInfo(1,FMb_new,cMbMotionTmp);

			  }

			  break;

		  case 2:  //UpperDown

			  {

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL1.getVer()/2)+(accGdvL1.getHor()/2)], FMb_new[0]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL1.getVer()/2+1)+(accGdvL1.getHor()/2)], FMb_new[1]);

				  rcMbDataAccess.getCombinedMotionInfo(2,FMb_new,cMbMotionTmp);

			  }

			  break;

		  case 3:  //4combined

			  {

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL1.getVer()/2)+(accGdvL1.getHor()/2)], FMb_new[0]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL1.getVer()/2)+(accGdvL1.getHor()/2+1)], FMb_new[1]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL1.getVer()/2+1)+(accGdvL1.getHor()/2)], FMb_new[2]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL1.getVer()/2+1)+(accGdvL1.getHor()/2+1)], FMb_new[3]);

				  rcMbDataAccess.getCombinedMotionInfo(3,FMb_new,cMbMotionTmp);        

			  }

			  break;

		  default:

			  return Err::m_nERR;



		  } //switch

	  }

	  pcFoundNeighborMotion = &cMbMotionTmp;

//JVT-Z021
  }
  else
  {
//JVT-Z021

	  GDV accGdvL0, accGdvL1;

	  Mv  centerL0, centerL1;

	  Mv  adjOffsetL0, adjOffsetL1; 

	  class MBMotion FMb_new[4];



	  if(rcMbDataAccess.getMbData().m_pcMbImsm->m_iListXFlag == LIST_0)

	  {

		  rcMbDataAccess.GDVtoOrg(disparityL0[0], centerL0);



		  adjOffsetL0.set(rcMbDataAccess.getMbData().m_pcMbImsm->m_cOffset.getHor()-centerL0.getHor(),

			  rcMbDataAccess.getMbData().m_pcMbImsm->m_cOffset.getVer()-centerL0.getVer());

		  accGdvL0.setHor(disparityL0[0].getHor() + adjOffsetL0.getHor());

		  accGdvL0.setVer(disparityL0[0].getVer() + adjOffsetL0.getVer());



		  Int iRefId = (Int)rcMbDataAccess.getSH().getSPS().SpsMVC->m_non_anchor_ref_list0[rcMbDataAccess.getSH().getViewId()][0];

		  Int iMbInFrame = Int(rcMbDataAccess.getSH().getSPS().getMbInFrame());

		  Int iFrameWidthInMbs = rcMbDataAccess.getSH().getSPS().getFrameWidthInMbs();

		  Int iMode = (abs(accGdvL0.getVer()) % 2) * 2 + (abs(accGdvL0.getHor()) % 2);

		  switch(iMode)

		  {

		  case 0:   //aligned

			  {

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId * iMbInFrame + iFrameWidthInMbs * (accGdvL0.getVer()/2) + (accGdvL0.getHor()/2)], FMb_new[0]);

				  rcMbDataAccess.getCombinedMotionInfo(0,FMb_new,cMbMotionTmp);



			  }

			  break;

		  case 1:  //LR

			  {

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL0.getVer()/2)+(accGdvL0.getHor()/2)], FMb_new[0]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL0.getVer()/2)+(accGdvL0.getHor()/2 + 1)], FMb_new[1]);

				  rcMbDataAccess.getCombinedMotionInfo(1,FMb_new,cMbMotionTmp);

			  }

			  break;

		  case 2:  //UpperDown

			  {

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL0.getVer()/2)+(accGdvL0.getHor()/2)], FMb_new[0]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL0.getVer()/2+1)+(accGdvL0.getHor()/2)], FMb_new[1]);

				  rcMbDataAccess.getCombinedMotionInfo(2,FMb_new,cMbMotionTmp);

			  }

			  break;

		  case 3:  //4combined

			  {

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL0.getVer()/2)+(accGdvL0.getHor()/2)], FMb_new[0]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL0.getVer()/2)+(accGdvL0.getHor()/2+1)], FMb_new[1]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL0.getVer()/2+1)+(accGdvL0.getHor()/2)], FMb_new[2]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL0.getVer()/2+1)+(accGdvL0.getHor()/2+1)], FMb_new[3]);

				  rcMbDataAccess.getCombinedMotionInfo(3,FMb_new,cMbMotionTmp);        

			  }

			  break;

		  default:

			  return Err::m_nERR;



		  } //switch

	  }

	  else

	  {

		  rcMbDataAccess.GDVtoOrg(disparityL1[0], centerL1);

		  adjOffsetL1.set(rcMbDataAccess.getMbData().m_pcMbImsm->m_cOffset.getHor()-centerL1.getHor(),

			  rcMbDataAccess.getMbData().m_pcMbImsm->m_cOffset.getVer()-centerL1.getVer());

		  accGdvL1.setHor(disparityL1[0].getHor() + adjOffsetL1.getHor());

		  accGdvL1.setVer(disparityL1[0].getVer() + adjOffsetL1.getVer());



		  Int iRefId = (Int)rcMbDataAccess.getSH().getSPS().SpsMVC->m_non_anchor_ref_list1[rcMbDataAccess.getSH().getViewId()][0];

		  Int iMbInFrame = Int(rcMbDataAccess.getSH().getSPS().getMbInFrame());

		  Int iFrameWidthInMbs = rcMbDataAccess.getSH().getSPS().getFrameWidthInMbs();



		  Int iMode = (abs(accGdvL1.getVer()) % 2) * 2 + (abs(accGdvL1.getHor()) % 2);

		  switch(iMode)

		  {

		  case 0:   //aligned

			  {

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId * iMbInFrame + iFrameWidthInMbs * (accGdvL1.getVer()/2) + (accGdvL1.getHor()/2)], FMb_new[0]);

				  rcMbDataAccess.getCombinedMotionInfo(0,FMb_new,cMbMotionTmp);



			  }

			  break;

		  case 1:  //LR

			  {

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL1.getVer()/2)+(accGdvL1.getHor()/2)], FMb_new[0]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL1.getVer()/2)+(accGdvL1.getHor()/2 + 1)], FMb_new[1]);

				  rcMbDataAccess.getCombinedMotionInfo(1,FMb_new,cMbMotionTmp);

			  }

			  break;

		  case 2:  //UpDown

			  {

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL1.getVer()/2)+(accGdvL1.getHor()/2)], FMb_new[0]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL1.getVer()/2+1)+(accGdvL1.getHor()/2)], FMb_new[1]);

				  rcMbDataAccess.getCombinedMotionInfo(2,FMb_new,cMbMotionTmp);

			  }

			  break;

		  case 3:  //4combined

			  {

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL1.getVer()/2)+(accGdvL1.getHor()/2)], FMb_new[0]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL1.getVer()/2)+(accGdvL1.getHor()/2+1)], FMb_new[1]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL1.getVer()/2+1)+(accGdvL1.getHor()/2)], FMb_new[2]);

				  rcMbDataAccess.MbMotionCopy(pcNeighbor[iRefId*iMbInFrame+iFrameWidthInMbs*(accGdvL1.getVer()/2+1)+(accGdvL1.getHor()/2+1)], FMb_new[3]);

				  rcMbDataAccess.getCombinedMotionInfo(3,FMb_new,cMbMotionTmp);        

			  }

			  break;

		  default:

			  return Err::m_nERR;

		  } //switch  

	  }



	  pcFoundNeighborMotion = &cMbMotionTmp;

  }  
  
  if(!pcFoundNeighborMotion)
	  Err::m_nERR;

  rcMbDataAccess.getMbMvdData( LIST_0 ).clear();
  rcMbDataAccess.getMbMvdData( LIST_1 ).clear();
  
  rcMbDataAccess.getMbData().setMbMode(MbMode(pcFoundNeighborMotion->m_iViewMode));
  rcMbDataAccess.getMbData().setFwdBwd(pcFoundNeighborMotion->m_uiFwdBwd); 	
  rcMbDataAccess.getMbData().setBlkMode(B_8x8_0, BlkMode(pcFoundNeighborMotion->m_iBlkMode[0]));
  rcMbDataAccess.getMbData().setBlkMode(B_8x8_1, BlkMode(pcFoundNeighborMotion->m_iBlkMode[1]));
  rcMbDataAccess.getMbData().setBlkMode(B_8x8_2, BlkMode(pcFoundNeighborMotion->m_iBlkMode[2]));
  rcMbDataAccess.getMbData().setBlkMode(B_8x8_3, BlkMode(pcFoundNeighborMotion->m_iBlkMode[3]));

  for (ac=0; ac<16; ac++)
  {
    rcMbDataAccess.getMbMotionData( LIST_0).m_acMv[ac].m_sHor = pcFoundNeighborMotion->m_iMvL0Hor[ac];
    rcMbDataAccess.getMbMotionData( LIST_0).m_acMv[ac].m_sVer = pcFoundNeighborMotion->m_iMvL0Ver[ac];
    rcMbDataAccess.getMbMotionData( LIST_1).m_acMv[ac].m_sHor = pcFoundNeighborMotion->m_iMvL1Hor[ac];
    rcMbDataAccess.getMbMotionData( LIST_1).m_acMv[ac].m_sVer = pcFoundNeighborMotion->m_iMvL1Ver[ac];
  }
  
  for (ac=0; ac<4; ac++)
  { 
    if (pcFoundNeighborMotion->m_iRefMultiViewL0[ac] == BLOCK_NOT_AVAILABLE)
	{
		rcMbDataAccess.getMbMotionData(LIST_0).m_ascRefIdx[ac] = BLOCK_NOT_AVAILABLE; 
		pcVRefPicL0[ac] =0;
	}
	else if (pcFoundNeighborMotion->m_iRefMultiViewL0[ac] == BLOCK_NOT_PREDICTED)
	{
		rcMbDataAccess.getMbMotionData(LIST_0).m_ascRefIdx[ac] = BLOCK_NOT_PREDICTED;
		pcVRefPicL0[ac] =0;
	}
	else
	{
		if (rcMbDataAccess.getSH().getRefListSize(LIST_0))
		{
			rcMbDataAccess.getMbMotionData(LIST_0).m_ascRefIdx[ac] = pcFoundNeighborMotion->m_iRefMultiViewL0[ac];
			pcVRefPicL0[ac] = rcMbDataAccess.getSH().getRefPic(pcFoundNeighborMotion->m_iRefMultiViewL0[ac], LIST_0).getFrame(); 
			
			if (ac==0) rcMbDataAccess.getMbMotionData( LIST_0 ).setRefPic(pcVRefPicL0[0], PART_8x8_0);
			if (ac==1) rcMbDataAccess.getMbMotionData( LIST_0 ).setRefPic(pcVRefPicL0[1], PART_8x8_1);
			if (ac==2) rcMbDataAccess.getMbMotionData( LIST_0 ).setRefPic(pcVRefPicL0[2], PART_8x8_2);
			if (ac==3) rcMbDataAccess.getMbMotionData( LIST_0 ).setRefPic(pcVRefPicL0[3], PART_8x8_3);
		}
		else
		{					  
			Err::m_nERR;
		}
	}		  
	
	if (pcFoundNeighborMotion->m_iRefMultiViewL1[ac]== BLOCK_NOT_AVAILABLE)
	{
		rcMbDataAccess.getMbMotionData(LIST_1).m_ascRefIdx[ac] = BLOCK_NOT_AVAILABLE; 
		pcVRefPicL1[ac]=0;
	}
	else if (pcFoundNeighborMotion->m_iRefMultiViewL1[ac]== BLOCK_NOT_PREDICTED)
	{
		rcMbDataAccess.getMbMotionData(LIST_1).m_ascRefIdx[ac] = BLOCK_NOT_PREDICTED;
		pcVRefPicL1[ac]=0;
	}
	else
	{
		if (rcMbDataAccess.getSH().getRefListSize(LIST_1))
		{
			rcMbDataAccess.getMbMotionData(LIST_1).m_ascRefIdx[ac] = pcFoundNeighborMotion->m_iRefMultiViewL1[ac];
			pcVRefPicL1[ac] = rcMbDataAccess.getSH().getRefPic(pcFoundNeighborMotion->m_iRefMultiViewL1[ac], LIST_1).getFrame(); 
			
			if (ac==0) rcMbDataAccess.getMbMotionData( LIST_1 ).setRefPic(pcVRefPicL1[0], PART_8x8_0);
			if (ac==1) rcMbDataAccess.getMbMotionData( LIST_1 ).setRefPic(pcVRefPicL1[1], PART_8x8_1); 
			if (ac==2) rcMbDataAccess.getMbMotionData( LIST_1 ).setRefPic(pcVRefPicL1[2], PART_8x8_2); 
			if (ac==3) rcMbDataAccess.getMbMotionData( LIST_1 ).setRefPic(pcVRefPicL1[3], PART_8x8_3);
		}
		else
		{					  
			Err::m_nERR;	
		}
	}		
  }
	  
  return Err::m_nOK;
}

//JVT-Z021

ErrVal MbDecoder::getNeighborMbMotionInfo(	MbDataAccess&   rcMbDataAccess, 

										  GDV* disparityL0, 

										  GDV* disparityL1,

										  MBMotion& cMbMotionTmp)

{

	Mv cMv;

	UInt uiIdx;

	SliceHeader& rcSliceHeader = rcMbDataAccess.getSH();



	if(cMbMotionTmp.m_iViewMode != INTRA_4X4)

	{

		Mv cCenterL0, cCenterL1;

		rcMbDataAccess.getOrgMbMotionInfo(disparityL0[0], disparityL1[0]);

		rcMbDataAccess.getNewMbMotionInfo(disparityL0[0], disparityL1[0], cCenterL0, cCenterL1);



		if(rcMbDataAccess.getMbData().m_pcMbImsm->m_iListXFlag==LIST_0)

		{



			cMv.set((rcMbDataAccess.getMbData().m_pcMbImsm->m_cOffset.getHor()+ 9/2),

				(rcMbDataAccess.getMbData().m_pcMbImsm->m_cOffset.getVer() + 9/2));



			uiIdx = cMv.getVer()*9 + cMv.getHor();

			cMbMotionTmp = rcMbDataAccess.getSH().getMbMotionInfo(LIST_0, uiIdx);

		}

		else if(rcMbDataAccess.getMbData().m_pcMbImsm->m_iListXFlag==LIST_1)

		{



			cMv.set((rcMbDataAccess.getMbData().m_pcMbImsm->m_cOffset.getHor()+ 9/2),

				(rcMbDataAccess.getMbData().m_pcMbImsm->m_cOffset.getVer() + 9/2));



			uiIdx = cMv.getVer()*9 + cMv.getHor();

			cMbMotionTmp = rcMbDataAccess.getSH().getMbMotionInfo(LIST_1, uiIdx);

		}

		else

		{

			cMbMotionTmp.m_iViewMode = INTRA_4X4;

		}

	}



	return Err::m_nOK;

}

//JVT-Z021

#endif // JVT-W081

H264AVC_NAMESPACE_END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -