📄 encoder.cpp
字号:
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 + -