HM版本为16.20
main函数主要过程:
- 创建编码类
- 打印相关信息
- 解析cfg文件
- 调用编码函数进入编码过程
- 记录编码总时间
代码如下:
int main(int argc, char* argv[])
{
// argv[]接收命令行参数
TAppEncTop cTAppEncTop; // 定义TAppEncTop对象
// print information 打印相关信息
fprintf( stdout, "\n" );
fprintf( stdout, "HM software: Encoder Version [%s] (including RExt)", NV_VERSION );
fprintf( stdout, NVM_ONOS );
fprintf( stdout, NVM_COMPILEDBY );
fprintf( stdout, NVM_BITS );
fprintf( stdout, "\n\n" );
// create application encoder class
cTAppEncTop.create(); // 空实现
// parse configuration
try
{
if(!cTAppEncTop.parseCfg( argc, argv )) // 在这个函数中解析cfg配置文件
{
cTAppEncTop.destroy();
#if ENVIRONMENT_VARIABLE_DEBUG_AND_TEST
EnvVar::printEnvVar();
#endif
return 1;
}
}
catch (df::program_options_lite::ParseFailure &e)
{
std::cerr << "Error parsing option \""<< e.arg <<"\" with argument \""<< e.val <<"\"." << std::endl;
return 1;
}
#if PRINT_MACRO_VALUES
printMacroSettings(); // 打印宏块信息
#endif
#if ENVIRONMENT_VARIABLE_DEBUG_AND_TEST
EnvVar::printEnvVarInUse();
#endif
// starting time
Double dResult; // 记录编码用的时间
clock_t lBefore = clock(); // 记录编码开始的时间
// call encoding function
cTAppEncTop.encode(); // 实际编码的最上层入口
// ending time
dResult = (Double)(clock()-lBefore) / CLOCKS_PER_SEC; // 总时间
printf("\n Total Time: %12.3f sec.\n", dResult); // 打印总时间
// destroy application encoder class
cTAppEncTop.destroy();
return 0;
}