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

📄 shpenc.cpp

📁 《Visual C++小波变换技术与工程实践》靳济芳编著的光盘程序。
💻 CPP
📖 第 1 页 / 共 4 页
字号:
			m_pbitstrmShapeMBOut->setBookmark ();

			// try intra
			UInt nBitsModeIntra = codeShapeModeInter (INTRA_CAE, shpmdColocatedMB);
#ifdef __TRACE_AND_STATS_
			m_pbitstrmOut->trace ("MB_CAE_INTRA_HORIZONTAL_CODING (TRIAL)");
#endif // __TRACE_AND_STATS_
			UInt nBitsHIntra = encodeCAEIntra (INTRA_CAE, HORIZONTAL);
#ifdef __TRACE_AND_STATS_
			m_pbitstrmOut->trace ("MB_CAE_INTRA_VERTICAL_CODING (TRIAL)");
#endif // __TRACE_AND_STATS_
			UInt nBitsVIntra = encodeCAEIntra (INTRA_CAE, VERTICAL);
			UInt nBitsIntra = nBitsModeIntra + min (nBitsVIntra, nBitsHIntra);

			// try inter
			UInt nBitsMV=0;
			UInt nBitsModeInter = codeShapeModeInter (pmbmd->m_shpmd, shpmdColocatedMB);
			if(pmbmd->m_shpmd==INTER_CAE_MVDNZ)
				nBitsMV = encodeMVDS (mvBYD);
#ifdef __TRACE_AND_STATS_
			m_pbitstrmOut->trace ("MB_CAE_INTER_VERTICAL_CODING (TRIAL)");
#endif // __TRACE_AND_STATS_
			UInt nBitsVInter = encodeCAEInter (pmbmd->m_shpmd, VERTICAL);
#ifdef __TRACE_AND_STATS_
			m_pbitstrmOut->trace ("MB_CAE_INTER_HORIZONTAL_CODING (TRIAL)");
#endif // __TRACE_AND_STATS_
			UInt nBitsHInter = encodeCAEInter (pmbmd->m_shpmd, HORIZONTAL);
			UInt nBitsInter = nBitsModeInter + nBitsMV + min (nBitsVInter, nBitsHInter);

			m_pbitstrmShapeMBOut->gotoBookmark ();
			
			if (nBitsInter < nBitsIntra)
			{
				// choose inter coding
#ifdef __TRACE_AND_STATS_
				m_pbitstrmOut->trace ("MB_CAE_INTER_CODING (REAL)");
				m_pbitstrmOut->trace (mvShapeMVP, "MB_SHP_MV_PRED (half pel)");
				m_pbitstrmOut->trace (*pmvBY, "MB_SHP_MV (half pel)");
				m_pbitstrmOut->trace (mvBYD, "MB_SHP_MVD (half pel)");
#endif // __TRACE_AND_STATS_
				codeShapeModeInter (pmbmd->m_shpmd, shpmdColocatedMB);
				if(pmbmd->m_shpmd==INTER_CAE_MVDNZ)
					encodeMVDS (mvBYD);
				if(nBitsVInter<nBitsHInter)
					encodeCAEInter (pmbmd->m_shpmd, VERTICAL);
				else
					encodeCAEInter (pmbmd->m_shpmd, HORIZONTAL);
				return nBitsInter;
			}
			else
			{
				// choose intra coding
#ifdef __TRACE_AND_STATS_
				m_pbitstrmOut->trace ("MB_CAE_INTRA_CODING (REAL)");
#endif // __TRACE_AND_STATS_
				pmvBY->iMVX = NOT_MV;
				pmvBY->iMVY = NOT_MV;
				pmbmd->m_shpmd = INTRA_CAE;
				codeShapeModeInter (pmbmd->m_shpmd, shpmdColocatedMB);
				if(nBitsVIntra<nBitsHIntra)
					encodeCAEIntra (pmbmd->m_shpmd, VERTICAL);
				else
					encodeCAEIntra (pmbmd->m_shpmd, HORIZONTAL);
				return nBitsIntra;
			}
		}
	case MVDZ_NOUPDT:
	case MVDNZ_NOUPDT:
		{
#ifdef __TRACE_AND_STATS_
			m_pbitstrmOut->trace ("MB_CAE_INTER_CODING_NO_UPDATE");
			m_pbitstrmOut->trace (mvShapeMVP, "MB_SHP_MV_PRED (half pel)");
			m_pbitstrmOut->trace (*pmvBY, "MB_SHP_MV (half pel)");
			m_pbitstrmOut->trace (mvBYD, "MB_SHP_MVD (half pel)");
#endif // __TRACE_AND_STATS_
			copyReconShapeToMbAndRef (m_ppxlcCurrMBBY, ppxlcSrcFrm, m_puciPredBAB->pixels (), MC_BAB_SIZE, MC_BAB_BORDER);
#ifdef __TRACE_AND_STATS_
			m_pbitstrmOut->trace ((PixelC *)m_puciPredBAB->pixels(), MC_BAB_SIZE, MC_BAB_SIZE, "MB_MC_PRED_BAB");
#endif // __TRACE_AND_STATS_
			Int nBits = codeShapeModeInter (pmbmd->m_shpmd, shpmdColocatedMB);
			if(pmbmd->m_shpmd==MVDNZ_NOUPDT)
				nBits += encodeMVDS (mvBYD);	
			return nBits;
		}
	default:
		assert(FALSE);
		return 0;
	}
}

