HM--HM解决方案以及命名规则

版权声明:转载请注明出处 https://blog.csdn.net/weixin_42683993/article/details/88086185

HM解决方案

1.总共包含了7个工程:

  1. TAppCommon 2. TAppDecoder 3. TAppEncoder

  2. TLibCommon 5. TLibDecoder 6. TLibEncoder7. TLibVideoIO

应用函数与库函数的主要区别是:前者是面向用户的,主要是通过调用若干库函数实现更为丰富和复杂的功能,而后者是面向程序设计者的,或者说对用户是不可见的,它由程序设计者来实现,主要是对一些基本的功能进行底层设计与实现,对于用户来说,只关心这些库函数的接口以及如何调用,不需也不应该关心它的实现。'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’;

在工程TLibEncoder的头文件TEncCu.h中,定义了一个类TEncCu,有个数据成员m_ppcBestCU,根据前面的命名规则,它首先是个数据成员,是个二级指针,且是指向一个类的,实际上,它是这么声明的,TComDataCU**,TComDataCU它就是一个类,且该变量被声明为二级指针,据此,符合上述命名规则。
还有一个数据成员这么声明UChar
m_uhTotalDepth; 无符号字符型,同样也是符合命名规则的。
在该类中,有这么一个成员函数xCompressCU,以’x’开头命名,在类中被声明为’protected’,符合命名规则。

猜你喜欢

转载自blog.csdn.net/weixin_42683993/article/details/88086185
今日推荐