?? encodercodingparameter.h
字號(hào):
while (!feof(f))
{
RNOK( xReadLine( f, acTags ) );
if ( acTags[0].empty() )
{
continue;
}
if (acTags[0] == "NumViewsMinus1") { // This line should come first in the cfg file
AOF((NumViewsMinus1=atoi(acTags[1].c_str()))>=0)
CodingParameter::initialize_memory(NumViewsMinus1+1);
continue;
}
if ( acTags[0]== "IntrinsicParameterFlag" ) {
CodingParameter::setIntrinsicParamFlag(IntrinsicFlag=(Bool)(atoi(acTags[1].c_str())!=0));
continue;
}
if ( acTags[0]== "IntrinsicParametersEqual" ) {
CodingParameter::setIntrinsicParamsEqual((Bool)(atoi(acTags[1].c_str())!=0));
continue;
}
if ( acTags[0]== "Precision_FocalLength" ) {
CodingParameter::setPrecFocalLength(PrecFocalLength=atoi(acTags[1].c_str()));
continue;
}
if ( acTags[0]== "Precision_PrincipalPoint" ) {
CodingParameter::setPrecPrincipalPoint(PrecPrincipalPoint=atoi(acTags[1].c_str()));
continue;
}
if ( acTags[0]== "Precision_RadialDistortion" ) {
CodingParameter::setPrecRadialDistortion(PrecRadialDistortion=atoi(acTags[1].c_str()));
continue;
}
if ( acTags[0]== "ExtrinsicParameterFlag" ) {
CodingParameter::setExtrinsicParamFlag(ExtrinsicFlag=(Bool)(atoi(acTags[1].c_str())!=0));
continue;
}
if ( acTags[0]== "Precision_RotationParam" ) {
CodingParameter::setPrecRotationParam(PrecRotationParam=atoi(acTags[1].c_str()));
continue;
}
if ( acTags[0]== "Precision_TranslationParam" ) {
CodingParameter::setPrecTranslationParam(PrecTranslationParam=atoi(acTags[1].c_str()));
continue;
}
if (acTags[0] == "View_ID") {
AOF((cur_view_id=atoi(acTags[1].c_str()))>=0)
AOF(cur_view_id<=CodingParameter::SpsMVC.getNumViewMinus1())
AOF(++view_cnt<=(int)(CodingParameter::SpsMVC.getNumViewMinus1()+1))
continue;
}
UInt tmp_exponent, tmp_mantissa;
if (IntrinsicFlag && cur_view_id!=-1)
{
if ( acTags[0]== "FocalLengthX" ) {
CodingParameter::setSignFocalLengthX(cur_view_id,atof(acTags[1].c_str())<0.0);
GetExponentMantissa_MVAcquisitionInfo(atof(acTags[1].c_str()), PrecFocalLength, &tmp_exponent, &tmp_mantissa);
CodingParameter::setExponentFocalLengthX(cur_view_id, tmp_exponent);
CodingParameter::setMantissaFocalLengthX(cur_view_id, tmp_mantissa);
continue;
}
if ( acTags[0]== "FocalLengthY" ) {
CodingParameter::setSignFocalLengthY(cur_view_id,atof(acTags[1].c_str())<0.0);
GetExponentMantissa_MVAcquisitionInfo(atof(acTags[1].c_str()), PrecFocalLength, &tmp_exponent, &tmp_mantissa);
CodingParameter::setExponentFocalLengthY(cur_view_id, tmp_exponent);
CodingParameter::setMantissaFocalLengthY(cur_view_id, tmp_mantissa);
continue;
}
if ( acTags[0]== "PrincipalPointX" ) {
CodingParameter::setSignPrincipalPointX(cur_view_id,atof(acTags[1].c_str())<0.0);
GetExponentMantissa_MVAcquisitionInfo(atof(acTags[1].c_str()), PrecPrincipalPoint, &tmp_exponent, &tmp_mantissa);
CodingParameter::setExponentPrincipalPointX(cur_view_id, tmp_exponent);
CodingParameter::setMantissaPrincipalPointX(cur_view_id, tmp_mantissa);
continue;
}
if ( acTags[0]== "PrincipalPointY" ) {
CodingParameter::setSignPrincipalPointY(cur_view_id,atof(acTags[1].c_str())<0.0);
GetExponentMantissa_MVAcquisitionInfo(atof(acTags[1].c_str()), PrecPrincipalPoint, &tmp_exponent, &tmp_mantissa);
CodingParameter::setExponentPrincipalPointY(cur_view_id, tmp_exponent);
CodingParameter::setMantissaPrincipalPointY(cur_view_id, tmp_mantissa);
continue;
}
if ( acTags[0]== "RadialDistortion" ) {
CodingParameter::setSignRadialDistortion(cur_view_id,atof(acTags[1].c_str())<0.0);
GetExponentMantissa_MVAcquisitionInfo(atof(acTags[1].c_str()), PrecRadialDistortion, &tmp_exponent, &tmp_mantissa);
CodingParameter::setExponentRadialDistortion(cur_view_id, tmp_exponent);
CodingParameter::setMantissaRadialDistortion(cur_view_id, tmp_mantissa);
continue;
}
}
if (ExtrinsicFlag && cur_view_id!=-1 )
{
if ( acTags[0]== "R_1" ) {
for (j=0;j<3;j++) {
CodingParameter::setSignRotationParam(cur_view_id,0,j,atof(acTags[j+1].c_str())<0.0);
GetExponentMantissa_MVAcquisitionInfo(atof(acTags[j+1].c_str()), PrecRotationParam, &tmp_exponent, &tmp_mantissa);
CodingParameter::setExponentRotationParam(cur_view_id,0,j, tmp_exponent);
CodingParameter::setMantissaRotationParam(cur_view_id,0,j, tmp_mantissa);
}
continue;
}
if ( acTags[0]== "R_2" ) {
for (j=0;j<3;j++) {
CodingParameter::setSignRotationParam(cur_view_id,1,j,atof(acTags[j+1].c_str())<0.0);
GetExponentMantissa_MVAcquisitionInfo(atof(acTags[j+1].c_str()), PrecRotationParam, &tmp_exponent, &tmp_mantissa);
CodingParameter::setExponentRotationParam(cur_view_id,1,j, tmp_exponent);
CodingParameter::setMantissaRotationParam(cur_view_id,1,j, tmp_mantissa);
}
continue;
}
if ( acTags[0]== "R_3" ) {
for (j=0;j<3;j++) {
CodingParameter::setSignRotationParam(cur_view_id,2,j,atof(acTags[j+1].c_str())<0.0);
GetExponentMantissa_MVAcquisitionInfo(atof(acTags[j+1].c_str()), PrecRotationParam, &tmp_exponent, &tmp_mantissa);
CodingParameter::setExponentRotationParam(cur_view_id,2,j, tmp_exponent);
CodingParameter::setMantissaRotationParam(cur_view_id,2,j, tmp_mantissa);
}
continue;
}
if ( acTags[0]== "Translation" ) {
for (j=0;j<3;j++) {
CodingParameter::setSignTranslationParam(cur_view_id,j,atof(acTags[j+1].c_str())<0.0);
GetExponentMantissa_MVAcquisitionInfo(atof(acTags[j+1].c_str()), PrecTranslationParam, &tmp_exponent, &tmp_mantissa);
CodingParameter::setExponentTranslationParam(cur_view_id,j, tmp_exponent);
CodingParameter::setMantissaTranslationParam(cur_view_id,j, tmp_mantissa);
}
continue;
}
}
}
fclose( f );
return Err::m_nOK;
}
ErrVal EncoderCodingParameter::xReadLayerFromFile ( std::string& rcFilename,
h264::LayerParameters& rcLayer )
{
std::string acTags[4];
std::string cInputFilename, cOutputFilename, cMotionFilename, cESSFilename;
//S051{
std::string cEncSIPFilename;
//S051}
UInt uiParLnCount = 0;
FILE *f = fopen( rcFilename.c_str(), "r");
if( NULL == f )
{
printf( "failed to open %s layer config file\n", rcFilename.c_str() );
return Err::m_nERR;
}
//--ICU/ETRI FMO Implementation
UInt bSliceGroupChangeDirection_flag=0;
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("SourceWidth", &(rcLayer.m_uiFrameWidth), 176 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("SourceHeight", &(rcLayer.m_uiFrameHeight), 352 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineDbl ("FrameRateIn", &(rcLayer.m_dInputFrameRate), 30 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineDbl ("FrameRateOut", &(rcLayer.m_dOutputFrameRate), 30 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineStr ("InputFile", &cInputFilename, "test.yuv");
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineStr ("ReconFile", &cOutputFilename, "rec.yuv" );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("SymbolMode", &(rcLayer.m_uiEntropyCodingModeFlag), 1 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("ClosedLoop", &(rcLayer.m_uiClosedLoop), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FRExt", &(rcLayer.m_uiAdaptiveTransform), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("MaxDeltaQP", &(rcLayer.m_uiMaxAbsDeltaQP), 1 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineDbl ("QP", &(rcLayer.m_dBaseQpResidual), 32.0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineDbl ("NumFGSLayers", &(rcLayer.m_dNumFGSLayers), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineDbl ("MeQPLP", &(rcLayer.m_dQpModeDecisionLP), -1.0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineDbl ("MeQP0", &(rcLayer.m_adQpModeDecision[0]), 32.0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineDbl ("MeQP1", &(rcLayer.m_adQpModeDecision[1]), 32.0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineDbl ("MeQP2", &(rcLayer.m_adQpModeDecision[2]), 32.0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineDbl ("MeQP3", &(rcLayer.m_adQpModeDecision[3]), 32.0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineDbl ("MeQP4", &(rcLayer.m_adQpModeDecision[4]), 32.0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineDbl ("MeQP5", &(rcLayer.m_adQpModeDecision[5]), 32.0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("InterLayerPred", &(rcLayer.m_uiInterLayerPredictionMode), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("BaseQuality", &(rcLayer.m_uiBaseQualityLevel), 3 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("MotionInfoMode", &(rcLayer.m_uiMotionInfoMode), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineStr ("MotionInfoFile", &cMotionFilename, "test.mot");
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineInt ("UseESS", &(rcLayer.m_ResizeParameter.m_iExtendedSpatialScalability), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineStr ("ESSPicParamFile",&cESSFilename, "ess.dat" );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineInt ("ESSCropWidth", &(rcLayer.m_ResizeParameter.m_iOutWidth), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineInt ("ESSCropHeight", &(rcLayer.m_ResizeParameter.m_iOutHeight), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineInt ("ESSOriginX", &(rcLayer.m_ResizeParameter.m_iPosX), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineInt ("ESSOriginY", &(rcLayer.m_ResizeParameter.m_iPosY), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineInt ("ESSChromaPhaseX",&(rcLayer.m_ResizeParameter.m_iChromaPhaseX), -1 ); // SSUN, Nov2005
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineInt ("ESSChromaPhaseY",&(rcLayer.m_ResizeParameter.m_iChromaPhaseY), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineInt ("ESSBaseChromaPhaseX",&(rcLayer.m_ResizeParameter.m_iBaseChromaPhaseX), -1 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineInt ("ESSBaseChromaPhaseY",&(rcLayer.m_ResizeParameter.m_iBaseChromaPhaseY), 0 ); // SSUN, Nov2005
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("ForceReOrdering",&(rcLayer.m_uiForceReorderingCommands), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("BaseLayerId", &(rcLayer.m_uiBaseLayerId), MSYS_UINT_MAX );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineDbl ("EnhRefME", &(rcLayer.m_dLowPassEnhRef), AR_FGS_DEFAULT_LOW_PASS_ENH_REF );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("WeightZeroBlock",&(rcLayer.m_uiBaseWeightZeroBaseBlock), AR_FGS_DEFAULT_BASE_WEIGHT_ZERO_BLOCK );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("WeightZeroCoeff",&(rcLayer.m_uiBaseWeightZeroBaseCoeff), AR_FGS_DEFAULT_BASE_WEIGHT_ZERO_COEFF );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FgsEncStructure",&(rcLayer.m_uiFgsEncStructureFlag), AR_FGS_DEFAULT_ENC_STRUCTURE );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("SliceMode", &(rcLayer.m_uiSliceMode), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("SliceArgument", &(rcLayer.m_uiSliceArgument), 50 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("NumSlicGrpMns1", &(rcLayer.m_uiNumSliceGroupsMinus1), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("SlcGrpMapType", &(rcLayer.m_uiSliceGroupMapType), 2 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("SlcGrpChgDrFlag",&(bSliceGroupChangeDirection_flag), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("SlcGrpChgRtMus1",&(rcLayer.m_uiSliceGroupChangeRateMinus1), 85 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineStr ("SlcGrpCfgFileNm",&rcLayer.m_cSliceGroupConfigFileName, "sgcfg.cfg" );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("NumROI", &(rcLayer.m_uiNumROI), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineStr ("ROICfgFileNm",&rcLayer.m_cROIConfigFileName, "roicfg.cfg" );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSMotion", &(rcLayer.m_uiFGSMotionMode), 0 );
// JVT-Q065 EIDR{
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineInt ("IDRPeriod", &(rcLayer.m_iIDRPeriod), 0 );
// JVT-Q065 EIDR}
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt ("PLR", &(rcLayer.m_uiPLR), 0 ); //JVT-R057 LA-RDO
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("UseRedundantSlc",&(rcLayer.m_uiUseRedundantSlice), 0 ); //JVT-Q054 Red. Picture
//S051{
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineStr( "EncSIPFile", &cEncSIPFilename, "");
//S051}
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSVectorMode", &(rcLayer.m_uiFGSCodingMode), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSGroupingSize", &(rcLayer.m_uiGroupingSize), 1 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSVector0", &(rcLayer.m_uiPosVect[0]), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSVector1", &(rcLayer.m_uiPosVect[1]), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSVector2", &(rcLayer.m_uiPosVect[2]), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSVector3", &(rcLayer.m_uiPosVect[3]), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSVector4", &(rcLayer.m_uiPosVect[4]), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSVector5", &(rcLayer.m_uiPosVect[5]), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSVector6", &(rcLayer.m_uiPosVect[6]), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSVector7", &(rcLayer.m_uiPosVect[7]), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSVector8", &(rcLayer.m_uiPosVect[8]), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSVector9", &(rcLayer.m_uiPosVect[9]), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSVector10", &(rcLayer.m_uiPosVect[10]), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSVector11", &(rcLayer.m_uiPosVect[11]), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSVector12", &(rcLayer.m_uiPosVect[12]), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSVector13", &(rcLayer.m_uiPosVect[13]), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSVector14", &(rcLayer.m_uiPosVect[14]), 0 );
m_pLayerLines[uiParLnCount++] = new EncoderConfigLineUInt("FGSVector15", &(rcLayer.m_uiPosVect[15]), 0 );
m_pLayerLines[uiParLnCount] = NULL;
while (!feof(f))
{
RNOK( xReadLine( f, acTags ) );
if ( acTags[0].empty() )
{
continue;
}
for (UInt ui=0; m_pLayerLines[ui] != NULL; ui++)
{
if( acTags[0] == m_pLayerLines[ui]->getTag() )
{
m_pLayerLines[ui]->setVar( acTags[1] );
break;
}
}
}
//S051{
if(cEncSIPFilename.length())
{
rcLayer.setEncSIP(true);
rcLayer.setInSIPFileName( (char*) cEncSIPFilename.c_str());
}
//S051}
rcLayer.setInputFilename ( (Char*)cInputFilename.c_str() );
rcLayer.setOutputFilename ( (Char*)cOutputFilename.c_str() );
rcLayer.setMotionInfoFilename( (Char*)cMotionFilename.c_str() );
uiParLnCount = 0;
while (m_pLayerLines[uiParLnCount] != NULL)
{
delete m_pLayerLines[uiParLnCount];
m_pLayerLines[uiParLnCount] = NULL;
uiParLnCount++;
}
// TMM_ESS {
// default values
rcLayer.m_ResizeParameter.m_iInWidth = rcLayer.m_uiFrameWidth;
rcLayer.m_ResizeParameter.m_iInHeight = rcLayer.m_uiFrameHeight;
rcLayer.m_ResizeParameter.m_iGlobWidth = rcLayer.m_uiFrameWidth;
rcLayer.m_ResizeParameter.m_iGlobHeight = rcLayer.m_uiFrameHeight;
rcLayer.m_ResizeParameter.m_bCrop = false;
if(rcLayer.m_ResizeParameter.m_iExtendedSpatialScalability)
{
rcLayer.m_ResizeParameter.m_bCrop = true;
if(rcLayer.m_ResizeParameter.m_iExtendedSpatialScalabili
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -