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

📄 encoder.cpp

📁 visual c++小波技术和工程实践随书光盘
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	printf ("Total time: %d\n", tickAfter - tickBegin);
	Double dAverage = (Double) (tickAfter - tickBegin) / (Double) nFrames;
	printf ("Total frame %d\tAverage time: %.6lf\n", nFrames, dAverage);
	printf ("FPS %.6lf\n", 1000.0 / dAverage);
#endif // __PC_COMPILER_
	delete penc;

	for (Int iLayer = BASE_LAYER; iLayer <= ENHN_LAYER; iLayer++)	{
		delete [] rguiRateControl [iLayer];
		delete [] rguiBitsBudget [iLayer];
		delete [] rgbErrorResilientDisable [iLayer];
		delete [] rgbDataPartitioning [iLayer];
		delete [] rgbReversibleVlc [iLayer];
		delete [] rgiVPBitTh [iLayer];

		// for texture coding
		delete [] rgfQuant [iLayer];
		delete [] rgiIntraDCSwitchingThr [iLayer];
		delete [] rgiIStep [iLayer];				// error signal quantization stepsize
		delete [] rgiPStep [iLayer];				// error signal quantization stepsize
		delete [] rgiIStepAlpha [iLayer];		// error signal quantization stepsize
		delete [] rgiPStepAlpha [iLayer];		// error signal quantization stepsize
		delete [] rgiBStepAlpha [iLayer];
		delete [] rgbNoGrayQuantUpdate [iLayer]; //discouple change of gray quant with tex. quant
		delete [] rgiStepBCode [iLayer];			// error signal quantization stepsize
		delete [] rgbLoadIntraMatrix [iLayer];
		delete [] rgbLoadInterMatrix [iLayer];
		delete [] rgbLoadIntraMatrixAlpha [iLayer];
		delete [] rgbLoadInterMatrixAlpha [iLayer];
		for (iObj = 0; iObj < nVO; iObj++) {
			delete [] rgppiIntraQuantizerMatrix  [iLayer] [iObj];
			delete [] rgppiInterQuantizerMatrix  [iLayer] [iObj];
			delete [] rgppiIntraQuantizerMatrixAlpha  [iLayer] [iObj];
			delete [] rgppiInterQuantizerMatrixAlpha  [iLayer] [iObj];
			if(pchMVFileName [iLayer] [iObj]!=NULL)
				delete [] pchMVFileName [iLayer] [iObj];

		}
		delete [] rgppiIntraQuantizerMatrix [iLayer];
		delete [] rgppiInterQuantizerMatrix [iLayer];
		delete [] rgppiIntraQuantizerMatrixAlpha [iLayer];
		delete [] rgppiInterQuantizerMatrixAlpha [iLayer];
		delete [] pchMVFileName [iLayer];

		// for motion esti.
		delete [] rgbOriginalME [iLayer];
		delete [] rgbAdvPredDisable [iLayer];
		delete [] rguiSearchRange [iLayer];

		// for interlace coding
		delete [] rgbInterlacedCoding [iLayer];
		delete [] rgbTopFieldFirst [iLayer];
		delete [] rgiDirectModeRadius [iLayer];
		delete [] rgiMVFileUsage [iLayer];
		
		delete [] rgdFrameFrequency [iLayer];
		delete [] rgbAlternateScan [iLayer];

		delete [] rgbComplexityEstimationDisable [iLayer];
		delete [] rguiEstimationMethod [iLayer];
		delete [] rgbOpaque [iLayer];
		delete [] rgbTransparent [iLayer];
		delete [] rgbIntraCAE [iLayer];
		delete [] rgbInterCAE [iLayer];
		delete [] rgbNoUpdate [iLayer];
		delete [] rgbUpsampling [iLayer];
		delete [] rgbIntraBlocks [iLayer];
		delete [] rgbInterBlocks [iLayer];
		delete [] rgbInter4vBlocks [iLayer];
		delete [] rgbNotCodedBlocks [iLayer];
		delete [] rgbDCTCoefs [iLayer];
		delete [] rgbDCTLines [iLayer];
		delete [] rgbVLCSymbols [iLayer];
		delete [] rgbVLCBits [iLayer];
		delete [] rgbAPM [iLayer];
		delete [] rgbNPM [iLayer];
		delete [] rgbInterpolateMCQ [iLayer];
		delete [] rgbForwBackMCQ [iLayer];
		delete [] rgbHalfpel2 [iLayer];
		delete [] rgbHalfpel4 [iLayer];
		delete [] rgbSadct [iLayer];
		delete [] rgbQuarterpel [iLayer];

		delete [] rguiVolControlParameters [iLayer];
		delete [] rguiChromaFormat [iLayer];
		delete [] rguiLowDelay [iLayer];
		delete [] rguiVBVParams [iLayer];
		delete [] rguiBitRate [iLayer];
		delete [] rguiVbvBufferSize [iLayer];
		delete [] rguiVbvBufferOccupany [iLayer];



		delete [] rgbNewpredEnable[iLayer];
		delete [] rgbNewpredSegType[iLayer];

		delete [] rgbSadctDisable[iLayer];
		delete [] rgbQuarterSample[iLayer];

		for (iObj = 0; iObj < nVO; iObj++)
		{
			if(pchNewpredRefName [iLayer][iObj]!=NULL)
				delete pchNewpredRefName [iLayer][iObj];
			if(pchNewpredSlicePoint [iLayer][iObj]!=NULL)
				delete pchNewpredSlicePoint [iLayer][iObj];
		}

		delete [] pchNewpredRefName[iLayer];
		delete [] pchNewpredSlicePoint[iLayer];

		delete [] RRVmode[iLayer];
	}

	delete [] rgbScalability;
    delete [] rgbSpatialScalability;
	delete [] rgiTemporalScalabilityType;
	delete [] rgiEnhancementType;
//OBSSFIX_MODE3
	delete [] rgiEnhancementTypeSpatial;
//~OBSSFIX_MODE3
	// for mask coding, should fill in later on
	delete [] rgfAlphaUsage; // alpha usage for each VO.  0: binary, 1: 8-bit
	delete [] rgiAlphaShapeExtension;
	delete [] rgbShapeOnly;
	delete [] rgiBinaryAlphaTH;
	delete [] rgiBinaryAlphaRR;	//	Added for error resilient mode by Toshiba(1997-11-14)
	delete [] rgbNoCrChange;

	delete [] rgbDeblockFilterDisable;	
	delete [] rgfChrType;
	delete [] rgiNumBbetweenPVOP;			// no of B-VOPs between P-VOPs
	delete [] rgiNumPbetweenIVOP;			// no of P-VOPs between I-VOPs
//added to encode GOV header by SONY 980212
	delete [] rgiGOVperiod;
//980212
	delete [] rgiTSRate;
	delete [] rgiEnhcTSRate; // added by Norio Ito
	delete [] rgbAllowSkippedPMBs;

	// rounding control
	delete [] rgbRoundingControlDisable;
	delete [] rgiInitialRoundingType;

	// sprite
	delete [] rguiSpriteUsage;
	delete [] rguiWarpingAccuracy;
	delete [] rgiNumPnts;
	delete [] rgbDumpMB;
	delete [] rgbTrace;
	delete [] rgSpriteMode;

	delete pchPrefix;
	delete pchBmpDir;
	delete pchOutBmpDir;
	delete pchOutStrFile;
	delete pchSptDir;
	delete pchSptPntDir;

	// version 2
	delete [] rguiVerID;


	return 0;
}


Void nextValidLine (FILE *pfPara, UInt* pnLine)	{

	U8 chBoL = 0;
	Char pchPlaceHolder[200];
	fgets (pchPlaceHolder, 200, pfPara); // get the next line 
	(*pnLine)++;
	while (feof (pfPara) == 0 && (chBoL = fgetc(pfPara)) == '%') {
		// skip a line
		fgets (pchPlaceHolder, 200, pfPara); // get the next line 
		(*pnLine)++;
	}
	ungetc (chBoL, pfPara);				

}

///// WAVELET VTC: begin ///////////////////////////////

