HM笔记_2_命名规则


本文转载自 HEVC中的命名规则,并稍作修改。

工程的命名规则

HM16.20共分为9个工程:1. TAppCommon,2. TAppDecoder,3. TAppDecoderAnalyser,4. TAppEncoder 5. TAppMctsExtractor ,6. TLibCommon,7. TLibDecoder, 8. TLibDecoderAnalyser,9. TLibEncoder,10. TLibVideoIO

其中,T代表TestApp代表Application,表明该工程主要包含一些应用函数Lib代表Library,表明该工程主要包含一些库函数,这里顺便提一下,应用函数与库函数的主要区别是:前者是面向用户的,主要是通过调用若干库函数实现更为丰富和复杂的功能,而后者是面向程序设计者的,或者说对用户是不可见的,它由程序设计者来实现,主要是对一些基本的功能进行底层设计与实现,对于用户来说,只关心这些库函数的接口以及如何调用,不需也不应该关心它的实现。Common表明该工程包含的一些函数是编码器和解码器共用的Decoder表明该工程包含的函数是解码器使用的,而Encoder表明该工程包含的函数是编码器使用的VideoIO工程主要是实现对YUV文件的读写操作

类、变量和函数的命名规则

1. 类的命名

一般来说,一个头文件只包含一个类的定义,文件名即为类名,且该类是属于哪个工程的,它的名字就以该工程的前几个字母开头,如类TAppEncTop,它就是以工程TAppEncoder的前7个字母开头,因此,从该类的名字,就能够看出该类是属于哪个工程的

2.变量的命名

对于类的数据成员来说,一般以**m_**开头,即member;对于全局变量来说,一般以g_开头,即global

对于一般的变量(包含上述两种变量)来说,有如下命名规则:

p,该变量是指针类型,即pointer,n个p则表明该指针为n级指针;

c,该变量是某个类的对象,即class

i,该变量是整型,即int

u,该变量是无符号型,即unsigned

h,该变量是字符型,这里不用c来代表char应该是为了避免跟前面的class冲突了;

b,该变量是布尔类型,即bool

d,该变量是双精度浮点数,即double

f,该变量是单精度浮点数,即float

a,该变量是类组,即array

e,该变量是枚举类型,即enum

r,该变量是引用类型,等等。值得一提的是,不是每个变量的命名都满足这些规则,具体情况还是要具体分析的。但是,按照这些规则,80%以上的变量都能一眼看出它的特性来。

3.函数的命名

一般来说,对于一个类的成员函数来说,如果该函数的访问权限是protected,则在其函数名前加上**x**;但是,在我看代码过程中,有些’protected’的成员函数并没按照这个规则来命名,所以,这一条规则仅供参考。能够肯定的是,只要某个函数名字前有个’x’,则该函数一定是某个类的protected成员函数。

4. 例子

在TLibEncoder中的TEncCu.h中声明了TEncCu类,如下所示,其中私有方法m_ppcBestCU表示其是一个类的成员,而且是指向一个类的二级指针,这从它的声明类型TComDataCU**中得到证实。

/** \file     TEncCu.h
    \brief    Coding Unit (CU) encoder class (header)
*/
class TEncCu
{
private:
  TComDataCU**            m_ppcBestCU;      ///< Best CUs in each depth
  TComDataCU**            m_ppcTempCU;      ///< Temporary CUs in each depth
  UChar                   m_uhTotalDepth;
protected:
  Void  finishCU            ( TComDataCU*  pcCU, UInt uiAbsPartIdx );
  Int   xComputeQP          ( TComDataCU* pcCU, UInt uiDepth );
  Void  xCheckBestMode      ( ... );
  Void  xCheckRDCostMerge2Nx2N( ... );
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值