首页 > 代码库 > HEVC逆扫描之二:关于扫描表的说明

HEVC逆扫描之二:关于扫描表的说明

注:HM代码版本为HM-16.2+SCM-3.0rc1/


在介绍逆扫描的过程之前,先说明扫描表的存储和初始化过程(初始化只在解码器启动时进行,对应函数为initROM())。


HEVC扫描方式中提到:对于超过 4x4 的块,先将块分成若干个4x4的CG(Coefficient Group),CG之间和每个CG内部都使用选定的扫描顺序进行扫描。所以,存在两种扫描表:像素点扫描表和CG扫描表。


在源程序中,扫描表是保存在一个四维数组g_scanOrder中,该数组的申明如下图。


技术分享

图4  扫描数组的申明


该数组维度说明如下表所示。


表1  扫描表维度说明

维度

意义

取值范围

备注

1

像素点扫描表/CG扫描表

SCAN_UNGROUPED/

SCAN_GROUPED_4x4

SCAN_UNGROUPED对应CG扫描表;SCAN_GROUPED_4x4对应像素点扫描表。

2

扫描方式

对角、水平、垂直三种扫描方式

下面以最复杂的对角扫描为例说明对角扫描方式下的扫描过程。

3

宽度的深度值

[0, 6]

对应1x1~64x64,包含非对称尺寸。

4

高度的深度值

[0, 6]


注:该数组为指针数组,该数组的每一个元素对应一张具体的扫描表。


下面以一个8x8的亮度TU、扫描方式为对角扫描为例,说明其对应的两个扫描表。光栅扫描顺序表如下。


0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

图5  8x8光栅扫描顺序表


对应的像素点扫描表如下:



 

0

8

1

16

9

2

24

17

10

3

25

18

11

26

19

27

32

40

33

48

41

34

56

49

42

35

57

50

43

58

51

59

4

12

5

20

13

6

28

21

14

7

29

22

15

30

23

31

36

44

37

52

45

38

60

53

46

39

61

54

47

62

55

63

图6  8x8像素点扫描表


对应的CG扫描表如下:


 0 

 2 

1

3

图7  8x8 CG扫描表

HEVC逆扫描之二:关于扫描表的说明