data structure and access method (1)
DESCRIPTION
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. LCU (e.g. 64x64). Sub-CU: TComDataCU*. 0. 1. 2. 3. 4. 9. 5. 6. 15. Sub-CU: TComDataCU*. 7. 8. 10. 11. 14. - PowerPoint PPT PresentationTRANSCRIPT
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 89
10 11
12 1314
15
LCU (e.g. 64x64) 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. 64x64)
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. 64x64)
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
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
29 30
27 28
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 64
LCU (e.g. 64x64)
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
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
29 30
27 28
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 64
LCU (e.g. 64x64, z-scan)
1 2
9 10
3 4
11 12
17 18
25 26
19 20
27 28
5 6
13 14
7 8
15 16
21 22
29 30
23 24
31 32
33 34
41 42
35 36
43 44
49 50
57 58
51 52
59 60
37 38
45 46
39 40
47 48
53 54
61 62
55 56
63 64
LCU (e.g. 64x64, raster)
g_auiZscanToRaster
g_auiRasterToZscan
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. 64x64)
16
LCU, m_pcTrCoeffY (64x64 = 4096 entries)
Sub-CU: TComDataCU* pcCU
pcCU->getCoeffY()
16x16 = 256 entries