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 LCU (e.g. 64x64) 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 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 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 LCU (e.g. 64x64, z-scan) 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 LCU (e.g. 64x64) 16 LCU, m_pcTrCoeffY (64x64 = 4096 entries) Sub-CU: TComDataCU* pcCU pcCU->getCoeffY() 16x16 = 256 entries