HEVC代码学习1:TAppEncoder的main函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HEVC代码学习1:TAppEncoder的main函数相关的知识,希望对你有一定的参考价值。

TAppEncoder是编码器工程,完成视频序列的编码。

运行时,首先调用encmain.cpp中的main函数

 

main函数中完成的工作主要有初始化encoder类,解析cfg文件,然后调用TAppEncTop::encode函数进入下一层,并且对编码过程进行计时。

其中调用了重要参数TAppEncTop::encode,是编码器的最上层的入口。

技术分享

 

int main(int argc, char* argv[])
{
  TAppEncTop  cTAppEncTop; //定义cTAppEncTop

  // print information 打印信息并标准输出HM版本信息
  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(); //创建encoder类,实际create是一个空函数,不做任何操作。

  // parse configuration 解析cfg配置文件
  try
  {
    if(!cTAppEncTop.parseCfg( argc, argv ))//如果cfg文件正确,会调用xCheckParameter函数,在命令行窗口中输出解析提示,并调用xPrintParameter来回显参数
    {
      cTAppEncTop.destroy(); //如果cfg文件错误,调用destroy函数,实际也是一个空函数,不做任何操作。
#if ENVIRONMENT_VARIABLE_DEBUG_AND_TEST
      EnvVar::printEnvVar();
#endif
      return 1;
    }
  }
  catch (df::program_options_lite::ParseFailure &e) //异常处理,如果cfg文件错误时回显错误提示
  {
    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(); //调用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();  //调用destroy函数

  return 0;
}

  

以上是关于HEVC代码学习1:TAppEncoder的main函数的主要内容,如果未能解决你的问题,请参考以下文章

HEVC学习与研究1HM-16.7编码器的基本结构

TIP 2018论文概述:基于深度学习的HEVC复杂度优化

HEVC-HM16.9源码学习TEncCu::xCompressCU

HEVC代码追踪(八。三):encodeCoeff

论文学习 | 利用块分割信息增强压缩视频质量:Enhancing HEVC Compressed Videos with a Partition-Masked Convolutional Neural

Codecs系列HEVC标准:参考帧管理RPS技术