一、HM代码学习之TAppEncoder中的mian()函数

一、编码端主函数的调用关系
二、TAppEncoder中main()函数的代码详解

一、编码端主函数的调用关系:

该函数位于HM子项目 TAppEncoder中的 Source Files中,文件名称是 encmain.cpp

在这里插入图片描述

二、TAppEncoder中的mian()函数

下面是HM中该编码主函数的代码:

#include <time.h>
#include <iostream>
#include "TAppEncTop.h"
#include "TAppCommon/program_options_lite.h"


#include "../Lib/TLibCommon/Debug.h"


int main(int argc, char* argv[])
{
  //HEVC编码器应用类,继承自TAPPEncCfg,实现了整个编码框架的入口、读取文件、初始化、编码、写数据以及结束处理等操作。其中父类TAPPEncCfg,是编码器的配置信息类,定义了一大堆的配置信息
  TAppEncTop  cTAppEncTop;      

  // 打印信息,标准输出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" );

  // 创建一个编码器应用类,实际creat是一个空函数,不做任何的操作
  cTAppEncTop.create();      

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

  //定义该变量,用于记录编码所花费的时间
  Double dResult;
  //开始计时
  clock_t lBefore = clock();

  //唤起编码功能,执行了实际的编码工作
  cTAppEncTop.encode();   

  //结束时间,并计算出整个编码过程花费了多长的时间
  dResult = (Double)(clock()-lBefore) / CLOCKS_PER_SEC;
  printf("\n Total Time: %12.3f sec.\n", dResult);

  //销毁编码器应用类
  cTAppEncTop.destroy();

  return 0;
}

注意:其中调用了一个重要的函数TAppEncTop.encode();函数,该函数是编码器的最上层的入口


更多关于视频编码的知识和资源,更精致的文章排版,欢迎关注博主微信公众号,一起交流、学习、进步!!!
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值