男儿欲遂平生志,五经勤向窗前读。这篇文章主要讲述HEVC代码学习1:TAppEncoder的main函数相关的知识,希望能为你提供帮助。
TAppEncoder是编码器工程,完成视频序列的编码。
运行时,首先调用encmain.cpp中的main函数
【HEVC代码学习1:TAppEncoder的main函数】
main函数中完成的工作主要有初始化encoder类,解析cfg文件,然后调用TAppEncTop::encode函数进入下一层,并且对编码过程进行计时。
其中调用了重要参数TAppEncTop::encode,是编码器的最上层的入口。
文章图片
int main(int argc, char* argv[]) { TAppEncTopcTAppEncTop; //定义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; }
推荐阅读
- Android攻城狮属性动画赏析
- Android应用经典主界面框架之二:仿网易新闻clientCSDN client (Fragment ViewPager)
- 安卓TabHost+ViewPager+RadioGroup多功能模板整理
- Android开发中dpdpipx的区别(转)
- 如何解决建立数据库连接时出错(可能的原因及解决方法)
- 如何修复WordPress中的500内部服务器错误(解决办法介绍)
- 如何安装和激活WordPress主题(3种不同的方法)
- 如何为你的WordPress网站创建子主题(3种不同的方法)
- 如何使用WordPress LearnPress创建在线课程(分步指南)