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

📄 encodercodingparameter.h

📁 JMVM MPEG MVC/3DAV 测试平台 国际通用标准
💻 H
📖 第 1 页 / 共 5 页
字号:
  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

⌨️ 快捷键说明

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