//OBSS_SAIT_991015
//for SI coding -PVOP
Int CVideoObjectEncoder::codeSIShapePVOP (PixelC* ppxlcSrcFrm,
										 CVOPU8YUVBA* pvopcRefQ,
										 CMBMode* pmbmd, 
										 const ShapeMode& shpmdColocatedMB,
										 const CMotionVector* pmv, 
										 CMotionVector* pmvBY, 
										 CoordI iX, CoordI iY, 
										 Int iMBX, Int iMBY)
{
	m_iInverseCR = 1;
	m_iWidthCurrBAB = BAB_SIZE;
	pmbmd->m_shpssmd = UNDEFINED;
	CMotionVector mvBYD (0, 0);

#ifdef __TRACE_AND_STATS_
	if(pmbmd->m_rgTranspStatus [0] == NONE)
		m_pbitstrmOut->trace ("ORIGINAL BAB IS ALL OPAQUE");
	else if(pmbmd->m_rgTranspStatus [0] == ALL)
		m_pbitstrmOut->trace ("ORIGINAL BAB IS ALL TRANSP");
	else
		m_pbitstrmOut->trace (m_ppxlcCurrMBBY, MB_SIZE, MB_SIZE, "ORIGINAL_BAB");
#endif // __TRACE_AND_STATS_

	Int iMBnum = VPMBnum(iMBX, iMBY);
	m_bVPNoLeft = bVPNoLeft(iMBnum, iMBX);
	m_bVPNoTop = bVPNoTop(iMBnum);
	m_bVPNoRightTop = bVPNoRightTop(iMBnum, iMBX);
	m_bVPNoLeftTop = bVPNoLeftTop(iMBnum, iMBX);
	m_bVPNoRight = bVPNoRight(iMBX);
	m_bVPNoBottom = bVPNoBottom(iMBY);

	motionCompBY ((PixelC*) m_puciPredBAB->pixels (),
				  (PixelC*) pvopcRefQ->getPlane (BY_PLANE)->pixels (),
				  iX-1, 		
				  iY-1);	//-1 due to 18x18 motion comp
	pmvBY->iMVX = 0;
	pmvBY->iMVY = 0;
	if (!isErrorLarge (m_ppxlcCurrMBBY, m_rgiSubBlkIndx16x16, 16,
		m_puciPredBAB->pixels (), m_rgiSubBlkIndx18x18, 18, pmbmd))
		pmbmd->m_shpssmd = INTRA_NOT_CODED; //NO_UPDATE
	else
		pmbmd->m_shpssmd = INTRA_CODED; //CODED

	if((m_volmd.iuseRefShape ==1) && !m_volmd.bShapeOnly) {
		copyReconShapeToMbAndRef (m_ppxlcCurrMBBY, ppxlcSrcFrm, m_puciPredBAB->pixels (), MC_BAB_SIZE, MC_BAB_BORDER);
		Int nBits =0;
		return nBits;
	} 

	switch(pmbmd->m_shpssmd){
	case INTRA_CODED:
	{
	m_bNoShapeChg = TRUE;
	m_iInverseCR = 1;
	m_iWidthCurrBAB = BAB_SIZE;

	// copy data to ReconCurrBAB
	PixelC* ppxlcDst = m_ppxlcReconCurrBAB + BAB_BORDER + BAB_BORDER * TOTAL_BAB_SIZE;
	PixelC* ppxlcSrc = m_ppxlcCurrMBBY;
	Int iUnit = sizeof(PixelC); // NBIT: for memcpy
	Int i;
	for (i = 0; i < MB_SIZE; i++) {
		memcpy (ppxlcDst, ppxlcSrc, MB_SIZE*iUnit);
		ppxlcSrc += MB_SIZE;
		ppxlcDst += BAB_SIZE;
	}

	// make borders
	copyLeftTopBorderFromVOP (ppxlcSrcFrm, m_ppxlcReconCurrBAB);
	makeRightBottomBorder (	m_ppxlcReconCurrBAB, 
							TOTAL_BAB_SIZE,
							(PixelC*)((pvopcRefQ->getPlane (BY_PLANE)->pixels ())+(iY + EXPANDY_REF_FRAME) * m_iFrameWidthY + iX + EXPANDY_REF_FRAME),
							m_iFrameWidthY);

	// assign encoding buffer
	m_rgpxlcCaeSymbol = m_ppxlcReconCurrBAB;
	
	if (m_bNoShapeChg)  copyReconShapeToRef (ppxlcSrcFrm, m_ppxlcReconCurrBAB, TOTAL_BAB_SIZE, BAB_BORDER);
	else				copyReconShapeToMbAndRef (m_ppxlcCurrMBBY, ppxlcSrcFrm, m_ppxlcReconCurrBAB, TOTAL_BAB_SIZE, BAB_BORDER);

#ifdef __TRACE_AND_STATS_
	m_pbitstrmOut->trace ((PixelC *)m_puciPredBAB->pixels(), MC_BAB_SIZE, MC_BAB_SIZE, "MB_MC_PRED_BAB");
	m_pbitstrmOut->trace (m_ppxlcReconCurrBAB, TOTAL_BAB_SIZE, TOTAL_BAB_SIZE, "MB_RECON_BAB (Ignore Borders)");
	m_pbitstrmOut->trace (m_rgpxlcCaeSymbol, m_iWidthCurrBAB , m_iWidthCurrBAB , "MB_ENCODED_BAB");
#endif // __TRACE_AND_STATS_

//OBSS shape mode coding
	UInt nBitsModeIntra=0;
	nBitsModeIntra = codeShapeModeSSIntra (INTRA_CODED, shpmdColocatedMB);

#ifdef __TRACE_AND_STATS_
			m_pbitstrmOut->trace ("INTRA_CODED_CODING");
#endif // __TRACE_AND_STATS_
			UInt nBitsSIIntra = encodeSIIntra (INTRA_CODED, (pvopcRefQ->getPlane (BY_PLANE)->m_pbHorSamplingChk)+iX, (pvopcRefQ->getPlane (BY_PLANE)->m_pbVerSamplingChk)+iY);
#ifdef __TRACE_AND_STATS_
			m_pbitstrmOut->trace ("SI_INTRA_CODING");
#endif // __TRACE_AND_STATS_
			UInt nBitsIntra = nBitsModeIntra + nBitsSIIntra;

	return nBitsIntra;
	}
	case INTRA_NOT_CODED: 
	{
#ifdef __TRACE_AND_STATS_
			m_pbitstrmOut->trace ("SPATIAL_SCALABLE_SHAPE_NO_UPDATE");
			m_pbitstrmOut->trace (*pmvBY, "MB_SHP_MV (half pel)");
#endif // __TRACE_AND_STATS_

		copyReconShapeToMbAndRef (m_ppxlcCurrMBBY, ppxlcSrcFrm, m_puciPredBAB->pixels (), /*BAB_SIZE-BAB_BORDER*2*/MC_BAB_SIZE, /*0*/MC_BAB_BORDER);

#ifdef __TRACE_AND_STATS_
		m_pbitstrmOut->trace ((PixelC *)m_puciPredBAB->pixels(), MC_BAB_SIZE, MC_BAB_SIZE, "MB_MC_PRED_BAB_SS");
#endif // __TRACE_AND_STATS_
//OBSS shape mode coding
		Int nBits=0;
		nBits = codeShapeModeSSIntra (INTRA_NOT_CODED, shpmdColocatedMB);
		return nBits;
	} 
	default:
		assert(FALSE);
		return 0;
	}
}

