学习HEVC(1)

来源:互联网 发布:怎么在电脑上清理数据 编辑:程序博客网 时间:2024/05/18 00:28

刚开始看H265代码,做一些笔记。

TAppEncoder

程序初始化部分

TAppEncTop  cTAppEncTop;  // print information  fprintf( stdout, "\n" );  fprintf( stdout, "HM software: Encoder Version [%s]", NV_VERSION );  fprintf( stdout, NVM_ONOS );  fprintf( stdout, NVM_COMPILEDBY );  fprintf( stdout, NVM_BITS );  fprintf( stdout, "\n" );  // create application encoder class  cTAppEncTop.create();  // parse configuration  try  {  if(!cTAppEncTop.parseCfg( argc, argv ))    {      cTAppEncTop.destroy();      return 1;    }  }  catch (po::ParseFailure& e)  {    cerr << "Error parsing option \""<< e.arg <<"\" with argument \""<< e.val <<"\"." << endl;    return 1;  }
其中,create函数是空的,argc和argv是配置的参数,这里我设置的是官方给的cfg文件,encoder_intra_main.cfg和BasketballDrill.cfg文件。

parseCfg函数应该就是读取cfg文件,设置一些参数。

接下来进入parceCfg函数内部,里面略显复杂。

po::Options opts;  opts.addOptions()  ("help", do_help, false, "this help text")  ("c", po::parseConfigFile, "configuration file name")
addOptions()后面又跟了一个括号,仔细看了一下program_options_lite.h里面的实现,OptionSpecific类重载了括号运算符,所以addOptions后面括号里的是参数,相当于赋值了,都插入到opts包含的若干列表和映射中。


0 0