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

📄 sys_encoder_sesenc.cpp

📁 完整的RTP RTSP代码库
💻 CPP
📖 第 1 页 / 共 5 页
字号:
							nppic = (npic - 1)/(volmd.iBbetweenP + 1);						}						rgpvoenc [BASE_LAYER] -> m_tm5rc.tm5rc_init_GOP(nppic, npic - nppic - 1); //  np, nb remain					}					// encode IVOP					encodeVideoObject(bObjectExists, bPrevObjectExists, iSearchFrame, IVOP, bCachedRefDump ? DUMP_PREV : DUMP_NONE, // modified by Sharp (99/1/27)									  iVO, iVOrelative, BASE_LAYER, 									  pfYuvSrc, pfSegSrc, ppfAuxSrc,                    rgpfReconYUV, rgpfReconSeg, rgpfReconAux, 									  pxlcObjColor, rgpvoenc, volmd, rgpostrm);					bCachedRefDump = TRUE; // need to output this frame later					bCachedRefCoded = bObjectExists;					iPCount = volmd.iPbetweenI;//OBSS_SAIT_991015					if (m_rgbSpatialScalability [iVOrelative] && !bTemporalScalability ) { // modified by Sharp                        pvopcBasePVOPQuant = new CVOPU8YUVBA (*(rgpvoenc [BASE_LAYER]->pvopcReconCurr ()),												        	rgpvoenc [BASE_LAYER]->pvopcReconCurr ()->whereY());//for OBSS BVOP_BASE : stack	//OBSSFIX_MODE3						if(rgpvoenc[ENHN_LAYER]->volmd().fAUsage == ONE_BIT &&						 !(rgpvoenc[ENHN_LAYER]->volmd().iEnhnType != 0 && rgpvoenc[ENHN_LAYER]->volmd().iuseRefShape == 1)) {//						if(rgpvoenc[ENHN_LAYER]->volmd().fAUsage == ONE_BIT) {//~OBSSFIX_MODE3							pBase_stack_rctBase = rgpvoenc [BASE_LAYER] -> getBaseRct();							iBase_stack_x = rgpvoenc [BASE_LAYER] -> m_iNumMBX;									iBase_stack_y = rgpvoenc [BASE_LAYER] -> m_iNumMBY;									pBase_stack_Baseshpmd = new ShapeMode [iBase_stack_x*iBase_stack_y];							Int i;							for(i=0;i<iBase_stack_x*iBase_stack_y;i++)								pBase_stack_Baseshpmd[i] = (rgpvoenc[BASE_LAYER] ->shapemd())[i];							pBase_stack_mvBaseBY = new CMotionVector [iBase_stack_x*iBase_stack_y];							for(i=0;i<iBase_stack_x*iBase_stack_y;i++)								pBase_stack_mvBaseBY[i] = (rgpvoenc[BASE_LAYER] ->getmvBaseBY())[i];						} //~for OBSS BVOP_BASE : stack						}//~OBSS_SAIT_991015// begin: added by Sharp (98/2/12)					else if (m_rgbSpatialScalability [iVOrelative] && bTemporalScalability)						pBufP2->getBuf( rgpvoenc[BASE_LAYER] );// end: added by Sharp (98/2/12)				}				else				{					// encoder PVOP					encodeVideoObject(bObjectExists, bPrevObjectExists, iSearchFrame, (m_rguiSpriteUsage [iVOrelative]==0 ? PVOP : SPRITE), bCachedRefDump ? DUMP_PREV : DUMP_NONE, // modified by Sharp (99/1/27) // GMC									  iVO, iVOrelative, BASE_LAYER, 									  pfYuvSrcSpatialEnhn, pfSegSrc, ppfAuxSrc,                    rgpfReconYUV, rgpfReconSeg, rgpfReconAux,									  pxlcObjColor, rgpvoenc, volmd, rgpostrm);					bCachedRefDump = TRUE; // need to output this frame later					bCachedRefCoded = bObjectExists;//OBSS_SAIT_991015					if (m_rgbSpatialScalability [iVOrelative] && !bTemporalScalability ) { // modified by Sharp (98/2/12)						pvopcBasePVOPQuant = new CVOPU8YUVBA (*(rgpvoenc [BASE_LAYER]->pvopcReconCurr ()),												        	rgpvoenc [BASE_LAYER]->pvopcReconCurr ()->whereY());						//OBSS BVOP_BASE : stack//OBSSFIX_MODE3						if(rgpvoenc[ENHN_LAYER]->volmd().fAUsage == ONE_BIT &&						  !(rgpvoenc[ENHN_LAYER]->volmd().iEnhnType != 0 && rgpvoenc[ENHN_LAYER]->volmd().iuseRefShape == 1 )) {//						if(rgpvoenc[ENHN_LAYER]->volmd().fAUsage == ONE_BIT) {//~OBSSFIX_MODE3							pBase_stack_rctBase = rgpvoenc [BASE_LAYER] -> getBaseRct();							iBase_stack_x = rgpvoenc [BASE_LAYER] -> m_iNumMBX;									iBase_stack_y = rgpvoenc [BASE_LAYER] -> m_iNumMBY;									pBase_stack_Baseshpmd = new ShapeMode [iBase_stack_x*iBase_stack_y];							Int i;							for(i=0;i<iBase_stack_x*iBase_stack_y;i++)								pBase_stack_Baseshpmd[i] = (rgpvoenc[BASE_LAYER] ->shapemd())[i];							pBase_stack_mvBaseBY = new CMotionVector [iBase_stack_x*iBase_stack_y];							for(i=0;i<iBase_stack_x*iBase_stack_y;i++)								pBase_stack_mvBaseBY[i] = (rgpvoenc[BASE_LAYER] ->getmvBaseBY())[i];						} 					}//~OBSS_SAIT_991015// begin: added by Sharp (98/2/12)						else if (m_rgbSpatialScalability [iVOrelative] && bTemporalScalability)							pBufP2->getBuf( rgpvoenc[BASE_LAYER] );// end: added by Sharp (98/2/12)					if (iPCount>0)  // needed to handle iPCount = -1						iPCount--;				}				bPrevObjectExists = bObjectExists;				// encode B frames if needed				Int iBFrame = iRefFrame + iDT; // added by Sharp (98/2/12)				if(iRefInterval>1)				{					Bool bCachedBVOP = FALSE; // added by Sharp (98/11/11)//						Int iBFrame;  // deleted by Sharp (98/2/12)					for(iBFrame = iRefFrame + iDT; iBFrame < iSearchFrame; iBFrame += iDT)					{						if(rgpvoenc [BASE_LAYER] -> skipTest(iBFrame,BVOP))							continue;//OBSS_SAIT_991015//						if(m_rgbSpatialScalability [iVOrelative] && (volmd.fAUsage == ONE_BIT))                            //OBSSFIX_V2-8_before						if(m_rgbSpatialScalability [iVOrelative] && (volmd.fAUsage == ONE_BIT) && !bTemporalScalability)   //OBSSFIX_V2-8_after							bObjectExists = loadDataSpriteCheck(iVOrelative,iBFrame, pfYuvSrc, pfSegSrcSpatialEnhn, pxlcObjColor, rgpvoenc [BASE_LAYER]->m_pvopcOrig, volmd,volmd_enhn);						else//~OBSS_SAIT_991015						bObjectExists = loadDataSpriteCheck(iVOrelative,iBFrame, pfYuvSrc, pfSegSrc, ppfAuxSrc, pxlcObjColor, rgpvoenc [BASE_LAYER]->m_pvopcOrig, volmd);						encodeVideoObject (bObjectExists, bObjectExists, iBFrame, BVOP, bTemporalScalability ? DUMP_NONE: DUMP_CURR, // modified by Sharp (98/11/11)										   iVO, iVOrelative, BASE_LAYER,										   pfYuvSrc,pfSegSrc,ppfAuxSrc,                       rgpfReconYUV,rgpfReconSeg,rgpfReconAux,										   pxlcObjColor,rgpvoenc,volmd,rgpostrm);						bCachedBVOP = bTemporalScalability ? TRUE : FALSE; // added by Sharp (98/11/11)						if (m_rgbSpatialScalability [iVOrelative] && !bTemporalScalability) { // modified by Sharp (98/2/12)							pvopcBaseQuant = rgpvoenc [BASE_LAYER]->pvopcReconCurr ();//OBSS_SAIT_991015							// Spatial Scalabe BVOP and PVOP							VOPpredType PrevType = (rgpvoenc[ENHN_LAYER]->m_volmd.iSpatialOption == 0 )? BVOP: PVOP;	//for BVOP or PVOP enhn layer coding(OBSS) 													encodeVideoObject (bObjectExists, bObjectExists, iBFrame, PrevType, DUMP_CURR, 											   iVO, iVOrelative, ENHN_LAYER,											   pfYuvSrcSpatialEnhn, pfSegSrcSpatialEnhn, /*NULL*/ppfAuxSrc,		//OBSSFIX_MAC                         rgpfReconYUV, rgpfReconSeg, /*NULL*/rgpfReconAux,										//OBSSFIX_MAC											   pxlcObjColor, rgpvoenc, volmd, rgpostrm,											   pvopcBaseQuant);//~OBSS_SAIT_991015						}// begin: added by Sharp (98/2/12)						else if (m_rgbSpatialScalability [iVOrelative] && bTemporalScalability)							pBufB2->getBuf( rgpvoenc[BASE_LAYER] );												if ( m_rgbSpatialScalability [iVOrelative] && bTemporalScalability ) {  // for TPS enhancement layer							rgpvoenc [ENHN_LAYER] -> m_iBCount = 0;							for (Int iEFrame = iBFrame - iDT + iDT_enhn; iEFrame < iBFrame; iEFrame += iDT_enhn ) {								updateRefForTPS( rgpvoenc[ENHN_LAYER], pBufP1, pBufP2, pBufB1, pBufB2, pBufE,									0, iVOrelative, iEcount, iBFrame-iDT+iDT_enhn, iEFrame, 0 );								iEcount++;								encodeEnhanceVideoObject(bObjectExists, iEFrame, rgpvoenc[ENHN_LAYER]->m_vopmd.vopPredType, DUMP_CURR,									iVO,iVOrelative, pfYuvSrc,pfSegSrc,rgpfReconYUV,rgpfReconSeg,									pxlcObjColor,rgpvoenc[ENHN_LAYER],volmd, volmd_enhn, iBFrame - iDT + iDT_enhn, rgpostrm,									*pBufP1, *pBufP2, *pBufB1, *pBufB2, *pBufE									);															if ( !pBufB2->empty() ){									if ( pBufB2 -> m_bCodedFutureRef == 1 ) // added by Sharp (99/1/28)									pBufB1->copyBuf( *pBufB2 );									pBufB2->dispose();								}							}						}// end: added by Sharp (98/2/12)// begin: added by Sharp (98/11/11)						if(bCachedBVOP && (m_rguiSpriteUsage [iVOrelative] == 0 || m_rguiSpriteUsage [iVOrelative] == 2)) // GMC						{							// only for temporal scalability#ifndef __OUT_ONE_FRAME_							// last ref frame needs to be output							dumpData (rgpfReconYUV [BASE_LAYER], rgpfReconSeg [BASE_LAYER],                rgpfReconAux [BASE_LAYER], BASE_LAYER,								rgpvoenc[BASE_LAYER] ->pvopcReconCurr(), m_rctOrg, volmd, rgpvoenc[BASE_LAYER] ->m_vopmd.bInterlace);							if (m_rgbSpatialScalability [iVOrelative] && !bTemporalScalability)								dumpData (rgpfReconYUV [BASE_LAYER], rgpfReconSeg [BASE_LAYER],                  rgpfReconAux [BASE_LAYER], BASE_LAYER,									rgpvoenc[BASE_LAYER] ->pvopcReconCurr(), m_rctOrgSpatialEnhn, volmd, rgpvoenc[BASE_LAYER] ->m_vopmd.bInterlace);#endif							bCachedBVOP = FALSE;						}// end: added by Sharp (98/11/11)					}				}				if (m_rgbSpatialScalability [iVOrelative] && !bTemporalScalability) { // modified by Sharp (98/2/12)/* (98/3/30) modified by SONY*/					if (iPCount == volmd.iPbetweenI)        {/* (98/3/20) modified by SONY(end)*//*            ORIGINAL					if (iPCount == 0)       {					*///OBSS_SAIT_991015//for OBSS_BASE_BVOP : stack out	//OBSSFIX_MODE3						if(rgpvoenc[ENHN_LAYER]->volmd().fAUsage == ONE_BIT &&						   !(rgpvoenc[ENHN_LAYER]->volmd().iEnhnType != 0 && rgpvoenc[ENHN_LAYER]->volmd().iuseRefShape == 1)) {//						if(rgpvoenc[ENHN_LAYER]->volmd().fAUsage == ONE_BIT) {//~OBSSFIX_MODE3							pBase_tmp_Baseshpmd =  (rgpvoenc[BASE_LAYER] -> m_rgBaseshpmd);							rgpvoenc[BASE_LAYER] -> m_rgBaseshpmd = pBase_stack_Baseshpmd;							pBase_tmp_mvBaseBY = (rgpvoenc[BASE_LAYER] -> m_rgmvBaseBY);							rgpvoenc[BASE_LAYER] -> m_rgmvBaseBY = pBase_stack_mvBaseBY;							rgpvoenc[BASE_LAYER] -> m_iNumMBX = iBase_stack_x;							rgpvoenc[BASE_LAYER] -> m_iNumMBY =iBase_stack_y;							rgpvoenc[BASE_LAYER] -> m_rctBase = pBase_stack_rctBase;						} //~for OBSS_BASE_BVOP : stack out						encodeVideoObject(TRUE, TRUE, iSearchFrame, PVOP,										  DUMP_CURR, // sony										  iVO, iVOrelative, ENHN_LAYER, 										  pfYuvSrcSpatialEnhn, pfSegSrcSpatialEnhn, /*NULL*/ppfAuxSrc,	//OBSSFIX_MAC                      rgpfReconYUV, rgpfReconSeg, /*NULL*/rgpfReconAux,											  pxlcObjColor,rgpvoenc,volmd,rgpostrm,										  pvopcBasePVOPQuant);//for OBSS_BASE_BVOP :  stack free	//OBSSFIX_MODE3					if(rgpvoenc[ENHN_LAYER]->volmd().fAUsage == ONE_BIT &&					  !(rgpvoenc[ENHN_LAYER]->volmd().iEnhnType != 0 && rgpvoenc[ENHN_LAYER]->volmd().iuseRefShape == 1)) {//					if(rgpvoenc[ENHN_LAYER]->volmd().fAUsage == ONE_BIT) {//~OBSSFIX_MODE3							delete [] pBase_stack_Baseshpmd;							pBase_stack_Baseshpmd = NULL;							rgpvoenc[BASE_LAYER] -> m_rgBaseshpmd = pBase_tmp_Baseshpmd;							delete [] pBase_stack_mvBaseBY;							pBase_stack_mvBaseBY = NULL;							rgpvoenc[BASE_LAYER] -> m_rgmvBaseBY = pBase_tmp_mvBaseBY;						} //~for OBSS_BASE_BVOP :  stack free	//~OBSS_SAIT_991015										}					else {						VOPpredType PrevType = (rgpvoenc[ENHN_LAYER]->m_volmd.iSpatialOption == 0 )? BVOP: PVOP;//OBSS_SAIT_991015						//for OBSS BASE_BVOP : stack out//OBSSFIX_MODE3						if(rgpvoenc[ENHN_LAYER]->volmd().fAUsage == ONE_BIT &&							!(rgpvoenc[ENHN_LAYER]->volmd().iEnhnType != 0 && rgpvoenc[ENHN_LAYER]->volmd().iuseRefShape == 1)) {//						if(rgpvoenc[ENHN_LAYER]->volmd().fAUsage == ONE_BIT) {//~OBSSFIX_MODE3							pBase_tmp_Baseshpmd =  (rgpvoenc[BASE_LAYER] -> m_rgBaseshpmd);							rgpvoenc[BASE_LAYER] -> m_rgBaseshpmd = pBase_stack_Baseshpmd;							pBase_tmp_mvBaseBY = (rgpvoenc[BASE_LAYER] -> m_rgmvBaseBY);							rgpvoenc[BASE_LAYER] -> m_rgmvBaseBY = pBase_stack_mvBaseBY;							rgpvoenc[BASE_LAYER] -> m_iNumMBX = iBase_stack_x;							rgpvoenc[BASE_LAYER] -> m_iNumMBY =iBase_stack_y;							rgpvoenc[BASE_LAYER] -> m_rctBase = pBase_stack_rctBase;						} 						encodeVideoObject (bObjectExists, bObjectExists, iSearchFrame, PrevType,										   DUMP_CURR, // sony										   iVO, iVOrelative, ENHN_LAYER, 										   pfYuvSrcSpatialEnhn, pfSegSrcSpatialEnhn, /*NULL*/ppfAuxSrc,		//OBSSFIX_MAC                       rgpfReconYUV, rgpfReconSeg, /*NULL*/rgpfReconAux,											   pxlcObjColor, rgpvoenc, volmd, rgpostrm,										   pvopcBasePVOPQuant);						//for OBSS BASE_BVOP : stack free//OBSSFIX_MODE3						if(rgpvoenc[ENHN_LAYER]->volmd().fAUsage == ONE_BIT &&						 !(rgpvoenc[ENHN_LAYER]->volmd().iEnhnType != 0 && rgpvoenc[ENHN_LAYER]->volmd().iuseRefShape == 1)) {//						if(rgpvoenc[ENHN_LAYER]->volmd().fAUsage == ONE_BIT) {//~OBSSFIX_MODE3							delete [] pBase_stack_Baseshpmd;							pBase_stack_Baseshpmd = NULL;							rgpvoenc[BASE_LAYER] -> m_rgBaseshpmd = pBase_tmp_Baseshpmd;							delete [] pBase_stack_mvBaseBY;							pBase_stack_mvBaseBY = NULL;							rgpvoenc[BASE_LAYER] -> m_rgmvBaseBY = pBase_tmp_mvBaseBY;						} //~OBSS_SAIT_991015					}					delete pvopcBasePVOPQuant;				}// begin: added by Sharp (98/2/12)				else if ( m_rgbSpatialScalability [iVOrelative] && bTemporalScalability ){  // loop for TPS enhancement layer					rgpvoenc [ENHN_LAYER] -> m_iBCount = 0;					for (Int iEFrame = iSearchFrame - iDT + iDT_enhn; iEFrame < iSearchFrame; iEFrame += iDT_enhn ) {					updateRefForTPS( rgpvoenc[ENHN_LAYER], pBufP1, pBufP2, pBufB1, pBufB2, pBufE,						0, iVOrelative, iEcount, iBFrame-iDT+iDT_enhn, iEFrame, 0 );					iEcount++;					encodeEnhanceVideoObject(bObjectExists, iEFrame, rgpvoenc[ENHN_LAYER]->m_vopmd.vopPredType, DUMP_CURR,						iVO,iVOrelative,pfYuvSrc,pfSegSrc,rgpfReconYUV,rgpfReconSeg,						pxlcObjColor,rgpvoenc[ENHN_LAYER],volmd, volmd_enhn, iSearchFrame - iDT + iDT_enhn, rgpostrm,						*pBufP1, *pBufP2, *pBufB1, *pBufB2, *pBufE						);				}				pBufB1->dispose();				}// end: added by Sharp (98/2/12)				// move onwards				iRefFrame = iSearchFrame;			}		}		if(bCachedRefDump && (m_rguiSpriteUsage [iVOrelative] == 0 || m_rguiSpriteUsage [iVOrelative] == 2)) // GMC		{			// last ref frame needs to be output#ifndef __OUT_ONE_FRAME_			if ( bCachedRefCoded )				dumpData (rgpfReconYUV [BASE_LAYER], rgpfReconSeg [BASE_LAYER], rgpfReconAux [BASE_LAYER], BASE_LAYER,				rgpvoenc[BASE_LAYER] ->pvopcRefQLater(), m_rctOrg, volmd, rgpvoenc[BASE_LAYER] ->m_vopmd.bInterlace);			else				dumpDataNonCoded(rgpfReconYUV [BASE_LAYER], rgpfReconSeg [BASE_LAYER],					rgpfReconAux [BASE_LAYER], BASE_LAYER, m_rctOrg, volmd);						bCachedRefDump = FALSE; // added by Sharp (98/11/11)

⌨️ 快捷键说明

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