Changeset 408 in 3DVCSoftware for branches/HTM-6.2-dev1-LG/source/Lib/TLibDecoder
- Timestamp:
- 16 May 2013, 09:23:44 (12 years ago)
- Location:
- branches/HTM-6.2-dev1-LG/source/Lib/TLibDecoder
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-6.2-dev1-LG/source/Lib/TLibDecoder/TDecCAVLC.cpp
r384 r408 265 265 xParseDblParam( aps ); 266 266 } 267 #if !LGE_SAO_MIGRATION_D0091 267 268 READ_FLAG(uiCode, "aps_sao_interleaving_flag"); aps->setSaoInterleavingFlag( (uiCode==1)?true:false ); 268 269 if(!aps->getSaoInterleavingFlag()) … … 275 276 } 276 277 } 278 #endif 277 279 READ_FLAG(uiCode, "aps_adaptive_loop_filter_flag"); aps->setAlfEnabled( (uiCode==1)?true:false ); 278 280 if(aps->getAlfEnabled()) … … 307 309 } 308 310 } 311 #if !LGE_SAO_MIGRATION_D0091 309 312 /** parse SAO parameters 310 313 * \param pSaoParam … … 532 535 } 533 536 } 534 537 #endif 535 538 536 539 Void TDecCavlc::xParseAlfParam(AlfParamSet* pAlfParamSet, Bool bSentInAPS, Int firstLCUAddr, Bool acrossSlice, Int numLCUInWidth, Int numLCUInHeight) … … 1866 1869 if (sps->getUseSAO()) 1867 1870 { 1871 #if LGE_SAO_MIGRATION_D0091 1872 READ_FLAG(uiCode, "slice_sao_luma_flag"); rpcSlice->setSaoEnabledFlag((Bool)uiCode); 1873 READ_FLAG(uiCode, "slice_sao_chroma_flag"); rpcSlice->setSaoEnabledFlagChroma((Bool)uiCode); 1874 #else 1868 1875 READ_FLAG(uiCode, "slice_sao_interleaving_flag"); rpcSlice->setSaoInterleavingFlag(uiCode); 1869 1876 READ_FLAG(uiCode, "slice_sample_adaptive_offset_flag"); rpcSlice->setSaoEnabledFlag((Bool)uiCode); … … 1878 1885 rpcSlice->setSaoEnabledFlagCr(0); 1879 1886 } 1887 #endif 1880 1888 } 1881 1889 READ_UVLC ( uiCode, "aps_id" ); rpcSlice->setAPSId(uiCode); -
branches/HTM-6.2-dev1-LG/source/Lib/TLibDecoder/TDecCAVLC.h
r332 r408 177 177 protected: 178 178 Void xParseDblParam ( TComAPS* aps ); 179 #if !LGE_SAO_MIGRATION_D0091 179 180 Void xParseSaoParam ( SAOParam* pSaoParam ); 180 181 Void xParseSaoOffset (SaoLcuParam* saoLcuParam); 181 182 Void xParseSaoUnit (Int rx, Int ry, Int compIdx, SAOParam* saoParam, Bool& repeatedRow ); 183 #endif 182 184 Void xParseAlfParam(AlfParamSet* pAlfParamSet, Bool bSentInAPS = true, Int firstLCUAddr = 0, Bool acrossSlice = true, Int numLCUInWidth= -1, Int numLCUInHeight= -1); 183 185 Void parseAlfParamSet(AlfParamSet* pAlfParamSet, Int firstLCUAddr, Bool alfAcrossSlice); -
branches/HTM-6.2-dev1-LG/source/Lib/TLibDecoder/TDecCu.cpp
r384 r408 371 371 UInt uiMergeIndex = pcCU->getMergeIndex(uiAbsPartIdx); 372 372 #if MERL_VSP_C0152 373 #if LGE_VSP_INHERIT_D0092 374 Int iVSPIndexTrue[MRG_MAX_NUM_CANDS_MEM]; 375 for (Int i=0; i<MRG_MAX_NUM_CANDS_MEM; i++) 376 { 377 iVSPIndexTrue[i] = 0; 378 } 379 #else 373 380 Int iVSPIndexTrue[3] = {-1, -1, -1}; 381 #endif 374 382 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, uiDepth, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, iVSPIndexTrue, uiMergeIndex ); 375 383 … … 383 391 { 384 392 Int iVSPIdx = 0; 393 #if LGE_VSP_INHERIT_D0092 394 if (iVSPIndexTrue[uiMergeIndex] == 1) 395 { 396 iVSPIdx = 1; 397 } 398 #else 385 399 Int numVspIdx; 386 400 numVspIdx = 3; … … 393 407 } 394 408 } 409 #endif 395 410 pcCU->setVSPIndexSubParts( iVSPIdx, uiAbsPartIdx, 0, uiDepth ); //Initialize the VSP, may change later in get InterMergeCandidates() 396 #if QC_BVSP_CleanUP_D0191 411 #if QC_BVSP_CleanUP_D0191 && !LGE_VSP_INHERIT_D0092 397 412 if(iVSPIdx != 0) 398 413 { -
branches/HTM-6.2-dev1-LG/source/Lib/TLibDecoder/TDecEntropy.cpp
r384 r408 301 301 UInt uiMergeIndex = pcCU->getMergeIndex(uiSubPartIdx); 302 302 #if MERL_VSP_C0152 303 #if LGE_VSP_INHERIT_D0092 304 Int iVSPIndexTrue[MRG_MAX_NUM_CANDS_MEM]; 305 for (Int i=0; i<MRG_MAX_NUM_CANDS_MEM; i++) 306 { 307 iVSPIndexTrue[i] = 0; 308 } 309 #else 303 310 Int iVSPIndexTrue[3] = {-1, -1, -1}; 311 #endif 304 312 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, uiDepth, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, iVSPIndexTrue, uiMergeIndex ); 305 313 … … 326 334 { 327 335 Int iVSPIdx = 0; 336 #if LGE_VSP_INHERIT_D0092 337 if (iVSPIndexTrue[uiMergeIndex] == 1) 338 { 339 iVSPIdx = 1; 340 } 341 #else 328 342 Int numVspIdx; 329 343 numVspIdx = 3; … … 336 350 } 337 351 } 352 #endif 338 353 pcCU->setVSPIndexSubParts( iVSPIdx, uiSubPartIdx, uiPartIdx, uiDepth ); //Initialize the VSP, may change later in get InterMergeCandidates() 339 #if QC_BVSP_CleanUP_D0191 340 if(iVSPIdx != 0) 354 #if QC_BVSP_CleanUP_D0191 && !LGE_VSP_INHERIT_D0092 355 if(iVSPIdx != 0) 341 356 { 342 357 Int iIVCIdx = pcCU->getSlice()->getRefPic(REF_PIC_LIST_0, 0)->getPOC()==pcCU->getSlice()->getPOC() ? 0: pcCU->getSlice()->getNewRefIdx(REF_PIC_LIST_0); -
branches/HTM-6.2-dev1-LG/source/Lib/TLibDecoder/TDecEntropy.h
r332 r408 225 225 Void setSliceGranularity (Int iSliceGranularity) {m_pcEntropyDecoderIf->setSliceGranularity(iSliceGranularity);} 226 226 227 #if !LGE_SAO_MIGRATION_D0091 227 228 Void decodeSaoParam (SAOParam* saoParam); 228 229 void decodeSaoLcu(Int rx, Int ry, Int compIdx, SAOParam* saoParam, Bool &repeatedRow ); 229 230 Void decodeSaoOneLcu(SaoLcuParam* saoLcuParam); 231 #endif 230 232 231 233 Void decodeFlush() { m_pcEntropyDecoderIf->decodeFlush(); } -
branches/HTM-6.2-dev1-LG/source/Lib/TLibDecoder/TDecGop.cpp
r296 r408 372 372 if( pcSlice->getSPS()->getUseSAO() ) 373 373 { 374 #if LGE_SAO_MIGRATION_D0091 375 if(pcSlice->getSaoEnabledFlag()||pcSlice->getSaoEnabledFlagChroma()) 376 { 377 SAOParam *saoParam = pcSlice->getAPS()->getSaoParam(); 378 saoParam->bSaoFlag[0] = pcSlice->getSaoEnabledFlag(); 379 saoParam->bSaoFlag[1] = pcSlice->getSaoEnabledFlagChroma(); 380 m_pcSAO->setSaoLcuBasedOptimization(1); 381 m_pcSAO->createPicSaoInfo(rpcPic, m_uiILSliceCount); 382 m_pcSAO->SAOProcess(rpcPic, saoParam); 383 m_pcSAO->PCMLFDisableProcess(rpcPic); 384 m_pcSAO->destroyPicSaoInfo(); 385 } 386 #else 374 387 if(pcSlice->getSaoEnabledFlag()) 375 388 { … … 388 401 m_pcSAO->destroyPicSaoInfo(); 389 402 } 403 #endif 390 404 } 391 405 -
branches/HTM-6.2-dev1-LG/source/Lib/TLibDecoder/TDecSbac.cpp
r332 r408 88 88 , m_cALFSvlcSCModel ( 1, 1, NUM_ALF_SVLC_CTX , m_contextModels + m_numContextModels, m_numContextModels) 89 89 , m_cCUAMPSCModel ( 1, 1, NUM_CU_AMP_CTX , m_contextModels + m_numContextModels, m_numContextModels) 90 #if LGE_SAO_MIGRATION_D0091 91 , m_cSaoMergeSCModel ( 1, 1, NUM_SAO_MERGE_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 92 , m_cSaoTypeIdxSCModel ( 1, 1, NUM_SAO_TYPE_IDX_CTX , m_contextModels + m_numContextModels, m_numContextModels) 93 #else 90 94 , m_cSaoFlagSCModel ( 1, 1, NUM_SAO_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 91 95 , m_cSaoUvlcSCModel ( 1, 1, NUM_SAO_UVLC_CTX , m_contextModels + m_numContextModels, m_numContextModels) … … 94 98 , m_cSaoMergeUpSCModel ( 1, 1, NUM_SAO_MERGE_UP_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 95 99 , m_cSaoTypeIdxSCModel ( 1, 1, NUM_SAO_TYPE_IDX_CTX , m_contextModels + m_numContextModels, m_numContextModels) 100 #endif 96 101 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 97 102 , m_cDmmFlagSCModel ( 1, 1, NUM_DMM_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) … … 184 189 m_cALFUvlcSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_ALF_UVLC ); 185 190 m_cALFSvlcSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_ALF_SVLC ); 191 #if LGE_SAO_MIGRATION_D0091 192 m_cSaoMergeSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SAO_MERGE_FLAG ); 193 m_cSaoTypeIdxSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SAO_TYPE_IDX ); 194 #else 186 195 m_cSaoFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SAO_FLAG ); 187 196 m_cSaoUvlcSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SAO_UVLC ); … … 190 199 m_cSaoMergeUpSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SAO_MERGE_UP_FLAG ); 191 200 m_cSaoTypeIdxSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SAO_TYPE_IDX ); 201 #endif 192 202 193 203 m_cCUTransSubdivFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_TRANS_SUBDIV_FLAG ); … … 271 281 m_cALFUvlcSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_ALF_UVLC ); 272 282 m_cALFSvlcSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_ALF_SVLC ); 283 #if LGE_SAO_MIGRATION_D0091 284 m_cSaoMergeSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SAO_MERGE_FLAG ); 285 m_cSaoTypeIdxSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SAO_TYPE_IDX ); 286 #else 273 287 m_cSaoFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SAO_FLAG ); 274 288 m_cSaoUvlcSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SAO_UVLC ); … … 277 291 m_cSaoMergeUpSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SAO_MERGE_UP_FLAG ); 278 292 m_cSaoTypeIdxSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SAO_TYPE_IDX ); 293 #endif 279 294 m_cCUTransSubdivFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_TRANS_SUBDIV_FLAG ); 280 295 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX … … 1672 1687 } 1673 1688 1674 1689 #if LGE_SAO_MIGRATION_D0091 1690 Void TDecSbac::parseSaoMaxUvlc ( UInt& val, UInt maxSymbol ) 1691 { 1692 if (maxSymbol == 0) 1693 { 1694 val = 0; 1695 return; 1696 } 1697 1698 UInt code; 1699 Int i; 1700 m_pcTDecBinIf->decodeBinEP( code ); 1701 if ( code == 0 ) 1702 { 1703 val = 0; 1704 return; 1705 } 1706 1707 i=1; 1708 while (1) 1709 { 1710 m_pcTDecBinIf->decodeBinEP( code ); 1711 if ( code == 0 ) 1712 { 1713 break; 1714 } 1715 i++; 1716 if (i == maxSymbol) 1717 { 1718 break; 1719 } 1720 } 1721 1722 val = i; 1723 } 1724 1725 Void TDecSbac::parseSaoUflc (UInt uiLength, UInt& riVal) 1726 { 1727 m_pcTDecBinIf->decodeBinsEP ( riVal, uiLength ); 1728 } 1729 1730 Void TDecSbac::parseSaoMerge (UInt& ruiVal) 1731 { 1732 UInt uiCode; 1733 m_pcTDecBinIf->decodeBin( uiCode, m_cSaoMergeSCModel.get( 0, 0, 0 ) ); 1734 ruiVal = (Int)uiCode; 1735 } 1736 1737 Void TDecSbac::parseSaoTypeIdx (UInt& ruiVal) 1738 { 1739 UInt uiCode; 1740 m_pcTDecBinIf->decodeBin( uiCode, m_cSaoTypeIdxSCModel.get( 0, 0, 0 ) ); 1741 if (uiCode == 0) 1742 { 1743 ruiVal = 0; 1744 } 1745 else 1746 { 1747 m_pcTDecBinIf->decodeBinEP( uiCode ); 1748 if (uiCode == 0) 1749 { 1750 ruiVal = 5; 1751 } 1752 else 1753 { 1754 ruiVal = 1; 1755 } 1756 } 1757 } 1758 1759 inline Void copySaoOneLcuParam(SaoLcuParam* psDst, SaoLcuParam* psSrc) 1760 { 1761 Int i; 1762 psDst->partIdx = psSrc->partIdx; 1763 psDst->typeIdx = psSrc->typeIdx; 1764 if (psDst->typeIdx != -1) 1765 { 1766 psDst->subTypeIdx = psSrc->subTypeIdx ; 1767 psDst->length = psSrc->length; 1768 for (i=0;i<psDst->length;i++) 1769 { 1770 psDst->offset[i] = psSrc->offset[i]; 1771 } 1772 } 1773 else 1774 { 1775 psDst->length = 0; 1776 for (i=0;i<SAO_BO_LEN;i++) 1777 { 1778 psDst->offset[i] = 0; 1779 } 1780 } 1781 } 1782 1783 Void TDecSbac::parseSaoOffset(SaoLcuParam* psSaoLcuParam, UInt compIdx) 1784 { 1785 UInt uiSymbol; 1786 static Int iTypeLength[MAX_NUM_SAO_TYPE] = 1787 { 1788 SAO_EO_LEN, 1789 SAO_EO_LEN, 1790 SAO_EO_LEN, 1791 SAO_EO_LEN, 1792 SAO_BO_LEN 1793 }; 1794 1795 if (compIdx==2) 1796 { 1797 uiSymbol = (UInt)( psSaoLcuParam->typeIdx + 1); 1798 } 1799 else 1800 { 1801 parseSaoTypeIdx(uiSymbol); 1802 } 1803 psSaoLcuParam->typeIdx = (Int)uiSymbol - 1; 1804 1805 if (uiSymbol) 1806 { 1807 psSaoLcuParam->length = iTypeLength[psSaoLcuParam->typeIdx]; 1808 #if FULL_NBIT 1809 Int offsetTh = 1 << ( min((Int)(g_uiBitDepth + (g_uiBitDepth-8)-5),5) ); 1810 #else 1811 Int offsetTh = 1 << ( min((Int)(g_uiBitDepth + g_uiBitIncrement-5),5) ); 1812 #endif 1813 1814 if( psSaoLcuParam->typeIdx == SAO_BO ) 1815 { 1816 for(Int i=0; i< psSaoLcuParam->length; i++) 1817 { 1818 parseSaoMaxUvlc(uiSymbol, offsetTh -1 ); 1819 psSaoLcuParam->offset[i] = uiSymbol; 1820 } 1821 for(Int i=0; i< psSaoLcuParam->length; i++) 1822 { 1823 if (psSaoLcuParam->offset[i] != 0) 1824 { 1825 m_pcTDecBinIf->decodeBinEP ( uiSymbol); 1826 if (uiSymbol) 1827 { 1828 psSaoLcuParam->offset[i] = -psSaoLcuParam->offset[i] ; 1829 } 1830 } 1831 } 1832 parseSaoUflc(5, uiSymbol ); 1833 psSaoLcuParam->subTypeIdx = uiSymbol; 1834 } 1835 else if( psSaoLcuParam->typeIdx < 4 ) 1836 { 1837 parseSaoMaxUvlc(uiSymbol, offsetTh -1 ); psSaoLcuParam->offset[0] = uiSymbol; 1838 parseSaoMaxUvlc(uiSymbol, offsetTh -1 ); psSaoLcuParam->offset[1] = uiSymbol; 1839 parseSaoMaxUvlc(uiSymbol, offsetTh -1 ); psSaoLcuParam->offset[2] = -(Int)uiSymbol; 1840 parseSaoMaxUvlc(uiSymbol, offsetTh -1 ); psSaoLcuParam->offset[3] = -(Int)uiSymbol; 1841 if (compIdx != 2) 1842 { 1843 parseSaoUflc(2, uiSymbol ); 1844 psSaoLcuParam->subTypeIdx = uiSymbol; 1845 psSaoLcuParam->typeIdx += psSaoLcuParam->subTypeIdx; 1846 } 1847 } 1848 } 1849 else 1850 { 1851 psSaoLcuParam->length = 0; 1852 } 1853 } 1854 1855 Void TDecSbac::parseSaoOneLcuInterleaving(Int rx, Int ry, SAOParam* pSaoParam, TComDataCU* pcCU, Int iCUAddrInSlice, Int iCUAddrUpInSlice, Int allowMergeLeft, Int allowMergeUp) 1856 { 1857 Int iAddr = pcCU->getAddr(); 1858 UInt uiSymbol; 1859 1860 for (Int iCompIdx=0; iCompIdx<3; iCompIdx++) 1861 { 1862 pSaoParam->saoLcuParam[iCompIdx][iAddr].mergeUpFlag = 0; 1863 pSaoParam->saoLcuParam[iCompIdx][iAddr].mergeLeftFlag = 0; 1864 pSaoParam->saoLcuParam[iCompIdx][iAddr].subTypeIdx = 0; 1865 pSaoParam->saoLcuParam[iCompIdx][iAddr].typeIdx =-1; 1866 pSaoParam->saoLcuParam[iCompIdx][iAddr].offset[0] = 0; 1867 pSaoParam->saoLcuParam[iCompIdx][iAddr].offset[1] = 0; 1868 pSaoParam->saoLcuParam[iCompIdx][iAddr].offset[2] = 0; 1869 pSaoParam->saoLcuParam[iCompIdx][iAddr].offset[3] = 0; 1870 } 1871 if (pSaoParam->bSaoFlag[0] || pSaoParam->bSaoFlag[1] ) 1872 { 1873 if (rx>0 && iCUAddrInSlice!=0 && allowMergeLeft) 1874 { 1875 parseSaoMerge(uiSymbol); 1876 pSaoParam->saoLcuParam[0][iAddr].mergeLeftFlag = (Bool)uiSymbol; 1877 } 1878 if (pSaoParam->saoLcuParam[0][iAddr].mergeLeftFlag==0) 1879 { 1880 if ((ry > 0) && (iCUAddrUpInSlice>=0) && allowMergeUp) 1881 { 1882 parseSaoMerge(uiSymbol); 1883 pSaoParam->saoLcuParam[0][iAddr].mergeUpFlag = (Bool)uiSymbol; 1884 } 1885 } 1886 } 1887 1888 for (Int iCompIdx=0; iCompIdx<3; iCompIdx++) 1889 { 1890 if ((iCompIdx == 0 && pSaoParam->bSaoFlag[0]) || (iCompIdx > 0 && pSaoParam->bSaoFlag[1]) ) 1891 { 1892 if (rx>0 && iCUAddrInSlice!=0 && allowMergeLeft) 1893 { 1894 pSaoParam->saoLcuParam[iCompIdx][iAddr].mergeLeftFlag = pSaoParam->saoLcuParam[0][iAddr].mergeLeftFlag; 1895 } 1896 else 1897 { 1898 pSaoParam->saoLcuParam[iCompIdx][iAddr].mergeLeftFlag = 0; 1899 } 1900 1901 if (pSaoParam->saoLcuParam[iCompIdx][iAddr].mergeLeftFlag==0) 1902 { 1903 if ((ry > 0) && (iCUAddrUpInSlice>=0) && allowMergeUp) 1904 { 1905 pSaoParam->saoLcuParam[iCompIdx][iAddr].mergeUpFlag = pSaoParam->saoLcuParam[0][iAddr].mergeUpFlag; 1906 } 1907 else 1908 { 1909 pSaoParam->saoLcuParam[iCompIdx][iAddr].mergeUpFlag = 0; 1910 } 1911 1912 if (!pSaoParam->saoLcuParam[iCompIdx][iAddr].mergeUpFlag) 1913 { 1914 pSaoParam->saoLcuParam[2][iAddr].typeIdx = pSaoParam->saoLcuParam[1][iAddr].typeIdx; 1915 parseSaoOffset(&(pSaoParam->saoLcuParam[iCompIdx][iAddr]), iCompIdx); 1916 } 1917 else 1918 { 1919 copySaoOneLcuParam(&pSaoParam->saoLcuParam[iCompIdx][iAddr], &pSaoParam->saoLcuParam[iCompIdx][iAddr-pSaoParam->numCuInWidth]); 1920 } 1921 } 1922 else 1923 { 1924 copySaoOneLcuParam(&pSaoParam->saoLcuParam[iCompIdx][iAddr], &pSaoParam->saoLcuParam[iCompIdx][iAddr-1]); 1925 } 1926 } 1927 else 1928 { 1929 pSaoParam->saoLcuParam[iCompIdx][iAddr].typeIdx = -1; 1930 pSaoParam->saoLcuParam[iCompIdx][iAddr].subTypeIdx = 0; 1931 } 1932 } 1933 } 1934 #else 1675 1935 Void TDecSbac::parseSaoUvlc (UInt& ruiVal) 1676 1936 { … … 1909 2169 } 1910 2170 } 2171 #endif 1911 2172 1912 2173 /** -
branches/HTM-6.2-dev1-LG/source/Lib/TLibDecoder/TDecSbac.h
r332 r408 110 110 #endif 111 111 112 #if LGE_SAO_MIGRATION_D0091 113 Void parseSaoMaxUvlc ( UInt& val, UInt maxSymbol ); 114 Void parseSaoMerge ( UInt& ruiVal ); 115 Void parseSaoTypeIdx ( UInt& ruiVal ); 116 Void parseSaoUflc ( UInt uiLength, UInt& ruiVal ); 117 Void parseSaoOneLcuInterleaving(Int rx, Int ry, SAOParam* pSaoParam, TComDataCU* pcCU, Int iCUAddrInSlice, Int iCUAddrUpInSlice, Int allowMergeLeft, Int allowMergeUp); 118 Void parseSaoOffset (SaoLcuParam* psSaoLcuParam, UInt compIdx); 119 #else 112 120 Void parseSaoUvlc ( UInt& ruiVal ); 113 121 Void parseSaoSvlc ( Int& riVal ); … … 118 126 Void parseSaoOneLcuInterleaving(Int rx, Int ry, SAOParam* pSaoParam, TComDataCU* pcCU, Int iCUAddrInSlice, Int iCUAddrUpInSlice, Bool bLFCrossSliceBoundaryFlag); 119 127 Void parseSaoOffset (SaoLcuParam* psSaoLcuParam); 128 #endif 120 129 121 130 #if RWTH_SDC_DLT_B0036 … … 245 254 ContextModel3DBuffer m_cALFSvlcSCModel; 246 255 ContextModel3DBuffer m_cCUAMPSCModel; 256 #if LGE_SAO_MIGRATION_D0091 257 ContextModel3DBuffer m_cSaoMergeSCModel; 258 ContextModel3DBuffer m_cSaoTypeIdxSCModel; 259 #else 247 260 ContextModel3DBuffer m_cSaoFlagSCModel; 248 261 ContextModel3DBuffer m_cSaoUvlcSCModel; … … 251 264 ContextModel3DBuffer m_cSaoMergeUpSCModel; 252 265 ContextModel3DBuffer m_cSaoTypeIdxSCModel; 266 #endif 253 267 254 268 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX -
branches/HTM-6.2-dev1-LG/source/Lib/TLibDecoder/TDecSlice.cpp
r296 r408 286 286 g_bJustDoIt = g_bEncDecTraceEnable; 287 287 #endif 288 #if LGE_SAO_MIGRATION_D0091 289 if ( pcSlice->getSPS()->getUseSAO() && (pcSlice->getSaoEnabledFlag()||pcSlice->getSaoEnabledFlagChroma()) ) 290 { 291 SAOParam *saoParam = pcSlice->getAPS()->getSaoParam(); 292 saoParam->bSaoFlag[0] = pcSlice->getSaoEnabledFlag(); 293 if (iCUAddr == iStartCUAddr) 294 { 295 saoParam->bSaoFlag[1] = pcSlice->getSaoEnabledFlagChroma(); 296 } 297 Int numCuInWidth = saoParam->numCuInWidth; 298 Int cuAddrInSlice = iCUAddr - rpcPic->getPicSym()->getCUOrderMap(pcSlice->getSliceCurStartCUAddr()/rpcPic->getNumPartInCU()); 299 Int cuAddrUpInSlice = cuAddrInSlice - numCuInWidth; 300 Int rx = iCUAddr % numCuInWidth; 301 Int ry = iCUAddr / numCuInWidth; 302 Int allowMergeLeft = 1; 303 Int allowMergeUp = 1; 304 if (rx!=0) 305 { 306 if (rpcPic->getPicSym()->getTileIdxMap(iCUAddr-1) != rpcPic->getPicSym()->getTileIdxMap(iCUAddr)) 307 { 308 allowMergeLeft = 0; 309 } 310 } 311 if (ry!=0) 312 { 313 if (rpcPic->getPicSym()->getTileIdxMap(iCUAddr-numCuInWidth) != rpcPic->getPicSym()->getTileIdxMap(iCUAddr)) 314 { 315 allowMergeUp = 0; 316 } 317 } 318 pcSbacDecoder->parseSaoOneLcuInterleaving(rx, ry, saoParam,pcCU, cuAddrInSlice, cuAddrUpInSlice, allowMergeLeft, allowMergeUp); 319 } 320 #else 288 321 if ( pcSlice->getSPS()->getUseSAO() && pcSlice->getSaoInterleavingFlag() && pcSlice->getSaoEnabledFlag() ) 289 322 { … … 301 334 pcSbacDecoder->parseSaoOneLcuInterleaving(rx, ry, pcSlice->getAPS()->getSaoParam(),pcCU, cuAddrInSlice, cuAddrUpInSlice, pcSlice->getSPS()->getLFCrossSliceBoundaryFlag() ); 302 335 } 336 #endif 303 337 304 338 m_pcCuDecoder->decodeCU ( pcCU, uiIsLast );
Note: See TracChangeset for help on using the changeset viewer.