Void readVTCParam(CVTCEncoder *pvtcenc, FILE *pfVTCPara, UInt* pnLine, UInt *uiFrmWidth, UInt *uiFrmHeight)
{ // FPDAM
 
 
 // begin: added by Sharp (99/11/18)
 	UInt uiVerID;
 	nextValidLine (pfVTCPara, pnLine);
 	if ( fscanf (pfVTCPara, "%d", &uiVerID) != 1)	{
 		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
 		assert (FALSE);
 	}
 	if ( uiVerID != 1 && uiVerID != 2 ){
 		fprintf(stderr,"Unsupported .cfg file. Version ID is required at the beginning of .cfg\n");
 		assert ( uiVerID == 1 || uiVerID == 2 );
 	}
 // end: added by Sharp (99/11/18)
 
	// source image path
	Char *cImagePath;
	cImagePath = new char[80];
	nextValidLine (pfVTCPara, pnLine);
	if ( fscanf (pfVTCPara, "%s", cImagePath) != 1)	{
		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
		assert (FALSE);
	}
	
	// Alpha Channel 
	UInt uiAlphaChannel;
	nextValidLine (pfVTCPara, pnLine);
	if ( fscanf (pfVTCPara, "%d", &uiAlphaChannel) != 1)	{
		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
		assert (FALSE);
	}
	
	// segmentation map image path
	Char *cSegImagePath;
	cSegImagePath = new char[80];
	nextValidLine (pfVTCPara, pnLine);
	if ( fscanf (pfVTCPara, "%s", cSegImagePath) != 1)	{
		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
		assert (FALSE);
	}
	
	// FPDAM begin: deleted by Sharp 
	//	//begin: added by SL@Sarnoff (03/02/99)
	//	UInt uiShapeScalable; //scalable shape coding ?
	//	nextValidLine (pfVTCPara, pnLine);
	//	if ( fscanf (pfVTCPara, "%d", &uiShapeScalable) != 1)	{
	//		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
	//		assert (FALSE);
	//	}
	// FPDAM end: deleted by Sharp 
	
	UInt uiSTOConstAlpha; // constant alpha value?
	nextValidLine (pfVTCPara, pnLine);
	if ( fscanf (pfVTCPara, "%d", &uiSTOConstAlpha) != 1)	{
		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
		assert (FALSE);
	}
	
	UInt uiSTOConstAlphaValue; //what is the value if const alpha?
	nextValidLine (pfVTCPara, pnLine);
	if ( fscanf (pfVTCPara, "%d", &uiSTOConstAlphaValue) != 1)	{
		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
		assert (FALSE);
	}
	//end: added by SL@Sarnoff (03/02/99)
	
	// Alpha threshold
	UInt uiAlphaTh;
	nextValidLine (pfVTCPara, pnLine);
	if ( fscanf (pfVTCPara, "%d", &uiAlphaTh) != 1)	{
		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
		assert (FALSE);
	}
	
	// Alpha Change CR Disable 
	UInt uiChangeCRDisable;
	nextValidLine (pfVTCPara, pnLine);
	if ( fscanf (pfVTCPara, "%d", &uiChangeCRDisable) != 1)	{
		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
		assert (FALSE);
	}
	
	// output bitstream file 
	Char *cOutBitsFile;
	cOutBitsFile = new char[80];
	nextValidLine (pfVTCPara, pnLine);
	if ( fscanf (pfVTCPara, "%s", cOutBitsFile) != 1)	{
		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
		assert (FALSE);
	}
	
	// color components
	UInt uiColors;
	nextValidLine (pfVTCPara, pnLine);
	if ( fscanf (pfVTCPara, "%d", &uiColors) != 1)	{
		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
		assert (FALSE);
	}
	
	// Frame width
	//	UInt uiFrmWidth; //FPDAM
	nextValidLine (pfVTCPara, pnLine);
	if ( fscanf (pfVTCPara, "%d", uiFrmWidth) != 1)	{
		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
		assert (FALSE);
	}
	
	// Frame height
	//	UInt uiFrmHeight;			// frame height // FPDAM
	nextValidLine (pfVTCPara, pnLine);
	if ( fscanf (pfVTCPara, "%d", uiFrmHeight) != 1)	{
		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
		assert (FALSE);
	}
	
	// begin: added by Sharp (99/2/16)
	UInt uiTilingDisable; // modified by Sharp (99/3/29)
	nextValidLine (pfVTCPara, pnLine);
	if ( fscanf (pfVTCPara, "%d", &uiTilingDisable) != 1)  { // modified by Sharp (99/3/29)
		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
		assert (FALSE);
	}
	
	UInt uiTilingJump;
	nextValidLine (pfVTCPara, pnLine);
	if ( fscanf (pfVTCPara, "%d", &uiTilingJump) != 1)  {
		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
		assert (FALSE);
	}
	
	UInt uiTileWidth;
	nextValidLine (pfVTCPara, pnLine);
	if ( fscanf (pfVTCPara, "%d", &uiTileWidth) != 1) {
		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
		assert (FALSE);
	}
	
	UInt uiTileHeight;
	nextValidLine (pfVTCPara, pnLine);
	if ( fscanf (pfVTCPara, "%d", &uiTileHeight) != 1)  {
		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
		assert (FALSE);
	}
	// end: added by Sharp (99/2/16)

	// wavelet decomposition
	UInt uiWvtDecmpLev;
	nextValidLine (pfVTCPara, pnLine);
	if ( fscanf (pfVTCPara, "%d", &uiWvtDecmpLev) != 1)	{
		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
		assert (FALSE);
	}

	// wavelet type
	UInt uiWvtType;
	nextValidLine (pfVTCPara, pnLine);
	if ( fscanf (pfVTCPara, "%d", &uiWvtType) != 1)	{
		fprintf(stderr, "wrong parameter on line %d\n", *pnLine);
		assert (FALSE);
	}
	
	// hjlee 0901
	// wavelet download ?
	UInt uiWvtDownload;
	nextValidLine (pfVTCPara, pnLine);

⌨️ 快捷键说明

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