//for BVOP SI shape coding
Int CVideoObjectEncoder::codeSIShapeBVOP (PixelC* ppxlcSrcFrm,
										 CVOPU8YUVBA* pvopcRefQ0,	//previous VOP
										 CVOPU8YUVBA* pvopcRefQ1,	//lower reference VOP
										 CMBMode* pmbmd, 
										 const ShapeMode& shpmdColocatedMB,
										 const CMotionVector* pmv, 
										 CMotionVector* pmvBY, 
										 CMotionVector* pmvBaseBY, 
										 CoordI iX, CoordI iY, 
										 Int iMBX, Int iMBY)
{

	UInt nBitsIntra=0;
	m_iInverseCR = 1;
	m_iWidthCurrBAB = BAB_SIZE;
	pmbmd->m_shpssmd = UNDEFINED;
	CMotionVector mvBYD (0, 0);

#ifdef __TRACE_AND_STATS_
	if(pmbmd->m_rgTranspStatus [0] == NONE)
		m_pbitstrmOut->trace ("ORIGINAL BAB IS ALL OPAQUE");
	else if(pmbmd->m_rgTranspStatus [0] == ALL)
		m_pbitstrmOut->trace ("ORIGINAL BAB IS ALL TRANSP");
	else
		m_pbitstrmOut->trace (m_ppxlcCurrMBBY, MB_SIZE, MB_SIZE, "ORIGINAL_BAB");
#endif // __TRACE_AND_STATS_

	Int iMBnum = VPMBnum(iMBX, iMBY);
	m_bVPNoLeft = bVPNoLeft(iMBnum, iMBX);
	m_bVPNoTop = bVPNoTop(iMBnum);
	m_bVPNoRightTop = bVPNoRightTop(iMBnum, iMBX);
	m_bVPNoLeftTop = bVPNoLeftTop(iMBnum, iMBX);
	m_bVPNoRight = bVPNoRight(iMBX);
	m_bVPNoBottom = bVPNoBottom(iMBY);

	// copy data to ReconCurrBAB
	PixelC* ppxlcDst = m_ppxlcReconCurrBAB + BAB_BORDER + BAB_BORDER * TOTAL_BAB_SIZE;
	PixelC* ppxlcSrc = m_ppxlcCurrMBBY;
	Int iUnit = sizeof(PixelC); // NBIT: for memcpy
	Int i;
	for (i = 0; i < MB_SIZE; i++) {
		memcpy (ppxlcDst, ppxlcSrc, MB_SIZE*iUnit);
		ppxlcSrc += MB_SIZE;
		ppxlcDst += BAB_SIZE;
	}
	motionCompLowerBY ((PixelC*) m_puciPredBAB->pixels (),
				  (PixelC*) pvopcRefQ1->getPlane (BY_PLANE)->pixels (),
				  iX-1, 		
				  iY-1);	//-1 due to 18x18 motion comp
	
	// make borders
	copyLeftTopBorderFromVOP (ppxlcSrcFrm, m_ppxlcReconCurrBAB);
	makeRightBottomBorder (	m_ppxlcReconCurrBAB, TOTAL_BAB_SIZE,
							(PixelC*)((pvopcRefQ1->getPlane (BY_PLANE)->pixels ())+(iY + EXPANDY_REF_FRAME) * m_iFrameWidthY + iX + EXPANDY_REF_FRAME),
							m_iFrameWidthY);	

	// assign encoding buffer
	m_rgpxlcCaeSymbol = m_ppxlcReconCurrBAB;

	if((m_volmd.iuseRefShape ==1) && !m_volmd.bShapeOnly) {
		copyReconShapeToMbAndRef (m_ppxlcCurrMBBY, ppxlcSrcFrm, m_puciPredBAB->pixels (), MC_BAB_SIZE, MC_BAB_BORDER);
		Int nBits =0;
		return nBits;
	} 

	if (!isErrorLarge (m_ppxlcCurrMBBY, m_rgiSubBlkIndx16x16, 16,
		m_puciPredBAB->pixels (), m_rgiSubBlkIndx18x18, 18, pmbmd)){
		if(!(shpmdColocatedMB == 0 || shpmdColocatedMB == 1)){
			if (pmvBaseBY->iMVX == NOT_MV && pmvBaseBY->iMVY == NOT_MV ){
				pmvBaseBY->iMVX = 0;
				pmvBaseBY->iMVY = 0;
			}

			motionCompBY ((PixelC*) m_puciPredBAB->pixels (),
						  (PixelC*) pvopcRefQ0->getPlane (BY_PLANE)->pixels (),
						  (((pmvBaseBY->iMVX)*m_volmd.ihor_sampling_factor_n_shape+(SIGN(pmvBaseBY->iMVX))*m_volmd.ihor_sampling_factor_m_shape/2)/m_volmd.ihor_sampling_factor_m_shape) + iX - 1,		
						  (((pmvBaseBY->iMVY)*m_volmd.iver_sampling_factor_n_shape+(SIGN(pmvBaseBY->iMVY))*m_volmd.iver_sampling_factor_m_shape/2)/m_volmd.iver_sampling_factor_m_shape) + iY - 1);	//-1 due to 18x18 motion comp

			if (!isErrorLarge (m_ppxlcCurrMBBY, m_rgiSubBlkIndx16x16, 16,
					m_puciPredBAB->pixels (), m_rgiSubBlkIndx18x18, 18, pmbmd)){
					pmvBY->iMVX = (((pmvBaseBY->iMVX)*m_volmd.ihor_sampling_factor_n_shape+(SIGN(pmvBaseBY->iMVX))*m_volmd.ihor_sampling_factor_m_shape/2)/m_volmd.ihor_sampling_factor_m_shape);
					pmvBY->iMVY = (((pmvBaseBY->iMVY)*m_volmd.iver_sampling_factor_n_shape+(SIGN(pmvBaseBY->iMVY))*m_volmd.iver_sampling_factor_m_shape/2)/m_volmd.iver_sampling_factor_m_shape);
					pmbmd->m_shpssmd = INTER_NOT_CODED; //INTER_NO_UPDATE

//INTER_NOT_CODED mode Coding
				#ifdef __TRACE_AND_STATS_
					m_pbitstrmOut->trace ("SCALABLE_SHAPE_INTER_NO_UPDATE");
					m_pbitstrmOut->trace (*pmvBY, "MB_SHP_MV (half pel)");
				#endif // __TRACE_AND_STATS_

				copyReconShapeToMbAndRef (m_ppxlcCurrMBBY, ppxlcSrcFrm, m_puciPredBAB->pixels (), MC_BAB_SIZE, MC_BAB_BORDER);

				#ifdef __TRACE_AND_STATS_
				m_pbitstrmOut->trace ((PixelC *)m_puciPredBAB->pixels(), MC_BAB_SIZE, MC_BAB_SIZE, "MB_MC_PRED_BAB_SS");
				#endif // __TRACE_AND_STATS_
				//OBSS shape mode coding
				Int nBits=0;
				nBits = codeShapeModeSSInter (INTER_NOT_CODED, shpmdColocatedMB);
				return nBits;			
			}
			else {
				motionCompLowerBY ((PixelC*) m_puciPredBAB->pixels (),
							  (PixelC*) pvopcRefQ1->getPlane (BY_PLANE)->pixels (),
							  iX-1, 		
							  iY-1);	//-1 due to 18x18 motion comp
			}
		}
		pmvBY->iMVX = 0;
		pmvBY->iMVY = 0;
		pmbmd->m_shpssmd = INTRA_NOT_CODED; //INTRA_NO_UPDATE

//INTRA_NOT_CODED mode Coding
		#ifdef __TRACE_AND_STATS_
		m_pbitstrmOut->trace ("SCALABLE_SHAPE_INTRA_NO_UPDATE");
		m_pbitstrmOut->trace (*pmvBY, "MB_SHP_MV (half pel)");
		#endif // __TRACE_AND_STATS_

		copyReconShapeToMbAndRef (m_ppxlcCurrMBBY, ppxlcSrcFrm, m_puciPredBAB->pixels (), MC_BAB_SIZE, MC_BAB_BORDER);

		#ifdef __TRACE_AND_STATS_
		m_pbitstrmOut->trace ((PixelC *)m_puciPredBAB->pixels(), MC_BAB_SIZE, MC_BAB_SIZE, "MB_MC_PRED_BAB_SS");
		#endif // __TRACE_AND_STATS_
		//SS shape mode coding
		Int nBits=0;
		nBits = codeShapeModeSSInter (INTRA_NOT_CODED, shpmdColocatedMB);
		return nBits;	
	}
	else {
	m_pbitstrmShapeMBOut->setBookmark ();

//try INTRA_CODED
	UInt nBitsModeIntra = codeShapeModeSSInter (INTRA_CODED, shpmdColocatedMB);
#ifdef __TRACE_AND_STATS_
	m_pbitstrmOut->trace ("SCALABLE_SHAPE_INTRA_CODED_CODING (TRIAL)");
#endif // __TRACE_AND_STATS_
	UInt nBitsSIIntra = encodeSIIntra (INTRA_CODED, (pvopcRefQ1->getPlane (BY_PLANE)->m_pbHorSamplingChk)+iX, (pvopcRefQ1->getPlane (BY_PLANE)->m_pbVerSamplingChk)+iY);
	nBitsIntra = nBitsModeIntra + nBitsSIIntra;

	m_pbitstrmShapeMBOut->gotoBookmark ();		

	
//if lower layer has no motion vector then the current MV is set to (0,0)
	if (pmvBaseBY->iMVX == NOT_MV && pmvBaseBY->iMVY == NOT_MV ){
		pmvBaseBY->iMVX = 0;
		pmvBaseBY->iMVY = 0;
	}

	motionCompBY (	(PixelC*) m_puciPredBAB->pixels (),
					(PixelC*) pvopcRefQ0->getPlane (BY_PLANE)->pixels (),
					(((pmvBaseBY->iMVX)*m_volmd.ihor_sampling_factor_n_shape+(SIGN(pmvBaseBY->iMVX))*m_volmd.ihor_sampling_factor_m_shape/2)/m_volmd.ihor_sampling_factor_m_shape) + iX - 1,		
					(((pmvBaseBY->iMVY)*m_volmd.iver_sampling_factor_n_shape+(SIGN(pmvBaseBY->iMVY))*m_volmd.iver_sampling_factor_m_shape/2)/m_volmd.iver_sampling_factor_m_shape) + iY - 1);	//-1 due to 18x18 motion comp

	if (!isErrorLarge (m_ppxlcCurrMBBY, m_rgiSubBlkIndx16x16, 16,
			m_puciPredBAB->pixels (), m_rgiSubBlkIndx18x18, 18, pmbmd)){
			pmvBY->iMVX = (((pmvBaseBY->iMVX)*m_volmd.ihor_sampling_factor_n_shape+(SIGN(pmvBaseBY->iMVX))*m_volmd.ihor_sampling_factor_m_shape/2)/m_volmd.ihor_sampling_factor_m_shape);
			pmvBY->iMVY = (((pmvBaseBY->iMVY)*m_volmd.iver_sampling_factor_n_shape+(SIGN(pmvBaseBY->iMVY))*m_volmd.iver_sampling_factor_m_shape/2)/m_volmd.iver_sampling_factor_m_shape);
			pmbmd->m_shpssmd = INTER_NOT_CODED; //INTER_NO_UPDATE

//INTER_NOT_CODED mode Coding
			#ifdef __TRACE_AND_STATS_
				m_pbitstrmOut->trace ("SCALABLE_SHAPE_INTER_NO_UPDATE");
				m_pbitstrmOut->trace (*pmvBY, "MB_SHP_MV (half pel)");
			#endif // __TRACE_AND_STATS_

			copyReconShapeToMbAndRef (m_ppxlcCurrMBBY, ppxlcSrcFrm, m_puciPredBAB->pixels (), MC_BAB_SIZE, MC_BAB_BORDER);

			#ifdef __TRACE_AND_STATS_
			m_pbitstrmOut->trace ((PixelC *)m_puciPredBAB->pixels(), MC_BAB_SIZE, MC_BAB_SIZE, "MB_MC_PRED_BAB_SS");
			#endif // __TRACE_AND_STATS_
			//OBSS shape mode coding
			Int nBits=0;
			nBits = codeShapeModeSSInter (INTER_NOT_CODED, shpmdColocatedMB);
			return nBits;			

⌨️ 快捷键说明

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