Presentation title
Samsung Electronics Co. Ltd. and British Broadcasting Corporation, 2010
Data structure and access method (1)
LCU vs. Sub-CU
All CUs are handled through TComDataCU* pointer
From the LCU (largest CU), Sub-CU is processed recursively by z-scan
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
LCU (e.g. 64×64)
Sub-CU: TComDataCU*
Sub-CU: TComDataCU*
Processing order
*
Samsung Electronics Co. Ltd. and British Broadcasting Corporation, 2010
Data structure and access method (2)
TComDataCU class has all information we need
Actual data storage is allocated only at LCU (largest CU) level
In Sub-CUs, data storage points to suitable position in LCU storage
LCU (e.g. 64×64)
4
Basic unit for storage
*
Samsung Electronics Co. Ltd. and British Broadcasting Corporation, 2010
Data structure and access method (3)
Every information in CU is accessed by index
Basically, every index is the storage unit number within the CU
In source-code, AbsPartIdx means absolute index in the given CU
LCU (e.g. 64×64)
Index in CU
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub-CU: TComDataCU* pcCU
pcCU->getPredictionMode(0)
Basic unit for storage
*
Samsung Electronics Co. Ltd. and British Broadcasting Corporation, 2010
Data structure and access method (4)
How to obtain absolute index in LCU?
Each TComDataCU class has m_uiAbsIdxInLCU, which means the absolute z-scan index in LCU basis
Useful to derive index of neighbouring CUs
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
LCU (e.g. 64×64)
Sub-CU: TComDataCU* pcCU
pcCU->m_uiAbsIdxInLCU
*
Samsung Electronics Co. Ltd. and British Broadcasting Corporation, 2010
Data structure and access method (5)
How to convert between z-scan and raster scan in LCU-based index?
Two arrays, g_auiZscanToRaster and g_auiRasterToZscan
g_auiZscanToRaster[ z-scan index ] = raster scan index
g_auiRasterToZscan[ raster index ] = z-scan index
Raster scan is useful to derive index of neighbouring CUs
LCU (e.g. 64×64, z-scan)
0
1
8
9
2
3
10
11
16
17
24
25
18
19
26
27
4
5
12
13
6
7
14
15
20
21
28
29
22
23
30
31
32
33
40
41
34
35
42
43
48
49
56
57
50
51
58
59
36
37
44
45
38
39
46
47
52
53
60
61
54
55
62
63
LCU (e.g. 64×64, raster)
g_auiZscanToRaster
g_auiRasterToZscan
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
*
Samsung Electronics Co. Ltd. and British Broadcasting Corporation, 2010
Data structure and access method (6)
Transform coefficient data structure
1D arrays, m_pcTrCoeffY, m_pcTrCoeffCb and m_pcTrCoeffCr are allocated in LCU
For each CU, getCoeffY, getCoeffCb and getCoeffCr give the starting point of coefficients. They are arranged using raster-scan
0
1
2
3
4
LCU (e.g. 64×64)
16
LCU, m_pcTrCoeffY (64×64 = 4096 entries)
Sub-CU: TComDataCU* pcCU
pcCU->getCoeffY()
16×16 = 256 entries
*