zoukankan      html  css  js  c++  java
  • HM编码器代码阅读(1)——介绍以及相关知识

    HM是HEVC(H.265)的开源实现,可以从网上直接下载。
    HEVC(H.265)是新一代的视频编解码标准。
    本人目前研究的只是编码器部分,而且还是入门阶段!为了提高自己,边学边记,由于理解不够深入,难免会有误,请见谅!
    本人现在使用的版本是15.0,最新版本好像已经到16.0了


    文件的功能以及作用:
    AccessUnit.h 定义了存取单元(或者说访问单元),实质是一个类型为NALUnitEBSP的list
    NAL.h 定义了NALUnit(NAL单元)和NALUnitEBSP(EBSP类型的NAL单元)
    AnnexBwrite.h 实现了把存取单元写入外部数据队列的功能
    CommonDef.h 定义各种宏
    ContextModel.h/ContextModel.cpp 定义了熵编码需要的上下文模型
    ContextModel3DBuffer.h/ContextModel3DBuffer.cpp 定义了熵编码上下文模型需要的3维缓存区
    ContextTables.h 定义各种上下文所需的表格,例如二进制化、熵编码等等
    encmain.cpp 编码器的主函数
    libmd5.h/libmd5.cpp/MD5.h md5的实现
    NALwrite.h/NALwrite.cpp 定义了输出的NAL单元(OutputNALUnit)、实现把NAL单元写到外部输出流中(std::ostream)
    program_options_lite.h/program_options_lite.cpp 编码器的选项配置
    SEI.h/SEI.cpp 图像增强信息方面
    SEIwrite.h/SEIwrite.cpp 写SEI信息到比特流中
    SyntaxElementWriter.h/SyntaxElementWriter.cpp 语法元素写入器
    TAppEncCfg.h/TAppEncCfg.cpp 编码器应用程序配置类
    TAppEncTop.h/TAppEncTop.cpp 继承自TAppEncCfg,编码器应用程序顶层类(或者说编码器的主类)
    TComBitCounter.h/TComBitCounter.cpp 比特计数器
    TComBitStream.h/TComBitStream.cpp 比特流
    TComCABACTables.h/TComCABACTables.cpp定义了CABAC所需要的各种表格
    TComDataCU.h/TComDataCU.cpp CU(编码单元的定义)
    TComInterpolationFilter.h/TComInterpolationFilter.cpp 插值过滤器
    TComList.h 公用的列表的定义,继承自std的list
    TComLoopFilter.h/TComLoopFilter.cpp 环路滤波器的实现
    TComMotionInfo.h/TComMotionInfo.cpp 运动信息的实现
    TComMv.h mv(运动向量)的定义
    TComPattern.h/TComPattern.cpp 公共的模式类,定义了YUV三个颜色分量的方位方法和相邻像素的访问方法
    TcomPic.h/TcomPic.cpp 是图片类,它包含TComPicSym(图像符号类)和TComPicYuv(yuv数据类:包括原始数据,预测数据、惨差数据)
    TComPicSym.h/TComPicSym.cpp 定义了图像符号类,定义了从图像到片和cu的访问方式
    TComPicYuv.h/TComPicYuv.cpp 图像的yuv数据类:包括原始数据,预测数据、残差数据
    TComPicYuvMD5.cpp 图像的yuv的md5的实现
    TComPrediction.h/TComPrediction.cpp 预测的实现(帧内预测/帧间预测)
    TComRdCost.h/TComRdCost.cpp率失真代价
    TComRdCostWeightPrediction.h/TComRdCostWeightPrediction.cpp 带率失真权重的预测
    TComRom.h/TComRom.cpp 全局的变量和函数
    TComSampleAdaptiveOffset.h/TComSampleAdaptiveOffset.cpp SAO的定义和实现
    TComSlice.h/TComSlice.cpp 片的定义和实现
    TComTrQuant.h/TComTrQuant.cpp变换和量化的实
    TComWeightPrediction.h/TComWeightPrediction.cpp带权重的预测
    TComYuv.h/TComYuv.cpp  TComPicYuv和TComYuv的区别,TComYuv可以看作是一个方便操作YUV的类,主要用于预测阶段,从TComPicYuv产生而来,TComYuv的作用没有TComPicYuv那么大
    TEncAnalyze.h/TEncAnalyze.cpp 编码器分析类(性能分析类)
    TEncBinCoder.h 二进制编码器的定义(定义了二进制化和熵编码的一些类)
    TEncBinCoderCABAC.h/TEncBinCoderCABAC.cpp CABAC二进制编码器
    TEncBinCoderCABACCounter.h/TEncBinCoderCABACCounter.cpp CABAC比特计数器
    TEncCavlc.h/TEncCavlc.cpp CAVLC熵编码器
    TEncCfg.h 编码器的基础配置类
    TEncCu.h/TEncCu.cpp CU编码器
    TEncEntropy.h/TEncEntropy.cpp 熵编码器
    TEncGOP.h/TEncGOP.cpp 图像组编码器
    TEncPic.h/TEncPic.cpp 图像编码器
    TEncPreanalyzer.h/TEncPreanalyzer.cpp 预测分析器编码器
    TEncRateCtrl.h/TEncRateCtrl.cpp 速率控制器(帧速率、比特速率等等)
    TEncSampleAdaptiveOffset.h/TEncSampleAdaptiveOffset.cpp SAO编码器
    TEncSbac.h/TEncSbac.cpp SBAC编码器(SBAC是CABAC的改进,是并行的CABAC算法)
    TEncSearch.h/TEncSearch.cpp 运动搜索的实现
    TEncSlice.h/TEncSlice.cpp 片编码器
    TEncTop.h/TEncTop.cpp 公共的编码器类(与编码器应用类不一样,编码器应用类是一个包装的接口类)
    TvideoIOYuv.h/TvideoIOYuv.cpp YUV的I/O类,是用来读取yuv文件的类,读取出来之后把数据放到TComPicYuv中 
    TypeDef.h 基础类型的定义
    WeightPredAnalysis.h/WeightPredAnalysis.cpp 带权预测分析
    TCom和TEnc的区别在于,TEnc一般是管理器或者编码器,而TCom则是数据存储类或者算法实现类,例如TEncCu是CU编码器类,而TComDataCU则是CU的数据类(或者说CU数据的操作类,因为实际的数据仍然存放在TComPicYuv中)

    原文链接:http://blog.csdn.net/nb_vol_1/article/details/51134857

  • 相关阅读:
    [Beta阶段]发布说明
    [技术博客]使用微信机器人监听群内招聘信息的过程及遇到的问题
    [Beta阶段]第十次Scrum Meeting
    [Beta阶段]第九次Scrum Meeting
    [技术博客]django连接mysql数据库的方法及部分问题的解决方法
    python学习06循环
    python学习05条件分支
    python学习04数据
    python学习03字符串基本操作
    python学习01python入门一
  • 原文地址:https://www.cnblogs.com/ranson7zop/p/8075503.html
Copyright © 2011-2022 走看看